(57)【特許請求の範囲】
【請求項１】
コンピュータグラフィック処理方法であって、
頂点シェーダによって頂点パラメータ値を圧縮すること、
圧縮された前記頂点パラメータ値をキャッシュに書き込むこと、
画素シェーダによって、前記キャッシュに書き込まれた前記圧縮された頂点パラメータ値にアクセスすること、及び
前記画素シェーダによって、前記圧縮された頂点パラメータ値を復元すること
を備える方法。
【請求項２】
請求項１に記載の方法であって、前記画素シェーダによって、前記復元された頂点パラメータ値を補間することを更に含む前記方法。
【請求項３】
請求項１または２に記載の方法において、前記圧縮された頂点パラメータ値にアクセスすることが、前記圧縮された頂点パラメータ値を前記キャッシュからＧＰＵのローカルメモリ部に複製すること、及び前記画素シェーダによって前記ローカルメモリ部から前記圧縮された頂点パラメータ値にアクセスすることを含む、前記方法。
【請求項４】
請求項１から３のいずれかに記載の方法において、前記圧縮された頂点パラメータ値が三角形プリミティブの全３頂点のパラメータ値を含む、前記方法。
【請求項５】
請求項１から４のいずれかに記載の方法において、前記頂点パラメータ値を圧縮することが、２つの浮動小数点数をともに、１つの値が前記２つの浮動小数点数の各々の２倍のビットを有するように記憶することを含む、前記方法。
【請求項６】
請求項５に記載の方法において、前記頂点パラメータ値を圧縮することが、２つの１６ビット浮動小数点数をともに１つの３２ビット値として記憶することを含む、前記方法。
【請求項７】
請求項２に記載の方法であって、前記補間されたパラメータ値に対して画素シェーダ演算を実行することを更に含む前記方法。
【請求項８】
請求項１から７のいずれかに記載の方法であって、前記圧縮することの前に、前記頂点シェーダによって前記パラメータ値を修正することを更に含む前記方法。
【請求項９】
グラフィック処理システムであって、
グラフィック処理装置（ＧＰＵ）、及び
キャッシュ
を備え、
前記システムが、グラフィック処理方法を実施するように構成され、前記方法が、
前記ＧＰＵによって頂点シェーダ及び画素シェーダを実装すること、
前記頂点シェーダによって頂点パラメータ値を圧縮すること、
圧縮された前記頂点パラメータ値を前記キャッシュに書き込むこと、
画素シェーダによって、前記キャッシュに書き込まれた前記圧縮された頂点パラメータ値にアクセスすること、及び
前記画素シェーダによって、前記圧縮された頂点パラメータ値を復元すること
を備える、システム。
【請求項１０】
請求項９に記載のシステムにおいて、前記ＧＰＵが複数の演算部及び複数のローカルメモリ部を備え、前記ローカルメモリ部の各々が前記演算部の各１つに対応付けられている、前記システム。
【請求項１１】
請求項１０に記載のシステムにおいて、前記圧縮された頂点パラメータ値にアクセスすることが、前記圧縮された頂点パラメータ値を前記キャッシュから前記ローカルメモリ部に複製すること、及び前記画素シェーダによって前記ローカルメモリ部から前記圧縮された頂点パラメータ値にアクセスすることを含む、前記システム。
【請求項１２】
請求項９から１１のいずれかに記載のシステムにおいて、前記キャッシュが前記ＧＰＵに集積されている、前記システム。
【請求項１３】
請求項９から１２のいずれかに記載のシステムにおいて、前記方法が、前記画素シェーダによって前記復元された頂点パラメータ値を補間することを更に含む、前記システム。
【請求項１４】
請求項９から１３のいずれかに記載のシステムにおいて、前記圧縮された頂点パラメータ値が三角形プリミティブの全３頂点のパラメータ値を含む、前記システム。
【請求項１５】
請求項９から１４のいずれかに記載のシステムにおいて、前記頂点パラメータ値を圧縮することが、２つの浮動小数点数をともに、１つの値が前記２つの浮動小数点数の各々の２倍のビットを有するように記憶することを含む、前記システム。
【請求項１６】
請求項１５に記載のシステムにおいて、前記頂点パラメータ値を圧縮することが、２つの１６ビット浮動小数点数をともに１つの３２ビット値として記憶することを含む、前記システム。
【請求項１７】
請求項１３に記載のシステムにおいて、前記方法が、前記補間されたパラメータ値に対して画素シェーダ演算を実行することを更に含む、前記システム。
【請求項１８】
請求項９から１７のいずれかに記載のシステムにおいて、前記方法が、前記圧縮することの前に、前記頂点シェーダによって前記パラメータ値を修正することを更に含む、前記システム。
【請求項１９】
請求項９から１８のいずれかに記載のシステムにおいて、当該システムは、組込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、可搬ゲーム機器、ワークステーションまたはゲームコンソールである前記システム。
【請求項２０】
コンピュータ可読命令を格納した非一時的コンピュータ可読媒体であって、前記コンピュータ可読命令が、実行される場合にグラフィック処理方法を実施するように構成されており、前記グラフィック処理方法が、
頂点シェーダによって頂点パラメータ値を圧縮すること、
圧縮された前記頂点パラメータ値をキャッシュに書き込むこと、
画素シェーダによって、前記キャッシュに書き込まれた前記圧縮された頂点パラメータ値にアクセスすること、及び
前記画素シェーダによって、前記圧縮された頂点パラメータ値を復元すること
を備える、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の態様は、コンピュータグラフィックに関する。特に、本開示は、グラフィック処理装置における頂点シェーダ及び画素シェーダの使用に関する。
【背景技術】
【０００２】
グラフィック処理は通常、中央処理装置（ＣＰＵ）及びグラフィック処理装置（ＧＰＵ）の２つのプロセッサの協働を伴う。ＧＰＵは、ディスプレイへの出力のためのフレームバッファにおける画像の作成を加速するように設計された専用電子回路である。ＧＰＵは、組込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、可搬ゲーム機器、ワークステーション及びゲームコンソールにおいて使用される。ＧＰＵは通常、コンピュータグラフィックを操作する際に効率的となるように設計される。ＧＰＵは、大きなブロックのデータの処理が並列に行われるアルゴリズムのために、ＧＰＵを汎用ＣＰＵよりも効果的なものとする高度に並列化された処理アーキテクチャを有することが多い。
【０００３】
ＣＰＵは、特定のグラフィック処理タスクを実行し、例えば、画像の直前フレームに対して変化した特定のテクスチャをレンダリングするようにコマンドをＧＰＵに送ることができる。これらの描画コマンドは、特定のアプリケーションの仮想環境の状態に対応するグラフィックレンダリングコマンドを送出するために、グラフィクス・アプリケーション・インターフェイス（ＡＰＩ）とともにＣＰＵによって調整される。
【０００４】
特定のプログラムについてテクスチャをレンダリングするために、ＧＰＵは、「グラフィックパイプライン」における一連の処理タスクを実行して、仮想環境における映像を、ディスプレイ上にレンダリングされる画像に変換する。通常のグラフィックパイプラインは、仮想空間での仮想オブジェクトに対する所定のレンダリングまたはシェーディング操作、ディスプレイへの出力に適した形式の画素データを生成する、シーンにおける仮想オブジェクトの変換及びラスター化、並びにレンダリングされた画像をディスプレイに出力する前のピクセル（またはフラグメント）に対する追加のレンダリングタスクを実行すること含む。
【０００５】
画像の仮想オブジェクトは、プリミティブとして知られる形状に関して仮想空間において記述されることが多く、これは仮想シーンにおけるオブジェクトの形状を併せて構成する。例えば、レンダリングされる３次元仮想世界におけるオブジェクトは、３次元空間におけるそれらの座標に関して規定された頂点を有する一連の個別の三角形プリミティブに縮小され、これにより、これらの多角形がオブジェクトの表面を構成する。各多角形は、所与の多角形を他の多角形から区別するように、グラフィック処理システムによって使用される対応のインデックスを有する。同様に、各頂点は、所与の頂点を他の頂点から区別するのに使用される対応のインデックスを有する。グラフィックパイプラインは、これらのプリミティブに対する所定の操作を実行して、仮想シーンに対する映像を生成し、このデータをディスプレイの画素による再生に適した２次元形式に変換する。ここで使用するグラフィックプリミティブ情報（または単に「プリミティブ情報」）という用語は、グラフィックプリミティブを表すデータのことをいうのに用いられる。そのようなデータは、以下に限定されないが、頂点情報（例えば、頂点位置または頂点インデックスを表すデータ）及び多角形情報、例えば、特定の頂点を特定の多角形に対応付ける多角形インデックス及び情報を含む。
【０００６】
ＧＰＵは、一般にシェーダとして知られるプログラムを実行することによってグラフィックパイプラインのレンダリングタスクを実行することができる。通常のグラフィックパイプラインは、頂点ごとにプリミティブの特定のプロパティを操作できる頂点シェーダ（「フラグメントシェーダ」としても知られる）、及びグラフィックパイプラインにおける頂点シェーダからのダウンストリームを操作し、画素データをディスプレイに送信する前に画素ごとに所定の値を操作することができる画素シェーダを含む。パイプラインはまた、パイプラインの種々の段階において、頂点シェーダの出力を用いて新たな組のプリミティブ（または対応するプリミティブ情報）を生成する幾何シェーダ、ＧＰＵによって実行されて他の所定の一般的演算タスクを実行する演算シェーダ（ＣＳ）などといった他のシェーダを含むことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
パイプラインにおいてグラフィックを処理することに関する１つの課題は、データがパイプラインにおける種々のシェーダに対して入出力されるにつれて特定のボトルネックが発生して性能を低下させることである。さらに、映像を実行する特定のアプリケーションの開発者がレンダリング処理を最適化できるようにするために、シェーダが種々の視覚パラメータ及び内在データを利用する態様に関して、より多い制御方法を開発者に与えることが望ましい。
【０００８】
この状況の中で、本開示の態様が生じている。
【課題を解決するための手段】
【０００９】
本開示の態様によると、コンピュータグラフィック処理方法は、頂点パラメータ値を頂点シェーダによって圧縮すること、圧縮された頂点パラメータ値をキャッシュに書き込むこと、キャッシュに書き込まれた圧縮された頂点パラメータ値に画素シェーダによってアクセスすること、及び圧縮された頂点パラメータ値を画素シェーダによって復元することを含む。
【００１０】
ある実施例では、方法は、復元された頂点パラメータ値を画素シェーダによって補間することを含む。
【００１１】
ある実施例では、圧縮された頂点パラメータ値にアクセスすることは、圧縮された頂点パラメータ値をキャッシュからＧＰＵのローカルメモリ部に複製すること、及び画素シェーダによってローカルメモリ部から圧縮された頂点パラメータ値にアクセスすることを含む。
【００１２】
ある実施例では、圧縮された頂点パラメータ値は三角形プリミティブの全３頂点のパラメータ値を含む。
【００１３】
ある実施例では、頂点パラメータ値を圧縮することは、２つの浮動小数点数をともに、１つの値が２つの浮動小数点数の各々の２倍のビットを有するように記憶することを含む。
【００１４】
ある実施例では、頂点パラメータ値を圧縮することは、２つの１６ビット浮動小数点数をともに１つの３２ビット値として記憶することを含む。
【００１５】
ある実施例では、方法は、補間されたパラメータ値に対して画素シェーダ演算を実行することを更に含む。
【００１６】
ある実施例では、方法は、圧縮することの前に、頂点シェーダによってパラメータ値を修正することを含む。
【００１７】
本開示の態様によると、グラフィック処理システムは、グラフィック処理装置（ＧＰＵ）及びキャッシュを含み、システムは、グラフィック処理方法を実施するように構成され、その方法は、ＧＰＵによって頂点シェーダ及び画素シェーダを実装すること、頂点パラメータ値を頂点シェーダによって圧縮すること、圧縮された頂点パラメータ値をキャッシュに書き込むこと、キャッシュに書き込まれた圧縮された頂点パラメータ値に画素シェーダによってアクセスすること、及び圧縮された頂点パラメータ値を画素シェーダによって復元することを含む。
【００１８】
ある実施例では、ＧＰＵは複数の演算部及び複数のローカルメモリ部を含み、ローカルメモリ部の各々は演算部の各１つに対応付けられている。
【００１９】
ある実施例では、キャッシュはＧＰＵに集積される。
【００２０】
本開示の態様によると、非一時的コンピュータ可読媒体は、そこに具現されるコンピュータ可読命令を有し、コンピュータ可読命令は、実行される場合にグラフィック処理方法を実施するように構成され、グラフィック処理方法は、頂点パラメータ値を頂点シェーダによって圧縮すること、圧縮された頂点パラメータ値をキャッシュに書き込むこと、キャッシュに書き込まれた圧縮された頂点パラメータ値に画素シェーダによってアクセスすること、及び圧縮された頂点パラメータ値を画素シェーダによって復元することを含む。
【００２１】
本開示の教示は、添付図面との関係において以下の詳細な説明を検討することによって直ちに理解できる。
【図面の簡単な説明】
【００２２】
【図１Ａ−１Ｃ】図１Ａ−１Ｃは、種々のグラフィック処理手法を説明する三角形プリミティブの模式図である。
【図１Ｄ−１Ｅ】図１Ｄ−１Ｅは、従来的なグラフィック処理手法のフロー図である。
【図２Ａ】図２Ａは、図１Ｅの実施例との類似性を有する従来的なグラフィック処理手法の説明図である。
【図２Ｂ】図２Ｂは、本開示の態様によるグラフィック処理手法の説明図である。
【図３】図３は、本開示の態様によるグラフィック処理手法のフロー図である。
【図４】図４は、本開示の態様によるグラフィック処理手法を実施するためのシステムの説明図である。
【発明を実施するための形態】
【００２３】
以降の詳細な説明は、説明の目的で多数の具体的詳細を含むが、当業者であれば、以降の詳細に対する多数の変形例及び変更例が発明の範囲内にあることを理解するはずである。したがって、以下に記載される発明の例示的実施形態は、特許請求の範囲に記載される発明に対して、いかなる一般性の喪失もなく、限定を加えることもなく詳述される。
【００２４】
序論
本開示の態様によると、頂点パラメータ値が、パラメータの内在絶対値がグラフィックパイプラインにおける後の段階において回復されることを可能とするような態様で圧縮される。これらのパラメータ値を圧縮することによって、パラメータキャッシュにおけるボトルネックが減少し、オブジェクトの加速化レンダリングを提供することで性能が向上する。さらに、パラメータ値が復元されて元の頂点パラメータ値を回復できるようにすることによって、画素シェーダがそれらに直接アクセスすることが可能となり、それにより、オブジェクトのレンダリングのためにシェーダが内在データにアクセスする態様に関して、より多くの制御方法を開発者に与えることができる。
【００２５】
背景
図１Ａ−１Ｃは、グラフィック処理手法の種々の態様、及びどのように頂点パラメータの補間が使用されてグラフィックを処理し、画像における仮想オブジェクトをレンダリングするかを示す。表示される仮想オブジェクトの種々の位置におけるパラメータ値を規定するために、グラフィック処理手法は重心補間処理を利用する。例として、そして限定ではなく、パラメータ値は、仮想空間に位置するプリミティブの各頂点における位置、色、テクスチャ座標、発光などであり、これらの頂点パラメータの重心補間はプリミティブ内の任意の位置におけるパラメータ値を特定するのに使用される。例えば、任意数の画素が、仮想シーンをディスプレイの画素にレンダリングするのに用いられる場合にプリミティブ内に位置し、プリミティブ内の画素位置において対応のパラメータ値を特定するのに上記の頂点パラメータ値の補間が使用される。
【００２６】
重心座標系を用いる補間処理の説明に係る態様を図１Ａに示す。図１Ａに、ＧＰＵによってグラフィックを処理するためのプリミティブとして利用される多角形（例えば、三角形）１０２を示す。なお、三角形は、最小頂点数（３点）を有する２次元形状であり、各三角形が平面となることが保証されているので、グラフィック処理におけるプリミティブとして一般に使用される。レンダリングされる画像における３次元オブジェクトのような仮想オブジェクトの表面を、仮想空間において方向付けられた多数の三角形プリミティブ１０２で構成することができる。三角形１０２は、各々が所定のパラメータ値Ｐ０、Ｐ１及びＰ２をそれぞれ有する頂点１０４ａ、１０４ｂ及び１０４ｃを含む。
【００２７】
頂点パラメータ値Ｐ０、Ｐ１及びＰ２を補間することによって、三角形１０２の任意の点におけるパラメータ値Ｐｉ，ｊは、形状の角部におけるパラメータ間の線形関係を用いて規定される。座標ｉ，ｊは、仮想オブジェクトを有する画像がディスプレイ上の画面スペースにレンダリングされる場合に、画素（または画素中心）の位置に対応する。したがって、この補間処理は、プリミティブ１０２に位置する画素のいずれかについてのパラメータ値を特定するのに使用される。仮想オブジェクトの任意の三角形１０２には、三角形内に位置する任意数の画素中心があり得る。例えば、プリミティブ内に位置し得る０個、１個、１０個またはそれ以上の画素があり得る。
【００２８】
位置ｉ，ｊにおける頂点パラメータを補間するために、頂点パラメータ値の１つが他の頂点のパラメータ値から減算され、これらの減算値が、所望のパラメータ値の位置に対応する三角形１０２内の重心座標位置の各々によって乗算される。これは、以下のように数学的に表され、ここでは、頂点パラメータＰ０が他の２つの頂点パラメータＰ１及びＰ２から減算され、これらの減算値が対応の座標値ｉ，ｊによって乗算される。
Ｐｉ，ｊ＝Ｐ０＋（Ｐ１−Ｐ０）ｉ＋（Ｐ２−Ｐ０）ｊ
【００２９】
図１Ｂに、グラフィック処理アプリケーションのために仮想オブジェクトをレンダリングするのに使用される図１Ａの三角形１０２と同様の複数の三角形１０２ａ−ｄを示す。図１Ｂ及び以下の記載は、グラフィック処理手法を実施する際に頂点パラメータデータが利用及び記憶される種々の態様を説明するために簡略化された概略的な記述である。
【００３０】
三角形１０２ａ−ｄの各々は、対応するパラメータ値を各々が有する３個の頂点を有する。さらに、三角形１０２ａ−ｄは多数の共通頂点を共有し、このように、パラメータ値の多くが異なる三角形に対して共通する。パラメータ値を、それらが三角形の各々に対応付けられるように複数回記憶するのではなく、各頂点が識別インデックスに割り当てられる。簡略な例として、図１Ｂに示す頂点は、それぞれが識別インデックス０、１、３、９、１０及び４に割り当てられる。これらのインデックス及びそれらに対応したパラメータ値は、「頂点バッファ」として一般に知られるものに記憶される。さらに、三角形１０２ａ−ｄの各々は、それらの対応する頂点インデックスによって識別され、例えば、三角形１０２ａは（０，１，３）によって識別され、三角形１０２ｂは（１，３，９）によって識別され、以下同様にして、この情報が「インデックスバッファ」として一般に知られているものに記憶される。したがって、共通の頂点パラメータ値は、バッファにおいて識別されるそれぞれのインデックスによって各個別の三角形１０２ａ−ｄに対応付けられる。
【００３１】
図１Ｂはまた、プリミティブ１０２ａ−ｄ上に重ねられる一連の画素位置ａ−ｆを示す。例えば図１Ａに関して上述したようなパラメータ値の補間は、各プリミティブ内の画素位置ａ−ｆの各々におけるパラメータ値を、各プリミティブを識別する各頂点パラメータ値及びインデックスに基づいて特定するのに使用される。例として、そして限定ではなく、三角形１０２ａ−ｄは３次元仮想環境において方向付けられ、画素位置ａ−ｆは、レンダリングされる仮想環境の画像を表示するのに使用される２次元画面の画素に対応する。
【００３２】
パラメータ値が三角形内に位置する画素ａ、ｂ及びｃに割り当てられる種々の態様を説明するために、図１Ｃに、図１Ｂの三角形１０２ａ及び１０２ｂを示す。図１Ｃに示すように、頂点パラメータ値Ｐ０、Ｐ１及びＰ２は、各個別の三角形１０２ａ及び１０２ｂに固有に割り当てられ、インデックスバッファに記憶されたインデックス０、１、３及び９に基づいて識別される。補間は、図１Ａに関して上述したように、対応するパラメータ値を頂点バッファでアクセスし、パラメータ値Ｐ０を残余の頂点パラメータＰ１及びＰ２から減算することによって実行される。
【００３３】
各プリミティブのパラメータ値を補間することの代替として、「フラットシェーディング」として知られる手法が用いられてもよい。フラットシェーディングを用いると、「起点となる頂点」、例えばＰ０が各三角形について規定され、残余の頂点との差、例えばＰ１−Ｐ０及びＰ２−Ｐ０が単にゼロ設定される。三角形内に位置する任意の画素が、起点となる頂点のパラメータ値とともに頂点シェーダから出力される。これにより、補間演算に関連する多量のオーバーヘッドを節約することができるが、仮想オブジェクトが相状に見えてしまい、これは多くのアプリケーションにおいて望ましくない。
【００３４】
図１Ｄに、従来的な一方法１００ａによる頂点パラメータの補間を実行する説明に係る種々の態様のフロー図を示し、この方法によると画素シェーダによって受信される前に補間全体が実行される。画素ａ−ｆについてのパラメータ値を特定するために頂点パラメータが頂点シェーダ１１０及び画素シェーダ１１２との協働においてどのように補間されるのかを示すために、図１Ｄの方法１００ａは、図１Ｂ及び１Ｃに示すような三角形１０２ａ−ｄを利用する（なお、ａ−ｆをフレームバッファに出力する前に更なる修正が画素シェーダによって実行されるので、ａ−ｆは、より正確にはフラグメントまたはプレ画素を意味するが、ここでは説明の便宜上、単に画素というものとする）。
【００３５】
方法１００ａは、頂点シェーダ１１０によって所定の頂点シェーダ演算１１４を実行することを含み、これは、レンダリングされるグラフィックをアプリケーションの仮想環境で調整するグラフィックＡＰＩから受信された描画コマンドによる、仮想オブジェクトの頂点パラメータの頂点ごとの所定操作を含む。頂点シェーダ１１０は、図１Ｄに示す三角形１０２ａ−ｄの各々についての対応する頂点パラメータ値Ｐ０、Ｐ１及びＰ２を出力する。
【００３６】
これらの頂点パラメータ値Ｐ０、Ｐ１及びＰ２は、対応する三角形１０２ａ−ｄ内に位置する画素位置ａ−ｆにおけるパラメータ値Ｐａ−Ｐｆを特定するために、各三角形について１１６において補間される。１１６における補間は、例えば図１Ａに関して説明したように、頂点パラメータ値Ｐ０を他の２つの頂点パラメータ値Ｐ１及びＰ２から減算し、これらの減算値をそれらの対応する重心座標で乗算し、座標で規定される画素位置におけるパラメータを補間するように乗算値を加算することを含む。図１Ｄに示す手法では、補間１１６は、全体として、ＧＰＵに対応付けられたパラメータ補間ハードウェア構成要素によって、画素シェーダプログラム１１２がパラメータ値を入力として受信する前に実行される。画素シェーダ１１２は、１１８において所定の画素シェーダ演算を画素ａ−ｆの各々について、すなわち画素ごとに実行することによって各画素ａ−ｆを更に操作し、出力画素１２０が得られる。出力画素１２０はフレームバッファに記憶され、ディスプレイ上にレンダリングされる画像として出力される。
【００３７】
図１Ｅに、他の従来的な方法１００ｂによって頂点パラメータの補間を実行する説明に係る種々の態様のフロー図を示す。図１Ｅに示す従来的な方法１００ｂは、図１Ｄに示す従来的な方法１００ａとは、パラメータが画素シェーダ１１２に到達する前に補間１１６の減算部１２２のみが実行される点を除いて同様である。この手法１００ｂでは、補間１１６の減算部１２２は、画素シェーダプログラム１１２が減算済みパラメータ値を入力として受信して補間１１６の残りを実行する前に、ＧＰＵに対応付けられたパラメータ補間ハードウェア構成要素によって実行される。したがって、頂点パラメータの補間１１６の残りは、絶対頂点パラメータＰ０、パラメータＰ０に対して減算された減算パラメータ値Ｐ１０及びＰ２０並びに絶対頂点パラメータ値Ｐ０に対する所望のパラメータＰの座標の、１２４における単純な乗算及び加算演算に軽減されることになる。対応する三角形１０２ａ−ｄの各々について、Ｐ１０＝Ｐ１−Ｐ０であり、Ｐ２０＝Ｐ１−Ｐ０である。これにより、前述した所望のパラメータ値Ｐａ−Ｐｆが得られ、これが、出力画素１２０を生成するように１１８において画素シェーダによって更に操作される。
【００３８】
図２Ａは、従来的な方法によってグラフィックを処理するように構成された種々のハードウェア及びソフトウェア構成要素で実行される方法２００ａの説明図を示す。図２Ａに示す方法２００ａは、図１Ｅに示す方法１００ｂと類似する。
【００３９】
頂点シェーダ２１０は、画面スペースにおけるプリミティブの頂点の位置２３０、及び頂点の発光、影、色などの操作といったような、各プリミティブの頂点に対する他の種々のレンダリング効果２３４を特定することを含む、種々の頂点シェーダ演算２１４を実行する。頂点シェーダ演算２１４から得られる種々のパラメータＰ０、Ｐ１及びＰ２は一時的な記憶のためにパラメータキャッシュ２３６に書き込まれ、システムのパラメータ補間ハードウェア構成要素２２２は、パラメータキャッシュ２３６からのそれぞれの組のパラメータをＧＰＵの各演算部の各小容量ローカルメモリ部２３７に書き込む前にパラメータ値を減算することによって、補間の一部を実行する。各ローカルメモリ部２３７は、ＧＰＵの各演算部に対応付けられたローカルデータシェア（ＬＤＳ）としても知られる小容量であるが高速なローカルメモリ部であり、シェーダプログラムを並列に稼働させる複数の上記メモリ部及び演算部がある。
【００４０】
頂点シェーダ出力位置２３０は、例えばここに記載するように、それらがパラメータ値を補間するのに使用されるように各プリミティブに対する画素の重心座標ｉ，ｊを生成するハードウェア構成要素２３８によって使用される。画素シェーダ２１２は、各所望のパラメータｉ，ｊの座標を用いて乗算及び加算演算２２４を実行することによって補間を完了するために、ローカルデータシェア２３７で絶対パラメータ値Ｐ０並びに相対パラメータ値Ｐ１０及びＰ２０にアクセスする。そして、画素シェーダ２１２は、所定の更なる画素シェーダ演算２１８を実行して、例えばフレームバッファに出力する前に画素を更に操作する。
【００４１】
上述した手法２００ａの１つの欠点は、画素シェーダに対するパラメータのスループットに関連する特定のボトルネックが起こることであり、これは仮想オブジェクトのレンダリングの速度を低下させ得る。１つに、パラメータキャッシュへのパラメータ書込みスループットがボトルネックとなることが認識されてきた。例えば、各パラメータは、例えば３２ビットの浮動小数点数のような大きな属性変数となり、頂点シェーダはこれらの属性変数を一連の、例えば一時に４個のウェーブフロントとしてパラメータキャッシュ２３６に書き込む。さらに、パラメータキャッシュの使用によって、記憶される頂点シェーダのウェーブフロント数が更に制限され、更なるボトルネックが生ずる。そして、パラメータはローカルデータシェア２３７に複製され、画素シェーダによってアクセスされる前に一時的に記憶され、画素シェーダのウェーブフロント数を制限することによって、制限されたスループット及び合計ローカルデータシェアの使用によって再度ボトルネックが生ずる。
【００４２】
上述した手法２００ａの他の欠点は、減算されたパラメータ値Ｐ１０及びＰ２０が画素シェーダ２１２に到達する前に計算されるため、画素シェーダは素のパラメータ値Ｐ１及びＰ２に直接アクセスできないことであり、これにより、画素シェーダによって実行されるレンダリング効果の種類が制限される。
【００４３】
実施例
本開示の種々の対応によるグラフィック処理手法２００ｂを図２Ｂに示す。図示する手法２００ｂでは、頂点シェーダから出力されるパラメータ値のスループットに関連するボトルネックを最小化するために圧縮スキームが利用される。なお、本実施例を三角形の形態のプリミティブに関して説明するが、そのコンセプトは他の種類の多角形に基づくプリミティブに直ちに拡張できる。
【００４４】
１つの課題は、従来的な方法は画素シェーダに到達する前に補間の一部または全部を実行するように構成されるために頂点パラメータ値を単純には圧縮できないことである。結果として、減算によって、元の圧縮値が画素シェーダでの使用のために復元されることが阻害されてしまう。
【００４５】
例として、そして限定ではなく、パラメータ値が３２ビット浮動小数点の属性変数として記憶される場合、パラメータを、３２ビット減算の結果として元のデータを喪失することなく、１つの３２ビット値への記憶のために１６ビット数に圧縮することはできない。以降の実施例は、問題を概念化するのに通常の数を用いて問題を示す。
第１の三角形：{Ｐ０、Ｐ１、Ｐ２｝＝｛８、５、６｝
第２の三角形：{Ｐ０、Ｐ１、Ｐ２｝＝｛１、４、７｝
【００４６】
例えば図２Ａに関して上述した個別のエンジンによって実行されるような補間のためのパラメータ値の減算は、
第１の三角形：{Ｐ０、Ｐ１０、Ｐ２０｝＝｛８、（５−８）、（６−８）｝＝｛８、−３、−２｝
第２の三角形：{Ｐ０、Ｐ１０、Ｐ２０｝＝｛１、（４−１）、（７−１）｝＝｛１、３、６｝
となる。
【００４７】
第１の組のパラメータを第２の組のパラメータで圧縮することは、それらを以下のように合成することと同じとなる。
圧縮パラメータ：｛１８、４５、７６｝
【００４８】
そして、圧縮パラメータの減算は、
減算：｛１８、（４５−１８）、（７６−１８）｝＝｛１８、２７、５８｝
と同じとなる。
【００４９】
減算結果２７及び５８は真のパラメータ値に関して本質的には無意味であるため、圧縮されるにつれて、減算は元のデータを破壊することになる。このように、値を復元することはできず、元のＰ１０及びＰ２０またはＰ１及びＰ２を減算結果から回復することはできない。
【００５０】
図２Ｂに再度戻ると、手法２００ｂは、画素シェーダによってアクセス可能なように元のパラメータ値が保存及び復元されることを可能とする本開示の種々の態様による圧縮スキームを含む。説明に係る実施例では、減算または全体的な補間を従来的に実行するパラメータ補間ハードウェアは、元のパラメータ値を失うことなくパラメータ値が圧縮及び復元されるように省略、無効化またはバイパスされる。
【００５１】
図２Ｂに示す手法２００ｂでは、頂点シェーダ２１０は頂点シェーダ演算２１４を実行し、これは画像における各頂点の種々のパラメータを操作することを含む。得られるパラメータは、大量の記憶及びスループットに関連するボトルネックが最小化されるように、２４０において、より小さいデータフォーマットに圧縮される。圧縮されたパラメータＰ０’、Ｐ１’及びＰ２’は、一時的な記憶のためにパラメータキャッシュ２３６に書き込まれ、圧縮されないパラメータよりも少量の合計キャッシュを占有し、これによりキャッシュハードウェアにおける潜在的なボトルネックを最小化する。圧縮パラメータＰ０’、Ｐ１’及びＰ２’は、「ローカルデータシェア」（ＬＤＳ）として知られるメモリ部である、ＧＰＵのローカルメモリ部２３７に複製される。圧縮パラメータ値は、ＧＰＵによって実装される画素シェーダ２１２によってローカルデータシェアでアクセスされる。
【００５２】
圧縮パラメータＰ０’、Ｐ１’及びＰ２’は、２４２において、画素シェーダ２１２によって復元され、これにより、画素シェーダによって素のパラメータ値Ｐ０、Ｐ１及びＰ２へのアクセスを与える。そして、画素シェーダ２１２は、各プリミティブ内の画素位置において対応するパラメータ値を特定するために、重心座標生成器２３８から得られた座標ｉ，ｊを用いて、２１６においてパラメータ値を補間する。画素シェーダ２１２は各三角形の各頂点についての素のパラメータ値にアクセスできるので、画素シェーダ２１６は、補間２１６の前に頂点パラメータ（不図示）及び仮想空間における頂点の映像についての他の所定の操作を画素ごとに実行して値を画面スペースに変換する。そして、画素シェーダは、例えばフレームバッファへの最終的な画素データを出力する前に画素データ及び画素の映像についての更なる操作のために画素シェーダ演算２１８を実行する。
【００５３】
したがって、説明に係る実施例２００ｂでは、大量のパラメータ値データに関連するボトルネックは、キャッシュ２３６及びローカルメモリ２３７の合計使用量を低減する圧縮スキームによって最小化または回避される。さらに、画素シェーダプログラムを作成するプログラマは、相対または補間値だけではなく素の頂点パラメータデータを利用できるので、より多くの制御方法を有することになる。
【００５４】
図３に示すフロー図は、本開示の種々の態様による、頂点シェーダ及び画素シェーダによってグラフィックを処理するための方法３００を示す。方法３００は、図２Ｂに示すグラフィック処理手法２００ｂと類似性を有する。
【００５５】
説明に係る方法３００は、頂点シェーダ３１０によって頂点シェーダ演算３１４を実行することを含む。頂点シェーダ演算は、プリミティブ３０２ａ−ｄの種々の頂点パラメータを操作して仮想空間における頂点に種々の視覚効果を生成することを含む。プリミティブ３０２ａ−ｄは図１Ｂにおける１０２ａ−ｄと類似し、各三角形は各頂点について対応するパラメータ値Ｐ０、Ｐ１及びＰ２を有する。
【００５６】
そして、頂点シェーダ３１０はパラメータ値を圧縮し、圧縮された頂点パラメータ値Ｐ０’、Ｐ１’及びＰ２’を画素シェーダ３１２に送る。そして、画素シェーダは、３４２において、パラメータ値を復元して元の素のパラメータ値を取得し、画素シェーダ３１２はパラメータ値Ｐ０、Ｐ１及びＰ２の補間３１６全体を実行して各画素の対応のパラメータＰａ−Ｐｆを特定する。そして、画素シェーダ３１２は、補間パラメータ値を用いて画素に対して画素シェーダ演算３１８を実行することによって画素に対する追加の視覚効果を生成し、レンダリングされた画素３２０を、例えばシステムメモリのフレームバッファに出力する。
【００５７】
本開示の態様は、上述した構成を実現するように構成されたグラフィック処理システムを含む。例として、そして限定ではなく、図４に、本開示の態様によるグラフィック処理を実施するのに使用されるコンピュータシステム４００のブロック図を示す。本開示の態様によると、システム４００は、組込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、可搬ゲーム機器、ワークステーション、ゲームコンソールなどである。
【００５８】
システム４００は、概略として、中央処理装置（ＣＰＵ）４７０、グラフィック処理装置（ＧＰＵ）４７１、並びにＣＰＵ及びＧＰＵの双方にアクセス可能な主メモリ４７２を含む。ＣＰＵ４７０及びＧＰＵ４７１の各々は、１以上のプロセッサコア、例えば、単一のコア、２個のコア、４個のコア、８個のコアまたはそれ以上を含む。主メモリ４７２は、アドレス指定可能なメモリ、例えばＲＡＭ、ＤＲＡＭなどを与える集積回路の形態となり得る。
【００５９】
例として、そして限定ではなく、ＣＰＵ４７０及びＧＰＵ４７１は、データバス４７６を用いて主メモリ４７２にアクセスする。場合によっては、システム４００が２以上の異なるバスを含むことが有用である。主メモリ４７２は、ＣＰＵ４７０及びＧＰＵ４７２によってアクセス可能なデータを含む。主メモリはデータをバッファに一時的に記憶し、バッファは頂点バッファ４６３、インデックスバッファ４６６及びフレームバッファ４６４を含む。
【００６０】
ＣＰＵは、ＣＰＵコードを実行するように構成され、これは、レンダリングされたグラフィックを利用するアプリケーション４６０と、ＧＰＵによって実行されるプログラムに描画コマンドを送出するためのドライバ／コンパイラ４６１及びグラフィックＡＰＩ４６２とを含む。ＣＰＵコードはまた、物理シミュレーション及び他の機能を実現する。ＧＰＵは、本開示の説明に係る実施例に関して上述したように動作するように構成される。特に、ＧＰＵはＧＰＵコードを実行し、これは、上述したように、頂点シェーダ４１０及び画素シェーダ４１２を実現する。これらのシェーダは、主メモリ４７２のデータとのインターフェイスとなり、画素シェーダは、レンダリングされる画素を、ディスプレイへの出力前の一時的な記憶のためにフレームバッファ４６４に出力する。ＧＰＵは、グラフィック処理タスクを並列に実行するように構成された複数の演算部（ＣＵ）４６５を含む。各演算部は、上述したローカルデータシェア（ＬＤＳ）４３７のような、それ自身の専用ローカルメモリストアを含む。システム４００はまた、圧縮頂点パラメータデータ４６８を一時的に記憶するためのキャッシュ４３６を含み、データはキャッシュ４３６から各ＬＤＳ４３７に複製され、それはデータを並列に利用するシェーダプログラムを実現する。パラメータキャッシュ４３６は、ＧＰＵに集積されていてもよいし、ＧＰＵとは別体であって、例えばバス４７６を介してＧＰＵにアクセス可能であってもよい。ＧＰＵは、例えば、幾何シェーダ及び演算シェーダのような他のプログラムを実行することもできる。
【００６１】
システム４００は公知のサポート機能４７７を含んでいてもよく、これは、例えばバス４７６を介してシステムの他の構成要素と通信することができる。そのようなサポート機能は、限定するわけではないが、入力／出力（Ｉ／Ｏ）要素４７９、電源（Ｐ／Ｓ）４８０及びクロック（ＣＬＫ）４８１を含む。
【００６２】
装置４００は、プログラム及び／またはデータを記憶するディスクドライブ、ＣＤ−ＲＯＭドライブ、フラッシュメモリ、テープドライブなどといった大容量記憶装置４８４を選択的に含む。装置４００はまた、装置４００とユーザとの間の相互作用を促進する表示部４８６及びユーザインターフェイス部４８８を含む。表示部４８６は、フラットパネルディスプレイ、冷陰極管（ＣＲＴ）画面、タッチスクリーン、またはテキスト、数字、グラフィカルな記号若しくは画像を表示できる他の装置である。ディスプレイ４８６は、ここに記載される種々の手法によって処理されたレンダリングされた画像４８７を表示する。ユーザインターフェイス４８８は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、またはグラフィカルユーザインターフェイス（ＧＵＩ）との関係で使用される他の装置を含む。システム４００はまた、装置がネットワークを介して他の装置と通信することを可能とするネットワークインターフェイス４９０を含む。ネットワークは、例えば、ローカルエリアネットワーク（ＬＡＮ）、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）ネットワークなどのパーソナルエリアネットワーク、または他のタイプのネットワークである。これらの構成要素は、ハードウェア、ソフトウェア若しくはファームウェアまたはこれらの２以上の組合せにおいて実現される。
【００６３】
上記は本発明の好適な実施形態の完全な説明であるが、種々の変更、変形及び等化を用いることが可能である。したがって、本発明の範囲は、上記の説明を参照して特定されるべきではなく、付随する特許請求の範囲及びそれらの均等の全範囲を参照して特定されるべきである。好適か否かにかかわらずここに記載されるいずれの構成も、好適か否かにかかわらずここに記載される他の構成と組み合わせることができる。以降の特許請求の範囲において、不定冠詞「Ａ」または「Ａｎ」は、明示的に断りがある場合を除き、冠詞に続く項目の１以上の数量を意味する。付随する特許請求の範囲は、文言「・・・のための手段」を用いる所与の請求項にそのような発明特定事項が明示的に記載されない限り、ミーンズプラスファンクションの発明特定事項を含むものとして解釈されるべきではない。
【図１Ａ】
0006591405.tif 000002
【図１Ｂ−１Ｃ】
0006591405.tif 000003
【図１Ｄ】
0006591405.tif 000004
【図１Ｅ】
0006591405.tif 000005
【図２Ａ】
0006591405.tif 000006
【図２Ｂ】
0006591405.tif 000007
【図３】
0006591405.tif 000008
【図４】
0006591405.tif 000009