首页 / 专利库 / 电脑图像 / 着色器 / 顶点着色器 / 頂点シェーダ演算を実行するフラグメントシェーダ

頂点シェーダ演算を実行するフラグメントシェーダ

阅读:1020发布:2020-07-31

专利汇可以提供頂点シェーダ演算を実行するフラグメントシェーダ专利检索,专利查询,专利分析的服务。并且【解決手段】グラフィック処理は、GPUによって頂点シェーダ及び画素シェーダを実行することを含む。頂点シェーダからの頂点インデックス出 力 がキャッシュに書き込まれる。キャッシュに書き込まれた頂点インデックスが画素シェーダによってアクセスされ、頂点インデックスに対応付けられた頂点パラメータ値が画素シェーダによってメモリ部でアクセスされる。この要約書は、研究者または他の読者が技術的開示の主題を直ちに確知することを可能とする要約を要件とする規則に準拠するための提供されることが強調される。これは特許請求の範囲または意味を解釈または限定するのに使用されないとの理解のもとに提出される。【選択図】図2B,下面是頂点シェーダ演算を実行するフラグメントシェーダ专利的具体信息内容。

コンピュータグラフィック処理方法であって、 頂点シェーダから出された頂点インデックスをキャッシュに書き込むこと、 画素シェーダによって、前記キャッシュに書き込まれた前記頂点インデックスにアクセスすること、及び 前記画素シェーダによって、前記頂点インデックスに対応付けられた頂点パラメータ値にメモリ部でアクセスすること を備える方法。請求項1に記載の方法であって、前記画素シェーダによって、前記頂点パラメータ値に対して頂点シェーダ演算を実行することを更に含む前記方法。請求項2に記載の方法において、前記頂点シェーダ演算が、3次元仮想空間におけるプリミティブの頂点の視覚効果を操作することを含む、前記方法。請求項1に記載の方法であって、前記画素シェーダによって前記頂点パラメータ値を補間することを更に含む前記方法。請求項1に記載の方法において、前記頂点インデックスにアクセスすることが、前記頂点インデックスを前記キャッシュからGPUのローカルメモリ部に複製すること、及び前記画素シェーダによって前記ローカルメモリ部で前記インデックスにアクセスすることを含む、前記方法。請求項1に記載の方法において、前記頂点パラメータ値にアクセスすることが、三形プリミティブの全3頂点のパラメータ値にアクセスすることを含む、前記方法。請求項1に記載の方法であって、前記頂点パラメータ値にアクセスすることの後に、 前記画素シェーダによって、前記頂点パラメータ値に対して頂点シェーダ演算を実行すること、 前記画素シェーダによって、前記パラメータ値を補間すること、及び 前記画素シェーダによって、補間された前記パラメータ値に対して画素シェーダ演算を実行すること を更に含む前記方法。請求項1に記載の方法において、頂点シェーダ出力は頂点位置及び前記頂点インデックスに制限され、前記画素シェーダが、前記頂点インデックスにアクセスすることの後に、残余の頂点シェーダ演算を実行する、前記方法。請求項1に記載の方法において、前記メモリ部がシステムの主メモリである、前記方法。請求項9に記載の方法において、前記パラメータ値が前記主メモリにおける頂点バッファに記憶される、前記方法。グラフィック処理システムであって、 グラフィック処理装置(GPU)、 メモリ部、及び キャッシュ を備え、 前記システムが、グラフィック処理方法を実施するように構成され、前記方法が、 前記GPUによって頂点シェーダ及び画素シェーダを実装すること、 頂点シェーダから出力された頂点インデックスを前記キャッシュに書き込むこと、 前記画素シェーダによって、前記キャッシュに書き込まれた前記頂点インデックスにアクセスすること、及び 前記画素シェーダによって、前記頂点インデックスに対応付けられた頂点パラメータ値に前記メモリ部でアクセスすること を備える、システム。請求項11に記載のシステムにおいて、前記メモリ部が前記システムの主メモリ部である、前記システム。請求項11に記載のシステムにおいて、前記GPUが複数の演算部及び複数のローカルメモリ部を備え、前記ローカルメモリ部の各々が前記演算部の各1つに対応付けられている、前記システム。請求項13に記載のシステムにおいて、前記頂点インデックスにアクセスすることが、前記頂点インデックスを前記キャッシュから前記ローカルメモリ部に複製すること、及び前記画素シェーダによって前記ローカルメモリ部から前記頂点インデックスにアクセスすることを含む、前記システム。請求項11に記載のシステムにおいて、前記キャッシュが前記GPUに集積されている、前記システム。請求項11に記載のシステムにおいて、前記方法が、前記画素シェーダによって前記頂点パラメータ値に対して頂点シェーダ演算を実行することを更に含む、前記システム。請求項11に記載のシステムにおいて、前記方法が、前記画素シェーダによって前記パラメータ値を補間することを更に含む、前記システム。請求項11に記載のシステムにおいて、組込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、可搬ゲーム機器、ワークステーションまたはゲームコンソールである前記システム。具現されるコンピュータ可読命令を有する非一時的コンピュータ可読媒体であって、前記コンピュータ可読命令が、実行される場合にグラフィック処理方法を実施するように構成されており、前記グラフィック処理方法が、 頂点シェーダから出力された頂点インデックスをキャッシュに書き込むこと、 画素シェーダによって、前記キャッシュに書き込まれた前記頂点インデックスにアクセスすること、及び 前記画素シェーダによって、メモリ部から前記頂点インデックスに対応付けられた頂点パラメータ値にアクセスすること を備える、非一時的コンピュータ可読媒体。

说明书全文

本開示の態様は、コンピュータグラフィックに関する。特に、本開示は、グラフィック処理装置における頂点シェーダ及び画素シェーダの使用に関する。

グラフィック処理は通常、中央処理装置(CPU)及びグラフィック処理装置(GPU)の2つのプロセッサの協働を伴う。GPUは、ディスプレイへの出のためのフレームバッファにおける画像の作成を加速するように設計された専用電子回路である。GPUは、組込みシステム、タブレットコンピュータ、可搬ゲーム機器、携帯電話、パーソナルコンピュータ、ワークステーション及びゲームコンソールにおいて使用される。GPUは通常、コンピュータグラフィックを操作する際に効率的となるように設計される。GPUは、大きなブロックのデータの処理が並列に行われるアルゴリズムのために、GPUを汎用CPUよりも効果的なものとする高度に並列化された処理アーキテクチャを有することが多い。

CPUは、特定のグラフィック処理タスクを実行し、例えば、画像の直前フレームに対して変化した特定のテクスチャをレンダリングするようにコマンドをGPUに送ることができる。これらの描画コマンドは、特定のアプリケーションの仮想環境の状態に対応するグラフィックレンダリングコマンドを送出するために、グラフィクス・アプリケーション・インターフェイス(API)とともにCPUによって調整される。

特定のプログラムについてテクスチャをレンダリングするために、GPUは、「グラフィックパイプライン」における一連の処理タスクを実行して、仮想環境における映像を、ディスプレイ上にレンダリングされる画像に変換する。通常のグラフィックパイプラインは、仮想空間での仮想オブジェクトに対する所定のレンダリングまたはシェーディング操作、ディスプレイへの出力に適した形式の画素データを生成する、シーンにおける仮想オブジェクトの変換及びラスター化、並びにレンダリングされた画像をディスプレイに出力する前のピクセル(またはフラグメント)に対する追加のレンダリングタスクを実行すること含む。

画像の仮想オブジェクトは、プリミティブとして知られる形状に関して仮想空間において記述されることが多く、これは仮想シーンにおけるオブジェクトの形状を併せて構成する。例えば、レンダリングされる3次元仮想世界におけるオブジェクトは、3次元空間におけるそれらの座標に関して規定された頂点を有する一連の個別の三形プリミティブに縮小され、これにより、これらの多角形がオブジェクトの表面を構成する。各多角形は、所与の多角形を他の多角形から区別するように、グラフィック処理システムによって使用される対応のインデックスを有する。同様に、各頂点は、所与の頂点を他の頂点から区別するのに使用される対応のインデックスを有する。グラフィックパイプラインは、これらのプリミティブに対する所定の操作を実行して、仮想シーンに対する映像を生成し、このデータをディスプレイの画素による再生に適した2次元形式に変換する。ここで使用するグラフィックプリミティブ情報(または単に「プリミティブ情報」)という用語は、グラフィックプリミティブを表すデータのことをいうのに用いられる。そのようなデータは、以下に限定されないが、頂点情報(例えば、頂点位置または頂点インデックスを表すデータ)及び多角形情報、例えば、特定の頂点を特定の多角形に対応付ける多角形インデックス及び情報を含む。

GPUは、一般にシェーダとして知られるプログラムを実行することによってグラフィックパイプラインのレンダリングタスクを実行することができる。通常のグラフィックパイプラインは、頂点ごとにプリミティブの特定のプロパティを操作できる頂点シェーダ(「フラグメントシェーダ」としても知られる)、及びグラフィックパイプラインにおける頂点シェーダからのダウンストリームを操作し、画素データをディスプレイに送信する前に画素ごとに所定の値を操作することができる画素シェーダを含む。パイプラインはまた、パイプラインの種々の段階において、頂点シェーダの出力を用いて新たな組のプリミティブ(または対応するプリミティブ情報)を生成する幾何シェーダ、GPUによって実行されて他の所定の一般的演算タスクを実行する演算シェーダ(CS)などといった他のシェーダを含むことができる。

パイプラインにおいてグラフィックを処理することに関する1つの課題は、データがパイプラインにおける種々のシェーダに対して入出力されるにつれて特定のボトルネックが発生して性能を低下させることである。さらに、映像を実行する特定のアプリケーションの開発者がレンダリング処理を最適化できるようにするために、シェーダが種々の視覚パラメータ及び内在データを利用する態様に関して、より多い制御方法を開発者に与えることが望ましい。

この状況の中で、本開示の態様が生じている。

本開示の態様によると、コンピュータグラフィック処理方法は、頂点インデックス出力を頂点シェーダからキャッシュに書き込むこと、画素シェーダによって、キャッシュに書き込まれた頂点インデックスにアクセスすること、及び画素シェーダによって、頂点インデックスに対応付けられた頂点パラメータ値にメモリ部でアクセスすることを含む。

本開示のある実施例では、コンピュータグラフィック処理方法は、画素シェーダによって頂点パラメータ値に対して頂点シェーダ演算を実行することを更に含む。

ある実施例では、コンピュータグラフィック処理方法は、画素シェーダによって頂点パラメータ値を補間することを更に含む。

ある実施例では、頂点インデックスにアクセスすることは、頂点インデックスをキャッシュからGPUのローカルメモリ部に複製すること、及び画素シェーダによってローカルメモリ部でインデックスにアクセスすることを含む。

ある実施例では、頂点シェーダ演算は、3次元仮想空間におけるプリミティブの頂点の視覚効果を操作することを含む。

ある実施例では、頂点パラメータ値にアクセスすることは、三角形プリミティブの全3頂点のパラメータ値にアクセスすることを含む。

ある実施例では、方法は、頂点パラメータ値にアクセスすることの後に、画素シェーダによって頂点パラメータ値に対して頂点シェーダ演算を実行すること、画素シェーダによってパラメータ値を補間すること、及び画素シェーダによって、補間されたパラメータ値に対して画素シェーダ演算を実行することを更に含む。

ある実施例では、頂点シェーダ出力は頂点位置及び頂点インデックスに制限され、画素シェーダは、頂点インデックスにアクセスすることの後に、残余の頂点シェーダ演算を実行する。

ある実施例では、メモリ部はシステムの主メモリである。

ある実施例では、パラメータ値は主メモリにおける頂点バッファに記憶される。

本開示の態様によると、グラフィック処理システムは、グラフィック処理装置(GPU)、メモリ部及びキャッシュを含み、システムは、GPUによって頂点シェーダ及び画素シェーダを実装すること、頂点インデックス出力を頂点シェーダからキャッシュに書き込むこと、画素シェーダによって、キャッシュに書き込まれた頂点インデックスにアクセスすること、及び画素シェーダによって、頂点インデックスに対応付けられた頂点パラメータ値にメモリ部でアクセスすることを含むグラフィック処理方法を実施するように構成される。

ある実施例では、メモリ部はシステムの主メモリ部である。

ある実施例では、GPUは複数の演算部及び複数のローカルメモリ部を含み、ローカルメモリ部の各々は演算部の各1つに対応付けられている。

ある実施例では、頂点インデックスにアクセスすることは、頂点インデックスをキャッシュからローカルメモリ部に複製すること、及び画素シェーダによってローカルメモリ部から頂点インデックスにアクセスすることを含む。

ある実施例では、キャッシュはGPUに集積される。

本開示の態様によると、非一時的コンピュータ可読媒体は、そこに具現されるコンピュータ可読命令を有し、コンピュータ可読命令は、実行される場合にグラフィック処理方法を実施するように構成され、グラフィック処理方法は、頂点インデックス出力を頂点シェーダからキャッシュに書き込むこと、画素シェーダによって、キャッシュに書き込まれた頂点インデックスにアクセスすること、及び画素シェーダによって、メモリ部から頂点インデックスに対応付けられた頂点パラメータ値にアクセスすることを含む。

本開示の教示は、添付図面との関係において以下の詳細な説明を検討することによって直ちに理解できる。

図1A−1Cは、種々のグラフィック処理手法を説明する三角形プリミティブの模式図である。

図1D−1Eは、従来的なグラフィック処理手法のフロー図である。

図2Aは、図1Eの実施例との類似性を有する従来的なグラフィック処理手法の説明図である。

図2Bは、本開示の態様によるグラフィック処理手法の説明図である。

図3は、本開示の態様によるグラフィック処理手法のフロー図である。

図4は、本開示の態様によるグラフィック処理手法を実施するためのシステムの説明図である。

以降の詳細な説明は、説明の目的で多数の具体的詳細を含むが、当業者であれば、以降の詳細に対する多数の変形例及び変更例が発明の範囲内にあることを理解するはずである。したがって、以下に記載される発明の例示的実施形態は、特許請求の範囲に記載される発明に対して、いかなる一般性の喪失もなく、限定を加えることもなく詳述される。

序論 本開示の態様によると、頂点シェーダ出力は出力位置及び頂点インデックスだけに縮小され、画素シェーダは通常の画素シェーダ演算と同様に残余の頂点シェーダ演算を実行し、オブジェクトの加速されたレンダリングがもたらされる。

本開示の態様によると、頂点シェーダ演算を頂点の素のパラメータ値に対して実行するために、画素シェーダはパラメータ値にシステムメモリで直接アクセスする。そして、画素シェーダは、パラメータ値を補間し、レンダリングされた画素が画素シェーダからフレームバッファに出力される前に画素シェーダ演算を実行する。スループット及びパラメータ値の複製に関連するボトルネックは、頂点インデックス、及び頂点シェーダからの全部ではない出力パラメータを出力し、これらのインデックスを用いてメモリにおけるパラメータ値を画素シェーダで識別することによって軽減される。

図1A−1Cは、グラフィック処理手法の種々の態様、及びどのように頂点パラメータの補間が使用されてグラフィックを処理し、画像における仮想オブジェクトをレンダリングするかを示す。表示される仮想オブジェクトの種々の位置におけるパラメータ値を規定するために、グラフィック処理手法は重心補間処理を利用する。例として、そして限定ではなく、パラメータ値は、仮想空間に位置するプリミティブの各頂点における位置、色、テクスチャ座標、発光などであり、これらの頂点パラメータの重心補間はプリミティブ内の任意の位置におけるパラメータ値を特定するのに使用される。例えば、任意数の画素が、仮想シーンをディスプレイの画素にレンダリングするのに用いられる場合にプリミティブ内に位置し、プリミティブ内の画素位置において対応のパラメータ値を特定するのに上記の頂点パラメータ値の補間が使用される。

重心座標系を用いる補間処理の説明に係る態様を図1Aに示す。図1Aに、GPUによってグラフィックを処理するためのプリミティブとして利用される多角形(例えば、三角形)102を示す。なお、三角形は、最小頂点数(3点)を有する2次元形状であり、各三角形が平面となることが保証されているので、グラフィック処理におけるプリミティブとして一般に使用される。レンダリングされる画像における3次元オブジェクトのような仮想オブジェクトの表面を、仮想空間において方向付けられた多数の三角形プリミティブ102で構成することができる。三角形102は、各々が所定のパラメータ値P0、P1及びP2をそれぞれ有する頂点104a、104b及び104cを含む。

頂点パラメータ値P0、P1及びP2を補間することによって、三角形102の任意の点におけるパラメータ値Pi,jは、形状の角部におけるパラメータ間の線形関係を用いて規定される。座標i,jは、仮想オブジェクトを有する画像がディスプレイ上の画面スペースにレンダリングされる場合に、画素(または画素中心)の位置に対応する。したがって、この補間処理は、プリミティブ102に位置する画素のいずれかについてのパラメータ値を特定するのに使用される。仮想オブジェクトの任意の三角形102には、三角形内に位置する任意数の画素中心があり得る。例えば、プリミティブ内に位置し得る0個、1個、10個またはそれ以上の画素があり得る。

位置i,jにおける頂点パラメータを補間するために、頂点パラメータ値の1つが他の頂点のパラメータ値から減算され、これらの減算値が、所望のパラメータ値の位置に対応する三角形102内の重心座標位置の各々によって乗算される。これは、以下のように数学的に表され、ここでは、頂点パラメータP0が他の2つの頂点パラメータP1及びP2から減算され、これらの減算値が対応の座標値i,jによって乗算される。 Pi,j=P0+(P1−P0)i+(P2−P0)j

図1Bに、グラフィック処理アプリケーションのために仮想オブジェクトをレンダリングするのに使用される図1Aの三角形102と同様の複数の三角形102a−dを示す。図1B及び以下の記載は、グラフィック処理手法を実施する際に頂点パラメータデータが利用及び記憶される種々の態様を説明するために簡略化された概略的な記述である。

三角形102a−dの各々は、対応するパラメータ値を各々が有する3個の頂点を有する。さらに、三角形102a−dは多数の共通頂点を共有し、このように、パラメータ値の多くが異なる三角形に対して共通する。パラメータ値を、それらが三角形の各々に対応付けられるように複数回記憶するのではなく、各頂点が識別インデックスに割り当てられる。簡略な例として、図1Bに示す頂点は、それぞれが識別インデックス0、1、3、9、10及び4に割り当てられる。これらのインデックス及びそれらに対応したパラメータ値は、「頂点バッファ」として一般に知られるものに記憶される。さらに、三角形102a−dの各々は、それらの対応する頂点インデックスによって識別され、例えば、三角形102aは(0,1,3)によって識別され、三角形102bは(1,3,9)によって識別され、以下同様にして、この情報が「インデックスバッファ」として一般に知られているものに記憶される。したがって、共通の頂点パラメータ値は、バッファにおいて識別されるそれぞれのインデックスによって各個別の三角形102a−dに対応付けられる。

図1Bはまた、プリミティブ102a−d上に重ねられる一連の画素位置a−fを示す。例えば図1Aに関して上述したようなパラメータ値の補間は、各プリミティブ内の画素位置a−fの各々におけるパラメータ値を、各プリミティブを識別する各頂点パラメータ値及びインデックスに基づいて特定するのに使用される。例として、そして限定ではなく、三角形102a−dは3次元仮想環境において方向付けられ、画素位置a−fは、レンダリングされる仮想環境の画像を表示するのに使用される2次元画面の画素に対応する。

パラメータ値が三角形内に位置する画素a、b及びcに割り当てられる種々の態様を説明するために、図1Cに、図1Bの三角形102a及び102bを示す。図1Cに示すように、頂点パラメータ値P0、P1及びP2は、各個別の三角形102a及び102bに固有に割り当てられ、インデックスバッファに記憶されたインデックス0、1、3及び9に基づいて識別される。補間は、図1Aに関して上述したように、対応するパラメータ値を頂点バッファでアクセスし、パラメータ値P0を残余の頂点パラメータP1及びP2から減算することによって実行される。

各プリミティブのパラメータ値を補間することの代替として、「フラットシェーディング」として知られる手法が用いられてもよい。フラットシェーディングを用いると、「起点となる頂点」、例えばP0が各三角形について規定され、残余の頂点との差、例えばP1−P0及びP2−P0が単にゼロ設定される。三角形内に位置する任意の画素が、起点となる頂点のパラメータ値とともに頂点シェーダから出力される。これにより、補間演算に関連する多量のオーバーヘッドを節約することができるが、仮想オブジェクトが相状に見えてしまい、これは多くのアプリケーションにおいて望ましくない。

図1Dに、従来的な一方法100aによる頂点パラメータの補間を実行する説明に係る種々の態様のフロー図を示し、この方法によると画素シェーダによって受信される前に補間全体が実行される。画素a−fについてのパラメータ値を特定するために頂点パラメータが頂点シェーダ110及び画素シェーダ112との協働においてどのように補間されるのかを示すために、図1Dの方法100aは、図1B及び1Cに示すような三角形102a−dを利用する(なお、a−fをフレームバッファに出力する前に更なる修正が画素シェーダによって実行されるので、a−fは、より正確にはフラグメントまたはプレ画素を意味するが、ここでは説明の便宜上、単に画素というものとする)。

方法100aは、頂点シェーダ110によって所定の頂点シェーダ演算114を実行することを含み、これは、レンダリングされるグラフィックをアプリケーションの仮想環境で調整するグラフィックAPIから受信された描画コマンドによる、仮想オブジェクトの頂点パラメータの頂点ごとの所定操作を含む。頂点シェーダ110は、図1Dに示す三角形102a−dの各々についての対応する頂点パラメータ値P0、P1及びP2を出力する。

これらの頂点パラメータ値P0、P1及びP2は、対応する三角形102a−d内に位置する画素位置a−fにおけるパラメータ値Pa−Pfを特定するために、各三角形について116において補間される。116における補間は、例えば図1Aに関して説明したように、頂点パラメータ値P0を他の2つの頂点パラメータ値P1及びP2から減算し、これらの減算値をそれらの対応する重心座標で乗算し、座標で規定される画素位置におけるパラメータを補間するように乗算値を加算することを含む。図1Dに示す手法では、補間116は、全体として、GPUに対応付けられたパラメータ補間ハードウェア構成要素によって、画素シェーダプログラム112がパラメータ値を入力として受信する前に実行される。画素シェーダ112は、118において所定の画素シェーダ演算を画素a−fの各々について、すなわち画素ごとに実行することによって各画素a−fを更に操作し、出力画素120が得られる。出力画素120はフレームバッファに記憶され、ディスプレイ上にレンダリングされる画像として出力される。

図1Eに、他の従来的な方法100bによって頂点パラメータの補間を実行する説明に係る種々の態様のフロー図を示す。図1Eに示す従来的な方法100bは、図1Dに示す従来的な方法100aとは、パラメータが画素シェーダ112に到達する前に補間116の減算部122のみが実行される点を除いて同様である。この手法100bでは、補間116の減算部122は、画素シェーダプログラム112が減算済みパラメータ値を入力として受信して補間116の残りを実行する前に、GPUに対応付けられたパラメータ補間ハードウェア構成要素によって実行される。したがって、頂点パラメータの補間116の残りは、絶対頂点パラメータP0、パラメータP0に対して減算された減算パラメータ値P10及びP20並びに絶対頂点パラメータ値P0に対する所望のパラメータPの座標の、124における単純な乗算及び加算演算に軽減されることになる。対応する三角形102a−dの各々について、P10=P1−P0であり、P20=P1−P0である。これにより、前述した所望のパラメータ値Pa−Pfが得られ、これが、出力画素120を生成するように118において画素シェーダによって更に操作される。

図2Aは、従来的な方法によってグラフィックを処理するように構成された種々のハードウェア及びソフトウェア構成要素で実行される方法200aの説明図を示す。図2Aに示す方法200aは、図1Eに示す方法100bと類似する。

頂点シェーダ210は、画面スペースにおけるプリミティブの頂点の位置230、頂点の発光、影、色などの操作といったような、各プリミティブの頂点に対する他の種々のレンダリング効果234を特定することを含む、種々の頂点シェーダ演算214を実行する。頂点シェーダ演算214から得られる種々のパラメータP0、P1及びP2は一時的な記憶のためにパラメータキャッシュ236に書き込まれ、システムのパラメータ補間ハードウェア構成要素222は、パラメータキャッシュ236からのそれぞれの組のパラメータをGPUの各演算部の各小容量ローカルメモリ部237に書き込む前にパラメータ値を減算することによって、補間の一部を実行する。各ローカルメモリ部237は、GPUの各演算部に対応付けられたローカルデータシェア(LDS)としても知られる小容量であるが高速なローカルメモリ部であり、シェーダプログラムを並列に稼働させる複数の上記メモリ部及び演算部がある。

頂点シェーダ出力位置230は、例えばここに記載するように、それらがパラメータ値を補間するのに使用されるように各プリミティブに対する画素の重心座標i,jを生成するハードウェア構成要素238によって使用される。画素シェーダ212は、各所望のパラメータi,jの座標を用いて乗算及び加算演算224を実行することによって補間を完了するために、ローカルデータシェア237で絶対パラメータ値P0並びに相対パラメータ値P10及びP20にアクセスする。そして、画素シェーダ212は、所定の更なる画素シェーダ演算218を実行して、例えばフレームバッファに出力する前に画素を更に操作する。

上述した手法200aの1つの欠点は、画素シェーダに対するパラメータのスループットに関連する特定のボトルネックが起こることであり、これは仮想オブジェクトのレンダリングの速度を低下させ得る。1つに、パラメータキャッシュへのパラメータ書込みスループットがボトルネックとなることが認識されてきた。例えば、各パラメータは、例えば32ビットの浮動小数点数のような大きな属性変数となり、頂点シェーダはこれらの属性変数を一連の、例えば一時に4個のウェーブフロントとしてパラメータキャッシュ236に書き込む。さらに、パラメータキャッシュの使用によって、記憶される頂点シェーダのウェーブフロント数が更に制限され、更なるボトルネックが生ずる。そして、パラメータはローカルデータシェア237に複製され、画素シェーダによってアクセスされる前に一時的に記憶され、画素シェーダのウェーブフロント数を制限することによって、制限されたスループット及び合計ローカルデータシェアの使用によって再度ボトルネックが生ずる。

上述した手法200aの他の欠点は、減算されたパラメータ値P10及びP20が画素シェーダ212に到達する前に計算されるため、画素シェーダは素のパラメータ値P1及びP2に直接アクセスできないことであり、これにより、画素シェーダによって実行されるレンダリング効果の種類が制限される。

実施例 図2Bに、本開示の態様の実施例を示す。図2Bは、本開示の種々の態様による、グラフィックを処理するように構成された種々のハードウェア及びソフトウェア構成要素によって実施される手法200bの概略図を示す。図2Bに示す実施例では、例えば、上述したようなパラメータ値のスループットに関連するボトルネックは、頂点パラメータ値への直接のアクセスを画素シェーダに与えることによって対処される。そして、画素シェーダは、通常の画素シェーダ演算を実行する前の頂点パラメータの補間と同様に、頂点シェーダに従来的に対応付けられたこれらの素の頂点パラメータ値に対して多数の演算を実行することができる。

図2Bに示すように、画素シェーダ210は、214aにおいて示すような頂点シェーダ演算を実行する。場合によっては、これらの演算は、他のパラメータ値が頂点シェーダ出力から省かれるように、頂点位置230を特定すること及びインデックスを出力することに限られてもよい。頂点シェーダ出力パラメータをパラメータキャッシュ236に書き込むのではなく、頂点シェーダ210は、各プリミティブ(例えば、三角形または他の多角形)を識別する頂点インデックスI0、I1及びI0をパラメータキャッシュ236にただ書き込むように構成される。そして、これらのインデックスは、画素シェーダがそれらにローカルにアクセスできるように、ローカルデータシェア237に送られる。これらのインデックスI0、I1及びI2にアクセスできるので、画素シェーダ212は、インデックスに対応付けられた素のパラメータ値P0、P1及びP2に、システムの主メモリ、例えば頂点バッファで直接アクセスすることができる。これらのパラメータ値にアクセスできるので、画素シェーダ212は、三角形の頂点に対する他の視覚効果234を含み得る残余の頂点シェーダ演算214bを実行することができる。そして、画素シェーダは、各画素位置でパラメータ値を特定するために、座標i,jを用いて、残余の頂点シェーダ演算214bから得られたパラメータ値の補間216を実行する。そして、画素シェーダ212は、補間値に対して、画素への更なる視覚効果を含む更なる画素シェーダ演算218を実行して出力画素を生成する。

この説明に係る実施例では、画素シェーダに送信されるインデックスI0、I1及びI2はパラメータ値について使用される属性変数よりも非常に小さいデータ量であるので、例えばインデックスは基本的に1つの数のみであるので、これらのパラメータ値のスループットに関連するボトルネックが減少する。

ただし、頂点シェーダ演算214b及び補間216を図2Bに示す態様で画素シェーダ212に実行させることによって、全体のシェーダと同様に画素シェーダにおける演算負荷が増加することになる。例えば、画像には、通常は可視頂点よりも多くの画素がある。説明する方法では頂点シェーダ演算214bは頂点シェーダ演算210ではなく画素シェーダ212によって実行されるので、頂点シェーダがそうするようにそれらを頂点ごとに1回実行するのではなく、それらは画素ごとに3回(すなわち、画素を含む三角形プリミティブの各頂点について)実行される。したがって、演算負荷をこのような態様で増加させることは従来的な知恵に反し、これは、演算負荷を増加させることによって性能が低下して望ましくないと言えそうである。しかし、パラメータスループットに関連するボトルネックはレンダリング速度よりも大きな制限的要因であり、たとえより多くの演算が画素シェーダによって実行されなければならないとしても、全体的性能は実際に高められ、オブジェクトのレンダリングは加速される。

またさらに、例えば上述したような従来的なフラットシェーディング手法では、画素シェーダは、インデックスの全て及び各三角形に対する頂点パラメータの全てに直接アクセスすることができない。せいぜい、それは起点となる頂点にアクセスできるに過ぎず、例えば、図2Bに示すような頂点シェーダ演算214bを画素シェーダが実行することを阻害するといったように、実行可能なレンダリング及び生成可能な視覚効果の種類を制限することになる。

図3は、本開示の種々の態様による、頂点シェーダ及び画素シェーダによってグラフィックを処理するための方法300のフロー図を示す。方法300は、図2Bに示すグラフィック処理手法200bと類似性を有する。

説明する方法300は、頂点シェーダ310によって頂点シェーダ演算314aを実行することを含む。多数の通常の頂点シェーダ演算が、頂点シェーダ310によって実行される演算314aから省かれ、その代わりに画素シェーダ312を用いて画素ごとに実行される。頂点シェーダ310の出力は、プリミティブ302a−dの各々について頂点出力位置及び頂点インデックスに限定される。プリミティブは、インデックスI0、I1及びI2によって識別される3頂点を各々が有する三角形であり、図1Bに示す三角形102a−dと同様である。

インデックスは画素シェーダ312に送られ、それはインデックスI0、I1及びI2を用いて、異なるプリミティブ302a−dの各々に対する頂点パラメータ値P0、P1及びP2の各々に直接アクセスすることができる。画素シェーダ312は、例えば、頂点インデックスに対応付けられた頂点バッファに記憶されたパラメータ値を有するシステムメモリに直接アクセスすることによって、素のパラメータ値に直接アクセスする。画素シェーダはパラメータ値を用いて残余の頂点シェーダ演算314bを実行し、それは各プリミティブの各頂点に対して所定の視覚効果をレンダリングすることを含む。そして、画素シェーダ312は、プリミティブ内の各画素位置におけるパラメータ値Pa−Pfを抽出するために、画素シェーダ演算314bを実行した後に、得られるパラメータ値を補間する。そして、画素シェーダ312は、補間パラメータ値を用いて画素に対して画素シェーダ演算318を実行することによって画素に対する追加の視覚効果を生成し、レンダリングされた画素320を、例えばシステムメモリのフレームバッファに出力する。

本開示の態様は、上述した構成を実現するように構成されたグラフィック処理システムを含む。例として、そして限定ではなく、図4に、本開示の態様によるグラフィック処理を実施するのに使用されるコンピュータシステム400のブロック図を示す。本開示の態様によると、システム400は、組込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、可搬ゲーム機器、ワークステーション、ゲームコンソールなどである。

システム400は、概略として、中央処理装置(CPU)470、グラフィック処理装置(GPU)471、並びにCPU及びGPUの双方にアクセス可能な主メモリ472を含む。CPU470及びGPU471の各々は、1以上のプロセッサコア、例えば、単一のコア、2個のコア、4個のコア、8個のコアまたはそれ以上を含む。主メモリ472は、アドレス指定可能なメモリ、例えばRAM、DRAMなどを与える集積回路の形態となり得る。

例として、そして限定ではなく、CPU470及びGPU471は、データバス476を用いて主メモリ472にアクセスする。場合によっては、システム400が2以上の異なるバスを含むことが有用である。主メモリ472は、CPU470及びGPU472によってアクセス可能なデータを含む。主メモリはデータを、頂点バッファ463、インデックスバッファ466及びフレームバッファ464を含むバッファに一時的に記憶する。

CPUは、CPUコードを実行するように構成され、これは、レンダリングされたグラフィックを利用するアプリケーション460と、GPUによって実行されるプログラムに描画コマンドを送出するためのドライバ/コンパイラ461及びグラフィックAPI462とを含む。CPUコードはまた、物理シミュレーション及び他の機能を実現する。GPUは、本開示の説明に係る実施例に関して上述したように動作するように構成される。特に、GPUはGPUコードを実行し、これは、上述したように、頂点シェーダ410及び画素シェーダ412を実現する。これらのシェーダは、主メモリ472のデータとのインターフェイスとなり、画素シェーダは、レンダリングされる画素を、ディスプレイへの出力前の一時的な記憶のためにフレームバッファ464に出力する。GPUは、グラフィック処理タスクを並列に実行するように構成された複数の演算部(CU)465を含む。各演算部は、上述したローカルデータシェア(LDS)437のような、それ自身の専用ローカルメモリストアを含む。システム400はまた、頂点インデックスデータ468を一時的に記憶するためのキャッシュ436を含み、データはキャッシュ436から各LDS437に複製され、それはデータを並列に利用するシェーダプログラムを実現する。パラメータキャッシュ436は、GPUに集積されていてもよいし、GPUとは別体であって、例えばバス476を介してGPUにアクセス可能であってもよい。GPUは、例えば、幾何シェーダ及び演算シェーダのような他のプログラムを実行することもできる。

システム400は公知のサポート機能477を含んでいてもよく、これは、例えばバス476を介してシステムの他の構成要素と通信することができる。そのようなサポート機能は、限定するわけではないが、入力/出力(I/O)要素479、電源(P/S)480及びクロック(CLK)481を含む。

装置400は、プログラム及び/またはデータを記憶するディスクドライブ、CD−ROMドライブ、フラッシュメモリ、テープドライブなどといった大容量記憶装置484を選択的に含む。装置400はまた、装置400とユーザとの間の相互作用を促進する表示部486及びユーザインターフェイス部488を含む。表示部486は、フラットパネルディスプレイ、冷陰極管(CRT)画面、タッチスクリーン、またはテキスト、数字、グラフィカルな記号若しくは画像を表示できる他の装置である。ディスプレイ486は、ここに記載される種々の手法によって処理されたレンダリングされた画像487を表示する。ユーザインターフェイス488は、キーボード、マウス、ジョイスティック、ライトペン、ゲームコントローラ、またはグラフィカルユーザインターフェイス(GUI)との関係で使用される他の装置を含む。システム400はまた、装置がネットワークを介して他の装置と通信することを可能とするネットワークインターフェイス490を含む。ネットワークは、例えば、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワークBluetooth(登録商標)ネットワークなどのパーソナルエリアネットワーク、または他のタイプのネットワークである。これらの構成要素は、ハードウェア、ソフトウェア若しくはファームウェアまたはこれらの2以上の組合せにおいて実現される。

上記は本発明の好適な実施形態の完全な説明であるが、種々の変更、変形及び等化を用いることが可能である。したがって、本発明の範囲は、上記の説明を参照して特定されるべきではなく、付随する特許請求の範囲及びそれらの均等の全範囲を参照して特定されるべきである。好適か否かにかかわらずここに記載されるいずれの構成も、好適か否かにかかわらずここに記載される他の構成と組み合わせることができる。以降の特許請求の範囲において、不定冠詞「A」または「An」は、明示的に断りがある場合を除き、冠詞に続く項目の1以上の数量を意味する。付随する特許請求の範囲は、文言「・・・のための手段」を用いる所与の請求項にそのような発明特定事項が明示的に記載されない限り、ミーンズプラスファンクションの発明特定事項を含むものとして解釈されるべきではない。

高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈