(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-10
(45)【発行日】2022-01-13
(54)【発明の名称】コンピューティングシステムにおけるアンチエイリアシング動作の実行
(51)【国際特許分類】
G06T 15/50 20110101AFI20220105BHJP
【FI】
G06T15/50 300
(21)【出願番号】P 2018555849
(86)(22)【出願日】2017-01-17
(86)【国際出願番号】 US2017013786
(87)【国際公開番号】W WO2017127363
(87)【国際公開日】2017-07-27
【審査請求日】2020-01-17
(32)【優先日】2016-01-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】エフゲニー ファインスタイン
【審査官】山▲崎▼ 雄介
(56)【参考文献】
【文献】特開2009-181582(JP,A)
【文献】特開2010-102713(JP,A)
【文献】米国特許出願公開第2014/0327696(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/50
(57)【特許請求の範囲】
【請求項1】
メモリと、
プロセッサと、を備え、
前記プロセッサは、
前記メモリに記憶された第1画像に対してアンチエイリアシング解像動作を実行する要求を検出することであって、前記第1画像は、ピクセル当たり複数のサブピクセルサンプルを含み、第1セットの寸法を有する、ことと、
前記要求を検出したことに応じて、
第2画像の各ピクセルが、前記第1画像の1つのサブピクセルサンプルによって表される単一のサンプルを有し、前記第1セットの寸法よりも大きい第2セットの寸法を有する
ように、前記第1画像の寸法を拡張して前記第2画像を生成することと、
前記第2画像に対して後処理アンチエイリアシングを実行して、前記第2セットの寸法を有する第3画像を生成することと、
前記第3画像の寸法を縮小して第4画像を生成することであって、前記第4画像は前記アンチエイリアシング解像動作の結果である、ことと、
を行うように構成されている、
システム。
【請求項2】
後処理アンチエイリアシングを実行することは、周囲のピクセルの値に基づいてピクセルをフィルタリングすることを含み、前記
後処理アンチエイリアシン
グは、平均化の前に実行される、請求項1のシステム。
【請求項3】
前記第1画像の寸法を拡張することは、前記第1画像のサブピクセルを、前記第2画像の通常のピクセルに変換することを含む、請求項1のシステム。
【請求項4】
前記第2画像は、前記第1画像を拡張して回転させることによって生成される、請求項
1のシステム。
【請求項5】
前記プロセッサは、前記第1画像を回転して、前記サブピクセルを、前記第2画像内の垂直及び水平グリッドパターン内に整列するように構成されている、請求項4のシステム。
【請求項6】
前記プロセッサは、
複数の三角形部分を、前記第1画像から前記第2画像内の新たな位置に再配置することと、
前記第1画像の残りの部分を、再配置された前記複数の三角形部分の間の前記第2画像内の新たな位置に再配置することと、
を行うように構成されている、
請求項5のシステム。
【請求項7】
前記プロセッサは、
第1三角形部分を、前記第1画像の左側から前記第2画像の右側に移動することと、
第2三角形部分を、前記第1画像の右側から前記第2画像の左側に移動することと、
前記第1画像の第3部分を、前記第2画像内の前記第1三角形部分と前記第2三角形部分との間に適合するように移動することと、
を行うように構成されている、
請求項6のシステム。
【請求項8】
コンピューティングデバイスにおける使用のための方法であって、
ピクセル当たり複数のサブピクセルサンプルを含む第1画像であって、第1セットの寸法を有する第1画像に対してアンチエイリアシング解像動作を実行する要求を検出することと、
前記要求を検出したことに応じて、
第2画像の各ピクセルが、前記第1画像の1つのサブピクセルサンプルによって表される単一のサンプルを有し、前記第1セットの寸法よりも大きい第2セットの寸法を有する
ように、前記第1画像の寸法を拡張して前記第2画像を生成することと、
前記第2画像に対して後処理アンチエイリアシングを実行して、前記第2セットの寸法を有する第3画像を生成することと、
前記第3画像の寸法を縮小して第4画像を生成することであって、前記第4画像は前記アンチエイリアシング解像動作の結果である、ことと、を含む、
方法。
【請求項9】
後処理アンチエイリアシングを実行することは、周囲のピクセルの値に基づいてピクセルをフィルタリングすることを含み、前記
後処理アンチエイリアシン
グは、平均化の前に実行される、請求項8の方法。
【請求項10】
前記第1画像の寸法を拡張することは、前記第1画像のサブピクセルを、前記第2画像の通常のピクセルに変換することを含む、請求項8の方法。
【請求項11】
前記第2画像は、前記第1画像を拡張して回転させることによって生成される、請求項
8の方法。
【請求項12】
前記第1画像を回転して、前記サブピクセルを、前記第2画像内の垂直及び水平グリッドパターン内に整列することを含む、請求項11の方法。
【請求項13】
複数の三角形部分を、前記第1画像から前記第2画像内の新たな位置に再配置することと、
前記第1画像の残りの部分を、再配置された前記複数の三角形部分の間の前記第2画像内の新たな位置に再配置することと、を含む、
請求項12の方法。
【請求項14】
第1三角形部分を、前記第1画像の左側から前記第2画像の右側に移動することと、
第2三角形部分を、前記第1画像の右側から前記第2画像の左側に移動することと、
前記第1画像の第3部分を、前記第2画像内の前記第1三角形部分と前記第2三角形部分との間に適合するように移動することと、を含む、
請求項13の方法。
【請求項15】
メモリと、
複数の実行ユニットと、を備え、
前記複数の実行ユニットは、
前記メモリに記憶された第1画像に対してアンチエイリアシング解像動作を実行する要求を検出することであって、前記第1画像は、ピクセル当たり複数のサブピクセルサンプルを含み、第1セットの寸法を有する、ことと、
前記要求を検出したことに応じて、
第2画像の各ピクセルが、前記第1画像の1つのサブピクセルサンプルによって表される単一のサンプルを有し、前記第1セットの寸法よりも大きい第2セットの寸法を有する
ように、前記第1画像の寸法を拡張して前記第2画像を生成することと、
前記第2画像に対して後処理アンチエイリアシングを実行して、前記第2セットの寸法を有する第3画像を生成することと、
前記第3画像の寸法を縮小して第4画像を生成することであって、前記第4画像は前記アンチエイリアシング解像動作の結果である、ことと、
を行うように構成されている、
プロセッサ。
【請求項16】
後処理アンチエイリアシングを実行することは、周囲のピクセルの値に基づいてピクセルをフィルタリングすることを含み、前記
後処理アンチエイリアシン
グは、平均化の前に実行される、請求項15のプロセッサ。
【請求項17】
前記第1画像の寸法を拡張することは、前記第1画像のサブピクセルを、前記第2画像の通常のピクセルに変換することを含む、請求項15のプロセッサ。
【請求項18】
前記第2画像は、前記第1画像を拡張して回転させることによって生成される、請求項
15のプロセッサ。
【請求項19】
前記プロセッサは、前記第1画像を回転して、前記サブピクセルを、前記第2画像内の垂直及び水平グリッドパターン内に整列するように構成されている、請求項18のプロセッサ。
【請求項20】
前記プロセッサは、
複数の三角形部分を、前記第1画像から前記第2画像内の新たな位置に再配置することと、
前記第1画像の残りの部分を、再配置された前記複数の三角形部分の間の前記第2画像内の新たな位置に再配置することと、
を行うように構成されている、
請求項19のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
(関連出願の相互参照)
本願は、2016年1月18日に出願された、発明者がEvgene Fainstainである「Advanced Multisampling Techniques For Realtime 3D Graphics」と題する米国仮特許出願第62/279,889号の優先権の利益を主張するものであり、本明細書に十分且つ完全に記載されているかのように、その全体が参照により本明細書に援用される。
【0002】
3次元(3D)レンダリングは、計算集約型プロセスであり、現実的(すなわち、映画的)な高品質のリアルタイムレンダリングを生成するために、相当量の計算能力を必要とする。3Dハードウェア製造業者は、レンダリングタスクを実行するために、処理能力がより高いデバイス(例えば、グラフィックス処理ユニット(GPU))を継続的に製造する。GPUは、グラフィックス処理タスクを実行するように構成された複雑な集積回路である。例えば、GPUは、ビデオゲームアプリケーション等のエンドユーザアプリケーションに必要なグラフィックス処理タスクを実行することができる。GPUは、ディスクリートデバイスであってもよく、中央処理装置(CPU)等の別のプロセッサと同じデバイス内に含まれてもよい。
【0003】
残念なことに、現代のリアルタイム3Dレンダリングハードウェアは、物理世界をリアルタイムに適切にシミュレーションするほど処理能力が高くない。例えば、レイトレーシング等のアルゴリズムは計算コストが高すぎて、リアルタイムで実装することが困難である。したがって、画像が全体的に物理的に正確ではないが実際に十分に見える画像を生成するために、様々な効率改善技術が用いられる。3D生成画像の共通の問題は、固有の「ジッパー」効果(すなわち、「ジャギー」又は「エイリアシング」)である。これまで、レンダリングされた画像に対するこれらのエイリアシング効果を最小にするために開発された技術は、効果が無く、及び/又は、計算コストが高すぎる。
【発明の概要】
【課題を解決するための手段】
【0004】
アンチエイリアシングに関連する動作を実行するシステム及び方法の様々な実施形態が考えられる。一実施形態では、少なくとも1つのメモリとプロセッサとを備えるシステムが考えられる。プロセッサは、メモリに記憶された第1画像に対してアンチエイリアシング解像動作(resolve operation)を実行する要求を検出するように構成されている。第1画像は、ピクセル当たり複数のサブピクセルサンプルを含み、第1寸法セットを有する。プロセッサは、要求を検出したことに応じて、第1画像の寸法を拡張して、ピクセル当たり単一のサンプルを含む第2画像であって、第1寸法セットより大きい第2寸法セットを有する第2画像を生成し、第2画像に対して後処理アンチエイリアシングを実行して、第2寸法セットを有する第3画像を生成し、第3画像の寸法を縮小して第4画像を生成するように構成されている。ここで、第4画像は、アンチエイリアシング解像動作の結果である。様々な実施形態では、後処理アンチエイリアシングを実行することは、平均化の前に実行され、周囲のピクセルの値に基づいてピクセルをフィルタリングすることを含む。様々な実施形態において、第1画像の寸法を拡張することは、第1画像のサブピクセルを第2画像の通常の(regular)ピクセルに変換することを含む。さらに、いくつかの実施形態では、第2画像は、第1画像を拡張して回転させることによって生成される。いくつかの実施形態では、プロセッサは、第1画像を回転させて、サブピクセルを第2画像内の垂直及び水平グリッドパターンに整列させるように構成されている。さらなる実施形態では、複数の三角形部分を第1画像から第2画像内の新たな位置に再配置し、第1画像の残りの部分を、再配置された複数の三角形部分の間の第2画像内の新たな位置に再配置するプロセッサを含む。また、上記の機能を実行する方法も考えられる。
【0005】
また、メモリと複数の実行ユニットとを備えるプロセッサが考えられる。かかる実施形態では、プロセッサは、回転グリッドに基づいて、レンダリングされる画像のピクセル毎に複数のサブピクセルサンプリング座標を生成することであって、回転量は回転グリッドに対して指定される、ことと、複数の実行ユニットによってレンダリングされる画像の各ピクセル内の複数のサブピクセルサンプリング座標によって示されるサブピクセル位置をサンプリングすることと、サブピクセル位置の値をメモリに記憶することと、を行うように構成されている。いくつかの実施形態では、複数のサブピクセルサンプリング座標を生成する場合に、プロセッサは、画像の所定の位置を斜めに通過する第1セットの平行線に対応する位置を計算することと、第1セットの平行線に垂直な第2セットの平行線に対応する位置を計算することと、を行うように構成されている。ここで、第1セット及び第2セットの平行線は、回転グリッドを形成する。また、様々な実施形態では、プロセッサは、回転グリッドをシフトして、第1セット及び第2セットの平行線の頂点が、対応する各ピクセルの中心にある重心を有するようにすることと、複数のサブピクセルサンプリング座標を、画像のピクセル内の第1セット及び第2セットの平行線の頂点の位置と一致するように指定することと、を行うように構成されている。様々な実施形態では、所定の位置は、ピクセルの角部又はピクセルの中心の何れかである。さらに、様々な実施形態では、上記の1つ以上を実行することによって、以下の条件、すなわち、サブピクセルサンプリング座標が水平方向及び垂直方向に間隔をおいて規則的に配置されること、ピクセル当たり1つのサブピクセルサンプリング位置のみが、画像を横断する所定の水平線又は垂直線上に存在することと、第1セットの平行線の各線の傾きが、2つの互いに素な数の比に等しいことと、のうち1つ以上を満たすことが保証される実施形態が考えられる。また、上記の機能を実行する方法も考えられる。
【0006】
本明細書に記載された方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解されるであろう。
【図面の簡単な説明】
【0007】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】グラフィックス処理パイプラインの一実施形態のブロック図である。
【
図3】一実施形態によるサブピクセルサンプリングパターンを示す図である。
【
図4】一実施形態による5×MSAAサンプリングパターンを示す図である。
【
図5】一実施形態による10×MSAAサブピクセルサンプリングパターンを示す図である。
【
図6】一実施形態による13×MSAAサブピクセルサンプリングパターンを示す図である。
【
図7】一実施形態による17×MSAAサブピクセルサンプリングパターンを示す図である。
【
図8】一実施形態による、元のピクセル当たり8つのサブピクセルサンプリングポイントを有するサンプリングパターンを示す図である。
【
図9】様々な実施形態によるピクセル共有パターンを示す図である。
【
図10】ハイブリッドアンチエイリアシングスキームの一実施形態を示す図である。
【
図11】ハイブリッドアンチエイリアシングスキームの別の実施形態を示す図である。
【
図12】拡張された画像のサイズを縮小する技術を示す図である。
【
図13】ハイブリッドアンチエイリアシング解像動作を実行する方法の一実施形態を示す一般化されたフロー図である。
【
図14】画像を拡張して回転させる場合に画像部分を再配置する方法の一実施形態を示す一般化されたフロー図である。
【
図15】画像を拡張して回転させる場合に画像部分を再配置する方法の別の実施形態を示す一般化されたフロー図である。
【
図16】画像のサブピクセル位置をサンプリングする方法の一実施形態を示す一般化されたフロー図である。
【
図17】レンダリングされる画像のピクセル毎に複数のサブピクセルサンプリング座標を生成する方法の一実施形態を示す一般化されたフロー図である。
【
図18】サブピクセルサンプリング座標を生成する方法の一実施形態を示す一般化されたフロー図である。
【
図19】アンチエイリアシング動作を実行する方法の一実施形態を示す一般化されたフロー図である。
【
図20】サンプリンググリッドを生成する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0008】
以下の説明では、本明細書で示される方法及びメカニズムの完全な理解を提供するために、多くの特定の詳細が示されている。しかしながら、当業者であれば、これらの具体的な詳細無しに様々な実施形態を実施可能であることを認識するであろう。いくつかの実施例では、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書に記載のアプローチを不明瞭にすることを避けるために、詳細に示されていない。説明を簡単且つ明瞭にするために、図面に示される要素が必ずしも原寸大で描写されていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素と比較して誇張されていてもよい。
【0009】
ハイブリッドアンチエイリアシング動作をプロセッサ上で実行するための様々なシステム、装置、方法及びコンピュータ可読媒体が開示される。一実施形態では、プロセッサは、少なくとも1つのメモリと、複数の実行ユニットと、を含む。一実施形態では、プロセッサはGPUである。他の実施形態では、プロセッサは、様々な他のタイプのプロセッサ(例えば、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、マルチコアプロセッサ等)の何れかである。プロセッサは、メモリに記憶された第1画像に対してアンチエイリアシング解像動作を実行する要求を検出する。プロセッサは、この要求を検出したことに応じて、第1画像の寸法を拡張して第2画像を生成し、第2画像を後処理アンチエイリアシングフィルタでフィルタリングして第3画像を生成し、第3画像の平均化を実行して第4画像を生成する。ここで、第4画像は、アンチエイリアシング動作の結果である。第1画像の寸法を拡張することは、第1画像のサブピクセルを、第2画像の通常のピクセルに変換することを含む。また、プロセッサは、第1画像を回転させて、サブピクセルを、第2画像内の垂直及び水平グリッドパターンに整列させることができる。
【0010】
一実施形態では、プロセッサは、第2画像の未使用領域を記憶及び/又は処理するメモリオーバヘッドを低減するように、複数の三角形部分を第1画像から第2画像内の新たな位置に再配置する。ここで、未使用領域は、第1画像を回転させた結果として生成される。また、プロセッサは、第1画像の残りの部分を、再配置された複数の三角形部分の間の第2画像内の新たな位置に再配置する。一実施形態では、プロセッサは、第1画像の第1三角形部分を第2画像の右側に移動させる。また、プロセッサは、第1画像の第2三角形部分を第2画像の左側に移動させる。さらに、プロセッサは、第1画像の第3部分を、第2画像内の第1三角形部分と第2三角形部分との間に移動させる。
【0011】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、メモリ150に接続されたシステムオンチップ(SoC)105を含む。SoC105は、集積回路(IC)と呼ぶこともできる。一実施形態では、SoC105は、処理ユニット115A~Nと、入出力(I/O)インタフェース110と、共有キャッシュ120A~Bと、ファブリック125と、グラフィックス処理ユニット(GPU)130と、メモリコントローラ140と、を含む。また、SoC105は、図を不明瞭にするのを避けるために、
図1に示されていない他のコンポーネントを含むこともできる。処理ユニット115A~Nは、任意の数及びタイプの処理ユニットを表している。一実施形態では、処理ユニット115A~Nは、中央処理装置(CPU)コアである。別の実施形態では、1つ以上の処理ユニット115A~Nは、他のタイプの処理ユニット(例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)等)である。処理ユニット115A~Nは、共有キャッシュ120A~Bと、ファブリック125と、に接続されている。
【0012】
一実施形態では、処理ユニット115A~Nは、特定の命令セットアーキテクチャ(ISA)の命令を実行するように構成されている。各処理ユニット115A~Nは、1つ以上の実行ユニットと、キャッシュメモリと、スケジューラと、分岐予測回路と、等を含む。一実施形態では、処理ユニット115A~Nは、オペレーティングシステム等のシステム100の主制御ソフトウェアを実行するように構成されている。一般に、使用中に処理ユニット115A~Nによって実行されるソフトウェアは、システム100の所望の機能を実現するために、システム100の他のコンポーネントを制御することができる。また、処理ユニット115A~Nは、アプリケーションプログラム等の他のソフトウェアを実行することができる。
【0013】
GPU130は、少なくともサブピクセル座標テーブル135と、グラフィックス又は汎用処理に使用される任意の数及びタイプのコンピュートユニットを表すコンピュートユニット145A~Nと、を含む。サブピクセル座標テーブル135は、GPU130によってレンダリングされる画像のピクセル内のサブピクセルサンプリング位置の座標を記憶するプログラム可能なテーブルである。「サブピクセルサンプリング位置」という用語は、レンダリングされる画像の所定のピクセル内のパラメータ(例えば、色、深度、ステンシル、透明度等)の値をサンプリングするための複数の位置として定義されていることに留意されたい。「サブピクセルサンプリング位置」という用語は、レンダリングされる画像の各ピクセル内に複数のサンプリング位置が存在することを示している。様々な異なるタイプのサブピクセルサンプリングパターンの何れかを、異なる実施形態で利用することができる。サブピクセルサンプリングパターンは、所定の画像を処理する場合にピクセル内の何れの位置がサンプリングされるのかを指定するために、サブピクセル座標テーブル135内に生成され、プログラミングされる。
【0014】
コンピュートユニット145A~Nは、「シェーダアレイ」、「シェーダエンジン」、「シェーダユニット」、「単一命令多重データ(SIMD)ユニット」又は「SIMDコア」と呼ぶこともできる。各コンピュートユニット145A~Nは、複数の実行ユニットを含む。GPU130は、共有キャッシュ120A~Bと、ファブリック125と、に接続されている。一実施形態では、GPU130は、グラフィックスパイプライン操作(例えば、描画コマンド、ピクセル操作、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の操作等)を実行するように構成されている。別の実施形態では、GPU130は、グラフィックスに無関係な操作を実行するように構成されている。さらなる実施形態では、GPU130は、グラフィックス操作及び非グラフィックス関連操作の両方を実行するように構成されている。
【0015】
一実施形態では、GPU130は、第1画像に対してアンチエイリアシング解像動作を実行する要求を検出するように構成されている。一実施形態では、「解像動作」という用語は、サブピクセルがサンプリングされた表面を、ピクセル当たり1つのサンプルを有する表面に変換すること、として定義されている。GPU130は、この要求を検出したことに応じて、第1画像の寸法を拡張して第2画像を生成し、第2画像を後処理アンチエイリアシングフィルタでフィルタリングして第3画像を生成し、第3画像の平均化を実行して第4画像を生成する。ここで、第4画像は、アンチエイリアシング動作の結果である。第1画像の寸法を拡張することは、第1画像のサブピクセルを、第2画像の通常のピクセルに変換することを含む。また、GPU130は、第1画像を回転させて、サブピクセルを、第2画像内の垂直及び水平グリッドパターンに整列させることもできる。
【0016】
I/Oインタフェース110は、ファブリック125に接続されており、任意の数及びタイプのインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI拡張(PCI‐X)、PCIE(PCIエクスプレス)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB)等)を表している。様々なタイプの周辺機器を、I/Oインタフェース110に接続することができる。かかる周辺機器には、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック若しくは他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインタフェースカード等が含まれるが、これらに限定されない。
【0017】
SoC105は、1つ以上のメモリモジュールを含むメモリ150に接続されている。各メモリモジュールは、メモリモジュールに搭載された1つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ150は、マザーボードに搭載された1つ以上のメモリデバイス、又は、SoC105が搭載された他のキャリアに搭載された1つ以上のメモリデバイスを含む。一実施形態では、メモリ150は、動作中にSoC105と共に用いられるランダムアクセスメモリ(RAM)を実装するために使用される。実装されるRAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、抵抗変化メモリ(ReRAM)、相変化RAM(PCRAM)、又は、任意の他の揮発性若しくは不揮発性RAMであってもよい。メモリ150を実装するために使用されるDRAMのタイプは、ダブルデータレート(DDR)DRAM、DDR2 DRAM、DDR3 DRAM等を含むが、これらに限定されない。
図1には明示されていないが、SoC105は、処理ユニット115A~N及び/又はコンピュートユニット145A~Nの内部にある1つ以上のキャッシュメモリを含むこともできる。いくつかの実施形態では、SoC105は、処理ユニット115A~N及びコンピュートユニット145A~Nによって利用される共有キャッシュ120A~Bを含む。一実施形態では、キャッシュ120A~Bは、キャッシュコントローラを含むキャッシュサブシステムの一部である。
【0018】
ここで、様々な構造の次に表示された「N」という文字は、その構造(例えば、任意の数の処理ユニット115A~N)の要素を含む任意の数の要素を包括的に示すのを意味することに留意されたい。また、「N」という文字(例えば、処理ユニット115A~N及びコンピュートユニット145A~N)を使用する
図1内の異なる符号は、異なる要素が等しい数で提供されるのを示すことを意図していない(例えば、処理ユニット115A~Nの数は、コンピュートユニット145A~Nの数と異なっていてもよい)。
【0019】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスであってもよい。コンピューティングシステム100及び/又はSoC105のコンポーネントの数は、実施形態毎に異なり得ることに留意されたい。
図1に示された数より多い又は少ない各コンポーネント/サブコンポーネントが存在し得る。例えば、別の実施形態では、SoC105は、複数のメモリに接続された複数のメモリコントローラを含むことができる。コンピューティングシステム100及び/又はSoC105は、
図1に示されていない他のコンポーネントを含むことができることにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100及びSoC105を、
図1に示されている以外の方法で構成することができる。
【0020】
図2を参照すると、グラフィックス処理パイプライン200の一実施形態のブロック図が示されている。一実施形態では、グラフィックス処理パイプライン200は、GPU130(
図1)によって実装されている。他の実施形態では、グラフィックス処理パイプライン200を、他のタイプの処理ハードウェア(例えば、FPGA、ASIC、DSP、マルチコアプロセッサ等)を使用して実装することができる。一般に、グラフィック処理パイプライン200は、ソフトウェア及び/又はハードウェアの任意の適切な組み合わせを使用して実装され得る。パイプラインアーキテクチャは、動作を複数のステージに分割し、各ステージの出力が後続のパイプラインステージの入力として供給されることによって、長いレイテンシの動作をより効率的に実行することができる。パイプライン200内のシェーダユニット205A~Nは、頂点シェーダ、ジオメトリシェーダ、フラグメントシェーダ、ピクセルシェーダ、及び/又は、キャッシュ/メモリ210に接続された1つ以上の他のシェーダを含むことができる。キャッシュ/メモリ210は、任意のタイプ及び数のキャッシュ又はメモリデバイスを表している。パイプライン200に示されているシェーダユニット205A~Nのうち1つ以上のシェーダユニットは、以下に詳細に説明するハイブリッドアンチエイリアシング解像動作を実行するように構成されている。このシェーダユニットは、画像、テクスチャ又は他の入力ピクセルデータを受信し、画像に対してハイブリッドアンチエイリアシング解像動作を実行し、アンチエイリアシングされた画像を出力として生成する。実施形態に応じて、アンチエイリアシングされた画像は、ディスプレイに送られてもよいし、メモリに書き戻されてもよいし、1つ以上の追加のシェーダユニットによって処理されてもよい。
【0021】
図3を参照すると、サブピクセルサンプリングパターンの一実施形態の図が示されている。ダイアグラム305は、
図3の最上部に示されており、ピクセルの境界を示す水平線及び垂直線を含む4×4ピクセルの正方形のグリッドを有している。グリッド内の各正方形は、ソース画像のピクセルを表している。一実施形態では、サブピクセルサンプリングパターンは、ピクセルの角部を通過して2×1の傾きを有する第1セットの線を描画することによって生成される。2×1の傾きを有する第1セットの線は、幅が2ピクセルで高さが1ピクセルの矩形の対角線に平行であることに留意されたい。本明細書で使用される場合、「2×1の傾き」という用語は、従来の数学的定義による-1/2の傾きに対応する。概して、第1セットの線がN×Mの傾きを有すると記載された場合には、これらの線の傾きの従来的な定義は、-M/Nとなる。次に、第2セットの線が第1セットの線に対して垂直に描画され、第1セット及び第2セットの線は、4×4ピクセルの正方形のグリッドの上方に回転グリッドを形成する。サブピクセルサンプリング位置は、回転グリッドの第1セット及び第2セットの線の頂点(すなわち、交点)と一致するように選択される。ここでは、サンプリングパターンを生成するために線を「描画」することについて説明しているが、サブピクセルサンプリングパターンを生成するために、回転グリッドの第1セット及び第2セットの平行線を実際に描画する必要がないことに留意されたい。むしろ、サブピクセルサンプリングパターンを生成するために、これらの線を数学的に決定する(例えば、これらの線の方程式を計算する)ことができる。
【0022】
次に、一実施形態では、ダイアグラム310に示すように、元のピクセル毎のサブピクセルサンプリング位置の重心が元のピクセルの中心となるように、回転グリッドをシフトする。例えば、一実施形態では、(X1+X2+…XN)/N(Nは、サブピクセルのサンプル数)の値がx座標についての元のピクセルの中心に等しくなるように、及び、サブピクセルのY座標についても同様の式を使用して、グリッドをシフトさせる。元のピクセル毎のサブピクセルサンプリング位置の重心が元のピクセルの中心となるように回転グリッドをシフトするステップは、他の実施形態では省略可能であることに留意されたい。サブピクセルサンプリング位置は、第1セット及び第2セットの線の交点における円によってダイアグラム310内に示されている。別の実施形態では、サブピクセルサンプリングパターンは、元のピクセルの中心を通る回転した通常のサンプリンググリッドを描画し、次に任意にシフトすることによって生成される。グリッドがピクセルの中心を通って描画される場合、1つのサブピクセルサンプルがピクセルの中心に存在し、サブピクセルサンプルの重心がピクセルの中心に存在し、サブピクセルサンプリングパターンは、ピクセルの中心の周りで対称である。例えば、ピクセルの中心が座標(0,0)を有する場合、座標(a,b)のサブピクセルサンプルについては、座標(-a,-b)に別のサブピクセルサンプルが存在する。単一のピクセルについてのサブピクセルサンプリング位置を、ダイアグラム315に示す。
【0023】
一実施形態では、ダイアグラム310に示すサブピクセルサンプリングパターンを使用して、下方に存在する画像のサブピクセルサンプリング座標を生成する。次に、これらの座標を使用して、プロセッサ(例えば、GPU)によってレンダリングされる画像内の何れのサブピクセル位置をサンプリングするかを決定する。一実施形態では、座標は、デカルト座標系に従って生成され、各サンプリング点は、一対の数値座標によって特定される。一実施形態では、数値座標は、浮動小数点(例えば、単精度浮動小数点、倍精度浮動小数点)値として記憶される。他の実施形態では、数値座標は、他のタイプの表現(例えば、固定小数点、整数)を使用して記憶される。
【0024】
単一のピクセル内の複数の別個の位置をサンプリングする技術は、「サブピクセルサンプリング」又は「マルチサンプリングアンチエイリアシング」(MSAA)と呼ぶことができる。場合によっては、単一のピクセル内の複数の別個の位置をサンプリングすることを「サブサンプリング」と呼ぶことができる。この文脈における「サブサンプリング」は、信号処理技術を説明するために「サブサンプリング」という用語が使用される場合とは異なる意味を有することを理解されたい。信号処理の分野では、「サブサンプリング」という用語は、信号のサンプリングレートを低減することとして定義されている。本開示における「サブピクセルサンプリング」という用語は、混乱を避けるために、単一のピクセル内の複数の別個の位置をサンプリングすることを説明するために使用される。
【0025】
例えば、ダイアグラム315に示すパターンは、5×MSAAサンプリングパターンと呼ぶことができる。このパターンは、元のピクセルの正方形のグリッドを通って描画された第1セットの線の各線が垂直ピクセル毎に2つの水平ピクセルを横断するように、2×1の傾きを有する第1セットの線を描画することによって構成されている。次に、線の交点がサブピクセルサンプリング位置を決定するように、第2セットの線が第1セットの線に対して垂直に描画され、結果として、ピクセル当たり2^2+1^2=5のサブピクセルサンプルが得られる。このサンプリングパターンは、シフトされ、90度回転され、ミラーリングされてもよい。このサンプリングパターン及び任意の調整は、時間的な(temporal)アンチエイリアシングにおける様々な用途に利用することができる。
【0026】
図4を参照すると、5×MSAAサンプリングパターンのダイアグラム400が示されている。
図4の説明は、
図3の説明の続きである。
図4のダイアグラム400に示すドットは、画像の様々なパラメータ(例えば、色、深度、ステンシル、透明度等)のうち何れかの値を計算する位置を決定するためのサブピクセルサンプリング位置を表している。ダイアグラム400に示すように、これらのサブピクセルサンプリング位置と交差するように描画された垂直線及び水平線は、サンプルが水平方向及び垂直方向の両方に規則的な間隔で配置されているため、5×MSAAサンプリングパターンが通常の矩形グリッド条件を満たすことを示している。また、5×MSAAサンプリングパターンは、画像を横断する所定の水平線又は垂直線上でピクセル当たり1つのサブピクセル位置のみがサンプリングされるため、水平線/垂直線当たり1つのサンプルの条件を満たす。水平線/垂直線当たり1つのサンプルの条件を満たすことは、画像内のサブピクセルレベルでの垂直線及び水平線の表現の改善を可能にすることによって、パターンのアンチエイリアシング特性を向上させることができる。
【0027】
5×MSAAサンプリングパターンは、標準的な2×2回転グリッドスーパーサンプリング(RGSS)パターンよりも複数の点で優れている。例えば、5×MSAAパターンは、水平線及び垂直線について、3つではなく4つの中間色を生成する。また、5×MSAAサンプリングパターンは、画像全体に亘って均一なサブピクセルサンプリングを保証する。5×MSAAサンプリングパターンは、ピクセル境界を越えてシフトされたものを含めてシフトすることができ、通常のグリッド品質と、水平線/垂直線毎の1サンプルの品質との両方を維持しながらミラーリングすることができる。5×MSAAサンプリングパターンは、様々な時間的なアンチエイリアシング技術を実装する場合に有利になり得る。
【0028】
図5を参照すると、10×MSAAサブピクセルサンプリングパターンの図が示されている。ダイアグラム505,510,515は、
図3に示すダイアグラム305,310,315と同様に生成される。ダイアグラム505,510,515に示された10×MSAAサンプリングパターンは、3×1の傾きを有する第1セットの線と、第1セットの線に対して垂直な第2セットの線と、から構成されており、結果として、画像のピクセル毎に3^2+1^2=10のサンプルが得られる。
【0029】
ダイアグラム505を生成するために、先ず、画像の元のピクセルの正方形のピクセルグリッドが生成される。グリッドは、ソース画像のピクセルの境界において垂直線及び水平線を含む。次に、第1セットの線が-1/3の傾きでピクセルグリッドの角部を通過するように描画され、各線は垂直ピクセル毎に3つの水平ピクセルを通過する。次いで、第1セットの線に垂直な第2セットの線が、ピクセルグリッドの角部を通過するように描画される。第2セットの線は3の傾きを有し、各線が水平ピクセル毎に3つの垂直ピクセルを通過する。第1セット及び第2セットの線は、回転グリッドと呼ぶことができる。
【0030】
次に、ダイアグラム510に示すように、元のピクセル内の第1セット及び第2セットの線の頂点(すなわち、交点)が元のピクセルの中心において重心を有するように、回転グリッドをシフトさせる。次いで、頂点の座標は、グラフィックスハードウェア(例えば、GPU)内にプログラミングされ、画像のサブピクセルサンプリング座標として利用される。ダイアグラム515は、単一のピクセルのサブピクセルサンプリング位置を示している。別の実施形態では、第1セット及び第2セットの線は、ピクセルグリッドの角部を通過するのではなく、グリッドのピクセルの中心を通過するように描画される。
【0031】
図6を参照すると、13×MSAAサブピクセルサンプリングパターンの図が示されている。ダイアグラム605,610,615は、
図3に示すダイアグラム305,310,315及び
図5に示すダイアグラム505,510,515と同様に生成される。ダイアグラム605,610に示す13×MSAAサンプリングパターンは、3×2の傾きを有する線に基づいて構成され、画像の各ピクセル内で3^2+2^2=13のサンプルが得られる。ダイアグラム615は、単一のピクセルの13個のサブピクセルサンプル位置を示している。
【0032】
図7を参照すると、17×MSAAサブピクセルサンプリングパターンの図が示されている。ダイアグラム705,710,715は、前の図と同様に生成される。ダイアグラム705,710に示す17×MSAAサンプリングパターンは、4×1の傾きを有する線に基づいて構成され、画像の各ピクセル内で4^2+1^2=17のサンプルが得られる。ダイアグラム715は、単一のピクセルの17個のサブピクセルサンプル位置を示している。
【0033】
追加のパターンは、
図3及び
図5~7に示すパターンと同様に生成することができる。一実施形態では、追加のパターンを生成する場合に、パターンが水平線/垂直線当たり1つのサンプルの条件を満たすように、傾きを生成する数値(例えば、3×1)が互いに素(co-prime)である。換言すれば、傾きを生成する数値間の最大公約数は1でなければならない。例えば、この条件を満たす追加のパターンのオプションは、ピクセル当たり25個のサブピクセルサンプル(sspp:sub-pixel samples per pixel)を有する4×3、26ssppを有する5×1、29ssppを有する5×2、34ssppを有する5×3、41ssppを有する5×4、65ssppを有する6×1等を含む。
【0034】
図8を参照すると、元のピクセル当たり8個のサブピクセルサンプリングポイントを有するサンプリングパターンの図が示されている。ダイアグラム805,810は、互いに素ではない傾きを生成する数値2×2を有するサブピクセルサンプリングパターンを示している。したがって、ダイアグラム805,810に示す8×MSAAサンプリングパターンは、2×2の傾きを有する線に基づいて構成される。得られたパターンは、ダイアグラム815に示すように、ピクセル当たり8個のサブピクセルサンプルを含む。この8個のサブピクセルサンプリングパターンの場合、垂直線及び水平線毎にピクセル当たり2個のサンプルが存在する。この結果、ソース画像内に表される水平線及び垂直線をアンチエイリアシングする場合、
図3に示す5×MSAAパターンによって生成される4つの中間トーンよりも少ない3つの中間トーンのみが生成される。しかしながら、8×MSAAパターンは、以下により詳細に説明するように、ハイブリッドアンチエイリアシング解像動作のために効率的に実施することができる。別のバージョンの8×MSAAパターンは、非回転矩形グリッド4×2から生成することができ、この別のバージョンもハイブリッドアンチエイリアシング解像動作のために効率的に実施することができる。
【0035】
図9を参照して、ピクセル共有パターンの図が示されている。
図3及び
図5~8に示す前述のパターンは、1つのサブピクセルサンプリング位置がソースピクセルの角部又は中心に位置するようにシフトすることができる。例えば、ダイアグラム905は、2×1の傾きに基づく5×サブピクセルサンプリングパターンを示しており、サブピクセルサンプリング位置がシフトされ、これらの位置のうち1つがソースピクセルの右下角部と一致するようになっている。このパターンのシフトは、ピクセルの右下角部のサブピクセル位置が4つの隣接ピクセル間で共有されるのを可能にする。ダイアグラム910は、5×サブピクセルサンプリングパターンの代替の構成を示している。ダイアグラム910は、1つのサブピクセルがピクセルの中心に位置合わせされるようにシフトされた5×サブピクセルサンプリングパターンを示している。
【0036】
ダイアグラム915は、3×1の傾きを有する10×サブピクセルサンプリングパターンを示しており、1つのサブピクセルサンプリング位置がピクセルの右下角部に位置するように、サブピクセルサンプリングパターンがシフトされている。ダイアグラム920は、3×2の傾きを有する13×サブピクセルサンプリングパターンを示しており、1つのサブピクセルサンプリング位置がピクセルの右下角部に位置するように、サブピクセルサンプリングパターンがシフトされている。ダイアグラム925は、4×1の傾きを有する17×サブピクセルサンプリングパターンを示しており、1つのサブピクセルサンプリング位置がピクセルの右下角部に位置するように、サブピクセルサンプリングパターンがシフトされている。これらのサンプリングパターンの各々は、1つのサブピクセルサンプリング位置を、4つの隣接ピクセル間で共有されるのを可能にする。したがって、解像動作中に、1つのフラグメントではなく4つのフラグメントがアクセスされる。
【0037】
いくつかの実施形態では、フラグメント当たり5、10、13又は17個のサンプルを含む表面を生成することは、実際のハードウェア実装の観点から最適ではない可能性がある。しかしながら、異なるタイプの回避策を実装することによって、フラグメント当たり5、10、13又は17個のサンプルのパターンを、既存又は将来のハードウェアに効率的に実装することができる。例えば、8×カバレッジサンプリングアンチエイリアシング(CSAA)パターン、又は、4×高品質アンチエイリアシング(EQAA)パターンの各々は、8つのカバレッジサンプルを含む。一実施形態では、8×CSAAパターン又は4×EQAAパターンを実装して、
図3のダイアグラム310,315に示す5×サブピクセルサンプリングパターンを生成することができる。8×CSAAパターン又は4×EQAAパターンの場合、追加の3つのカバレッジサンプルは、5×パターンの最初の5つの位置のうち3つの位置と一致するように配置される。次に、これらの追加のサブピクセルサンプルは、レンダリングパイプラインの初期ステージにおいてデプスカリング(depth-culled)されるので、レンダリング時間を無駄にしない。或いは、ハードウェアは、不要なサブピクセルサンプルを計算しないように構成されている。この同じアプローチは、10×又は13×サブピクセルサンプリングパターンをサポートするために、既存の16×サブピクセルサンプリングモード(例えば、16×CSAA、16×QCSAA(Quincunx CSAA)、16×EQAA)を使用することによって実施することができる。
【0038】
別の実施形態では、5×サブピクセルサンプリングパターンを実装する場合に2つの表面がストレージのために利用され、一方の表面が4×サブピクセルサンプリングパターンを実装し、他方の表面が1×サブピクセルサンプリングパターンを実装する。同様に、10×サブピクセルサンプリングパターンは、8×サブピクセルサンプリングパターンの表面、及び、2×サブピクセルサンプリングパターンの表面を実装することによって利用することができる。また、13×サブピクセルサンプリングパターンは、12×サブピクセルサンプリングパターンの表面、及び、1×サブピクセルサンプリングパターンの表面から構成することができ、13×サブピクセルサンプリングパターンは、8×サブピクセルサンプリングパターンの表面と、4×サブピクセルサンプリングパターンの表面と、1×サブピクセルサンプリングパターンの表面と、から構成することができる。さらに、17×サブピクセルサンプリングパターンは、16×サブピクセルサンプリングパターンの表面、及び、1×サブピクセルサンプリングパターンの表面を使用して実装することができる。
【0039】
さらなる実施形態では、サブピクセルサンプリングパターン内の1つのサンプルを、このパターンから省略することができる。例えば、17×サブピクセルサンプリングパターンの場合、16個のサブピクセルサンプル位置のみを計算することができる。サンプリング位置を省略すると、通常のグリッドパターンに穴ができるが、この穴を解像動作中にプログラムによって補間することができる。一実施形態では、GPUは、サブピクセルサンプリングパターンをプログラム的に変更することができるが、サンプル位置に特定の粒度が存在する場合がある。例えば、一実施形態では、ピクセルの内部に16×16の可能な位置のグリッドを利用することができる。したがって、本明細書で説明するパターンのいくつかは、絶対的な処理では実施不可能な可能性があるが、サンプル位置が最も近いグリッドポイントに調整された近似パターンを実施して、適切な結果をもたらすことができる。
【0040】
図10を参照すると、ハイブリッドアンチエイリアシングスキームの一実施形態の図が示されている。一般に、アンチエイリアシングアルゴリズムには、マルチサンプリングアンチエイリアシング及び後処理アンチエイリアシングの2つのファミリが存在する。これらの2つの方法は、通常、互いに排他的である。後処理アンチエイリアシングのパスは、マルチサンプリングされた画像から解像された画像に適用することができる。一般に、得られた画像は不鮮明になり、おそらく以前よりも悪化する。しかしながら、ハイブリッドアンチエイリアシングスキームを実装するために本明細書に記載された技術は、従来技術に対する改良である。
【0041】
一実施形態では、ハイブリッドアンチエイリアシングスキームは、サブピクセルサンプリングパターンが画像内に通常のグリッド(regular grid)を生成するマルチサンプリング画像から開始する。上述したサブピクセルサンプリングパターン(例えば、5×、10×、13×、17×)の何れかを利用することができる。次に、マルチサンプリング画像は、サブピクセルサンプリング解像度の画像に拡張される。次いで、後処理アンチエイリアシングアルゴリズムを使用して、拡張画像をフィルタリングする。最後に、フィルタリングされた拡張画像を平均化し、元の解像度の画像に戻す。このアプローチは、現在のグラフィックス処理ハードウェア(例えば、GPU)上で実施することができる。例えば、サブピクセルサンプリング位置をGPUにプログラミングして、新たなサブピクセルサンプリングパターンをサポートすることができる。このアプローチは、回転したグリッドパターン及び回転していないグリッドパターンで動作する。いくつかの実施形態では、このアプローチは、再投影技術と同様に、時間的な(temporal)フィルタ技術と組み合わせることができる。一実施形態では、既存のゲームは、グラフィックスドライバソフトウェアを更新することによって、ハイブリッドアンチエイリアシングスキームを利用することができる。
【0042】
一実施形態では、ハイブリッドアンチエイリアシングスキームを、
図10のブロック図に示すシナリオのために実装することができる。この実施形態では、幅(W)×高さ(H)の寸法を有する画像1005は、ダイアグラム1010に示すように、2×2順序付きグリッド(OG)に基づくマルチサンプリング(すなわち、サブピクセルサンプリング)を利用する。画像1005は、サブピクセルを通常のピクセルであるかのように扱うことによって拡張される。得られた画像1015は、2W×2Hの寸法を有する。一実施形態では、ハイダイナミックレンジ(HDR)テクスチャのトーンマッピングが拡張ステップに統合される。
【0043】
次に、画像1015は、画像1020を生成するために、後処理アンチエイリアシングフィルタによって処理される。また、いくつかの実施形態では、シャープネス等の追加の後処理が、拡張画像1015に適用される。次いで、平均化フィルタを利用して、画像1020から画像1025が生成される。画像1005,1015,1020,1025はテクスチャとも呼ばれることに留意されたい。一実施形態では、平均化フィルタは、ボックス平均化フィルタ(例えば、2×2ボックス平均化フィルタ)である。他の実施形態では、他のタイプの平均化フィルタ(例えば、テントフィルタ)を利用することができる。さらに、平均化フィルタは、ハイダイナミックレンジ(HDR)テクスチャ、シャープ化及び/又はその他のための逆トーンマッピングを含むことができる。画像1025は、元の画像1005と同じ寸法W×Hを有することに留意されたい。他の実施形態では、平均化フィルタは、画像1025の解像度を、元の画像1005と異なる解像度に変更することができる。或いは、平均化フィルタを使用するダウンスケーリングステップを省略することができ、得られた画像は、開始画像よりも高い解像度を有する。
【0044】
次に、
図11を参照すると、ハイブリッドアンチエイリアシングスキームの別の実施形態の図が示されている。一実施形態では、ハイブリッド後処理、アンチエイリアシングスキームが、何れかのタイプの画像、テクスチャ、表面又は他のピクセルデータを表す画像1105に適用される。画像1105は、W×Hの寸法を有しており、ダイアグラム1110に示すように、2×1の傾きに基づく×5MSAAサブピクセルサンプリングパターンを利用する。画像1105のサブピクセルサンプルは、拡張された後に、位置合わせのために回転されて、マルチサンプリングされない自然な解像度の画像である画像1115を生成する。換言すれば、画像1105のサブピクセルは、画像1115のピクセルとして扱われる。また、画像1115のピクセルが通常の矩形グリッドを形成するように、ピクセルが回転される。
【0045】
次いで、画像1120を生成するために、画像1115に対して後処理アンチエイリアシングフィルタリングステップが実行される。次に、画像1120に対して平均化フィルタステップが実行され、元の画像1105と同じ寸法W×Hを有する画像1125が生成される。別の実施形態では、平均化フィルタステップを省略することができ、画像1120を、ハイブリッドアンチエイリアシング解像動作の結果とすることができる。或いは、さらなる実施形態では、平均化フィルタは、画像1125の解像度が画像1105の元の解像度W×Hより大きくなるように、画像1120を平均化することができる。
【0046】
図12を参照すると、拡張画像のサイズを縮小する技術の図が示されている。画像1205は、
図11の画像1115と同様に拡張された画像の一例である。画像1205は、サブピクセルサンプリングされた画像(図示省略)から生成された、拡張され回転された画像を含む。しかしながら、画像1205内の「X」を含む領域の各々は、追加のメモリを消費する未使用空間に対応する。
【0047】
したがって、一実施形態では、現在の状態の画像1205を処理する代わりに、画像1205の一部が、空間のより効率的な使用をもたらす画像1210を生成するために再配置される。一部を空間効率のよい画像1210に再配置するために、三角形部分1215が、画像1205の右側から画像1210の左側に移動される。また、三角形部分1220が、画像1205の最上部から画像1210の右下部に移動される。画像1210の右上部には、「X」でマークされた未使用空間の小さな部分がまだ存在している。しかしながら、これは、画像1205内の未使用スペースの量よりもはるかに小さい。画像1210において、部分1215,1220,1225は、無駄なスペースがより少なく、さらに効率的な配置で組み合わされる。これにより、次の後処理アンチエイリアシングステップを、画像1205に対して実行するよりもさらに効率的に画像1210に対して実行することができる。
【0048】
周囲の部分を移動させることによって画像を再配置する場合に、後処理アルゴリズムを実行できるように、各部分においてある程度のオーバーラップが含まれ得ることに留意されたい。例えば、後処理アルゴリズムが中心ピクセルの周囲の5ピクセルをサンプリングする場合に、部分1215,1220,1225が組み合わされるときに、5ピクセルのオーバーラップがこれらの部分に加えられて、画像1210が形成される。部分1215,1220,1225の再配置を、サブピクセルステージの拡張中に実行可能であることにも留意されたい。したがって、部分1215,1220,1225の再配置は、追加のレンダリングパスを必要としない。代替の三角形分割、及び/又は、代替の再配置パターンの使用が可能であり、意図されていることにさらに留意されたい。
【0049】
図13を参照すると、ハイブリッドアンチエイリアシング解像動作を実行する方法1300の一実施形態が示されている。説明のために、この実施形態のステップ及び
図14~17のステップは、順番に示されている。しかしながら、記載された方法の様々な実施形態において、記載された要素のうち1つ以上は、同時に実行されてもよいし、図示された順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も所望に応じて実行される。本明細書で説明される様々なシステム、装置又はコンピューティングデバイスの何れかは、方法1300を実行するように構成されている。
【0050】
プロセッサは、ピクセル当たり複数のサブピクセルサンプル及び第1セットの寸法を有する第1画像に対してアンチエイリアシング解像動作を実行する要求を検出する(ブロック1305)。一実施形態では、プロセッサはGPUである。他の実施形態では、プロセッサは、他の様々なタイプのプロセッサ(例えば、DSP、FPGA、ASIC、マルチコアプロセッサ等)の何れかである。実施形態に応じて、第1画像は、プロセッサによって処理されるテクスチャ、表面又は他のタイプのピクセルデータであってもよい。
【0051】
プロセッサは、要求を検出したことに応じて、第1画像の寸法を拡張して、ピクセル当たり単一のサンプルを含み、第1セットの寸法より大きな第2セットの寸法を有する第2画像を生成する(ブロック1310)。一実施形態では、第1画像の寸法を拡張することは、第1画像のサブピクセルを第2画像の通常のピクセルに変換することを含む。換言すれば、第1画像のサブピクセルは、それらが第2画像の実際のピクセルであるかのように扱われる。第1画像の寸法の拡張は、第1画像のピクセル当たりのサブピクセルサンプリング位置の数に応じて変化する。第1画像の寸法を拡張して第2画像を生成することは、拡張を実際に行わず、第2画像を生成せずに第1画像を拡張するかのように後続の計算を実行することによって仮想的に実行可能であることに留意されたい。いくつかの実施形態では、第1画像の寸法を拡張することに加えて、第1画像が回転される。これらの実施形態では、この回転は、第1画像のサブピクセルを、第2画像内の垂直及び水平グリッドパターンに整列するために実行される。
【0052】
次に、プロセッサは、第2画像に対して後処理アンチエイリアシングを実行して、第2セットの寸法を有する第3画像を生成する(ブロック1315)。いくつかの実施形態では、ブロック1315は、第3画像を実際に生成することなく仮想的に実行することが可能である。プロセッサは、アンチエイリアシングフィルタを利用してアンチエイリアシング処理を実行する。また、アンチエイリアシングフィルタは、後処理アンチエイリアシングフィルタと呼ぶことができる。一実施形態では、アンチエイリアシングフィルタは、高速近似アンチエイリアシング(FXAA)アルゴリズムに基づいている。他の実施形態では、アンチエイリアシングフィルタは、第2画像をフィルタリングして第3画像を生成するための他のアルゴリズムを利用することができる。概して、アンチエイリアシングフィルタは、中央のピクセル、次いで周囲のピクセルを分析して、中央のピクセルの近傍に表示される不要なエイリアシング効果(すなわち、ジャギー)が存在するか否かを判別する。アンチエイリアシングフィルタが中央のピクセルについてアーティファクトの存在を検出した場合に、中央のピクセル値を、隣接するピクセルと平均化することができる。
【0053】
次に、プロセッサは、第3画像の寸法を縮小して、所望の解像度で第4画像を生成する(ブロック1320)。一実施形態では、寸法を縮小することは、第3画像の平均化を実行して第4画像を生成することを含む。一実施形態では、第3画像の平均化を、第4画像を生成せずにインプレースで実行することができる。実施形態に応じて、ブロック1320に続いて、第4画像をメモリへ書き戻し、第4画像に対して追加の処理を行い、及び/又は、第4画像をディスプレイに送ることができることに留意されたい。一実施形態では、第4画像は、第1画像と同じ解像度を有する。別の実施形態では、第4画像は、第1画像よりも高い解像度を有する。いくつかの実施形態では、ブロック1320を方法1300から省略して、第3画像をアンチエイリアシング解像動作の結果とすることができる。例えば、いくつかのアプリケーション(例えば、仮想現実(VR)アプリケーション)において、より高い解像度の画像にアクセスすることは、レンダリング後に発生したヘッドの動きを補正するために、レンダリングされた画像を、ディスプレイに送信する前にワーピングする(すなわち、再投影する)場合に有用となり得る。ブロック1320の後に方法1300は終了する。
【0054】
方法1300を説明するのに利用される第1画像、第2画像、第3画像及び第4画像の用語は、方法1300の異なるステップを区別するのを意図していることを理解されたい。かかる各用語は、ある種の処理がソース画像に適用され、修正されたソース画像を生成することを示すことを意味する。例えば、プロセッサは、第1画像の寸法を拡張して第2画像を生成する場合に、第2画像を実際に生成することなく第1画像を拡張するかのように、後続の計算を実行することによって仮想的に寸法を拡張することができる。さらに、プロセッサは、第3画像の平均化を実行する場合に、第3画像の平均化されたバージョンによって第3画像を上書きすることができる。この観点から、第3画像を平均化することができ、平均化の出力を第3画像と呼ぶことができる。しかしながら、明確さのために、第3画像の平均化の出力を、方法1300では第4画像と呼ぶこととし、平均化ステップの入力と出力とを明確に区別する。同様に、方法1300の他のステップでは、実際には、新たな画像を生成するのではなく、ソース画像を上書き又は修正することができる。
【0055】
図14を参照すると、画像を拡張して回転させる場合に画像部分を再配置する方法1400の一実施形態が示されている。プロセッサは、複数の三角形部分を、第1画像から第2画像内の新たな位置に再配置する(ブロック1405)。一実施形態では、プロセッサは、ハイブリッドアンチエイリアシング解像動作の一部として、複数の三角形部分を第1画像から第2画像内の新たな位置に再配置する。プロセッサは、ハイブリッドアンチエイリアシング解像動作の一部として、第1画像を第2画像に拡張して回転させる場合に、複数の三角形部分を第1画像から第2画像内の新たな位置に再配置する。また、プロセッサは、第1画像の残りの部分を、複数の三角形部分の間の第2画像内の新たな位置に再配置する(ブロック1410)。ブロック1410の後に、方法1400は終了する。第1画像の画像部分を第2画像内の新たな位置に再配置することによって、第2画像に対する後続の処理動作を、グラフィックスハードウェアによってさらに効率的に実行することができる。
【0056】
図15を参照すると、画像を拡張して回転させる場合に画像部分を再配置する方法1500の別の実施形態が示されている。プロセッサは、第1三角形部分を、ソース画像の左側から、ソース画像の拡張されたバージョンの右側に移動する(ブロック1505)。また、プロセッサは、第2三角形部分を、ソース画像の右側から、ソース画像の拡張されたバージョンの左側に移動する(ブロック1510)。さらに、プロセッサは、ソース画像の第3部分を、ソース画像の拡張されたバージョン内の第1三角形部分と第2三角形部分との間に適合するように移動する(ブロック1515)。一実施形態では、プロセッサは、第1部分、第2部分及び第3部分を、ソース画像の拡張されたバージョン内の新たな位置に移動する場合に、第1部分、第2部分及び第3部分のエッジにおいてサブピクセルのオーバーラップを有することに留意されたい。ブロック1515の後に、方法1500は終了する。
【0057】
図16を参照すると、画像のサブピクセル位置をサンプリングする方法1600の一実施形態が示されている。プロセッサは、回転グリッドに基づいて、レンダリングされる画像のピクセル毎に複数のサブピクセルサンプリング座標を生成し、回転角が回転グリッドに対して指定される(ブロック1605)。回転角は、より一般的には回転量と呼ぶことができる。次に、プロセッサは、レンダリングされる画像のピクセル毎の複数のサブピクセルサンプリング座標によって示されるサブピクセル位置をサンプリングする(ブロック1610)。次いで、プロセッサは、サブピクセル位置の値をメモリに記憶する(ブロック1615)。メモリは、キャッシュ、ローカルデータ共有、グローバルデータ共有、メモリデバイス、又は、ストレージ素子の任意の他の適切な集合を表すことに留意されたい。ブロック1615の後に、方法1600は終了する。
【0058】
図17を参照すると、レンダリングされる画像のピクセル毎に複数のサブピクセルサンプリング座標を生成する方法1700の一実施形態が示されている。プロセッサは、画像の所定の位置を斜めに通過する第1セットの平行線に対応する位置を計算する(ブロック1705)。「斜めに通過する」とは、90度又は180度以外の角度で画像を横断することとして定義されることに留意されたい。換言すれば、第1セットの平行線は、画像のピクセルの境界を示す正方形グリッドの水平線又は垂直線の何れかと平行ではない。一実施形態では、所定の位置は、ピクセルの角部である。別の実施形態では、所定の位置は、ピクセルの中心である。様々な実施形態では、第1セットの平行線の各線の傾きは、2つの互いに素な数の比から生成される。例えば、一実施形態では、第1セットの平行線の各線の傾きは、2ピクセル×1ピクセルである。他の実施形態では、傾きは、他の適切な比であってもよい。一実施形態では、隣接する線間の距離は、第1セットの平行線の隣接する線の各ペアに対して一定である。
【0059】
次に、プロセッサは、第1セットの平行線に垂直な第2セットの平行線に対応する位置を計算し、第1セット及び第2セットの平行線は、回転グリッドを形成する(ブロック1710)。一実施形態では、隣接する線間の距離は、第2セットの平行線の隣接する線の各ペアに対して一定である。一実施形態では、第1セットの平行線の隣接する線間の距離は、第2セットの平行線の隣接する線間の距離に等しい。次に、プロセッサは、回転グリッドをシフトさせて、第1セット及び第2セットの平行線の頂点が、対応する各ピクセルの中心にある重心を有するようにする(ブロック1715)。次いで、プロセッサは、第1セット及び第2セットの平行線の頂点の位置を利用して、画像のピクセル内の複数のサブピクセルサンプリング座標を特定する(ブロック1720)。ブロック1720の後に、方法1700は終了する。実施する方法1700は、サブピクセルサンプリング座標を、水平方向及び垂直方向の両方において規則的な間隔で配置する。さらに、方法1700を実行することによって、画像を横断する所定の水平線又は垂直線上にピクセル当たり1つのサブピクセルサンプリング位置のみが存在することがもたらされる。他の実施形態では、方法1700によって生成されるサブピクセルサンプリングパターンと同様のサブピクセルサンプリングパターンを達成するために、他の方法を実装することができることに留意されたい。一般に、ピクセル当たり「a^2+b^2」のサブサンプルの密度を有する(a及びbは整数である)正方形グリッドの場合に、当該グリッドが「atan(a/b)+90*n」(nは整数である)の角度で回転又はミラーリングされている場合には、各ピクセル内のサンプリングパターンは同一になる。
【0060】
図18を参照すると、サブピクセルサンプリング座標を生成する方法の一実施形態が示されている。プロセッサは、回転グリッドの角度を指定する(ブロック1805)。例えば、プロセッサは、回転グリッドの第1セットの線が2×1の傾きを有するように指定することができる。この傾きは、幅が2ピクセル及び高さが1ピクセルの矩形の対角線に平行な線であることを示している。回転グリッドの第2セットの線は、第1セットの線に垂直である。次に、プロセッサは、回転グリッドを、レンダリングされる画像上に重ね合わせる(ブロック1810)。次いで、プロセッサは、回転グリッドに基づいて、レンダリングされる画像のピクセル毎に複数のサブピクセルサンプリング座標を生成する(ブロック1815)。ブロック1815の後に、方法1800は終了する。
【0061】
図19を参照すると、アンチエイリアシング動作を実行する方法の一実施形態が示されている。プロセッサは、画像に対してアンチエイリアシング動作を実行する要求を検出する(ブロック1905)。アンチエイリアシング動作は、アンチエイリアシング解像動作と呼ぶこともできることに留意されたい。プロセッサは、要求を検出したことに応じて、画像の寸法を拡張する(ブロック1910)。一実施形態では、プロセッサは、ブロック1910において画像の仮想拡張を実行する。仮想拡張は、より大きな新たな画像を生成することによって、又は、元の画像をより大きな画像として扱うことによって、実行され得る。一実施形態では、プロセッサは、元の画像を、回転されたより大きな画像として扱う。一実施形態では、画像の寸法を拡張することは、サブピクセルを通常のピクセルに変換することとして定義される。いくつかの実施形態では、画像を回転させて、通常のピクセルを矩形グリッド内に整列させる。次に、プロセッサは、画像に対してアンチエイリアシング処理を実行する(ブロック1915)。そして、プロセッサは、画像の平均化を実行して、所望の解像度でアンチエイリアシング動作の最終結果を生成する(ブロック1920)。ブロック1920の後に、方法1900は終了する。
【0062】
図20を参照すると、サンプリンググリッドを生成する方法の一実施形態が示されている。サンプリンググリッドに対して傾き(例えば、2×1)が選択される(ブロック2005)。次に、選択された傾きの線が、ピクセルグリッドの全てのグリッド交点を通過するように描画される(ブロック2010)。別の実施形態では、選択された傾きの線が、ブロック2010において、ピクセルグリッドの全てのピクセルの中心を通過するように描画される。次いで、ピクセルグリッドの全てのグリッド交点を通過する垂線が描画される(ブロック2015)。或いは、別の実施形態では、ブロック2015において、ピクセルグリッドの全てのピクセルの中心を通過する垂線が描画される。ブロック2010,2015において描画される線は、回転した通常のグリッドを生成する。この回転した通常のグリッドは、サンプリンググリッドと呼ぶこともできる。
【0063】
次に、任意のステップにおいて、サンプリンググリッドがシフトされ、90度の倍数だけ回転され、及び/又は、ミラーリングされる(ブロック2020)。単一のピクセル内のサンプリンググリッドのグリッド交点によって生成されたパターンは、画像のサンプリングパターンとして利用される(ブロック2025)。単一のピクセル内のサンプリングパターンは、方法2000によって生成されたサンプリングパターンの画像内の全てのピクセルについて同一である。ブロック2025の後に、方法2000は終了する。本明細書で説明するシステム及び/又は装置の何れかが方法2000を実行するように構成され得ることに留意されたい。
【0064】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、前述の方法及び/又はメカニズムを実装する。プログラム命令は、C等の高水準プログラミング言語におけるハードウェアの動作を記述する。または、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。複数のタイプの記憶媒体が利用可能である。記憶媒体は、プログラム命令及び付随するデータをプログラム実行用のコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0065】
上述した実施形態は、実装の非限定的な例に過ぎないことを強調したい。上記の開示が完全に理解されると、当業者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、かかる変形及び修正の全てを包含するものと解釈されることが意図される。