JP2022512082A - 可変レートシェーディングとスーパーサンプリングシェーディングの統合 - Google Patents
可変レートシェーディングとスーパーサンプリングシェーディングの統合 Download PDFInfo
- Publication number
- JP2022512082A JP2022512082A JP2021530935A JP2021530935A JP2022512082A JP 2022512082 A JP2022512082 A JP 2022512082A JP 2021530935 A JP2021530935 A JP 2021530935A JP 2021530935 A JP2021530935 A JP 2021530935A JP 2022512082 A JP2022512082 A JP 2022512082A
- Authority
- JP
- Japan
- Prior art keywords
- quads
- shading rate
- shading
- rate
- modified
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000010354 integration Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims description 45
- 238000010586 diagram Methods 0.000 abstract description 9
- 239000012634 fragment Substances 0.000 description 145
- 230000005484 gravity Effects 0.000 description 15
- 230000009466 transformation Effects 0.000 description 8
- 239000003086 colorant Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 238000000844 transformation Methods 0.000 description 5
- 238000002156 mixing Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000002594 fluoroscopy Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本明細書では、デカップリングされた解像度でラスタライゼーション及びピクセルシェーディングを実行する技術を提供する。この技術は、通常のラスタライゼーションを実行してクワッドを生成することを含む。クワッドをタイルバッファに蓄積する。タイルバッファのコンテンツのシェーディングレートを決定する。シェーディングレートがサブサンプリングシェーディングレートである場合にタイルバッファ内のクワッドをダウンサンプリングすることによって、ピクセルシェーダによって実行される作業が低減する。次に、シェーディングされ、ダウンサンプリングされたクワッドを、レンダーターゲットの解像度まで復元する。シェーディングレートがスーパーサンプリングシェーディングレートである場合、タイルバッファ内のクワッドをアップサンプリングする。シェーディングされ、ダウンサンプリングされたクワッド、又は、アップサンプリングされたクワッドの結果を、レンダーターゲットに書き込む。【選択図】図4A
Description
(関連出願の相互参照)
本願は、2018年12月20日に出願された米国特許出願第16/228,692号の利益を主張するものであり、その内容は、言及することによって本明細書に援用されている。
本願は、2018年12月20日に出願された米国特許出願第16/228,692号の利益を主張するものであり、その内容は、言及することによって本明細書に援用されている。
三次元(3D)グラフィックスプロセッシングパイプラインは、入力された幾何学的形状を二次元(2D)画像に変換して画面に表示するための一連のステップを実行する。これらのステップの一部は、ラスタライゼーション及びピクセルシェーディングを含む。ラスタライゼーションは、ラスタライザの前にパイプラインのステージによって提供される三角形によってカバーされるピクセル(又は、サブピクセルサンプル)を識別することを含む。ラスタライゼーションの出力は、クワッド(2×2のピクセルブロック)と、クワッドのピクセルによってカバーされるサンプルを示すカバレッジデータとを、含む。ピクセルシェーダは、クワッドのピクセルをシェーディングし、クワッドのピクセルをフレームバッファに書き込む。ピクセルシェーディングは、リソース消費が非常に多い(very resource-intensive)ため、ピクセルシェーディングの効率を向上させる技術が常に開発されている。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
本明細書では、デカップリングされた解像度でラスタライゼーション及びピクセルシェーディングを実行する技術を提供する。この技術は、通常のラスタライゼーションを実行してクワッドを生成することを含む。クワッドをタイルバッファに蓄積する。タイルバッファのコンテンツのシェーディングレートを決定する。シェーディングレートがサブサンプリングシェーディングレートである場合、タイルバッファ内のクワッドがダウンサンプリングされ、ピクセルシェーダによって実行される作業量が低減する。次に、シェーディングされダウンサンプリングされたクワッドを、レンダーターゲットの解像度まで復元する。シェーディングレートがスーパーサンプリングシェーディングレートである場合、タイルバッファ内のクワッドがアップサンプリングされる。シェーディングされダウンサンプリングされたクワッド又はアップサンプリングされたクワッドの結果を、レンダーターゲットに書き込む。
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレットコンピュータ又は他のコンピューティングデバイスのうち何れかとすることができるが、これらに限定されない。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、1つ以上の入力ドライバ112及び1つ以上の出力ドライバ114を含む。入力ドライバ112の何れかは、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具現化され、入力デバイス108を制御する(例えば、動作を制御し、入力ドライバ112から入力を受信し、入力ドライバ112にデータを提供する)目的を果たす。同様に、出力ドライバ114の何れかは、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、又は、ソフトウェアとして具現化され、出力デバイス110を制御する(例えば、動作を制御し、出力ドライバ114から入力を受信し、出力ドライバ114にデータを提供する)目的を果たす。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別々に配置されてもよい。メモリ104は、揮発性メモリ又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ等)を含む。
ストレージ106は、固定又はリムーバブルストレージ(例えば、限定されないが、ハードディスクドライブ、ソリッドステートドライブ、光学ディスク、又は、フラッシュドライブ等)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の照明、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
入力ドライバ112及び出力ドライバ114は、1つ以上のハードウェア、ソフトウェア、及び/又は、ファームウェアのコンポーネントを含み、これらのコンポーネントは、入力デバイス108及び出力デバイス110とインタフェースし、入力デバイス108及び出力デバイス110を駆動するように構成されている。入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。出力ドライバ114は、アクセラレーテッドプロセッシングデバイス(APD)116を含み、APDは、いくつかの例では、出力を表示するためにリモートディスプレイプロトコルを使用する物理的な表示装置又はシミュレートされたデバイスである表示装置118に接続されている。APD116は、プロセッサ102から計算コマンド及び図形レンダリングコマンドを受信して、これらの計算コマンド及び図形レンダリングコマンドを処理し、ピクセル出力を表示のために表示装置118に提供するように構成されている。以下により詳細に説明するように、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含む。よって、本明細書では、様々な機能がAPD116によって又はAPD116と共に実行されるものとして説明するが、様々な代替例では、APD116によって実行されるものとして説明する機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、表示装置118にグラフィカルな出力を提供するように構成された、同様の機能を有する他のコンピューティングデバイスによって追加的又は代替的に実行される。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行するように構成されてもよいことが考えられる。或いは、SIMDパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが考えられる。
図2は、一例による、デバイス100及びAPD116の詳細を示す図である。プロセッサ102(図1)は、オペレーティングシステム120、ドライバ122及びアプリケーション126を実行し、他のソフトウェアを代替的又は追加的に実行してもよい。オペレーティングシステム120は、デバイス100の様々な態様(例えば、ハードウェアリソースの管理、サービス要求の処理、プロセス実行のスケジューリング及び制御、他の動作等)を制御する。APDドライバ122は、APD116の動作を制御し、グラフィックスレンダリングタスク等のタスクや他の作業を、処理のためにAPD116に送信する。APDドライバ122は、APD116の処理コンポーネント(以下により詳細に説明するSIMDユニット138等)による実行のためにプログラムをコンパイルするジャストインタイムコンパイラも含む。
APD116は、並列処理に適したグラフィックス操作及び非グラフィックス操作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、例えば、ピクセル操作、幾何学計算等のグラフィックスパイプライン操作を実行し、画像を表示装置118にレンダリングするために使用される。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスク等のように、グラフィックス操作に直接関係しない計算処理動作を実行する。
APD116は、SIMDパラダイムに従って、プロセッサ102(又は、別のユニット)の要求に応じて動作を並列に実行するように構成された1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が、単一のプログラム制御フローユニット及びプログラムカウンタを共有し、これにより、同じプログラムを実行するが、異なるデータでそのプログラムを実行することができる。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、予測(predication)を使用してレーンをオフにしてもよい。予測は、分岐する制御フローを有するプログラムを実行するために使用されてもよい。より具体的には、制御フローが個々のレーンによって実行される計算に基づいている条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
計算ユニット132における実行の基本単位は、ワークアイテム(work item)である。各ワークアイテムは、特定のレーンにおいて並列に実行されるプログラムの単一のインスタンスを表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント(wavefront)」として同時に(又は、部分的に同時に、及び、部分的にシーケンシャルに)実行されてもよい。1つ以上のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれる。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行される。代替例では、ウェーブフロントは、単一のSIMDユニット138上又は異なるSIMDユニット138上で実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に(又は、擬似的に同時(pseudo-simultaneously)に)実行され得るワークアイテムの最大の集合として考えられてもよい。「擬似的に同時な」実行は、SIMDユニット138内のレーン数よりも多いウェーブフロントの場合に発生する。このような状況では、ウェーブフロントを複数のサイクルにわたって実行し、ワークアイテムの異なる集合を異なるサイクルで実行する。APDスケジューラ136は、計算ユニット132及びSIMDユニット138上で様々なワークグループ及びウェーブフロントのスケジュールに関する動作を実行するように構成されている。
計算ユニット132によって提供される並列性は、ピクセル値計算、頂点変換、及び、他のグラフィックス操作等のグラフィックス関連操作に適している。したがって、いくつかの例では、プロセッサ102からグラフィックスプロセッシングコマンドを受信するグラフィックスパイプライン134は、並列に実行するために、計算タスクを計算ユニット132に提供する。
計算ユニット132は、グラフィックに関係しない計算タスク、又は、グラフィックスパイプライン134の「通常の」動作の一部として実行されない計算タスク(例えば、グラフィックスパイプライン134の動作のために実行される処理を補足するように実行されるカスタム動作)を実行するためにも使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
図3は、図2に示すグラフィックスプロセッシングパイプライン134のさらなる詳細を示すブロック図である。グラフィックスプロセッシングパイプライン134は、各々がグラフィックスプロセッシングパイプライン134の特定の機能を実行するステージを含む。各ステージは、プログラム可能な計算ユニット132で実行されるシェーダプログラムとして部分的若しくは完全に実装され、又は、計算ユニット132の外部の固定機能のプログラム不可能なハードウェアとして部分的若しくは完全に実装される。
入力アセンブラステージ302は、ユーザが充填したバッファ(例えば、アプリケーション126等のプロセッサ102によって実行されるソフトウェアの要求時に充填されたバッファ)からプリミティブデータを読み出し、当該データを、パイプラインの残りの部分によって使用されるプリミティブにアセンブルする。入力アセンブラステージ302は、ユーザが充填したバッファに含まれるプリミティブデータに基づいて、異なるタイプのプリミティブを生成することができる。入力アセンブラステージ302は、パイプラインの残りの部分で使用するために、アセンブルされたプリミティブをフォーマットする。
頂点シェーダステージ304は、入力アセンブラステージ302によってアセンブルされたプリミティブの頂点を処理する。頂点シェーダステージ304は、例えば、変換、スキニング、モーフィング及び頂点毎のライティング等の様々な頂点毎の操作を実行する。変換操作は、頂点の座標を変換するための様々な操作を含む。これらの操作は、頂点座標を変更するモデリング変換、ビュー変換、投影変換、透視分割、及び、ビューポート変換、並びに、座標以外の属性を変更する他の操作のうち1つ以上を含む。
頂点シェーダステージ304は、1つ以上の計算ユニット132で実行される頂点シェーダプログラムとして部分的又は完全に実装される。頂点シェーダプログラムは、プロセッサ102によって提供され、コンピュータプログラマによって事前に書き込まれたプログラムに基づいている。ドライバ122は、このようなコンピュータプログラムをコンパイルして、計算ユニット132内での実行に適したフォーマットを有する頂点シェーダプログラムを生成する。
ハルシェーダステージ306、テッセレータステージ308及びドメインシェーダステージ310は、連携してテッセレーションを実行し、プリミティブを細分化することによって、単純なプリミティブをより複雑なプリミティブに変換する。ハルシェーダステージ306は、入力プリミティブに基づいてテッセレーション用のパッチを生成する。テッセレータステージ308は、パッチ用のサンプルセットを生成する。ドメインシェーダステージ310は、パッチ用のサンプルに対応する頂点の頂点位置を計算する。ハルシェーダステージ306及びドメインシェーダステージ310は、頂点シェーダステージ304と同様に、ドライバ122によってコンパイルされる計算ユニット132上で実行されるシェーダプログラムとして実装することができる。
ジオメトリシェーダステージ312は、プリミティブ毎に頂点操作を実行する。ジオメトリシェーダステージ312によって、例えば、ポイントスプライト展開、動的パーティクルシステム操作、ファーフィン(fur-fin)生成、シャドウボリューム生成、キューブマップへのシングルパスレンダリング、プリミティブ毎のマテリアルスワップ、プリミティブ毎のマテリアル設定等の操作を含む、様々な異なるタイプの操作を実行することができる。いくつかの例では、ドライバ122によってコンパイルされ、計算ユニット132上で実行されるジオメトリシェーダプログラムは、ジオメトリシェーダステージ312の操作を実行する。
ラスタライザステージ314は、ラスタライザステージ314の上流で生成された単純なプリミティブ(三角形)を受け入れてラスタライズする。ラスタライゼーションは、何れの画面ピクセル(又は、サブピクセルサンプル)が特定のプリミティブによってカバーされるかを決定することから構成されている。ラスタライゼーションは、固定機能ハードウェアによって実行される。
ピクセルシェーダステージ316は、上流で生成されたプリミティブ及びラスタライゼーションの結果に基づいて、画面ピクセルの出力値を計算する。ピクセルシェーダステージ316は、テクスチャメモリからのテクスチャを適用してもよい。ピクセルシェーダステージ316の操作は、ドライバ122によってコンパイルされ、計算ユニット132で実行されるピクセルシェーダプログラムによって実行される。
アウトプットマージャステージ318は、ピクセルシェーダステージ316からの出力を受け入れ、これらの出力をフレームバッファにマージし、zテスト(z検定)及びアルファブレンディング等の操作を実行することによって、画面ピクセルの最終色を決定する。
1つの動作モードでは、ラスタライザステージ314によって実行されるラスタライゼーションは、ピクセルシェーダステージ316によって実行されるピクセルシェーディングと同じ解像度で行われる。背景として、ラスタライザステージ314は、前のステージから三角形を受け入れ、これらの三角形を走査変換してフラグメントを生成する。これらのフラグメントは、レンダーターゲットの個々のピクセルについてのデータであり、位置、深さ、カバレッジデータ、及び、後のピクセルシェーダステージ後のシェーディングデータ(例えば、色等)等の情報を含む。レンダーターゲットは、レンダリングが行われている(すなわち、色又は他の値が書き込まれている)デスティネーション画像である。
一般的に、フラグメントはクワッドにグループ化され、各クワッドは、4つの隣接するピクセル位置に対応するフラグメント(すなわち、2×2フラグメント)を含む。三角形の走査変換は、三角形によってカバーされるピクセル位置毎にフラグメントを生成することを含む。レンダーターゲットがマルチサンプル画像である場合、各ピクセルは、複数のサンプル位置を有し、サンプル位置の各々は、カバレッジについてテストされる。フラグメントは、そのフラグメントのサンプルについてのカバレッジデータを記録する。ラスタライザステージ314によって生成されたフラグメントは、ピクセルシェーダステージ316に送信され、ピクセルシェーダステージは、フラグメントをシェーディングし(これらのフラグメントの色の値を決定し)、同様に他の値も決定することができる。
同じ解像度でラスタライゼーション及びピクセルシェーディングを実行することは、ラスタライザによって生成されたフラグメント毎に、ピクセルシェーダ316がそのフラグメントの色を決定する計算を実行することを意味する。換言すれば、ピクセルが占める画面空間の面積は、色が決定される精度と同じ面積である。一例では、計算ユニット132のSIMDベースのハードウェアにおいて、ラスタライザステージ314によって生成された各フラグメントは、異なるワークアイテムによってシェーディングされる。したがって、生成されたフラグメントと、それらのフラグメントをシェーディングするために生成された(spawned)ワークアイテムとの間には、1対1の対応関係がある。一般的に、ラスタライザステージ314がデプス(depth)テストを実行し、以前にレンダリングされたフラグメントが占めるフラグメントをカリング(culling)することに留意されたい。したがって、このデプスカリング後に存続するフラグメントと、これらの存続しているフラグメントに色を付けるために生成されたワークアイテムとの間には、1対1の対応関係があるが、最終的に破棄されるクワッドのヘルパーフラグメントをレンダリングするために、追加のワークアイテムが生成される場合もある。ヘルパーフラグメントは、三角形によってカバーされていないが、テクスチャサンプリングの微分(derivatives)を計算することを支援するために、何れかの方法でクワッドの一部として生成されるフラグメントである。ラスタライゼーションがシェーディングと同じ解像度で実行される動作モードを理解するもう1つの方法は、三角形のエッジを定義することができる解像度が、その三角形の色を定義することができる解像度に等しいことである。
上記の動作モードに関する1つの問題は、色が固定されている又は色の変更頻度が低い三角形に対して、ピクセルシェーディングと同じ解像度でラスタライゼーションが生じることである。このような三角形では、近くのフラグメントのピクセルシェーディング操作によって、同じ又は類似の色が生成され、実質的に冗長になる。したがって、ピクセルシェーダ操作の数を大幅に減らしても、同様の結果が得られる。したがって、本明細書で可変レートシェーディング(VRS)と呼ばれる技術に従って、ラスタライゼーション解像度に対してシェーディング解像度を低減することが有利である。このような技術の利点は、ピクセルシェーダ操作の実行回数が低減することであり、これにより、処理負荷が低減され、パフォーマンスが向上する。VRSの詳細については後述する。
VRSに関する1つの問題は、この技術とスーパーサンプリングアンチエイリアシング(SSAA)との統合に関する問題である。SSAAは、各レンダーターゲットのピクセルが、複数のカバレッジ及びカラーサンプルを有する技術である。より具体的には、この技術では、グラフィックスプロセッシングパイプライン134は、レンダーターゲットの解像度よりも高い解像度でラスタライゼーション及びシェーディングの両方を行い、スーパーサンプリング画像を生成する。次に、グラフィックスプロセッシングパイプライン134は、アンチエイリアシング技術によってそのスーパーサンプリング画像を「解像(resolves)」し、レンダーターゲットの解像度の画像を生成する。
問題は、VRS及びSSAAの両方を実行することができるシステムで発生する。具体的には、一実施形態では、VRSがレンダーターゲットの解像度に対してシェーディングの解像度を下げるように動作し、SSAAがレンダーターゲットの解像度に対してシェーディングの解像度を上げるように動作するように、VRS及びSSAAの両方を切り替えることが可能である。この動作モードでは、定義されていない結果又は予期しない結果が生じる可能性があるため、望ましくない場合がある。したがって、SSAA及びVRSをグラフィックスプロセッシングパイプライン134に一体的に統合するための技術が本明細書に示される。
図4は、一例による、SSAA、VRS、又は、何れでもないもののうち何れかを使用してレンダリング画像をラスタライズし、シェーディングし、出力する技術を示す。この技術は、ステップ402で始まり、ステップ402では、ラスタライザステージ314は、グラフィックスプロセッシングパイプライン134の前のステージから受信した三角形をラスタライズして、カバーされているサンプルを決定し、これらのカバーされているサンプルの指標を含むフラグメントを生成する。ラスタライゼーションは、三角形で囲まれたレンダーターゲット内のピクセル毎に1つのフラグメントを生成する。フラグメントは、単一のピクセルに対応するデータのグループであり、サンプルカバレッジ、サンプル毎のカラーデータ(ピクセルシェーダステージ後の)、サンプル毎のデプスデータ、及び、場合によっては他のタイプのデータ等の情報を含む。フラグメントを使用して、アウトプットマージャステージ318内のフレームバッファのピクセルを着色する。サンプルは、画面ピクセル内の点であり、この点についてのカバレッジ情報、デプス情報、色情報等の情報が個別に決定され得る。いくつかの動作モードでは、レンダーターゲットのピクセル毎に複数のサンプルがある。一般に、レンダーターゲットのピクセル毎に複数のサンプルを含む目的は、アンチエイリアシングを実行することであり、このアンチエイリアシングは、画像内のハードエッジの外観を向上させる。他の動作モードでは、レンダーターゲットのピクセル毎に1つのサンプルのみがある。
ステップ402では、ラスタライザステージ314は、受信したプリミティブによってカバーされているサンプル、及び、カバーされていないサンプルを決定する。一般に、ラスタライザステージ314は、グラフィックスプロセッシングパイプライン134の前のステージから三角形を受信し、これらの三角形をラスタライズしてフラグメントを生成する。三角形をラスタライズすることは、レンダーターゲットの何れのピクセルが三角形によってカバーされているかを決定することと、ピクセル毎に複数のサンプルがある場合には、これらのカバーされているピクセル内の何れのサンプルが三角形によってカバーされているかを決定することと、を含む。三角形をラスタライズするために技術的に実現可能な任意の技術を使用することができる。フラグメントは、1つのサンプルがカバーされているピクセル毎に生成される。
ステップ402では、ラスタライザステージ314は、デプステストも実行する。一例では、デプステストは、三角形によってカバーされているサンプル毎にデプス値を検査することと、これらのデプス値を、デプスバッファが記憶する、既に処理された三角形のデプス値と比較することと、を含む。特定のサンプルのデプス値を、この特定のサンプルと同じ位置についてデプスバッファに記憶されているデプス値と比較する。サンプルが遮蔽されていることをデプスバッファが示す場合には、そのサンプルはカバーされていないとマーク付けされ、サンプルが遮蔽されていないことをデプスバッファが示す場合には、そのサンプルが残存する。この説明の他の箇所で説明する後の処理のために、カバーされており遮蔽されていないサンプル位置を示すデータを、グラフィックスプロセッシングパイプライン134の他の部分に渡す。本明細書において、サンプルが適用される場合に「カバーされている」という用語は、サンプルが三角形によってカバーされており、デプステストに合格していることを意味し、「カバーされていない」又は「カバーのない」という用語は、サンプルが三角形によってカバーされていないか、三角形によってカバーされているがデプステストに合格していないことを意味する。
ラスタライゼーションは、クワッドとして知られている2×2グループのフラグメントを出力する。より具体的には、ラスタライザステージ314は、三角形によってカバーされている少なくとも1つのサンプルを含むレンダーターゲットのピクセル毎にフラグメントを生成する。ラスタライザ314は、これらのフラグメントからクワッドを生成する。1つ以上のこのようなフラグメントが三角形によって完全にカバーされていなくても、クワッドは、2×2ピクセルの隣接するセクションのフラグメントを含む(ここで、「完全にカバーされていない」とは、フラグメントのサンプルが三角形によってカバーされておらず、遮蔽されていないことを意味する)。完全にカバーされていないフラグメントは、ヘルパーフラグメントと呼ばれる。ヘルパーフラグメントがピクセルシェーダステージ316によって使用され、シェーディングについての空間微分(spatial derivatives)が計算される。多くの場合、これらの空間微分はテクスチャのミップマップ(mipmap)選択及びテクスチャのフィルタリングに使用されるが、空間微分を他の目的に使用することができる。
また、ステップ402において、ラスタライザステージ314は、三角形のサンプルについて1つ以上のシェーディングレートを決定する。シェーディングレートは、サブサンプリングシェーディングレート、1対1のシェーディングレート、又は、スーパーサンプリングシェーディングレートのうち何れかであってもよい。サブサンプリングシェーディングレートは、ピクセルシェーディングの解像度がレンダーターゲットの解像度(サンプルの解像度を除く)よりも低いことを意味する。1対1のシェーディングレートは、ピクセルシェーディングの解像度がレンダーターゲットの解像度と同じであることを意味する。スーパーサンプリングシェーディングレートは、ピクセルシェーディングの解像度がレンダーターゲットの解像度よりも高いことを意味する。ピクセルシェーディングの解像度は、スーパーサンプリングシェーディングレートを使用しても、ラスタライゼーションの解像度(カバレッジ決定)と異なる場合があることに留意されたい。具体的には、ラスタライザは、ピクセル毎の特定のサンプル数についてサンプルカバレッジを決定し、そのサンプル数よりも低いレートでピクセルシェーディングが発生することが可能である。例えば、ラスタライゼーションは、フラグメント毎に4つのサンプルについて発生するが、ピクセルシェーディングは、フラグメント毎に2回のみ発生することが可能である。
ピクセルシェーディングの解像度は、シェーディングレートとも呼ばれ、ピクセルシェーダステージ316では、共にシェーディングされるフラグメントの数を定義する。より具体的には、サブサンプリングの場合、ピクセルシェーディングの解像度は、ピクセルシェーダステージ316内の単一のワークアイテムによって決定される色が、レンダーターゲット内のいくつのピクセル位置に与えられているかを決定する。例えば、シェーディングレートが4分の1である場合、ピクセルシェーダステージ316内のワークアイテムは、レンダーターゲット内の4つのピクセル位置の色を決定する。スーパーサンプリングでは、ピクセルシェーディングの解像度は、単一のワークアイテムによって決定された色が与えられている所定のフラグメントのサンプル数を決定する。例えば、ピクセルシェーディングの解像度が「4x」である場合、4つの異なるワークアイテムが、ラスタライザステージ314によって生成されたフラグメント毎の4つの異なるサンプルについて色を決定する。
シェーディングレートは、三角形毎に、シェーディングレートタイル毎に、又は、個別の三角形のシェーディングレートタイル毎に決定され得る。三角形毎のシェーディングの場合、ピクセルシェーダの上流のグラフィックスプロセッシングパイプライン134内のユニットは、ラスタライザステージ314に送信される三角形のシェーディングレートを決定する。一例では、頂点シェーダステージ304は、そのステージで処理される三角形のシェーディングレートを決定する。別の例では、ジオメトリシェーダステージ312は、そのステージで出力される三角形のシェーディングレートを決定する。シェーディングレートタイル毎のシェーディングの場合、ラスタライザステージ314は、レンダーターゲットの異なるシェーディングレートタイルのシェーディングレートを決定する。レンダーターゲットは、レンダーターゲットの複数のピクセルをそれぞれ含むシェーディングレートタイルに分割される。より具体的には、レンダーターゲットはシェーディングレートタイルに「タイル化(tiled)」され、各タイルが異なるシェーディングレートを有することができる。シェーディングレートタイルのシェーディングレートを決定するために、技術的に実現可能な任意の技術を使用することができる。一例では、シェーディングレートタイル画像が使用される。シェーディングレートタイル画像は、シェーディングレートタイルのシェーディングレートを示すレンダーターゲットの異なるシェーディングレートタイルに関する情報を含む。シェーディングレート画像を、アプリケーションによって明示的に又はアルゴリズムによって指定することができる。
個別の三角形に対するシェーディングレートタイル毎のシェーディングでは、シェーディングレートタイル毎の情報と三角形毎の情報との組み合わせを使用して、所定のクワッドのシェーディングレートを決定する。具体的には、各三角形は、三角形の異なる部分のシェーディングレートを定義する三角形シェーディングレート画像に関連付けられている。
シェーディングレートタイルのサイズを、タイルバッファによってカバーされるレンダーターゲットのピクセル数と同じサイズにするか、そのバッファよりも大きくすることが可能である。ただし、特定の時点でのタイルバッファのコンテンツは、同じシェーディングレートを有する。
ステップ404では、ラスタライザステージ314は、ステップ402におけるラスタライゼーションの結果として生成されたクワッドをタイルバッファ510に蓄積する。タイルバッファは、技術的に実現可能な任意の数のクワッドを記憶することができる。一例では、タイルバッファは、4つの隣接するクワッドを2×2アレイに記憶する。タイルバッファ内のクワッドは、レンダーターゲットの連続する部分に対応する。これにより、VRSを使用する場合に、クワッドをより少ない数のクワッドにダウンサンプリングすることができる。クワッドをタイルバッファに蓄積した後に、ラスタライザステージ314は、ステップ406をトリガする。なお、このトリガは、タイルバッファ510の少なくとも一部が空の状態で発生してもよいことに留意されたい。より具体的には、タイルバッファ510は、同じ三角形からの画面空間の連続した部分からのクワッドを記憶する。その連続した部分の異なる部分にカバレッジがある場合でも、その連続した部分の少なくともいくつかに特定の三角形のカバレッジが存在しないことが可能である。このような状況では、ステップ406では、フルではない(non-full)タイルバッファ510が使用される(シェーディングレートに基づいて変更されたレートのクワッドを生成するために)。
ステップ406では、ラスタライザステージ314は、タイルバッファ510のコンテンツを検査し、シェーディングレートに基づいて、変更されたレートのクワッドを生成する。これが起こるには、3つの方法がある。上述したように、タイルバッファのコンテンツの任意の特定のインスタンスに対して、それらのコンテンツの全てについてシェーディングレートが定義される。このシェーディングレートは、サブサンプリングレート、1:1のレート、又は、スーパーサンプリングレートの何れかであってもよい。シェーディングレートがサブサンプリングレートである場合、ラスタライザステージ314は、タイルバッファ510のクワッドをダウンサンプリングして、変更されたレートのクワッドを生成する。結果として得られるダウンサンプリングされたクワッドは、レンダーターゲットのピクセルよりも大きい粗いフラグメントを含む。クワッドをダウンサンプリングする目的は、フラグメントをシェーディングするために生成されるピクセルシェーダのワークアイテムの数を低減することである。具体的には、ピクセルシェーダは、フラグメント毎に1つのワークアイテムを起動するため、フラグメントが大きくなると、生成されるワークアイテムが少なくなり、シェーディングワークロードの完了が速くなる。
サブサンプリングシェーディングレートでは、ダウンサンプリングされたクワッドに利用可能なカバレッジ情報量は、タイルバッファ510内のクワッドのカバレッジデータの完全な解像度を表すのに不十分である可能性がある。このような場合、ダウンサンプリングは、カバレッジデータを圧縮することも含む。
シェーディングレートが1:1のレートである場合、ラスタライザステージ314は、単に、変更されていないタイルバッファ510のクワッドを、変更されたレートのクワッドとして出力する。
シェーディングレートがスーパーサンプリングレートである場合、ラスタライザステージ314は、タイルバッファ510のクワッドをアップサンプリングして、変更されたレートのクワッドを生成する。結果として得られるアップサンプリングされたクワッドは、タイルバッファ510内のクワッドよりも多いクワッドを含む。クワッド数が増加する係数は、スーパーサンプリングレートと等しい。
ステップ408では、ラスタライザステージ314は、クワッドのフラグメントに対して重心位置を割り当てる。この方法は、シェーディングレート、タイルバッファのクワッド内のサンプルの数及び位置、他の要因等のいくつかの要因に依存する。この重心は、テクスチャ座標等のピクセル属性が評価される位置である。
ステップ410では、ピクセルシェーダステージ316は、クワッドのフラグメントをシェーディングする。本明細書の他の箇所で説明するように、フラグメント毎に1つのワークアイテムが生成される。ピクセルシェーダは、ステップ408で決定された重心を使用して、フラグメントをシェーディングする。また、ピクセルシェーダは、例えば、フラグメントの1つ以上のサンプルをカバーされているものからカバーされていないものへ、又は、カバーされていないものからカバーされているものへ切り替えることによって、任意の特定のフラグメントについてのカバレッジを変更することができる。一例では、ピクセルシェーダは、特定のカバーされているサンプルに対応するアルファ値が完全に透明である(例えば、0のアルファ値を有する)と決定することによって、そのサンプルをカバーしないように設定する。上記は、一例に過ぎず、アプリケーション開発者が書き込むことができるピクセルシェーダプログラムは、技術的に実現可能な方法でカバレッジを変更し得ることを理解されたい。
ステップ412では、クワッドがダウンサンプリングされた場合、アウトプットマージャステージ318は、ラスタライザステージ314からの細かいカバレッジデータを適用することを含む、これらのクワッドの元の解像度の復元を行う。図4Dに関連してさらなる詳細を提供する。
ステップ414では、アウトプットマージャステージ318は、後半のピクセル操作を実行し、クワッドのサンプルをフレームバッファに書き込む。シェーディングされたクワッドがダウンサンプリングされた場合(すなわち、VRSが使用された場合)、アウトプットマージャステージ318は、ステップ412で復元されたクワッドのデータを書き込む。シェーディングされたクワッドがアップサンプリングされた場合、又は、1:1のシェーディングレートが使用された場合、ピクセルシェーダ316によって出力されたクワッドのデータを使用して、レンダーターゲットをシェーディングする。
図4Bは、一例による、スーパーサンプリングシェーディングレートのタイルバッファ510のコンテンツに基づいて、変更されたシェーディングレートのクワッドを生成する動作を示す図である。換言すれば、図4Bは、スーパーサンプリングシェーディングレートに関するステップ406の動作を表す。タイルバッファ510は、ラスタライザステージ314(ステップ404)で生成されたクワッドを蓄積した後の状態で示されている。タイルバッファのコンテンツについて決定されたシェーディングレートは、スーパーサンプリングシェーディングレートである。つまり、レンダーターゲットの解像度よりも高い解像度でピクセルシェーディングが行われることを意味する。図4Bの例では、シェーディングレートは、4xであるが、本明細書の教示は、任意のスーパーサンプリングシェーディングレートに適用される。
図示したように、タイルバッファ510は、3つのクワッド(クワッド1についてのスペースは、そのクワッドについてカバーされたサンプルがなかったので、空である)を含み、各々が4つのフラグメントを有する。タイルバッファ510内の各フラグメントは、4つのカバレッジサンプルを含む。変更されたシェーディングレートのクワッド422を生成するために、ラスタライザステージ314は、少なくとも1つのサンプルがカバーされているタイルバッファ510内のクワッド毎に、シェーディングレートに等しい数のクワッドを生成する。生成されたクワッド内の各フラグメントは、タイルバッファ510内のフラグメントのサンプルサブセットを含む。
タイルバッファ510内のフラグメントのサンプル数と、生成されたフラグメントのサンプル数との割合は、シェーディングレートに等しい。4xシェーディングレートの場合、タイルバッファ510内のフラグメントは、変更されたシェーディングレートのフラグメントの4倍のサンプルを含む。特定の生成されたクワッド内のフラグメントは、タイルバッファ内の対応するクワッドのフラグメントの同じサンプル位置からのサンプルを含む。一例では、生成されたクワッド内の各フラグメントは、図示したピクセルテンプレート420の「サンプルa」の位置にサンプルを含む。この例では、生成されたクワッドの各々が同じサンプル位置にサンプルを有するフラグメントを含み、異なるクワッドに割り当てられたサンプルが異なるように、少なくとも1つのカバーされたサンプルを有するクワッド毎に、4つのクワッドが生成される(サンプル毎に1つ)。図示した例では、クワッド1は、空であり、変更されたシェーディングレートのクワッドが生成されない。クワッド2は、クワッド2a,2b,2c,2dが生成される。クワッド2aのフラグメントは、クワッド2のフラグメントからのサンプルaを含む。クワッド2bのフラグメントは、クワッド2のフラグメントからのサンプルbを含む。クワッド2cのフラグメントは、クワッド2のフラグメントからのサンプルcを含む。クワッド2dのフラグメントは、クワッド2のフラグメントからのサンプルdを含む。クワッド3a~3d及び4a~4dは、それらのサンプルを同様の方法でクワッド3及びクワッド4から導出する。フラグメント毎のカバレッジサンプル数がシェーディングレートと異なってもよいことに留意されたい。この場合、変更されたシェーディングレートのクワッドのフラグメントは、タイルバッファ内のクワッドから複数のサンプルを得る。
図4Aに関して説明するように、変更されたシェーディングレートのクワッド422を生成した後に、ステップ408では、クワッドのフラグメントの重心が割り当てられる。これらの重心は、テクスチャ座標等の属性が評価される位置である。このフラグメントに割り当てられたサンプル位置に基づいて、フラグメントの重心が割り当てられる。例えば、クワッド2a、3a、4aのフラグメントは、サンプルaの位置で重心を得る。同様に、クワッド2b、3b、4bのフラグメントは、サンプルbの位置で重心を得て、クワッド2c、3c、4cは、サンプルcの位置で重心を得て、クワッド2d、3d、4dは、サンプルdの位置で重心を得る。変更されたシェーディングレートのクワッド422が複数のサンプルを含む場合、重心は、これらのサンプルを表す位置に配置される。一例では、重心は、カバーされたサンプルのうち何れかのサンプルの位置にあるか、カバーされているサンプル間の中間にあるか、サンプルを表す他の位置にある。
図4Aを参照して説明するように、ステップ410では、変更されたシェーディングレートのクワッド422がシェーディングされる。変更されたシェーディングレートの各クワッド422の各フラグメントが異なるワークアイテムを使用してシェーディングされることによって、タイルバッファ510内の単一のフラグメントから生じるサンプルに異なる色を与えることができる。また、ピクセルシェーダステージ316は、カバーされているサンプルをカバーされていないとマーク付けすること等によって、カバレッジを変更することも可能である。ステップ414では、アウトプットマージャステージ318は、シェーディングされたフラグメントをレンダーターゲットに書き込む。シェーディングされたサンプルをレンダーターゲットに書き込むことに関する詳細は一般的に知られており、本明細書では詳細に説明していない。一般に、この動作は、サンプルがより古いサンプルによって遮蔽されているかどうかを決定するzテスト(z検定)を実行することと、ブレンディングが有効になっている場合に、サンプルの色をレンダーターゲット内の色と混合することと、を含む。他の動作も実行することができる。
図4Cは、一例による、サブサンプリングシェーディングレート(VRS)が使用される場合に、タイルバッファ510内のクワッドをダウンサンプリングすることに関する動作を示す図である。ダウンサンプリング動作は、タイルバッファ510のクワッドを、より少ない数の1つ以上の変更されたシェーディングレートのクワッド440に変換することを含む。生成されたクワッドの数は、タイルバッファ510内のクワッドの数にシェーディングレートを乗算したものに等しい(ただし、タイルバッファ510がクワッドによって完全に充填されていない場合、又は、カバレッジを有しないクワッドが生成された場合には、より少ない数を生成することがある)。一例では、シェーディングレートは1/4であり、タイルバッファ510内のクワッド数は4であり、これらのクワッドから生成されるクワッド数は1である(4×1/4=1)。
生成された各クワッドは、4つのフラグメントを含む。このようなフラグメントの各々に割り当てられるカバレッジは、タイルバッファ510内のクワッドのフラグメントに割り当てられるカバレッジの融合(amalgamation)である。状況によっては、このような融合の結果、変更されたシェーディングレートのクワッド440のフラグメントが、過剰なカバレッジデータを含むことになる。より具体的には、グラフィックスプロセッシングパイプライン134は、フラグメントのカバレッジデータを指定するために使用することができるビット数の制限を有することができる。この状況では、カバレッジデータが、生成されたクワッドのフラグメントのカバレッジデータに融合される場合に、そのデータは忠実度(fidelity)が低下する(圧縮される)。残存するカバレッジデータは、タイルバッファ510内のクワッドのフラグメントのカバレッジを幾何学的に表す。
図4Cの例では、タイルバッファ510内のクワッドの各フラグメントは、4つのサンプルを含む。さらに、シェーディングレートは1/4であり、これは、ピクセルシェーダステージ316において、タイルバッファ510内のフラグメントのうち4つのフラグメントが単一のフラグメントとして共にシェーディングされることを意味する。さらに、ピクセルシェーディングハードウェアは、フラグメント毎に処理可能なサンプル数に制限を有し、その制限は8つである。これらの要因のために、ダウンサンプリング動作442は、変更されたシェーディングレートのクワッド440を以下の方法で生成する。1/4のシェーディングレートの結果、タイルバッファ510内の各クワッドが、変更されたシェーディングレートのクワッド440内の単一のフラグメントに変換される。具体的には、各クワッドが4つのフラグメントを含み、シェーディングレートが1/4であるため、クワッドの4つのフラグメントが単一のフラグメントに変換される。タイルバッファ510が4つのクワッドを含むので、タイルバッファ510のコンテンツが単一のクワッドに変換される。クワッドの粗いフラグメントの各々は、タイルバッファ510の4つのフラグメントに対応する。
さらに、ピクセルシェーダ316がフラグメント毎に8個のサンプルしか処理できないので、タイルバッファ510内の各クワッドの16個のサンプルは、粗いフラグメント毎に8個のサンプルに圧縮される。各サンプルは、タイルバッファ510内の2つのサンプルを幾何学的に表す。さらに、この圧縮動作は、圧縮されたサンプルに対応するサンプルの何れか一方又は両方がタイルバッファ510内でカバーされている場合には、粗いフラグメントのサンプルもカバーされているが、何れのサンプルもカバーされていない場合には、粗いフラグメントのサンプルがカバーされていないという点で保守的(conservative)である。図4Cの例では、タイルバッファ510内のフラグメントの対応する領域を示すために、変更されたシェーディングレートのクワッド440に点線が設けられている。これらの対応する領域内の各サンプルが、タイルバッファ510内の2つのサンプルに対応することがわかる。さらに、「細かいフラグメント」に対応する粗いフラグメントの一部の左上のサンプルは、その細かいフラグメントの2つの上部サンプルに対応し、細かいフラグメントに対応する粗いフラグメントの一部の右下のサンプルは、その細かいフラグメントの2つの下部サンプルに対応する。単一の粗いフラグメントに融合されるサンプル数が、そのフラグメントのサンプル限度を超えない場合、圧縮が行われないことに留意されたい。また、1/4のシェーディングレートが示されているが、他のシェーディングレート(例えば、1/2水平方向(タイルバッファ510内の2つのフラグメントの行が、変更されたシェーディングレートのクワッドの粗いフラグメントを形成する)、1/2垂直方向(タイルバッファ510内の2つのフラグメントの列が、変更されたシェーディングレートのクワッドの粗いフラグメントを形成する)、又は、他のレート等)が使用されてもよいことに留意されたい。
ステップ406の後に、生成されたクワッドのフラグメントに重心が割り当てられる。重心は、技術的に実現可能な方法で粗いフラグメント毎に設定される。一例では、重心は、粗いフラグメントのカバーされたサンプルの位置を表す。別の例では、何れかのフラグメントの位置が選択される。さらに別の例では、粗いフラグメントの中心が重心として使用される。上述したように、重心は、ピクセルシェーダステージ316がテクスチャ座標等の属性を計算する位置として使用される。
ステップ410では、ピクセルシェーダステージ316は、生成されたクワッドのフラグメントをシェーディングする。具体的には、粗いフラグメント毎に1つのワークアイテムが起動され、粗いフラグメント毎に決定された色(及び、他の属性)が、そのフラグメントのカバーされた各サンプルに適用される。また、ピクセルシェーダステージ316は、カバーされているサンプルをカバーされていないと設定すること、又は、カバーされていないサンプルをカバーされていると設定すること等によって、粗いフラグメントのカバレッジを変更することが可能である。
ステップ412では、アウトプットマージャステージ318は、ラスタライザステージ314からの細かいカバレッジデータを、シェーディングされたクワッドに適用して、レンダーターゲットの解像度でフラグメントを生成する。図4Dは、この動作の一例を示す図である。最初に、アウトプットマージャステージ318は、シェーディングされた粗いクワッドをアップサンプリングして、シェーディングされアップサンプリングされたクワッドを生成する。これを行うために、アウトプットマージャステージ318は、シェーディングレートに基づいて、粗いフラグメントの各々を、アップサンプリングされたフラグメントに分割する。1/4のシェーディングレートの場合、粗いフラグメントの各々は、4つのアップサンプリングされたフラグメントに変換される。アップサンプリングされたフラグメントの各々のサンプルは、これらのサンプルの元となる粗いフラグメントの色を得る。さらに、サンプルが元々圧縮されていた場合には、サンプル解像度が復元され、復元されたサンプルの各々は、粗いフラグメントの対応するサンプルの色を得る。復元されたサンプルの各々のカバレッジ(カバーされている又はカバーされていない)は、粗いフラグメントの対応するサンプルのカバレッジと同じである。
図4Dでは、アップサンプリングは、次のように進む。粗いフラグメント1は、カバレッジを有していない。したがって、そのフラグメントから生成されるクワッドは、カバレッジを有しておらず、破棄される。粗いフラグメント2は、図示するように、色1を有し、6個のカバーされているフラグメントを含む。対応するアップサンプリングされたクワッド(クワッド2)は、4つのサンプルが各々カバーされている3つのフラグメントと、カバーされているサンプルがない1つのフラグメントと、を含む。クワッド2の各サンプルは、粗いフラグメント2の色を有する。同様に、粗いフラグメント3及び粗いフラグメント4のカバレッジ及び色を使用して、クワッド3及びクワッド4が生成される。
この時点で、ラスタライゼーションステージ314によって生成された元のカバレッジデータを使用して、アップサンプリング動作で生成されたカバレッジデータが変調される。この変調は、「AND」動作であり、この動作では、サンプルの両方のコピーが元のカバレッジデータ及びアップサンプリング動作からのカバレッジデータでカバーされている場合、出力されたサンプルがカバーされているとみなされ、一方又は両方のサンプルが元のカバレッジデータ内でカバーされていない場合、出力されたサンプルがカバーされていないとみなされる。この結果、クワッドのセットは、変調されたカバレッジと、ピクセルシェーダ316によって生成された色と、を有する。これらのクワッドは、通常通りに(例えば、デプステスト、ブレンディング及び他の操作を実行して、これらの出力されたクワッドの色をレンダーターゲット内の色と組み合わせる)、レンダーターゲットに書き込まれる。
本明細書における開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素は、特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素無しに単独で、又は、他の特徴及び要素を伴う若しくは伴わない様々な組み合わせにおいて使用されてもよい。一例は、上述したタイルバッファ510をポピュレート(populating)するための代替技術である。より具体的には、上述した技術において、ラスタライザステージ314は、最初に、クワッドを生成し、次に、これらのクワッドをタイルバッファ510に蓄積する。別の技術では、ラスタライザステージ314は、タイルバッファ510内にクワッドを直接生成し、これにより、クワッドを生成した後に、これらのクワッドをタイルバッファ510内に蓄積するという2つの別々のステップを実行する必要がない。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(このような命令はコンピュータ可読媒体に記憶され得る)の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実装されてもよい。非一時的なコンピュータ可読記憶媒体の例には、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体(CD-ROMディスク等)、デジタル多用途ディスク(DVD)等が含まれる。
Claims (19)
- 異なる解像度でピクセルシェーディング及びラスタライゼーションを実行する方法であって、
クワッドの第1セットをタイルバッファに記憶することと、
前記クワッドの第1セットから、サブサンプリングレートで変更されたシェーディングレートのクワッドの第1セットを生成することと、
クワッドの第2セットを前記タイルバッファに記憶することと、
前記クワッドの第2セットから、スーパーサンプリングレートで変更されたシェーディングレートのクワッドの第2セットを生成することと、
前記変更されたシェーディングレートのクワッドの第1セットと、前記変更されたシェーディングレートのクワッドの第2セットと、をシェーディングすることと、を含む、
方法。 - クワッドの第3セットが1対1のシェーディングレートでシェーディングされることを決定することと、
前記クワッドの第3セットについて、変更されたシェーディングレートのクワッドのセットを生成することなく、前記クワッドの第3セットをシェーディングすることと、をさらに含む、
請求項1の方法。 - 前記変更されたシェーディングレートのクワッドの第1セットがサブサンプリングシェーディングレートを有することと、前記変更されたシェーディングレートのクワッドの第2セットがスーパーサンプリングシェーディングレートを有することとを、三角形毎に、シェーディングレートタイル毎に、及び、個別の三角形のシェーディングレートタイル毎に、のうち何れかに基づいて決定することをさらに含む、
請求項1の方法。 - 前記変更されたシェーディングレートのクワッドの第1セットが前記サブサンプリングシェーディングレートを有すること、又は、前記変更されたシェーディングレートのクワッドの第2セットが前記スーパーサンプリングシェーディングレートを有することを決定することが、三角形毎に実行され、
前記決定することは、
三角形のシェーディングレートを識別することと、
前記三角形をラスタライズして、前記クワッドの第1セット又は前記クワッドの第2セットを生成することと、
前記三角形の前記シェーディングレートを、前記クワッドの第1セット又は前記クワッドの第2セットに割り当てることと、を含む、
請求項3の方法。 - 前記変更されたシェーディングレートのクワッドの第1セットが前記サブサンプリングシェーディングレートを有すること、又は、前記変更されたシェーディングレートのクワッドの第2セットが前記スーパーサンプリングシェーディングレートを有することを決定することが、シェーディングレートタイル毎に実行され、
前記決定することは、
前記クワッドの第1セット又は前記クワッドの第2セットに対応するシェーディングレートタイルのシェーディングレートを識別することと、
前記シェーディングレートタイルの前記シェーディングレートを、前記クワッドの第1セット又は前記クワッドの第2セットに割り当てることと、を含む、
請求項3の方法。 - 前記シェーディングレートタイルの前記シェーディングレートを識別することは、シェーディングレートタイル画像においてルックアップを実行することを含む、
請求項5の方法。 - 前記変更されたシェーディングレートのクワッドの第1セットが前記サブサンプリングシェーディングレートを有すること、又は、前記変更されたシェーディングレートのクワッドの第2セットが前記スーパーサンプリングシェーディングレートを有することを決定することが、個別の三角形のシェーディングレートタイル毎に実行され、
前記決定することは、
三角形のシェーディングレートを識別することと、
前記三角形をラスタライズして、前記クワッドの第1セット又は前記クワッドの第2セットを生成することと、
前記クワッドの第1セット又は前記クワッドの第2セットに対応するシェーディングレートタイルのシェーディングレートを識別することと、
前記シェーディングレートタイルの前記シェーディングレートを、前記クワッドの第1セット又は前記クワッドの第2セットに割り当てることと、を含む、
請求項3の方法。 - シェーディングされた、前記変更されたシェーディングレートのクワッドの第2セットをレンダーターゲットに書き込むことをさらに含む、
請求項1の方法。 - シェーディングされた、前記変更されたシェーディングレートのクワッドの第1セットをアップサンプリングし、得られたアップサンプリングされたクワッドを変調することをさらに含む、
請求項1の方法。 - ピクセルシェーディング及びラスタライゼーションを異なる解像度で実行するグラフィックスプロセッシングパイプラインであって、
タイルバッファと、
ラスタライザステージと、
ピクセルシェーダステージと、を備え、
前記ラスタライザステージは、
クワッドの第1セットを前記タイルバッファに記憶することと、
前記クワッドの第1セットから、サブサンプリングレートで変更されたシェーディングレートのクワッドの第1セットを生成することと、
クワッドの第2セットを前記タイルバッファに記憶することと、
前記クワッドの第2セットから、スーパーサンプリングレートで変更されたシェーディングレートのクワッドの第2セットを生成することと、
を行うように構成されており、
前記ピクセルシェーダステージは、
前記変更されたシェーディングレートのクワッドの第1セットと、前記変更されたシェーディングレートのクワッドの第2セットと、をシェーディングするように構成されている、
グラフィックスプロセッシングパイプライン。 - 前記ラスタライザステージは、
クワッドの第3セットが1対1のシェーディングレートでシェーディングされることを決定することと、
前記クワッドの第3セットについて、変更されたシェーディングレートのクワッドのセットを生成することなく、前記クワッドの第3セットをシェーディングすることと、
をさらに行うように構成されている、
請求項10のグラフィックスプロセッシングパイプライン。 - 前記ラスタライザステージは、
前記変更されたシェーディングレートのクワッドの第1セットがサブサンプリングシェーディングレートを有することと、前記変更されたシェーディングレートのクワッドの第2セットがスーパーサンプリングシェーディングレートを有することとを、三角形毎に、シェーディングレートタイル毎に、及び、個別の三角形のシェーディングレートタイル毎に、のうち何れかに基づいて決定するようにさらに構成されている、
請求項10のグラフィックスプロセッシングパイプライン。 - 前記変更されたシェーディングレートのクワッドの第1セットが前記サブサンプリングシェーディングレートを有すること、又は、前記変更されたシェーディングレートのクワッドの第2セットが前記スーパーサンプリングシェーディングレートを有することを決定することが、三角形毎に実行され、
前記決定することは、
三角形のシェーディングレートを識別することと、
前記三角形をラスタライズして、前記クワッドの第1セット又は前記クワッドの第2セットを生成することと、
前記三角形の前記シェーディングレートを、前記クワッドの第1セット又は前記クワッドの第2セットに割り当てることと、を含む、
請求項12のグラフィックスプロセッシングパイプライン。 - 前記変更されたシェーディングレートのクワッドの第1セットが前記サブサンプリングシェーディングレートを有すること、又は、前記変更されたシェーディングレートのクワッドの第2セットが前記スーパーサンプリングシェーディングレートを有することを決定することが、シェーディングレートタイル毎に実行され、
前記決定することは、
前記クワッドの第1セット又は前記クワッドの第2セットに対応するシェーディングレートタイルのシェーディングレートを識別することと、
前記シェーディングレートタイルの前記シェーディングレートを、前記クワッドの第1セット又は前記クワッドの第2セットに割り当てることと、を含む、
請求項12のグラフィックスプロセッシングパイプライン。 - 前記シェーディングレートタイルの前記シェーディングレートを識別することは、シェーディングレートタイル画像においてルックアップを実行することを含む、
請求項14のグラフィックスプロセッシングパイプライン。 - 前記変更されたシェーディングレートのクワッドの第1セットが前記サブサンプリングシェーディングレートを有すること、又は、前記変更されたシェーディングレートのクワッドの第2セットが前記スーパーサンプリングシェーディングレートを有することを決定することが、個別の三角形のシェーディングレートタイル毎に実行され、
前記決定することは、
三角形のシェーディングレートを識別することと、
前記三角形をラスタライズして、前記クワッドの第1セット又は前記クワッドの第2セットを生成することと、
前記クワッドの第1セット又は前記クワッドの第2セットに対応するシェーディングレートタイルのシェーディングレートを識別することと、
前記シェーディングレートタイルの前記シェーディングレートを、前記クワッドの第1セット又は前記クワッドの第2セットに割り当てることと、を含む、
請求項12のグラフィックスプロセッシングパイプライン。 - シェーディングされた、前記変更されたシェーディングレートのクワッドの第2セットをレンダーターゲットに書き込むように構成されたアウトプットマージャステージをさらに備える、
請求項10のグラフィックスプロセッシングパイプライン。 - シェーディングされた、前記変更されたシェーディングレートのクワッドの第1セットをアップサンプリングし、得られたアップサンプリングされたクワッドを変調するように構成されたアウトプットマージャステージをさらに備える、
請求項10のグラフィックスプロセッシングパイプライン。 - ピクセルシェーダプログラムを実行するように構成されたプロセッシングユニットと、
ピクセルシェーディング及びラスタライゼーションを異なる解像度で実行するグラフィックスプロセッシングパイプラインと、
を備えるアクセラレーテッドプロセッシングデバイス(APD)であって、
前記グラフィックスプロセッシングパイプラインは、
タイルバッファと、
ラスタライザステージと、
ピクセルシェーダステージと、を備え、
前記ラスタライザステージは、
クワッドの第1セットを前記タイルバッファに記憶することと、
前記クワッドの第1セットから、サブサンプリングレートで変更されたシェーディングレートのクワッドの第1セットを生成することと、
クワッドの第2セットを前記タイルバッファに記憶することと、
前記クワッドの第2セットから、スーパーサンプリングレートで変更されたシェーディングレートのクワッドの第2セットを生成することと、
を行うように構成されており、
前記ピクセルシェーダステージは、
前記変更されたシェーディングレートのクワッドの第1セットと、前記変更されたシェーディングレートのクワッドの第2セットと、をシェーディングするためのピクセルシェーダプログラムを実行するように構成されている、
アクセラレーテッドプロセッシングデバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/228,692 US11276211B2 (en) | 2018-12-20 | 2018-12-20 | Integration of variable rate shading and super-sample shading |
US16/228,692 | 2018-12-20 | ||
PCT/US2019/066500 WO2020131679A1 (en) | 2018-12-20 | 2019-12-16 | Integration of variable rate shading and super-sample shading |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022512082A true JP2022512082A (ja) | 2022-02-02 |
Family
ID=71097730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021530935A Pending JP2022512082A (ja) | 2018-12-20 | 2019-12-16 | 可変レートシェーディングとスーパーサンプリングシェーディングの統合 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11276211B2 (ja) |
EP (1) | EP3899858A4 (ja) |
JP (1) | JP2022512082A (ja) |
KR (1) | KR20210095914A (ja) |
CN (1) | CN113196333A (ja) |
WO (1) | WO2020131679A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10460513B2 (en) * | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
US11257273B2 (en) * | 2019-12-19 | 2022-02-22 | Advanced Micro Devices, Inc. | Data output rate with variable rate shading |
US11127109B1 (en) * | 2020-03-23 | 2021-09-21 | Samsung Electronics Co., Ltd. | Methods and apparatus for avoiding lockup in a graphics pipeline |
GB2603156B (en) * | 2021-01-28 | 2023-05-10 | Advanced Risc Mach Ltd | Tile-based graphics processing systems |
US20220414950A1 (en) * | 2021-06-29 | 2022-12-29 | Advanced Micro Devices, Inc. | Per-pixel variable rate shading controls using stencil data |
US11763521B2 (en) | 2021-08-13 | 2023-09-19 | Samsung Electronics Co., Ltd. | Method and apparatus for the automation of variable rate shading in a GPU driver context |
US20230298133A1 (en) * | 2022-03-17 | 2023-09-21 | Advanced Micro Devices, Inc. | Super resolution upscaling |
CN115022678B (zh) * | 2022-05-30 | 2024-07-02 | 中国电信股份有限公司 | 图像处理方法、系统、装置、设备及存储介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6943805B2 (en) | 2002-06-28 | 2005-09-13 | Microsoft Corporation | Systems and methods for providing image rendering using variable rate source sampling |
US8547395B1 (en) * | 2006-12-20 | 2013-10-01 | Nvidia Corporation | Writing coverage information to a framebuffer in a computer graphics system |
US8368706B2 (en) | 2007-06-01 | 2013-02-05 | Gvbb Holdings S.A.R.L. | Image processing device and method for pixel data conversion |
US8044956B1 (en) * | 2007-08-03 | 2011-10-25 | Nvidia Corporation | Coverage adaptive multisampling |
KR20090040515A (ko) | 2007-10-22 | 2009-04-27 | 삼성전자주식회사 | 적응적 탐색 기법을 이용한 이미지 공간 기반의 음영 처리장치 및 방법 |
US8605087B2 (en) * | 2008-07-03 | 2013-12-10 | Nvidia Corporation | Hybrid multisample/supersample antialiasing |
US9299125B2 (en) * | 2013-05-03 | 2016-03-29 | Advanced Micro Devices Inc. | Variable acuity rendering using multisample anti-aliasing |
US9355483B2 (en) | 2013-07-19 | 2016-05-31 | Nvidia Corporation | Variable fragment shading with surface recasting |
US9569883B2 (en) * | 2013-12-12 | 2017-02-14 | Intel Corporation | Decoupled shading pipeline |
US9569886B2 (en) * | 2013-12-19 | 2017-02-14 | Intel Corporation | Variable shading |
US9905046B2 (en) * | 2014-04-03 | 2018-02-27 | Intel Corporation | Mapping multi-rate shading to monolithic programs |
US10262455B2 (en) * | 2015-12-04 | 2019-04-16 | Intel Corporation | Merging fragments for coarse pixel shading using a weighted average of the attributes of triangles |
US10192280B2 (en) | 2016-04-08 | 2019-01-29 | Qualcomm Incorporated | Per-vertex variable rate shading |
US10535186B2 (en) * | 2016-08-30 | 2020-01-14 | Intel Corporation | Multi-resolution deferred shading using texel shaders in computing environments |
US10147227B2 (en) * | 2017-02-17 | 2018-12-04 | Microsoft Technology Licensing, Llc | Variable rate shading |
US10706616B2 (en) * | 2017-04-21 | 2020-07-07 | Intel Corporation | Fragment compression for coarse pixel shading |
US10235799B2 (en) * | 2017-06-30 | 2019-03-19 | Microsoft Technology Licensing, Llc | Variable rate deferred passes in graphics rendering |
US10510185B2 (en) * | 2017-08-25 | 2019-12-17 | Advanced Micro Devices, Inc. | Variable rate shading |
-
2018
- 2018-12-20 US US16/228,692 patent/US11276211B2/en active Active
-
2019
- 2019-12-16 JP JP2021530935A patent/JP2022512082A/ja active Pending
- 2019-12-16 KR KR1020217019698A patent/KR20210095914A/ko unknown
- 2019-12-16 WO PCT/US2019/066500 patent/WO2020131679A1/en unknown
- 2019-12-16 EP EP19897802.5A patent/EP3899858A4/en active Pending
- 2019-12-16 CN CN201980084278.2A patent/CN113196333A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20200202594A1 (en) | 2020-06-25 |
CN113196333A (zh) | 2021-07-30 |
KR20210095914A (ko) | 2021-08-03 |
WO2020131679A1 (en) | 2020-06-25 |
EP3899858A4 (en) | 2022-09-21 |
EP3899858A1 (en) | 2021-10-27 |
US11276211B2 (en) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022512082A (ja) | 可変レートシェーディングとスーパーサンプリングシェーディングの統合 | |
KR102192065B1 (ko) | 가변 레이트 셰이딩 | |
US11657560B2 (en) | VRS rate feedback | |
JP7122396B2 (ja) | グラフィックスパイプラインにおけるメモリ使用削減のためのコンパイラ支援技法 | |
US20220414950A1 (en) | Per-pixel variable rate shading controls using stencil data | |
JP2023525725A (ja) | データ圧縮の方法及び装置 | |
US11030791B2 (en) | Centroid selection for variable rate shading | |
US20220414939A1 (en) | Render target compression scheme compatible with variable rate shading | |
US11972518B2 (en) | Hybrid binning | |
US11257273B2 (en) | Data output rate with variable rate shading | |
US11900499B2 (en) | Iterative indirect command buffers | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
US20220319091A1 (en) | Post-depth visibility collection with two level binning | |
JP2023532433A (ja) | マルチサンプルアンチエイリアシングのためのロード命令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240111 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240123 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240417 |