(57)【特許請求の範囲】
【請求項１】
処理ユニットでグラフィックをレンダリングする方法であって、
第１画素で第１プリミティブのサンプルのカバレッジを決定するステップを含み、前記第１画素は複数のサンプルを有し、前記複数のサンプルは１つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの決定で、前記第１画素の複数のサンプルが前記第１プリミティブでカバーされた１つまたは複数のカバーされたサンプルを含むことが決定され、
前記１つまたは複数のカバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定するステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のために画素シェーダを呼び出すステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含まないが前記複数の深度サンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のための前記画素シェーダを呼び出さないステップと、
前記第１プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを備える、方法。
【請求項２】
前記第１画素の前記１つまたは複数のカラーサンプルは、複数のカラーサンプルであり、前記第１画素のカラーサンプル数は前記第１画素の深度サンプル数よりも少ない、請求項１の方法。
【請求項３】
前記カバーされたサンプルが前記カラーサンプルの少なくとも１つを含むかどうかの前記決定の前に、前記カバーされたサンプルの少なくとも１つに対して早期深度テストを実行して、前記カバーされたサンプルが閉塞された深度かどうか決定するステップをさらに備え、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない１つまたは複数の存続するカバーされたサンプルを含むことが決定され、
前記カバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうかの前記決定は、存続するカバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定することを包む、請求項１の方法。
【請求項４】
前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも１つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
前記第１プリミティブから前記第１画素に対して生成された少なくとも１つのフラグメントについての画素シェーダ計算を実行するステップをさらに含む、請求項１の方法。
【請求項５】
前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも１つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
前記第１プリミティブから前記第１画素に対して生成された少なくとも１つのフラグメントについての画素シェーダ計算を実行するステップと、
前記画素シェーダ計算の実行後、前記画素シェーダ計算で計算された少なくとも１つのフラグメントの少なくとも１つのカラー値を、前記第１プリミティブでカバーされた前記第１画素の少なくとも１つのカラーサンプルに適用するステップをさらに含む、請求項１の方法。
【請求項６】
前記決定は、複数のカラーサンプルが前記プリミティブでカバーされることを決定し、
前記方法は、
前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも１つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
前記プリミティブでカバーされた前記複数のカラーサンプルのそれぞれに対してそれぞれ生成された１つまたは複数の単一サンプルフラグメントに対して画素シェーダ計算を実行するステップと、
前記画素シェーダ計算の実行し後、前記画素シェーダ計算で計算された前記単一サンプルフラグメントのそれぞれの各カラー値を、前記第１プリミティブでカバーされた前記カラーサンプルのそれぞれに適用するステップとをさらに備える、請求項１の方法。
【請求項７】
前記決定は、複数のカラーサンプルが前記プリミティブでカバーされることを決定し、
前記方法は、
前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも１つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
前記プリミティブでカバーされた複数のカラーサンプルのそれぞれに対して生成された１つフラグメントに対して画素シェーダ計算を実行するステップと、
前記画素シェーダ計算の実行の後、前記画素シェーダ計算で計算された前記フラグメントのカラー値を、前記第１プリミティブでカバーされた前記カラーサンプルのそれぞれに適用するステップとをさらに備える、請求項１の方法。
【請求項８】
前記第１プリミティブは、三角形である、請求項１の方法。
【請求項９】
プロセッサと、
前記プロセッサに連結されたメモリとを備えるシステムであって、
前記プロセッサは、グラフィックをレンダリングする方法を実行するように構成され、この方法は、
第１画素で第１プリミティブのサンプルのカバレッジを決定するステップを含み、前記第１画素は複数のサンプルを有し、前記複数のサンプルは１つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの前記決定で、前記第１画素の複数のサンプルが前記第１プリミティブでカバーされた１つまたは複数のカバーされたサンプルを含むことが決定され、
前記１つまたは複数のカバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定するステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のために画素シェーダを呼び出すステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含まないが前記複数の深度サンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のための前記画素シェーダを呼び出さないステップと、
前記第１プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを備える、システム。
【請求項１０】
前記プロセッサは、中央処理ユニット（ＣＰＵ）とグラフィック処理ユニット（ＧＰＵ）とを有する、請求項９のシステム。
【請求項１１】
更にディスプレイ装置を備え、
前記方法は、前記ディスプレイ装置に前記グラフィックを表示するステップをさらに備える、請求項９のシステム。
【請求項１２】
前記方法は、
前記カバーされたサンプルが前記カラーサンプルの少なくとも１つを含むかどうかの前記決定の前に、前記カバーされたサンプルの少なくとも１つに対して早期深度テストを実行して、前記カバーされたサンプルが閉塞された深度かどうか決定するステップをさらに備え、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない１つまたは複数の存続するカバーされたサンプルを含むことが決定され、
前記カバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうかの決定は、前記存続するカバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定することを包む、請求項９のシステム。
【請求項１３】
前記第１画素の前記１つまたは複数のカラーサンプルは、複数のカラーサンプルであり、前記第１画素のカラーサンプル数は前記第１画素の深度サンプル数よりも少ない、請求項９のシステム。
【請求項１４】
メモリモジュールと、
ハードウェアおよび／またはソフトウェアで実装されたラスター化モジュールとを備えるグラフィック処理ユニット（ＧＰＵ）であって、
前記ラスター化モジュールが
第１画素で第１プリミティブのサンプルのカバレッジを決定するステップを実行し、前記第１画素は複数のサンプルを有し、前記複数のサンプルは１つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの前記決定で、前記第１画素の前記複数のサンプルが前記第１プリミティブでカバーされた１つまたは複数のカバーされたサンプルを含むことが決定され、
前記１つまたは複数のカバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定するステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のために画素シェーダを呼び出すステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含まないが前記複数の深度サンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のための画素シェーダを呼び出さないステップと、
前記第１プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを実行するように構成された、グラフィック処理ユニット（ＧＰＵ）。
【請求項１５】
前記ラスター化モジュールは、ハードウェアモジュールで実装される、請求項１４のＧＰＵ。
【請求項１６】
前記ラスター化モジュールは、
前記カバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか前記決定する前に、前記カバーされたサンプルの少なくとも１つに対して早期深度テストを実行して、前記カバーされたサンプルの少なくとも１つのそれぞれが閉塞された深度かどうか決定するステップをさらに実行し、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない１つまたは複数の存続するカバーされたサンプルを含むことが決定され、
前記カバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうかの前記決定は、前記存続するカバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定することを含む、請求項１４のＧＰＵ。
【請求項１７】
内部に具体化したプロセッサ実行可能な命令を有する非一時的コンピュータ可読媒体であって、プロセッサによる前記命令の実行が前記プロセッサに、グラフィックのレンダリングの方法を実行させ、この方法は、
第１画素で第１プリミティブのサンプルのカバレッジを決定するステップを含み、前記第１画素は複数のサンプルを有し、前記複数のサンプルは１つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの前記決定で、前記第１画素の前記複数のサンプルが前記第１プリミティブでカバーされた１つまたは複数のカバーされたサンプルを含むことが決定され、
前記１つまたは複数のカバーされたサンプル前記が第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定するステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のために画素シェーダを呼び出すステップと、
前記決定が、前記１つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも１つを含まないが前記複数の深度サンプルの少なくとも１つを含むことを決定した場合に、前記第１プリミティブについて前記第１画素のための画素シェーダを呼び出さないステップと、
前記第１プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを備える、非一時的コンピュータ可読媒体。
【請求項１８】
前記方法は、
前記カバーされたサンプルが前記カラーサンプルの少なくとも１つを含むかどうかの前記決定の前に、前記カバーされたサンプルの少なくとも１つに対して早期深度テストを実行して、前記カバーされたサンプルが閉塞された深度かどうか決定するステップをさらに備え、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない１つまたは複数の存続するカバーされたサンプルを含むことが決定され、
前記カバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうかの前記決定は、前記存続するカバーされたサンプルが前記第１画素の前記カラーサンプルの少なくとも１つを含むかどうか決定することを包む、請求項１７の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、２０１４年４月５日出願のＴｏｂｉａｓ  Ｂｅｒｇｈｏｆｆに対する「ＧＲＡＰＨＩＣＳ  ＰＲＯＣＥＳＳＩＮＧ  ＥＮＨＡＮＣＥＭＥＮＴ  ＢＹ  ＴＲＡＣＫＩＮＧ  ＯＢＪＥＣＴ  ＡＮＤ／ＯＲ  ＰＲＩＭＩＴＩＶＥ  ＩＤＥＮＴＩＦＩＥＲＳ」と題する同一出願人による同時継続の米国特許出願番号１４／２４６，０６７（代理人整理番号ＳＣＥＡ１３０５６ＵＳ００）に関し、参照することにより、その全体の内容がここに包含される。
【０００２】
本願は、２０１４年４月５日出願のＭａｒｋ  Ｅｖａｎ  Ｃｅｒｎｙに対する「ＧＲＡＤＩＥＮＴ  ＡＤＪＵＳＴＭＥＮＴ  ＦＯＲ  ＴＥＸＴＵＲＥ  ＭＡＰＰＩＮＧ  ＴＯ  ＮＯＮ−ＯＲＴＨＯＮＯＲＭＡＬ  ＧＲＩＤ」と題する同一出願人による同時継続の米国特許出願番号１４／２４６，０６８（代理人整理番号ＳＣＥＡ１３０５７ＵＳ００）に関し、参照することにより、その全体の内容がここに包含される。
【０００３】
本願は、２０１４年４月５日出願のＴｏｂｉａｓ  Ｂｅｒｇｈｏｆｆに対する「ＶＡＲＹＩＮＧ  ＥＦＦＥＣＴＩＶＥ  ＲＥＳＯＬＵＴＩＯＮ  ＢＹ  ＳＣＲＥＥＮ  ＬＯＣＡＴＩＯＮ  ＢＹ  ＣＨＡＮＧＩＮＧ  ＡＣＴＩＶＥ  ＣＯＬＯＲ  ＳＡＭＰＬＥ  ＣＯＵＮＴ  ＷＩＴＨＩＮ  ＭＵＬＴＩＰＬＥ  ＲＥＮＤＥＲ  ＴＡＲＧＥＴＳ」と題する同一出願人による同時継続の米国特許出願番号１４／２４６，０６１（代理人整理番号ＳＣＥＡ１３０５８ＵＳ００）に関し、参照することにより、その全体の内容がここに包含される。
【０００４】
本願は、２０１４年４月５日出願のＭａｒｋ  Ｅｖａｎ  Ｃｅｒｎｙに対する「ＶＡＲＹＩＮＧ  ＥＦＦＥＣＴＩＶＥ  ＲＥＳＯＬＵＴＩＯＮ  ＢＹ  ＳＣＲＥＥＮ  ＬＯＣＡＴＩＯＮ  ＢＹ  ＡＬＴＥＲＩＮＧ  ＲＡＳＴＥＲＩＺＡＴＩＯＮ  ＰＡＲＡＭＥＴＥＲＳ」と題する同一出願人による同時継続の米国特許出願番号１４／２４６，０６３（代理人整理番号ＳＣＥＡ１３０５９ＵＳ００）に関し、参照することにより、その全体の内容がここに包含される。
【０００５】
本願は、２０１４年４月５日出願のＭａｒｋ  Ｅｖａｎ  Ｃｅｒｎｙに対する「ＶＡＲＹＩＮＧ  ＥＦＦＥＣＴＩＶＥ  ＲＥＳＯＬＵＴＩＯＮ  ＢＹ  ＳＣＲＥＥＮ  ＬＯＣＡＴＩＯＮ  ＩＮ  ＧＲＡＰＨＩＣＳ  ＰＲＯＣＥＳＳＩＮＧ  ＢＹ  ＡＰＰＲＯＸＩＭＡＴＩＮＧ  ＰＲＯＪＥＣＴＩＯＮ  ＯＦ  ＶＥＲＴＩＣＥＳ  ＯＮＴＯ  ＣＵＲＶＥＤ  ＶＩＥＷＰＯＲＴ」と題する同一出願人による同時継続の米国特許出願番号１４／２４６，０６６（代理人整理番号ＳＣＥＡ１３０６０ＵＳ００）に関し、参照することにより、その全体の内容がここに包含される。
【０００６】
本願は、２０１４年４月５日出願のＭａｒｋ  Ｅｖａｎ  Ｃｅｒｎｙに対する「ＧＲＡＤＩＥＮＴ  ＡＤＪＵＳＴＭＥＮＴ  ＦＯＲ  ＴＥＸＴＵＲＥ  ＭＡＰＰＩＮＧ  ＦＯＲ  ＭＵＬＴＩＰＬＥ  ＲＥＮＤＥＲ  ＴＡＲＧＥＴＳ  ＷＩＴＨ  ＲＥＳＯＬＵＴＩＯＮ  ＴＨＡＴ  ＶＡＲＩＥＳ  ＢＹ  ＳＣＲＥＥＮ  ＬＯＣＡＴＩＯＮ」と題する同一出願人による同時継続の米国特許出願番号１４／２４６，０６２（代理人整理番号ＳＣＥＡ１３０６１ＵＳ００）に関し、参照することにより、その全体の内容がここに包含される。
【０００７】
［技術分野］
本発明は、コンピュータグラフィック処理、特に、画素シェーダおよび画素内の多重サンプルを用いるグラフィックスレンダリングパイプラインに関する。
【背景技術】
【０００８】
コンピュータグラフィック処理は、ディスプレイ上に提示するために仮想コンテンツを描写する画像を作成するために用いられる複雑な処理である。現代の３Ｄグラフィックスは、コンピュータグラフィック演算に効果的に設計された専門のアーキテクチャを有する優秀なグラフィック処理ユニット（ＧＰＵ）を使用して処理することが多い。ＧＰＵは、ディスプレイに出力することを意図したフレームバッファ内に画像の作成を加速するように設計された専門の電子回路であり、ＧＰＵは、大きなデータブロックの処理を平行して行うアルゴリズムのための汎用ＣＰＵよりも、より効率的なＧＰＵとする高度に平行処理するアーキテクチャを有することが多い。ＧＰＵは、埋め込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム装置、ワークステーション及びゲームコンソール等の種々のコンピューティングシステムに使用されている。
【０００９】
ビデオゲーム及び他のリアルタイムアプリケーション用の多くの現代のコンピュータグラフィック処理は、ディスプレイ上に提示される画素値の最終配列を決定する入力データの処理を実行する多くの異なるステージを有するレンダリングパイプラインを用いる。グラフィックレンダリングパイプラインのいくつかの実行では、処理は、ＣＰＵとＧＰＵとの間で連携することができる。アプリケーションプログラミングインターフェース（ＡＰＩ）を通じてＧＰＵに発行される一連の描画呼び出しを介して、アプリケーション（例えば、ＣＰＵで実行されるビデオゲーム）の現在の状態に基づいて、中央処理ユニット（ＣＰＵ）により、入力データがセットアップされることができ、描画コマンドが発行されることができ、これはグラフィックフレーム毎に多数回生じることがあり、そしてＧＰＵは、対応してパイプラインの種々のステージを実行することあり、結果的に画像を描画する。
【００１０】
パイプラインの多くのステージは、種々の処理ステージを通してデータが流れるにつれて入力と出力とが好適に画定されており、いくらかの特定の実行は、所要の視覚効果にしたがって種々のステージを包含しまたは省略しても良い。グラフィックパイプライン内の種々の固定された機能演算が、ＧＰＵ内にハードウェアモジュールとして実行され、一方、プログラム可能なシェーダは典型的には、色、ライティング、テクスチャ座標、及び、画像内のオブジェクト及び画素に関連する他の視覚的値を決定するシェーディング計算の多くを実行することがあるが、ハードウェア、ソフトウェアまたはこれらの組合わせのパイプラインの種々のステージを実行することができる。古いＧＰＵは、計算がＧＰＵの個々のハードウェアモジュール内に固定されて、ほとんど固定された機能のパイプラインを使用していたが、しかし、シェーダの出現及びプログラム可能なパイプラインの増加で、より多くの動作をソフトウェアプログラムで実行させるようになり、レンダリングプロセスについて、開発者により大きな柔軟性及びより大きな制御を提供する。
【００１１】
一般的に言うと、パイプラインの初期ステージは、仮想空間（「場面空間」と称することもある）内のジオメトリで実行される計算を包含し、この空間は、二次元、または、より一般的には、三次元の仮想世界を表しても良い。仮想空間内のオブジェクトは、典型的には、パイプラインの初期段階に対する入力としてセットアップされたポリゴンメッシュとして表され、その頂点は、典型的には三角形であるが更に点、線及び他の多角形形状を有しても良い画像内の一連のプリミティブに対応する。各プリミティブの頂点は、位置の値（例えば、Ｘ−Ｙ座標及びＺ深度値）、カラー値、照明値、テクスチャ座標等を含む一群のパラメータ値によって定義することができ、グラフィックスは初期ステージで、頂点ごとのベースで頂点のパラメータ値の演算を通じて処理しても良い。初期ステージにおける演算は、仮想空間内の頂点のパラメータを演算するための頂点シェーディング計算と同様に、アプリケーションステージで最初にセットアップしたものを超えて新しい場面のジオメトリを生成するために、場面の形状やジオメトリシェーディング計算を細分化するために、必要に応じてテッセレーションを包含しても良い。演算のいくつかは、基礎となる仮想空間の幾何学的形状にレンダリング計算を実行するために、頂点ごとのベースで、プリミティブの頂点のパラメータ値を演算する頂点シェーダを含む、プログラマブルシェーダによって実行しても良い。
【００１２】
表示に適した仮想世界の画像を生成するためには、場面内のオブジェクトと、それらに対応するプリミティブが仮想空間からスクリーン空間に変換される。中間ステージは、スクリーン空間を画定する２次元平面に対してプリミティブのマッピングを決定するために様々な動作を含んでも良い。ラスタライズ処理は、ラスタライザのために画定されたスクリーン空間における離散画素の初期ステージから処理されたプリミティブをサンプリングするため、及び、ラスタライザのサンプルによってカバーされるプリミティブのフラグメントを生成するために使用される。画面スペースに対する場面のラスタライズに関連したこれらの中間演算は、更に、隠されまたは最終画像で見ることのできないプリミティブの不必要な画素ごとの計算となることがあるフラグメントの処理を避けるための最適化として、現在のビューの視推台の外側のプリミティブのクリッピング、及び、現在のビューから見えない後ろ向きのプリミティブのカリング等の演算を包含しても良い。各フラグメントの入力値として使用されるパラメータ値は、典型的には、フラグメントの対応する画素の位置にフラグメントを形成するサンプリングされたプリミティブの頂点のパラメータを補間することにより決定され、この画素の位置は、典型的には画素の中心または画素内の異なるサンプル位置であるが、特定の状況では、他の補間位置を使用しても良い。
【００１３】
その後、パイプラインはフラグメント及びその補間された入力パラメータ値を、更に処理するためにパイプラインの下流に渡すことができる。これらの後のステージの際、フラグメント毎の演算は、例えば画素毎またはサンプル毎のベースで各フラグメントに対するカラー値、深度値、照明及びテクスチャ座標等の入力された補間パラメータ値を更に演算するために、画素シェーダ（「フラグメントシェーダ」としても知られていることがある）を呼び出すことにより実行しても良い。スクリーン空間内の各フラグメントの座標は、それらを生成したラスター化で画定される画素座標及び／またはサンプル座標に対応する。
【００１４】
最も簡単なケースでは、単一のサンプルが画素中心に対応する画素毎に使用され、単一のフラグメントが画素中心をカバーするプリミティブに対して処理される。例えば、同じスクリーン空間位置で他のプリミティブで閉塞されておらず、フラグメントが深度テストを通過すると、画素シェーダで計算されたフラグメントの出力カラー値がこれらの画素座標に対するカラーバッファに書き込まれ、画素シェーダが深度値をエキスポートするようにプログラムされている場合には、出力深度値が深度バッファに書き込まれることがある。
【００１５】
ときには、アンチエイリアス処理のために複数のサブピクセルサンプルが使用され、これは、カラーバッファ内の所定の画素が、異なるサブピクセルサンプルをカバーする異なるプリミティブから計算した異なるフラグメントからの出力カラー値のブレンドを選択することを可能とすることにより、サンプリングしたテクスチャの高周波数アーティファクトの出現を減少し、更に、プリミティブの境界におけるギザギザの縁部を滑らかにすることができる。複数のサンプルが使用される場合、各フラグメントの出力は、それを生成したプリミティブでカバーされる１つまたは複数のサブピクセルサンプルに適用してもよい。
【００１６】
従来のスーパーサンプリングが使用される場合、各サブピクセルサンプル用の画素シェーダでユニークフラグメントが処理され、その出力は、サンプル座標でカラーバッファに書き込まれ、ミニピクセル状のサンプルを本質的に処理し、より高い解像度でレンダリングする。より高い解像度のカラーバッファは、ダウンサンプリングし、表示バッファ内で表示解像度に、フィルタを通して低下させても良い。ユニークフラグメントは、それぞれカバーされるサンプルに対して、画素シェーダにより処理されることが必要であるため、プロセスはコンピュータ的に要求し、重要なシェーダオーバヘッドが導入される。
【００１７】
従来のマルチサンプリングは、画素シェーダで単一フラグメントを処理し、その値をカラーバッファの多数のカバーされたサンプルに適用することにより、スーパーサンプリングの欠点をある程度緩和する。最も単純なマルチサンプリングは、カラー及び深度の双方の各サンプルを用い、スーパーサンプリングにおけると同様にサンプル毎に深度を計算し、書き込み、画素ごとに単一出力カラーを、各画素の全てのカバーされたサンプルに複製する。最近、付加的な深度サンプルを追加することで被ることになるオーバーヘッドを追加することなく、ラスタライザの画素の境界内のプリミティブ縁部の範囲をより正確にサンプリングするため、カバレージサンプリングアンチエイリアス（ｃｏｖｅｒａｇｅ  ｓａｍｐｌｉｎｇ  ａｎｔｉ−ａｌｉａｓｉｎｇ）（ＣＳＡＡ）及びエンハンストクオリティアンチエイリアス（ｅｎｈａｎｃｅｄ  ｑｕａｌｉｔｙ  ａｎｔｉ−ａｌｉａｓｉｎｇ）（ＥＱＡＡ）等の新しいマルチサンプリング技術が出現し、これは深度サンプルからカラーサンプルのいくつかを分離するものである。これらのマルチサンプリング技術で、典型的には、画素内の深度サンプルよりもカラーサンプルがより多く（すなわち、いくつかのサンプルはカラー用にのみ使用される）、フラグメントは、画素内の少なくとも１つのサンプルがカバーされるときはいつでも、プリミティブに対する画素シェーダにより処理され、フラグメントの出力カラー値はカラーバッファ内の各カバーされたサンプルに適用することができる。
【発明の概要】
【発明が解決しようとする課題】
【００１８】
いくつかの新しいマルチサンプリング技術は、更に、カラーサンプルを深度サンプルから分離することを可能とし、より正確な深度情報を、カラーバッファデータのサイズを増大することなく、生成することが可能である。しかし、これらの技術は、深度情報のみを有するサンプルがシェーディングされるサンプルと考え、カラーサンプルがカバーされておらず、出力カラーが不要なときでも、任意のサンプルがカバーされる任意のフラグメントに対する画素シェーダが呼び出される。不都合なことに、画素シェーダの演算は計算的に高価であり、フラグメントの出力値が描画される画像における最終的に表示する画素値に寄与しないときはいつでも、無駄な計算的オーバーヘッドを導入する。ビデオゲーム及び他のリアルタイムグラフィック処理の例では、計算的必要性を減少させ、描画タスクに対する計算的効率を向上させることは、描画される画像のクオリティ及びディテールの向上を達成するための重要な目標である。更に、最近の４０００画素のオーダーの水平解像度を有する超高精細（「ｕｌｔｒａ  ＨＤ」または「４ｋ」）ディスプレイの出現で、ディスプレイ技術の進歩について行くことができるより効果的なグラフィック処理方法が必要とされている。
【００１９】
この文脈の範囲内で、本開示の態様が生じる。
【課題を解決するための手段】
【００２０】
本開示の技術は、添付図面を参照する以下の詳細な説明を考慮することにより、容易に理解することが可能である。
【図面の簡単な説明】
【００２１】
【図１Ａ−１Ｂ】図１Ａ〜図１Ｂは、第１の従来のエイリアシング手法にしたがうグラフィックレンダリングプロセスを示す概略図である。
【図２Ａ−２Ｂ】図２Ａ〜図２Ｂは、第２の従来のアンチエイリアシング手法にしたがうグラフィックレンダリングプロセスを示す概略図である。
【図３Ａ−３Ｃ】図３Ａ〜図３Ｃは、本開示の態様によるグラフィックレンダリングプロセスを示す概略図である。
【図４】本開示の態様によるグラフィックのレンダリング方法を示す流れ図である。
【図５】本開示の態様によるグラフィックレンダリングパイプラインを示す流れ図である。
【図６】本開示の態様によるグラフィックレンダリングシステムを示す概略図である。
【図７Ａ−７Ｄ】図７Ａ〜図７Ｄは、本開示の態様にしたがうラスター化プロセス及び表示バッファの概略図である。
【図８Ａ−８Ｄ】図８Ａ〜図８Ｄは、本開示にしたがうグラフィック処理の概略図である。
【発明を実施するための形態】
【００２２】
以下の詳細な説明は、例示の目的のための多くの特定の詳細を含むが、当業者であれば、本発明の範囲内で、以下の細部に多くの変形及び変更が存在することが理解される。したがって、以下に説明する本発明の例示的な実施形態は、請求の範囲に記載の発明に対して普遍性を喪失させるものではなく、制限を付するものでもない。
【００２３】
本開示の態様は、レンダリングパイプラインの効率を向上するために、画素シェーダの呼び出しを最小とすることができるグラフィック処理システム及び方法を説明する。本開示の実施形態では、複数のサンプルはプリミティブ内で取得することができる。サンプルは深度及びカラーサンプルの双方を包含することができ、深度サンプル数は、各画素内でカラーサンプル数よりも多い。サンプルの少なくとも１つがカバーされるときに、プリミティブでカバーされるサンプルの性質が、シェーディング計算を実行するために画素シェーダを呼び出す前に考慮される。少なくとも１つのサンプルがプリミティブでカバーさるが、いずれもカラーサンプルではないとき、画素シェーダに対する呼び出しは、特定の状況で回避することができる。
【００２４】
従来のレンダリングパイプラインでは、プリミティブでカバーされたサンプルの形式に関わらず、画素シェーダが呼び出される。したがって、フラグメントシェーディング計算が実行され、フラグメントに対する画素シェーダで計算されたカラー値は、そのフラグメントを生成したプリミティブでカバーされるこれらのカラーサンプルにのみ適用される。サンプリングスキームが、カラーにのみ使用されるいくつかのサンプルを有する従来のラスター化の際に使用される場合、画素シェーダは、プリミティブでカバーされたサンプルが深度サンプルだけの場合でも、呼び出され、計算されたカラー値は、画素内に適用するカラーサンプルがないために廃棄される。
【００２５】
本開示の特定の態様をより良く理解するために、グラフィック処理に対する第１の従来の手法を図１Ａ〜１Ｂに示してある。図１Ａ〜１Ｂに示す実施例は、画素ごとの単一サンプル位置のみを用い、これは、画素の最終セット内で目立ったエイリアシングアーチファクトとなることがある。
【００２６】
図１Ａは、それぞれが描画される画像内のジオメトリの一部を形成するプリミティブとなりえる複数の三角形１０２ａ，１０２ｂ、および、プリミティブに重なる一組のスクリーン空間画素１０４（または、スクリーン空間画素境界）を示す。図１Ａでは、各スクリーン空間画素は、単一位置でサンプリングしただけのものであり、これは図示の実施例では画素１０４の中心である。このサンプルは、カラー、深度または他のパラメータを含むスクリーン画素のそれぞれのパラメータを決定するために使用することができる。画素内のサンプルがプリミティブでカバーされている場合、すなわち、この実施例でスクリーン空間画素の中心がカバーされている場合、フラグメントは、サンプルをカバーするプリミティブに対して生成することができ、フラグメントは更に、そのスクリーン空間画素の最終値が決定される前に、処理することができる。
【００２７】
図１Ｂは、プリミティブ１０２ａ及び１０２ｂのそれぞれのサンプリングから生成されたフラグメント１０６ａ及び１０６ｂを示す。すなわち、図１Ｂは、基となるプリミティブのために生成された少なくとも１つのフラグメントのための画素を示す。図１Ｂに示すように、フラグメント１０６ａは、プリミティブ１０２ａから生成され、これは、これらの対応する画素の中心のサンプルがその三角形でカバーされ、フラグメント１０６ｂ及びプリミティブ１０２ｂについても同様だからである。フラグメント１０６ａ，１０６ｂのパラメータ値は、フラグメントの位置にフラグメントを生成したそれぞれのプリミティブ１０２ａ，１０２ｂの頂点のパラメータを補間することにより、決定しても良い。例えば、三角形１０２ａのそれぞれの頂点のパラメータ値は、各フラグメント１０６ａの中心に補間し、これらのフラグメント１０６ａのそれぞれのパラメータ値のセットを決定しても良く、同様なプロセスを、三角形１０２ｂの頂点のパラメータ値を使用してフラグメント１０６ｂのそれぞれに実行しても良い。このパラメータは、テクスチャ座標、法線、接線、照明値、カラー値、位置（深度値を含む）等を含んでも良い。
【００２８】
それぞれのフラグメント１０６ａ，１０６ｂ及びその補間されたパラメータ値は、最終的に描画される画像内の対応するこれらの最終画素値を決定する前に、更に処理しても良い。これらの計算のいくつかは、フレーム内の画素のカラー値を決定する前に、カラー、テクスチャまたは他のフラグメントパラメータ値を追加的にフラグメント毎に演算するために画素シェーダを呼び出すことにより実行される画素シェーディング計算を含む。
【００２９】
図１Ｂの説明から、この第１の従来の手法のサンプリングスキームは、プリミティブ１０２ａ，１０２ｂの境界で特定のエイリアシングアーチファクトを生じることがある。図示の実施例で見られるように、いくつかの画素はプリミティブの縁部に位置することがあり、これらの縁部画素の画定された境界は、これらのプリミティブがその画素のスクリーン空間座標にマッピングされたときに（例えば、投影され／変形され）、多数のプリミティブで実際にカバーされ得る。しかし、各画素は単一の位置でサンプリングされるだけであるため、フラグメントは双方ではなく、プリミティブの一方または他方で生成される。すなわち、カバレッジは、単一のサンプル位置だけに基づいて決定される。これは、最終画像のカラー及び他のパラメータにギザギサな効果（「ジャギー」と称されることもある）を作り出すこともあり、これは、三角形１０２ａ及び１０２ｂ間の対角状に配向された境界のフラグメント１０６ａ及び１０６ｂの階段状の外観を参照して理解することが可能である。換言すると、その境界がプリミティブ１０２ａ及び１０２ｂの縁部と交差する、縁部画素のそれぞれについて、図１Ａ〜１Ｂの従来のエイリアシングされた実施例では、フレームバッファ内の縁部画素の最終値は、サンプルをカバーするのはいずれのプリミティブであるかに基づいて、双方ではなく、プリミティブ１０２ａまたは１０２ｂに生成されたフラグメントで決定され、これは、最終画像にエイリアシングアーチファクトが存在する結果となることがある。
【００３０】
図１Ａ〜１Ｂを参照する上述のエイリアシング手法に関連する欠点を克服するため、画素毎の複数のサンプルがしばしば画像のエイリアス除去に使用される。画素の境界がプリミティブの縁部にあるときに、異なるサブピクセルのサンプルが別のプリミティブでカバーされることがあり、ディスプレイ画素の最終値は、従来、最終的表示バッファ内の単一の画素のカラー値を決定するためにカバーされたサンプルで重み付けされる異なるサブピクセルサンプル値を組み合わせることで決定される異なるプリミティブからの値の組み合わせである。
【００３１】
従来のアンチエイリアススキームの例が図２Ａ〜２Ｂに記載され、図１Ａ〜１Ｂの従来のエイリアシング処理された実施例と同様に、図２Ａ〜２Ｂの従来の実施例は同じ画素１０４及びプリミティブ１０２ａ，１０２ｂを用いる。図２Ａに示すように、図１Ａの実施例のように各画素１０４のそれぞれの中心で単一のサンプルを抽出しているのではなく、複数のサンプルが各画素の領域全体で抽出されている。図示の実施例では、サンプルは、ラスタライザのために画定された各スクリーン画素１０４の境界内の４つの異なる位置から抽出され、典型的には、そのサンプルの少なくとも１つが所定のプリミティブでカバーされる場合には、少なくとも１つのフラグメントがスクリーン画素１０４における所定のプリミティブから生成される。すなわち、スクリーン空間に投影されたときに、プリミティブの領域が、スクリーン空間で画定される画素のサンプルをカバーしたときに、少なくとも１つのフラグメントが更に処理するために生成されることがある。
【００３２】
図２Ｂは、それぞれプリミティブ１０２ａ及び１０２ｂのサンプリングから生成されたフラグメント２０６ａ及び２０６ｂを示す。すなわち図示のフラグメント２０６ａは、基となるプリミティブ１０２ａのために少なくとも１つのフラグメントが処理されるこれらのスクリーン画素境界であり、図示のフラグメント２０６ｂは、基となるプリミティブ１０２ｂのために少なくとも１つのフラグメントが処理されるこれらのスクリーン画素境界である。第１実施例におけるように、フラグメントは、少なくとも１つの画素サンプルがプリミティブでカバーされたときにプリミティブのために生成され、各フラグメントは、それを生成したプリミティブの頂点のパラメータ値からフラグメントの位置に補間されたパラメータ値を有する。更に、第１実施例と同様に、フラグメントのための最終カラー値出力に作用するため、フラグメントのパラメータを演算することのできる更なるフラグメント毎の画素シェーディング計算のために、フラグメントのそれぞれに対して画素シェーダが呼び出される。
【００３３】
伝統的なスーパーサンプリングが使用される場合、多数のカラーフラグメントがそれぞれカバーされたサンプルに生成され、個々のカラーフラグメントは独自にシェーディング処理され、その対応するサンプルに適用される。この場合、各フラグメントの出力カラー値は、本質的により高い解像度のカラーバッファであるスクリーン空間の対応するサンプルに書き込まれ、この後、低下（ｄｏｗｎ）フィルタ処理され、特定のスクリーン空間画素１０４の最終画素値を決定する。各サンプルは本質的に、スーパーサンプリングにおける小画素（ｍｉｎｉ−ｐｉｘｅｌ）状に処理されるため、画素シェーダは、対応するサンプル位置に補間されるパラメータ値を各フラグメントの入力として使用しても良い。これは、良好な結果を達成する一方、画素シェーダが個々のサンプルに対して一度呼び出されるため、大量のシェーダオーバヘッドを導入する。
【００３４】
伝統的なマルチサンプリングが使用される場合、画素座標における単一のカラーフラグメントは、プリミティブ内に入るサンプルの数に関わりなく、少なくとも１つのサンプルがプリミティブでカバーされるときはいつでも、所定のプリミティブに対して生成され、画素シェーダの同じ出力値はその後、それぞれカバーされたサンプルに提供され、例えば、３つのサンプルがカバーされる場合、１つのフラグメントが処理されることがあり、その出力値がカバーされたサンプルのそれぞれに対して複製されることがある。頂点のパラメータ値は、全てのサンプルのフラグメントに対する入力として、スクリーン空間画素の中心に補間しても良い（しかし、画素中心がプリミティブ縁部の外側となる場合、補間される値は外挿しても良く、または、プリミティブの境界内に補間される値を使用するために図心サンプリングを使用しても良い）。画素シェーダはそれぞれカバーされたプリミティブに対して画素毎に一度呼び出すことが必要なだけであるため、多数のサンプルがカバーされる状況では、マルチサンプリングはシェーダオーバヘッドを大きく減少することができる。
【００３５】
その２つのハイブリッド（マルチサンプリング／スーパーサンプリングハイブリッド）のいくつかを使用して、画素内で繰り返す設定可能な画素シェーダを提供することができ、ここでは、画素シェーダはスクリーン画素に対して複数回呼び出され（例えば、多数のカラーフラグメントは画素シェーダで処理される）、この後、各カラーフラグメント出力が更に１つより多くのサンプルに適用される。例えば、４つが「シェーディングされた（ｓｈａｄｅｄ）」カラーサンプルで、４つが「格納された」カラーサンプルである、８つのカラーサンプルを抽出することができる。画素シェーダは、使用する４つのシェーディングされたカラーサンプルのそれぞれに対して一度呼び出すことができ、この結果、シェーディングされたカラーサンプルのそれぞれに対して独特のシェーディングされたカラー値となる。この後、各シェーディングされたカラーフラグメントの出力を、シェーディングされたカラーサンプル及び１つまたは複数の「格納された」カラーサンプルに適用することができる。
【００３６】
これらの技術に関わらず、この従来の実施例では、縁部画素２０８に対して、少なくとも１つのフラグメントが、プリミティブ２０６ａ及びプリミティブ２０６ｂの双方の各画素で生成される。これは、縁部画素位置２０８に対するフラグメント２０６ａが、三角形１０２ａの頂点値から補間されたパラメータ値で処理され、一方、これらの同じスクリーン空間画素位置におけるフラグメント２０６ｂが、三角形１０２ｂの頂点値から補間されたパラメータ値を取ることを意味する。フラグメント２０６ａ及び２０６ｂのそれぞれは、画素シェーダに対する別個の呼び出しで処理され、これは、対応して、フラグメントの数の増加により、図１Ａ〜１Ｂのエイリアシングされた実施例と比較して計算負荷が増加することがある。しかし、サンプル抽出されたパラメータに対するエイリアシングアーチファクトは、減少し、最終的な画像の質は改善することができ、これは、縁部画素２０８のそれぞれの最終ディスプレイ画素値が、例えばサンプルカバレッジに基づいて重み付けされ、異なるプリミティブからのカラー値の組み合わせを採用することができるからである。この実施例では、説明のために隣接する前面の三角形として２つの三角形を簡単に示してあるが、しかし、各サンプルの深度値も、個々のサンプル位置で前面に存在する画素をカバーする三角形を、サブピクセルの精度でより正確に決定するために使用することができ、したがって、サンプルのカバレッジだけから決定することができる場合よりも、より正確な重みを決定する。
【００３７】
処理されたフラグメント値は、この後、これを生成したプリミティブ内に入るサンプル位置に適用され、プリミティブの外側となるサンプルに対しては廃棄される。例として、三角形２０６ａでカバーされる３つのサンプル及び三角形２０６ｂでカバーされる１つのサンプル（図２Ｂの説明における三角形１０２ｂの上−左角部にマッピングされたフラグメント等）を有する縁部画素２０８の所定の１つに対して、対応するディスプレイ画素におけるカラーの最終値は、対応するフラグメント２０６ａの計算値に向けて７５％（例えば、プリミティブ１０２ａに対してサンプルのカバレッジ３／４）、対応するフラグメント２０６ｂの計算値に向けて２５％（例えば、プリミティブ１０２ｂに対してサンプルのカバレッジ１／４）の重み付けでブレンドすることができる。これは、最終画像のプリミティブの縁部のエイリアシングアーチファクトを減少させることができ、サンプリングされたプリミティブが大きく異なるカラーまたは深度パラメータを有するときに、最も目立つことがある。例えば、２つのプリミティブが異なるオブジェクトに属し、一方のプリミティブが前面にあり、一方、他方のプリミティブが離隔した背景にある場合、異なるプリミティブからのパラメータは大きく異なり、エイリアシングアーチファクトはより目立つことになる。画素内の複数の異なる位置からサンプルを取ることによるアンチエイリアス処理は、画素が、画素の異なる領域にマッピングされたプリミティブの値を取ることを可能とすることにより、移行部を滑らかにすることができる。
【００３８】
図２Ａ〜２Ｂに示す実施例では、サンプル位置の数は説明のために４つとして記載してあるが、他のサンプル数としても良い。一般的に言うと、サンプル数が大きくなるとアンチエイリアス処理の質を向上することができるが、しかし、計算に必要な費用が増大する。図２Ａ〜２Ｂの従来の実施例では、サンプルのそれぞれが同じタイプであり、少なくともカラー及び深度に使用され、ラスター化に画定される画素１０４は、ディスプレイを走査する表示バッファ内の最終画素値と１対１に対応する。
【００３９】
図３Ａ〜３Ｃに移ると、本開示の実施態様が記載されている。図示の実施態様では、深度サンプルよりも少ないカラーサンプルが画素１０４毎に本開示の態様にしたがって取られ、カラーバッファよりも高い解像度の深度バッファとなる。本開示の特定の態様にしたがい、これは、フル表示バッファの解像度でのカラーバッファを必要とすることなく、表示バッファを、深度バッファの解像度で再構築することを可能とする。これは、任意の表示解像度に対するより効果的なレンダリングのための時間的及び空間的アンチエイリアス処理を含む多くの利点を提供することができる。なお、カラーサンプルは、例えば、メモリバンド幅、シェーダオーバヘッド等、一般的に、深度サンプルよりも大きな計算要求を伴うことに注意を要する。本開示の特定の実施態様は、この事実を利用し、カラーサンプルよりも高いスクリーンの空間精度を有する深度サンプルからの情報を使用して効果的に画像を描画することができる。
【００４０】
図３Ａは、図２Ａ〜２Ｂ及び図１Ａ〜１Ｂの先の実施例と同様に、同じスクリーン空間画素１０４にマッピングした同じプリミティブ１０２ａ，１０２ｂを示す。図２Ａと同様に、各画素１０４は、画素全体における複数の異なる位置でサンプリングされている。しかし、図２Ａの実施例とは対照的に、画素はそれぞれ、深度サンプルよりもより少ない数のカラーサンプルを有する。換言すると、各画素１０４のカラーサンプル数は深度またはｚサンプル数よりも少ない。図３Ａ〜３Ｃに記載の実施例は、カラー及び深度の方法に使用される２つのカラーサンプルと、深度のみに使用される２つのサンプルとを有するが、しかし、他のサンプリングパターンを使用しても良い。本開示のより一般的な実施態様は、１つまたは複数のカラーサンプルと複数の深度サンプルとを画素毎にサンプリングする画素のセットを有する任意のサンプリングスキームを使用しても良い。
【００４１】
この実施例では、各画素に複数のカラーサンプルがあるが、本開示の実施態様は、単一のカラーサンプルのみを取る状況にも適用可能であることに注意を要する。更に、この実施例では、サンプリングは図示の画素のそれぞれに対して均等に実行され、各画素はそれぞれのタイプの同数のサンプルを同じ位置で有するが、しかし、特定の実施態様は、更に、異なる画素に対して非均等なサンプリングを使用することもできる。例えば、異なる画素に対して異なるサンプル位置及び／または異なるサンプル数等、異なる画素に異なるサンプリングパターンを使用することができる。更に、図３Ａ〜３Ｃの実施例の各カラーサンプルは深度にも使用される一方、いくつかのサンプルをカラーに対してのみ使用することができる。より一般的には、本開示の態様は、全画素列が１セットの画素を備え、このセットの各画素が１つまたは複数のカラーサンプルと複数の深度サンプルとを有し、セット内の各画素に対する深度サンプルの数はカラーサンプルの数よりも多い、任意の体系に対して適用することができる。
【００４２】
図３Ｂに移ると、各画素内の１つまたは複数のカラーサンプル及び各画素内の複数の深度サンプルを有するサンプリング技術を使用して、それぞれプリミティブ１０２ａ及び１０２ｂのサンプリングからフラグメント３０６ａ及び３０６ｂを生成することができる。すなわち、図３Ｂの図内のフラグメント３０６ａは、プリミティブ１０２ａに対して少なくとも１のフラグメントが生成されるこれらのスクリーン画素の境界であり、フラグメント３０６ｂは、プリミティブ１０２ｂに対して少なくとも１つのフラグメントが生成されるこれらのスクリーン画素の境界である。複数の異なる位置で各スクリーン空間画素１０４内に複数のサンプルを取ることは、この実施例では、隣接するプリミティブ１０２ａ，１０２ｂの双方でカバーされるサンプルを有する縁部画素３０８ａ，３０８ｂのセットを生じる。図３Ｂの図示の実施例では、所定のプリミティブで少なくとも１つの画素のサンプルがカバーされたときに、所定のプリミティブから所定の画素で更に処理するために、少なくとも１つのフラグメントが生成される。図３Ｂの図示の実施例では、縁部画素３０８ａにおいて、プリミティブ１０２ａ及び１０２ｂの双方でフラグメントが生成され、これは、これらの画素のそれぞれに対し、プリミティブがスクリーン空間に投影されたときに、プリミティブにより少なくとも１つのサンプルがカバーされるためである。
【００４３】
図３Ｂの実施例に対するサンプリングパターンは従来のものではないが、フラグメントが生成され、画素シェーダで処理される態様は従来のものであることに注意を要する。すなわち、図３Ｂの実施例では、フラグメントが生成され、サンプルのタイプに関わらず、少なくとも１つのサンプルがプリミティブでカバーされたときにいつでも、それに応じて画素が呼び出される。しかし、図示の実施例における縁部画素３０８ａ，３０８ｂのそれぞれに対して、少なくとも１つの深度サンプルが、プリミティブ１０２ａ及び１０２ｂのそれぞれでカバーされるが、しかし、同じ図示された縁部画素に対して、カラーサンプルが、双方ではなく、一方または他方のプリミティブ内に全体的に包含されることに注意することが重要である。特に、図３Ｂの図示の実施例では、縁部画素３０８ａに対して、カラーサンプルがプリミティブ１０２ｂではなく、プリミティブ１０２ａでカバーされ、一方、縁部画素３０８ｂに対しては、カラーサンプルが、プリミティブ１０２ａではなく、プリミティブ１０２ｂでカバーされる。
【００４４】
画素シェーダは、通常呼び出され、フラグメントに対する出力が、そのサンプルタイプにしたがってフラグメントで生成されたプリミティブでカバーされるサンプルに対して適用される。これは、フラグメントが画素で処理されるが、深度サンプルだけがカバーされる図３Ｂに記載のこれらの縁部画素に対して、カラー値ではなく、画素シェーダで計算されたｚ深度またはステンシル値が、カバーされた深度サンプルに適用することができることを意味する。ｚ深度値を画素シェーダで計算することが可能である一方、これは比較的まれであり、多くの状況では発生せず、これは、画素シェーダの主たる目的が、通常は、例えばカラー値演算、照明値演算等のフラグメントのカラー値に影響するシェーディング計算を実行することだからである。したがって、これらの状況における従来のラスター化及び画素シェーダ呼び出し技術の使用は、単に、廃棄される計算結果となり、ＧＰＵによる非効率な画素シェーダの使用となり、これはレンダリングパイプラインの計算効率を低下させる。
【００４５】
本開示の実施態様は、これを認識し、フラグメントに対して画素シェーダを呼び出す前に、カバーされたサンプルの性質を考慮することにより、レンダリングパイプラインの効率を改善することができる。本開示の実施態様の説明は、図３Ｃに示してある。
【００４６】
図示の実施例では、サンプルカバレッジは通常、カラーフラグメント３０６ａ，３０６ｂが、図３Ｂに於けるようにスクリーン画素と同じセットに対し、プリミティブ１０２ａ，１０２ｂから生成されることを示す。しかし、本開示の態様にしたがい、図３Ｃにグレーで表示したボックスが、少なくとも１つのサンプルがプリミティブ内に入っても、これらのサンプルがカラーサンプルでない（すなわち、深度サンプルのみがカバーされている）ために、基となるプリミティブに対して画素シェーダの呼び出しを行わないフラグメント／画素を示す。この実施例では、画素シェーダは、プリミティブ１０２ｂではなくプリミティブ１０２ａの各縁部画素３０８ａに対して少なくとも一度呼び出される。同様に、画素シェーダは、プリミティブ１０２ａではなくプリミティブ１０２ｂの各縁部画素３０８ｂに対して少なくとも一度呼び出される。これは、本開示の特定の実施態様において、カラーサンプルカバレッジだけが、ラスター化及び画素処理中に画素シェーダに対して呼び出しを指示できるためである。
【００４７】
残りのフラグメント（すなわち、図３Ｃに白／グレー表示されていないフラグメント）について、画素シェーダは通常と同様にまだ呼び出すことができる。これらのフラグメントのそれぞれに対して、これは、フラグメントの補間されたパラメータ値上の画素シェーディング計算を包含することができ、これは、画素カバレッジの構成及び、場合によっては潜在的性質にしたがって、画素中心、サンプル位置または画素の他の位置に対して生成されたプリミティブの頂点パラメータ値から補間することができる。画素中心がプリミティブの外側（少なくとも１つのサンプルがプリミティブ内に入っても）となる場合、補間された値は実際に外挿とすることができ、または、図心サンプリングを使用して、値がプリミティブ内の位置に補間されることを確保しても良い。代替的に、いくつかの他の補間の形態を使用しても良い。
【００４８】
深度サンプルだけが、それを生成したプリミティブ内にあるグレー表示したフラグメントについて、深度値をラスター化ステージの際に適用しても良いが、画素シェーダをこれらのフラグメントに対してバイパスしても良い。深度値は、プリミティブの頂点から補間した値としても良い。それぞれのプリミティブからのこれらの深度値は、深度テスト（及び、更にステンシルまたは他のテスト）に使用しても良く、これは、例えば早期深度テスト（例えば、ＥａｒｌｙＺ）または階層的な深度テスト（例えば、Ｈｉ−Ｚ）でも良く、深度値は深度バッファに書き込むか、または、深度テストにしたがって廃棄しても良い。カラー及び深度サンプルが、それを生成したプリミティブ内にあるフラグメントについて、ラスター化ステージの際の早期深度テストは、深度−ステンシルテストに失敗したサンプルを除去し、しばしば、深度サンプルだけを包含する追加フラグメントを作成しても良く、この場合、画素シェーダの呼び出しを避けても良い。
【００４９】
本開示の実施態様は、例えば早期深度テストが構成される状況で、レンダリング効率を向上させることに注意を要する。一般的に言うと、早期深度テストが構成される場合、各深度サンプルの深度値は、ラスター化の際にチェックされ、この深度値は深度バッファに書き込まれるかまたは廃棄される。このケースの場合、その深度サンプルの全ての有益な作業が提供され、任意の深度のみのフラグメントは、これらのフラグメントが画素シェーダ呼び出しのためにパックされる前に、廃棄することができる。
【００５０】
しかし、いくつかの状況では、「Ｒｅ−Ｚ」または「Ｌａｔｅ−Ｚ」深度−ステンシルが構成される。ポスト画素シェーディング深度−ステンシルテスト及び書き込みは、特定の状況で、深度、ステンシルまたはサンプルカバレッジマスク値を変更することにより、そのテストの結果を変更することのできる画素シェーダ出力をサポートするために使用される。これらの場合、画素シェーダが出力深度、ステンシルまたはサンプルカバレッジマスク値の出力を作成するために、画素シェーダは、深度のみのフラグメントに対しても呼び出される。
【００５１】
画素シェーダから出力されるシェーディング値（ｓｈａｄｅｄ  ｖａｌｕｅ）は、その後、画素処理ステージで各サンプルに適用しても良い。サンプル値はこの後、システム及びレンダリングパイプラインの構成にしたがって、異なる方法で使用しても良い。いくつかの実施態様では、多数のサンプルを、空間的及び／または時間的アンチエイリアス処理に使用しても良い。他の実施態様では、深度サンプル値はフル解像度深度バッファに格納しても良く、カラーサンプル値を、例えば、サンプルの数に対応する解像度を有する部分解像度カラーバッファに格納しても良く、最終表示画像は、その後、最近のステージのフレームバッファ／表示バッファ演算中にカラー値派生の部分解像度カラーバッファを使用して、フルｚ解像度の表示バッファについて決定される。更に他の実施態様では、これらのいくつかの組み合わせを使用しても良い。
【００５２】
画素シェーダ内のｚ深度、サンプルカバレッジマスクまたはステンシル値の変更を回避することが望ましいことがあるため、深度サンプルだけがプリミティブでカバーされた画素におけるこれらのカバーされたプリミティブに対して、画素シェーダ及びその関連するシェーディング計算に対する計算的に高価な呼び出しを回避することができる。フレーム内のプリミティブ縁部に入る多くの画素が存在する場合があり、カラーサンプルが１つの可視プリミティブにのみ入るにも関わらず、これらの縁部画素の多くは異なる可視プリミティブに入る異なるサンプル位置を有するため、画素シェーダを呼び出す前に、サンプルのタイプを考慮することにより、レンダリングパイプラインにおける多くの計算を回避することができる。本開示のいくつかの実施態様では、全体の効果は、効率において１０〜２０％改善することができる。
【００５３】
画素が深度サンプルのみを有して、プリミティブでカバーされているカラーサンプルを有していない場合でも、画素シェーダを呼び出すべきいくつかの例が存在することに注意を要する。例えば、いくつかの例では、画素シェーダは、フラグメントに対して「ｐｉｘｅｌ  ｋｉｌｌ」（または、ｆｒａｇｍｅｎｔ  ｋｉｌｌ）を実行するように構成しても良い（例えば、出力アルファブレンドファクタテストに基づいて）。他の例では、画素シェーダは、フラグメントについてＺまたはステンシル値をエキスポートするように構成しても良く、これは、画素シェーダがこのＺ／ステンシル値をカバーされた深度サンプルに書き込むために呼び出すことが必要なことがあることを意味する。更に他の例では、画素シェーダは、サンプルマスクを変更するように構成しても良い。これの３つの状態のいずれにおいても、画素シェーダをやはり呼び出すべきである。しかし、これらの条件が存在しない場合は、この後、画素シェーダの呼び出し及び関連する計算は、本質的に無用である。
【００５４】
図４は、本開示の態様にしたがうグラフィックを処理する実施例の方法４００を示す。この方法４００は、グラフィックレンダリングパイプライン内で、図３Ｃに関する上記に示したものと同様な状況で、画素シェーダの呼び出しを回避するために実行しても良い。
【００５５】
４２１で示すように、この方法は、各スクリーン空間画素に対して複数のサンプルを使用するプリミティブのサンプリングを含んでも良い。複数のサンプルは、１つまたは複数のカラーサンプルと複数の深度サンプルとを有しても良い。特定の実施態様では、１つのカラーサンプルと複数の深度サンプルが各画素について取られる。他の実施態様では、方法４００が適用される各画素について、複数のサンプルが、複数のカラーサンプルと複数の深度サンプルとの双方を有し、この場合、画素のそれぞれのカラーサンプル数は、深度サンプル数よりも少なくすべきである。いくつかの実施態様では、スクリーンは、非均等にサンプリングしても良く、異なるスクリーン空間画素は、異なるサンプル数及び／または異なるサンプル位置を有しても良い。したがって、ラスター化するスクリーン空間内に画定される少なくともいくつかの画素のセットで、各スクリーン空間画素が複数のサンプルを有する限り、４２１において、あらゆるスクリーン画素が複数のサンプルを有することは、厳格な必要条件ではない。特定の実施態様では、４２１で決定されたサンプルカバレッジは、各画定されたスクリーン空間画素におけるスクリーン空間に投影されたサンプルプリミティブに対して、グラフィックレンダリングパイプラインのラスター化ステージでスキャンコンバータにより実行される。
【００５６】
サンプルの抽出は、４２３に示すように、そのサンプルがプリミティブでカバーされた画素のセットとしても良い。図４の説明では、それぞれ所与のプリミティブに対してカバーされた画素４２３は、プリミティブでカバーされた少なくとも１つのサンプルを有するこれらの画素のみをいう。プリミティブの縁部が画素境界内に交差する場合、サンプルのいくつかに対してのみ、例えば図１〜３に関する上述の説明のように、所与のプリミティブでカバーすることができる。更に、いずれのサンプルも三角形でカバーされることなく、三角形の境界を画素の境界と交差することが可能である。しかし、これは、いずれにしろ、通常画素シェーダの呼び出しを招くことはないため、この状況は説明のために無視される。
【００５７】
４２６に示すように、早期深度テストは、所与のプリミティブでカバーされた各深度サンプルに対して実行しても良い。これは、例えば、所与のプリミティブの頂点からそれぞれのサンプルの補間された深度を、これらのサンプル座標に対する現在の深度値と比較することを包含しても良い。深度テストに失敗した深度サンプルのそれぞれは、４３１に示すように廃棄され、一方、合格した深度サンプル、例えば存続している深度サンプルは、４３２に示すように、深度バッファに深度値を書き込むことによりカバーされた画素の深度サンプルに適用しても良い。
【００５８】
深度テストに合格したプリミティブでカバーされるサンプルが存在する場合は、方法４００は、４２５に示すように、画素シェーダを呼び出す前に、存続するカバーされたサンプルの性質を更に決定しても良い。従来、早期深度テストが用いられる場合でも、画素シェーダは、少なくとも１つの画素のサンプルが深度テストに合格するといつでも、呼び出される。しかし、図４に示す実施態様の説明では、システムは、深度テストを乗り切ったサンプルのいずれかがカラーサンプルかどうかチェックしても良い。プリミティブでカバーされたカラーサンプルが残っていないことが決定される場合は、画素のフラグメントは、４３３に示すように、破棄されても良く、画素シェーダは呼び出されない。
【００５９】
結局、早期テストで全ての存続するサンプルが決定されると、所与のプリミティブでカバーされた少なくとも１つの存続するカラーサンプルが存在し、この後、４３４に示すように、生成された画素フラグメントに対して画素シェーダを呼び出すことができる。画素シェーディング計算は、画素シェーダの呼び出しにしたがって実行することができ、画素シェーダの出力は、４３５に示すように、例えばカラーバッファ内のカラーサンプル位置で１つまたは複数の描画ターゲットに適用することができる。この処理は、上述の態様でカバーされた少なくとも１つのサンプルを有する、それぞれのカバーされた画素に対して実行することができる。特定の状況では、これは、画素の深度サンプルが所与のプリミティブでカバーされかつ全ての深度−ステンシルテストを合格した場合でも、画素シェーダの呼び出し及び関連する画素シェーダ計算は、所与のプリミティブに対する画素に対して回避できることを意味する。多数の三角形が画素境界に重なる場面では、これは、性能及びレンダリング効率の大きな促進を提供することができる。
【００６０】
ステンシルテスト及びステンシル書き込みは、説明のために上記から省略してあるが、しかし、早期テストについて、深度サンプルでステンシル値を比較し、ステンシル値について、それに応じて書き込まれるサンプルに適用することが可能であることにも、注意を要する。
【００６１】
サンプルカバレッジの性質にしたがって画素シェーダを呼び出すかどうかの決定のプロセスは、所与のプリミティブにおけるそれぞれのカバーされた画素に対して実行しても良く、同様に、場面内の各プリミティブでカバーされた画素に対して実行しても良い。カバーされた画素の異なるものに対する演算は、処理ユニット、例えば、ＧＰＵで並列に実行しても良いことに注意を要する。
【００６２】
本開示の態様によると、所与のカバーされた画素のために画素シェードを呼び出すか、呼び出さないかの考慮は、早期深度テストを合格したカバーされたカラーサンプルがいくらか存在するか否かのみ以外の他の考察を考慮しても良い。例えば、カバーされたカラーサンプルがない場合（例えば深度サンプルだけがカバーされいる）でも、所与のフラグメントでカバーされるサンプルを有する画素に対し、所与のフラグメントに対して画素シェーダを呼び出しても良い、いくつかの状況が存在する。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、画素シェーダがカバーされた画素を削除する（または、フラグメントを削除）ように構成されているかどうか決定することを包含しても良い。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、更に、画素シェーダがカバーされた深度サンプルについて、Ｚまたはステンシル値をエキスポートするように構成されているか否か決定することを包含しても良い。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、更に、画素シェーダがサンプルマスクを変更するように構成されているか否か決定することを包含する。これらの実施態様では、早期深度テストは省略しても良く、例えば、深度テストは、それぞれカバーされたサンプルに対する画素シェーダの後に実行しても良い。これらの状況では、画素シェーダは、通常の態様で呼び出しても良い。
【００６３】
図５は、本開示の態様を実施するように構成されたレンダリングパイプラインによる例示的なグラフィック処理方法５００を示す。図５の例示的なレンダリングパイプラインは、本開示の態様にしたがって画素シェーダの呼び出しを最小にするための図４の方法４００を包含しても良い。
【００６４】
レンダリングパイプライン５００は、潜在的には二次元ジオメトリであるが、好ましくは仮想空間（ここでは、「場面空間」と称することもある）内で三次元ジオメトリを有しても良い場面を示すイメージとして画像を描画するように構成しても良い。レンダリングパイプラインの全体を通じて、データは１つまたは複数のメモリユニットからデータから読み出し及び書き込むことができ、これはグラフィックメモリ５２０として、図５に全体的に示してある。グラフィックメモリは、ビデオメモリ及び／またはハードウェアステートメモリを有しても良く、これは、レンダリングパイプラインに使用される種々のバッファ及び／またはグラフィック資源を包含する。グラフィックメモリ５２０の１つまたは複数の個々のメモリユニットは、レンダリングの特定のステージにおけるデータの性質にしたがって、１つまたは複数のビデオランダムアクセスメモリユニット（複数を含む）、１つまたは複数のキャッシュ、１つまたは複数のプロセッサレジスタ等として実現しても良い。したがって、グラフィックメモリ５２０は、グラフィックレンダリングパイプライン内で使用される任意のプロセッサアクセス可能メモリと称すると理解される。専門化したＧＰＵ等の処理ユニットは、パイプライン中の種々の演算を実行するように構成され、グラフィックメモリ５２０に読み／書きしても良い。
【００６５】
パイプラインの早期ステージは、場面がラスター化され、画素表示装置に出力するのに適した個別のピクチャエレメントのセットとして、スクリーン空間に変換される前に、場面空間で実行される動作を包含しても良い。パイプラインの全体を通して、グラフィックメモリ５２０に包含される種々の資源は、パイプラインのステージで利用され、ステージに対する入出力は、イメージの最終値が決定される前に、グラフィックメモリに包含されるバッファに一時的に格納しても良い。
【００６６】
レンダリングパイプラインは入力データ５２２で作動することができ、これは、場面空間にセットアップされかつこの場面の座標に関して画定されたジオメトリを有する頂点のセットで画定される１つまたは複数の仮想オブジェクトを包含しても良い。このレンダリングパイプライン５００に使用する入力データ５２２は、その頂点が本開示の態様にしたがうレンダリングパイプラインで処理されるプリミティブに対応する、場面ジオメトリのポリゴンメッシュモデルを有しても良く、初期頂点ジオメトリは、ＣＰＵで実行されるアプリケーションステージの際にグラフィックメモリにセットアップしても良い。パイプラインの早期ステージは、図５の頂点処理ステージ５２４のような広く分類されるものを有しても良く、また、これは、場面空間ジオメトリ内のオブジェクトの頂点を処理するための種々の計算を有しても良い。これは、頂点シェーディング計算５２６を有しても良く、これは、位置値（例えば、Ｘ−Ｙ座標及びＺ深度値）、カラー値、照明値、テクスチャ座標等の場面内の頂点の種々のパラメータ値を演算しても良い。好ましくは、頂点シェーディング計算５２６は、１つまたは複数のプログラム可能な頂点シェーダで実行される。頂点処理ステージは、更に、選択的に、テッセレーション及びジオメトリシェーダ計算５２８等の追加頂点処理計算を含んでも良く、これは、プリミティブを細分割し、新しい頂点及び新しいジオメトリを場面空間内に生成するために使用しても良い。一度、頂点処理５２４と称されるステージが完了すると、このパイプラインのステージで、それぞれ頂点パラメータ値５４６のセットを有する頂点のセットで場面が画定され、これは、グラフィックメモリの頂点バッファに格納しても良い。
【００６７】
パイプライン５００は、この後、場面ジオメトリをスクリーン空間及びレンダリングパイプラインの際に使用する個別のピクチャエレメントすなわち画素のセットへの変換に関連するラスター化処理ステージ５３０に向かうが、しかし、画素という用語は、最終表示バッファ画像における表示画素値に対応する画素を必ずしも意味しないことに注意を要する。仮想空間ジオメトリは、スクリーン空間ジオメトリに変換されても良く、この変換は、本質的にオブジェクト及び頂点をスクリーン空間から、ラスタライザでサンプリングされた複数の個別のスクリーン空間画素から形成される場面の視界窓（または、ビューポート）への投影を計算しても良い演算を介して行われる。図５に示すラスター化処理ステージ５３０は、プリミティブ組み立て演算５３２を有しても良く、これは、場面内の頂点の各セットで画定されるプリミティブをセットアップしても良い。各頂点は、インデックスで画定しても良く、各プリミティブは、これらの頂点インデックスに関して画定しても良く、これは、グラフィックメモリ５２０内のインデックスバッファに格納しても良い。プリミティブは、それぞれポイントプリミティブ、ラインプリミティブ及び他の多角形形状を包含しても良いが３つの頂点で画定される少なくとも三角形を包含する必要がある。プリミティブの組み立てステージ５３２の際、特定のプリミティブを選択的に除外しても良い。例えば、そのインデックスが特定の巻取り順序を示すこれらのプリミティブは後ろ向きになると考慮し、場面から除外しても良い。
【００６８】
プリミティブを組み立てた後、ラスター化処理ステージは、スキャン変換演算５３４を有しても良く、これは、個々の画素でプリミティブをサンプリングし、サンプルがプリミティブでカバーされたときに、更に処理するためにプリミティブからフラグメントを生成しても良い。本開示の実施態様では、少なくともいくつかのスクリーン空間画素に対して、スキャン変換５３４は各画素内に複数のサンプルを取っても良い。これらの画素のそれぞれの中の複数のサンプルは、１つまたは複数のカラーサンプルと複数の深度サンプルとを有しても良い。特定の実施態様では、異なる画素は異なるサンプリングをしても良い。例えば、いくつかのエッジ画素は、中心画素よりも少ないサンプリング密度を有し、ヘッドマウントディスプレイ（ＨＭＤ）に対するレンダリングの特定の態様を最適にしても良い。本開示のいくつかの実施態様では、スキャン変換は更に画素シェーダ前深度テスト及びいくつかのレンダリング構成における深度更新を包含しても良い。これらの場合、深度サンプルがテストされ、その値は深度バッファ（及び、可能なステンシルバッファ）内の深度値に対してチェックしても良く、深度バッファ内の深度サンプル値５４９は、それらがテストに合格したときに更新しても良い（及び、可能な場合には、ステンシル値は、ステンシルテストに基づいてステンシルバッファ内で更新しても良い）。
【００６９】
スキャン変換５３４中にプリミティブから生成されるフラグメント（または、画素）は、それを作ったプリミティブの頂点の頂点パラメータ値５４６から画素の位置に補間しても良いパラメータ値を有しても良い。ラスター化ステージ５３０は、パラメータ補間演算ステージ５３６を有し、これらの補間されたフラグメントパラメータ値を計算５４８しても良く、これはパイプラインの後のステージで更に処理するための入力として使用しても良く、更に、パラメータ補間は、深度サンプルをカバーする頂点深度値プリミティブから、深度値の補間を包含しても良く、これは、構成にしたがって、画素シェーダに対する入力フラグメント値として使用しても良くまたは使用しなくても良い。
【００７０】
パイプライン５００は更に、図５に５４０で全体を示す画素処理演算を包含し、補間されたパラメータ値５４８を更に演算し、同時に、表示するための最終画素値にフラグメント及び／または補間された値をどのように寄与させるかについて決定する他の演算を実行しても良い。これらの画素処理タスクのいくつかは、フラグメントの補間されたパラメータ値５４８を更に演算するために使用しても良い画素シェーディング計算５４２を包含しても良い。画素シェーディング計算は、プログラム可能画素シェーダで実行しても良く、画素シェーダ呼び出し５３８は、ラスター化処理ステージ５３０の際のプリミティブのサンプリングに基づいて開始しても良い。本開示の実施態様では、画素シェーダ呼び出し５３８は図４の方法４００にしたがって決定されても良く、画素シェーダは、カバーされたサンプルがカラーサンプルでないときは、所定のカバーされた画素に対して呼び出されない。
【００７１】
画素シェーディング計算５４２は、グラフィックメモリ５２０の１つまたは複数のバッファに値を出力しても良く、描画ターゲットと称することもある。いくつかの実施態様では、多数の描画ターゲット（ＭＲＴ）を使用しても良く、その場合、画素シェーダは、画素毎またはサンプルごとの出力のそれぞれに対して複数の独立した値を出力することが可能であっても良い。画素処理５４０は、レンダリング出力演算５４４を包含しても良く、これは、ラスター演算（ＲＯＰ）として知られることがあるものを包含しても良い。レンダリング出力演算５４４は、フラグメント値が画素シェーダで処理されたかどうか確認するために、深度テスト、ステンシルテスト及び／または他の演算を包含しても良く、画素シェーダで処理されない補間された深度値がある場合は、カラーバッファ及び／または深度バッファに書き込むべきであり、レンダリング出力演算のいくつかは、画素シェーディング計算５４２の後または画素シェーディング計算５４２の前に最適化として実行しても良い。サンプル毎の最終的なカラー値及び深度値は、レンダリング出力演算５４４にしたがって決定しても良く、これは、１つまたは複数のバックバッファとして表示バッファ（「フレームバッファ」として知られていることもある）に格納しても良い。
【００７２】
特定の態様によると、方法５００は更に表示処理５５１を包含しても良く、これは、上述のステージにしたがってカラー／深度バッファ内で計算された全場面分の描画呼び出しを処理し、ディスプレイ上に表示するための完成したグラフィックフレーム５５４を構成することのできる表示画素値５５２の最終配列を決定しても良い。表示処理５５１は、前述のステージを介する多くの描画コマンドの流れの後に生じる最終ステップとしても良く、フルスクリーンパス（全画面を覆う小さな画面に整合した多角形）のレンダリング、または、カラー／深度サンプルバッファデータ５４９に直接作用することのできる計算ジョブを包含しても良い。特定の実施態様では、より高い解像度のカラーバッファ出力は、表示処理５５１の際の低解像度の深度バッファの使用から解決することができる。特定の態様により、このステージの際の空間的及び／または時間的アンチエイリアス処理を適用することも可能である。完成したフレーム５５４は、表示バッファに格納し、リアルタイムでディスプレイ装置に表示するために選択的に表示バッファをスキャンアウトしても良い。
【００７３】
パイプラインのいずれのステージも、ハードウェアモジュール、ソフトウェアモジュール（例えば、１つまたは複数の個々のまたは一体化したシェーダプログラム）またはこれらの組合わせにより、実装しても良いことに注意を要する。
【００７４】
図６に移動すると、本開示の態様によるグラフィックを描画するように構成されたコンピューティングシステム６００の例示的な実施例が記載されている。システム６００は、上記の態様で、アプリケーション６６５のためにグラフィックを描画するように構成しても良い。本開示の態様によると、システム６００は、組込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム装置、ワークステーション、ゲーム機等であっても良い。
【００７５】
システムは、一般的に、例えば、図４及び／または５の方法に共通の特徴を有する方法を実行することにより、本開示で実施された態様を実行するように構成されたプロセッサ及びメモリを有しても良い。図示の実施例では、プロセッサは中央処理ユニット（ＣＰＵ）６７０、グラフィック処理ユニット（ＧＰＵ）６７１、及び、メモリ６７２を有する。メモリ６７２は、選択的に、ＣＰＵ及びＧＰＵの双方にアクセス可能な主メモリユニットを有しても良く、主メモリの一部は、選択的にグラフィックメモリ６５０の一部を有しても良い。ＣＰＵ６７０およびＧＰＵ６７１は、それぞれ１つまたは複数プロセッサコア、例えば単一のコア、２つのコア、４つのコア、８つのコアまたはそれ以上を有しても良い。ＣＰＵ６７０とＧＰＵ６７１は、データバス６７６を使用して１つまたは複数ユニットにアクセスするように構成しても良く、いくつかの実施態様では、システム６００が２つまたはそれ以上の異なるバスを有することが有益となることがある。
【００７６】
メモリ６７２は、例えばＲＡＭ、ＤＲＡＭ等のアドレス指定可能なメモリを提供する集積回路の形態の１つまたは複数のメモリユニットを有しても良い。グラフィックメモリ６５０は、グラフィックレンダリングパイプライン用のグラフィック資源、グラフィックバッファ及び他のグラフィックデータを一時的に格納しても良い。グラフィックバッファは、例えば頂点パラメータ値を格納するための１つまたは複数の頂点バッファ、及び、頂点インデックスを格納するための１つまたは複数のインデックスバッファを有しても良い。グラフィックバッファは、更に、１つまたは複数の描画ターゲット６９３を有しても良く、これは、本開示の態様にしたがって計算された画素／サンプル値を保持するカラーバッファ６９４と深度バッファ６９６の双方を有しても良い。特定の実施態様では、カラーバッファ６９４及び／または深度バッファ６９６は、表示バッファ６９７に格納する表示画素カラー値の最終配列を決定するのに使用しても良く、これは、ディスプレイ上に表示することを意図する最終的に描画した画像を作り上げることができる。特定の実施態様では、表示バッファは、フロントバッファ及び１つまたは複数バックバッファを有しても良く、ＧＰＵ６７１は、ディスプレイ６８６上に表示するために、表示バッファ６９７のフロントバッファからグラフィックフレームをスキャンアウトするように構成されても良い。
【００７７】
ＣＰＵは、ＣＰＵコードを実行するように構成することができ、これは、描画グラフィック（ビデオゲーム等）、及び、アプリケーション６６５の状態に基づいてＧＰＵ６７１で実装されるプログラムに対する描画コマンドまたは描画呼び出しを発行するための対応するグラフィックＡＰＩ６６７を有するアプリケーション６６５を有しても良い。ＣＰＵコードは、更に、物理的シミュレーション及び他の機能を実装しても良い。
【００７８】
ＧＰＵは、本開示の例示的実施態様に関して上述したように動作するように構成しても良い。グラフィックのレンダリングをサポートするため、ＧＰＵはシェーダ６７３を実行しても良く、これには頂点シェーダ及び画素シェーダを包含しても良い。ＧＰＵは、例えばジオメトリシェーダ、テッセレーションシェーダ、演算シェーダ等の他のシェーダプログラムを実行しても良い。ＧＰＵは、更に、専門化したハードウェアモジュール６９８を有しても良く、これは、１つまたは複数のテクスチャマッピングユニット、及び／または、図５に示すパイプラインと同様なグラフィックパイプラインの１つまたは複数のステージで演算を実行するように構成された他のハードウェアモジュールを有しても良く、これは、固定された機能演算であっても良い。シェーダ６７３及びハードウェアモジュール６９８は、最終画素値がディスプレイに出力される前に、パイプラインの種々のステージで、メモリ６５０及びバッファ６９３内のデータとインターフェースをとっても良い。ここに記載したグラフィック処理技術の態様を実行するためにシステム６００のプロセッサで実行するように構成されたシェーダ６７３及び／または他のプログラムは、非一時的コンピュータ可読媒体に、命令として格納しても良い。ＧＰＵはラスタライザモジュール６９５を有しても良く、これは、選択的にＧＰＵ、シェーダ６７３またはこれらの組合わせたハードウェアモジュール６９８に組み込んでも良い。ラスター化モジュール６９５は、スクリーン空間画素のプリミティブの複数のサンプルを取得し、本開示の態様にしたがい、サンプルの性質にしたがって１つまたは複数の画素シェーダを呼び出すように構成しても良い。
【００７９】
システム６００は、周知のサポート機能６７７を有しても良く、これは、例えば、バス６７６を介してシステムの他の構成要素と通信しても良い。このようなサポート機能は、入出力（Ｉ／Ｏ）要素６７９、電源（Ｐ／Ｓ）６８０、クロック（ＣＬＫ）６８１及びキャッシュ６８２を包含しても良いが、これに制限するものではない。装置６００は、選択的に、ディスクドライブ、ＣＤ−ＲＯＭドライブ、フラッシュメモリ、テープドライブ、ブルーレイドライブまたはプログラム及び／またはデータを格納する同様のものなどの大容量記憶装置６８４を有しても良い。デバイス６００は、更に、描画したグラフィック６８７をユーザに提示するディスプレイユニット６８６、及び、装置６００とユーザとの間の対話を容易とするユーザインターフェースユニット６８８を有しても良い。ディスプレイユニット６８６は、フラットパネルディスプレイ、陰極線管（ＣＲＴ）スクリーン、タッチスクリーン、ヘッドマウントディスプレイ（ＨＭＤ）、または、テキスト、数字、グラフィックシンボル若しくは画像を表示可能な他のデバイスの形態としても良い。ディスプレイ６８６は、ここに記載の種々の技術で処理されたレンダリング処理されたグラフィック６８７を表示してもよい。ユーザインターフェース６８８は、キーボード、マウス、ジョイスティック，ライトペン、ゲームコントローラ、タッチスクリーン、及び／または、グラフィカルユーザインターフェース（ＧＵＩ）と結合して使用することができる他のデバイスなどの１つまたは複数の周辺装置としても良い。特定の実施態様では、アプリケーション６６０及びグラフィックの基となるコンテンツの状態は、少なくとも一部が、例えば、アプリケーション６６５がビデオゲームを包含するビデオゲームの導入で、ユーザインターフェース６８８を介するユーザの入力によって決定しても良い。
【００８０】
システム６００はネットワークインターフェース６９０を包含し、デバイスがネットワーク上で他のデバイスと通信するのを可能としても良い。ネットワークは、例えばローカルエリアネットワーク（ＬＡＮ）、インターネットのようなワイドエリアネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）ネットワークまたは他のタイプのネットワーク等のパーソナルエリアネットワークであっても良い。図示及び説明した種々の構成要素の各々は、ハードウェア、ソフトウェア、または、ファームウェア、または、これらの２つ以上のいくつかの組み合わせであっても良い。
【００８１】
図７Ａ〜７Ｄは、本開示の特定の実施態様にしたがってサンプリングパターンから計算することのできる対応する表示バッファと共に、サンプリングパターンの実施例を示す。図７Ａ〜７Ｄは、本開示の特定の実施態様における深度サンプルよりも数の少ないカラーサンプルを有する画素をサンプリングすることが、有益であることの理由の特定の態様を示す。
【００８２】
図７Ａに示すように、スクリーン空間は、例えばラスタライザのための画素境界または画素座標である複数の画素１０４で画定しても良く、これは、それぞれ本開示の特定の態様にしたがって複数のサンプルを有しても良い。複数のサンプルは、各画素１０４に対してとることができ、各サンプルは、本開示の特定の態様にしたがって、レンダリングプロセスの際に決定される関連する値を有しても良い。図７Ａに示すように、各スクリーン空間画素１０４の複数のサンプルは、深度サンプルよりも少ないカラーサンプルを有しても良い。すなわち、深度サンプル数は、各スクリーン空間画素１０４内でカラーサンプル数よりも多くしても良い。レンダリングの際、各サンプルに対してプリミティブのラスター化から計算された値、及び、対応するフラグメントの画素のシェーディングは、ここでは特定の原理にしたがって決定しても良く、図示のカラーサンプルだけを、レンダリングの際にカラー値をシェーディングするために使用しても良く、一方、深度サンプルのいくつかは深度のみに使用しても良い。
【００８３】
図７Ｂは、図７Ａに示すサンプリングプロセスを使用して計算しても良い高解像度の深度バッファ７１１を示す概略図である。図７Ｃは、図７Ａに示す同じサンプリングプロセスを使用して計算しても良いカラーバッファ７１３を示す。図に示すように、本開示の実施態様では、画素処理中にレンダリングされるカラーバッファ７１３は、レンダリングされる深度バッファ７１１よりも低い解像度を有しても良い。図７Ｄは、部分解像度のカラーバッファ７１３から派生したカラー値を使用するフル解像度の深度バッファ７１１から再構築することのできる最終表示バッファ７１５を示す。
【００８４】
大まかにいうと、深度バッファ７１１内の値は、レンダリングプロセス中、フル表示解像度７１５内の各表示画素に対する独特のカラー値をレンダリングすることなく、カラーバッファ７１３のどのカラー値をフル表示バッファ７１５内の画素に適用すべきかをフル空間精度で決定するために、使用することができる。好ましくは、フル表示解像度は、４ｋ解像度（例えば、３８４０ｘ２１６０）用の表示画素密度を有し、レンダリングされた表示画像は、超高精細ディスプレイとして一般に知られているものに適している。しかし、本開示の態様は、表示バッファ内の表示画素の数よりも少ないレンダリングされるカラーサンプルまたはカラー画素値を有する部分解像度カラーバッファを使用することにより、任意の表示バッファ解像度に対するレンダリング効率の改善に適用することができる。制限するものではない実施例として、フル表示解像度は、標準の高精細（例えば、２ｋのオーダーの水平解像度）であっても良く、グラフィックは、フルＨＤ解像度よりも低解像度カラーバッファを用いることにより効率を改善させた標準のＨＤ解像度にレンダリングしても良い。
【００８５】
メモリバンド幅の必要条件及びカラーサンプルに対する計算値に関連する計算オーバーヘッドは、一般に、深度に対するこれらよりも高いことに注意を要する。例えば、現在のレンダリング技術に対して、マルチプルレンダーターゲット（ＭＲＴ）を介して、画素毎の深度データよりも多くの画素毎のカラーデータをより多く出力すること（例えば、１６０ビットの合計カラーデータ対３２ビット深度）は、一般的であり、これは、レンダリングパイプラインの際に、所与のカラーバッファ解像度対比較可能な深度バッファ解像度で、メモリ資源により大きな負担をかける。更に、画素シェーダはカラーサンプルに対して一般的に呼び出されなければならないため、シェーディング計算及び関連するパラメータ値が計算されて、画素の境界内に入る各カラーサンプルに適用しなければならず、画素シェーダオーバヘッドは、図７Ｃに示すように、より少ないカラーサンプル及び対応して低い解像度のカラーバッファを使用し、これらのカラーサンプルを、対応する最終フレーム画像を包含するフル解像度の表示バッファに適用することにより、顕著に低減することができる。深度値が画素の処理中に画素シェーダで変更されないことがしばしばあり、所与のプリミティブに対してスクリーン空間画素の境界内にカラーサンプルが入らなければ、画素シェーダの呼び出しを回避することにより、図７Ａに示すサンプリングスキームを利用して所定の状況で、シェーダのオーバーヘッドを低減することができる。
【００８６】
本開示の特定の態様を説明するため、図８Ａは、図７Ａに示す実施例と同様なスクリーン空間画素全体のサンプリングパターンを使用し、一対のプリミティブ８１７ａ及び８１７ｂのラスター化に使用されるスクリーン空間画素１０４のセットの実施例を示す。図８Ａに示す実施例では、プリミティブ２１７ａは、フル解像度深度バッファが、例えば図７Ａ〜７Ｄに示すように部分解像度カラーバッファだけを使用するフル解像度表示バッファに対してカラー値を正確に再構成するために使用する方法の特定の態様を説明するために、前部三角形２１７ｂで部分的に閉塞された背景三角形である。この簡略化した実施例では、三角形８１７ａ及び８１７ｂは、場面内で他のプリミティブで閉塞されていないと仮定している。
【００８７】
図８Ａに示すように、スクリーン空間画素１０４ａの１つが、深度サンプルカバレッジに基づいてプリミティブ８１７ａ及び８１７ｂの双方でカバーされている。「カバーされた」は、プリミティブの境界がスクリーン空間に投影されたときに、サンプルがプリミティブの境界内に入ることをいう。しかし、１つのカラーサンプルだけがこのスクリーン空間画素１０４ａ（上左角部のカラー及び深度サンプル）で使用され、この実施例では、スクリーン空間画素１０４ａのカラーサンプルが三角形８１７ａだけでカバーされている。このカラーサンプルは他の点では閉塞されていないため、このサンプルの深度に基づいて、このサンプルは、カラーバッファのプリミティブ８１７ａに対して計算されたカラー値を取る。同様に、図示の実施例では、スクリーン空間画素１０４ｂに対して、三角形８１７ｂでカバーされた１つのカラーサンプル（上左角部）が取られる。カラーサンプルは、このサンプルの深度に基づいて、他の点で閉塞されていないため、このサンプルの深度に基づいて、このサンプルは、例えば図７Ｃに示すものと同様なカラーバッファであるカラーバッファ内のプリミティブ８１７ｂに対して計算されたカラー値を取る。同様に、これらの同じカラーサンプルのスクリーン空間座標に対する深度サンプルは、それぞれのプリミティブから計算された深度値を取る。
【００８８】
図８Ａに示すように、ラスタライザ画素１０４ａに対して、カラーサンプルよりも多くの深度サンプルが取られる。図示の実施例では、背景の三角形８１７ａは、ラスタライザ画素１０４ａの上右角部の深度サンプルにおける三角形８１７ｂで閉塞されている。これは、このサンプルが、三角形８１７ｂに対して計算された深度バッファの値を取ることを意味し、これは、三角形８１７ａでカバーされた深度サンプルが深度テストに失敗し、廃棄されるためである。この結果、値は、カラーサンプルが計算された上左の深度サンプルに対する値とは、大きく異なる（すなわち、低い深度／スクリーンにより近い）ことがある。更に、この深度サンプルは、三角形８１７ｂでカバーされたカラーサンプルの深度値と同様または同じことがある値を取る。
【００８９】
図８Ｂは、この情報が高解像度表示バッファを効果的に再構成するために使用することのできる方法を詳細に説明する。図８Ｂは、同じサンプルに重ねられるサンプルプリミティブ８１７ａ及び８１７ｂを示すが、今、ディスプレイ上に表示することを意図した、再構成された表示バッファ画素がこれらのサンプルに重なって示されている。この実施例では、表示バッファは、深度サンプルの配列を作り上げる深度バッファのフル解像度と等価の解像度を有する。三角形８１７ｂで閉塞された三角形８１７ａの一部に対応する表示バッファ画素８１９に対して、この表示画素が、閉塞された三角形８１７ａではなく前側の三角形８１７ｂから取られたカラーサンプルからそのカラー値を引き出すことが望ましい。この実施例では、これは、このサンプルが、他のカラーサンプルよりも、スクリーン空間で大きく離れていても（すなわち，Ｘ−Ｙスクリーン座標で垂直／水平方向に更に離隔する）、表示画素８１９が、８２１でカラーサンプルからそのカラー値を引き出すことができることを意味する。実際、それは、スクリーン空間内の完全に異なる位置で、フラグメントまたは４つのフラグメントから計算されることがある。しかし、表示画素の値を派生する好適なカラーサンプル８２１は、深度情報に基づいて決定してもよい。８１９及び三角形８１７ｂ内の深度は、周囲の領域と相違するため、三角形８１７ａからのカラーサンプルがスクリーン空間内でより近く（ｃｌｏｓｅｒ）かつこの実施例における画素に極めて隣接していても、これは、これらの表示画素のそれぞれのカラーは、例えば、この実施例におけるカラーサンプル８２１である異なる深度を有する領域内から派生すべきであることを示す。
【００９０】
本開示の特定の態様を更に説明するため、図８Ｃ〜８Ｄは、フル解像度表示バッファ値及び部分解像度カラーバッファ値を図８Ａに示すプリミティブからを計算するための簡略化した処理の流れの概略図を示す。図８Ｃは、プリミティブ８１７ａの説明的なプロセスを示し、一方、図８Ｂは、プリミティブ８１７ｂの説明的なプロセスを示す。図８Ｃ〜８Ｄのプロセスの流れの実施例は、図５のレンダリングパイプラインによる等のグラフィックパイプラインを介してデータがどのように流れるか簡略的に視覚化することができる。
【００９１】
図８Ｃに示すように、プリミティブ８１７ａは、スクリーン空間画素１０４ａ（または、ラスター化画素）の複数のサンプルでサンプリングされる。この単一の画素は、最終表示画像の単一の画素に必ずしも対応するものではないが、その画定された境界は、フル解像度グラフィックフレームが再構築されたときに、例えば、この実施例では４つである多数の表示画像画素を実際に囲んでも良い。ａ）で示すように、プリミティブがラスター化され、サンプルカバレッジが三角形で決定される。この実施例では、３つのサンプルが三角形、画素内で孤立したカラーサンプル及び３つの深度サンプルでカバーされる。図８Ｃのｂ）で示すように、値は、対応するパラメータに対してサンプル値のそれぞれについて計算され、すなわち、カラーパラメータ、及び／または、色に影響する他のパラメータをカバーされたカラーサンプルに対する画素シェーダで操作し、このサンプルに対するカラー値のセットを決定しても良く、一方、深度値は、３つの深度サンプルのそれぞれに対して計算しても良く、これらの値は、画素シェーダでエキスポートされた値でもよく、または、そうでなくても良い。値は、プリミティブの頂点から補間したパラメータを使用して計算しても良い。図８Ｃに示すように、ラスター化された画素の下右のサンプルはプリミティブでカバーされていないため、図８Ｃに示すように、この特定の三角形８１７ａから、このサンプルに深度値が適用されない。値はサンプル毎の操作を経ても良く、これは、フラグメント／画素からの最終サンプル値が深度バッファのサンプルに書き込まれる前に、各サンプルに対する深度テストを包含しても良い。図８Ｃのｃ）で示すように、この実施例では、上右のサンプルが深度テストに失敗し、その深度値は廃棄しても良く、これは、三角形８１７ｂに対する深度値で閉塞されるからである。深度テストは、図８Ｃでは最終サンプル値が計算された後であるように示されているが、選択的に前に実行しても良く、これは、テストを失敗して廃棄されることのあるサンプル／画素に対する不必要な計算を避ける最適化のためであることに注意を要する。図８Ｃのｄ）に示すように、計算されたサンプル値は、フル解像度深度バッファ及び部分解像度カラーバッファに書き込んでも良い。
【００９２】
図８Ｄに示すように、同様なプロセスがプリミティブ８１７ｂに適用される。図８Ｃにおけるように、プリミティブ８１７ｂは、各画素内の深度サンプルよりもカラーサンプルの数が少ないサンプリングスキームを使用してラスター化される。カラー及び深度値は各サンプルに対して計算され、表示バッファのカラーサンプル及び深度サンプルに書き込まれる前に、深度テストしても良い。この三角形８１７ｂは、このサンプルの多数の画素でカバーされているが、しかし、プリミティブは上画素内の深度サンプルだけをカバーし、画素シェーダ計算は、特定の状況でこの画素について省略しても良い。下画素は、唯一カバーされたカラーサンプルを包含し、このサンプルに画素シェーダを使用してシェーディングしても良い。ｃ）で示すように、サンプルは、図８Ｄに示すように、カラー／深度表示バッファ内に格納する前に深度テストしても良い。カラーサンプルのサンプル座標における深度値は、プリミティブでカバーされた全てのこれらの深度サンプルと同様であるため、最終表示画素のカラーは、全てのこれらの深度サンプル座標における画素のカラーサンプルから効果的に導きだすことができ、フル解像度でカラー値をシェーディングする必要を避ける深度サンプルにより提供される高空間精度を有する。
【００９３】
上記は、深度に対してのみ多くのサンプルを利用するサンプリングスキームの方法の実施例の詳細であり、このような多重サンプリングスキームは他の目的に使用することもできる。例えば、時間的なアンチエイリアス処理をフレーム間で実行し、異なるフレームの深度サンプルで導き出されたフル解像度カラーを再構成しても良い。多数のサンプルは、他のアンチエイリアス処理スキームに対しても有益とすることができる。
【００９４】
追加態様
本開示の追加の態様は、グラフィックのレンダリングの方法を包含し、この方法は、第１画素で第１プリミティブのサンプルカバレッジを決定し、この第１画素は、複数のサンプルを有し、複数のサンプルは１つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルカバレッジの決定では、第１画素の複数のサンプルが、第１プリミティブでカバーされた１つまたは複数のカバーされたサンプルを有することを決定し、更に、
カバーされたサンプルが第１画素の少なくとも１つのカラーサンプルを含むかどうか決定し、前記決定が、カバーされたサンプルに少なくとも１つのカラーサンプルが含まれる場合に、第１プリミティブについて第１画素に対する画素シェーダを呼び出し、更に、
前記決定が、カバーされたサンプルに少なくとも１つのカラーサンプルが含まれないと決定した場合に、第１プリミティブについて第１画素のための画素シェーダを呼び出さない。
【００９５】
他の追加態様は、コンピュータ実行可能な命令を内部に具現化し、実行したときに上記方法を実行する、コンピュータ可読媒体である。
【００９６】
他の態様は、上記方法を実行するために、コンピュータ可読命令を搬送する電磁または他の信号である。
【００９７】
更に他の態様は、通信ネットワークからダウンロード可能、及び／または、コンピュータ可読及び／またはマイクロプロセッサで実行可能な媒体に格納されるコンピュータプログラム製品であって、上記方法を実行するためのプログラムコード命令を有することを特徴とする。
【００９８】
上記は、本発明の好ましい実施形態の完全な説明であるが、種々の代替、変更及び等価なものを使用することが可能である。したがって、本発明の範囲は、上記説明を参照することではなく、代わりに、等価なものの全範囲と共に、添付の請求の範囲を参照することにより、決定されるべきものである。好ましいか否かに関わらず、ここに記載の特徴は、好ましいか否かに関わらず、ここに記載の任意の他の特徴と組合わせることができる。請求の範囲では、不定冠詞「ａ」または「ａｎ」は、明確に延べられている場合を除き、その冠詞に続く項目の１つまたは複数の量を指す。請求の範囲は、「ｍｅａｎｓ  ｆｏｒ」の語句を使用する所与の制限が所与の請求の範囲において明確に参照されていない限り、ｍｅａｎｓ−ｐｌｕｓ−ｆｕｎｃｔｉｏｎの限定を含むことを意図したものではない。
【図１Ａ】
0006342513.tif 000002
【図１Ｂ】
0006342513.tif 000003
【図２Ａ】
0006342513.tif 000004
【図２Ｂ】
0006342513.tif 000005
【図３Ａ】
0006342513.tif 000006
【図３Ｂ】
0006342513.tif 000007
【図３Ｃ】
0006342513.tif 000008
【図４】
0006342513.tif 000009
【図５】
0006342513.tif 000010
【図６】
0006342513.tif 000011
【図７Ａ】
0006342513.tif 000012
【図７Ｂ】
0006342513.tif 000013
【図７Ｃ】
0006342513.tif 000014
【図７Ｄ】
0006342513.tif 000015
【図８Ａ】
0006342513.tif 000016
【図８Ｂ】
0006342513.tif 000017
【図８Ｃ】
0006342513.tif 000018
【図８Ｄ】
0006342513.tif 000019