(57)【要約】３Ｄグラフィカルシェーダプログラムにおいて、メモリをプリフェッチする準備を行う方法、システム、および装置が開示される。テクスチャマップから事前に読み込んだテクセルのメモリアドレスに基づいて、読み出すテクセルのメモリアドレスが、ピクセルの距離に対するメモリアドレスの１次導関数を用いて予測される。次に予測されたメモリアドレスは、テクセルに対応するピクセルがレンダリングされるときに使用するためにプリフェッチされる。テクセルの予測が実行されたか否かに関係なく、メモリアドレスは、対応するピクセルが、３Ｄモデル上の同じ、平面ファセット上にあるか否かによって判断できる。高次導関数のほか、メモリアドレスの予測に対して、このファセット上の複数の方向を使用できる。
2014529143.tif 000002
【特許請求の範囲】
【請求項１】
グラフィック処理のためにテクセルをプリフェッチする準備を行う方法であって、
テクスチャマップのテクセルに対するメモリアドレスを受け取り、前記テクセルが画像内のピクセルに対応すること、
前記ピクセルがすべて３次元モデルの共通ファセットに対応することを判定すること、
メモリに動作可能に連結された少なくとも１つのプロセッサを用いて、前記メモリアドレス内の差を前記画像内の前記ピクセル間の距離により除算することで、導関数を計算すること、
前記計算された導関数を用いて、別のピクセルの位置に情報をプリフェッチすることを含み、
プリフェッチのための前記導関数の計算が、前記ピクセルが同じファセットに対応するという判定に基づく、方法。
【請求項２】
前記計算された導関数から別の方向にそって導関数を計算すること、
前記計算された導関数を使用して、実質的に垂直なピクセルの位置に対して情報をプリフェッチすること、をさらに含む、請求項１に記載の方法。
【請求項３】
グラフィック処理のためにテクセルをプリフェッチする準備を行う方法であって、
３次元モデルにアプリケーションのためのサンプリングされるテクスチャマップの第１のテクセルの第１のメモリアドレスを受け取り、前記第１のテクセルが画像内の第１のピクセルに対応すること、
前記テクスチャマップの第２のテクセルの第２のメモリアドレスを受け取り、前記第２のテクセルが画像内の第２のピクセルに対応すること、
メモリに動作可能に連結された少なくとも１つのプロセッサを用いて、前記第１および第２のメモリアドレス間の差を前記画像内の前記第１および第２のピクセルの位置の間の距離により除算することで、導関数を計算すること、
前記計算された導関数に基づいて、前記テクスチャマップの第３のテクセルの第３のメモリアドレスを予測することを含む、方法。
【請求項４】
前記第１および第２のピクセルが３次元モデルの共通ファセットに対応するか否かを判定することをさらに含み、前記導関数の前記計算が、前記第１および第２ピクセルが同じファセットに対応するという判定に基づく、請求項３に記載の方法。
【請求項５】
前記画像内の第３のピクセルが前記第１および第２のピクセルが対応する前記ファセットに対応するか否かを判定することをさらに含み、前記第３のメモリアドレスの前記予測が、前記第３のピクセルが前記第１および第２ピクセルが対応するのと同じファセットに対応するという判定に基づく、請求項４に記載の方法。
【請求項６】
前記３次元モデルのアプリケーション用にサンプリングされる前記テクスチャマップのさらに少なくとも１つのテクセルのさらに少なくとも１つのメモリアドレスを受け取り、前記さらに少なくとも１つのテクセルが前記画像内の前記さらに少なくとも１つのピクセルに対応すること、
低次導関数の差を前記第１または第２のピクセルの位置と前記画像の前記さらに少なくとも１つのピクセル間の距離により除算することで、高次導関数を計算すること、
前記計算された高次導関数に基づいて、前記テクスチャマップのテクセルのメモリアドレスを予測すること、をさらに含む、請求項３に記載の方法。
【請求項７】
前記第１および第２のピクセルが３次元モデルの共通ファセットに対応しているか否かを判定すること、
前記さらに少なくとも１つのピクセルが前記第１および第２のピクセルが対応する前記ファセットとは異なるファセットに対応するか否かを判定することをさらに含み、
前記メモリアドレスを予測することが、前記さらに少なくとも１つのピクセルが前記第１および第２のピクセルが対応する前記ファセットとは異なるファセットに対応するという判定に基づく、請求項６に記載の方法。
【請求項８】
前記テクスチャマップの第４のテクセルの第４のメモリアドレスを受け取り、前記第４のテクセルが前記画像内の第４つのピクセルに対応すること、
前記第１および第４のメモリアドレス間の差を前記画像の前記第１または第４のピクセルの位置間の距離により除算することで、導関数を計算すること、
前記計算された導関数に基づいて、前記テクスチャマップの第５のテクセルの第５のメモリアドレスを予測することをさらに含み、
前記第１および第２のテクセルと前記第１および第４のテクセル間の方向が互いに対して直角である、請求項３に記載の方法。
【請求項９】
前記第１および第４のピクセルが前記３次元モデルの共通ファセットに対応するか否かを判定することをさらに含み、前記導関数を計算することが、前記第１および第４のピクセルが同じファセットに対応するか否かの判定に基づく、請求項８に記載の方法。
【請求項１０】
前記画像内の第５のピクセルが、前記第１および第２のピクセルが対応する前記ファセットに対応するか否かを判定することをさらに含み、前記第５のメモリアドレスを予測することが、前記第５のピクセルが前記第１および第４のピクセルが対応するファセットと同じファセットに対応するという判定に基づく、請求項９に記載の方法。
【請求項１１】
前記第３のメモリアドレスを読み出すことと、
前記第３のテクセルを前記画像内の第３のピクセルに適用することと
をさらに含む、請求項３に記載の方法。
【請求項１２】
ピクセルが１つの軸にそっている、請求項３に記載の方法。
【請求項１３】
前記３次元モデルのファセットが、線、三角形、四辺形、六角形要素、スプライト、および点スプライトからなる群から選択される、請求項３に記載の方法。
【請求項１４】
前記第３のメモリアドレスを読み出すことと、
前記画像内の第３のピクセルに前記第３のテクセルを適用することをさらに含む、請求項３に記載の方法。
【請求項１５】
前記３次元モデルが、ビデオゲームまたはコンピュータ支援設計（ＣＡＤ）用である、請求項３に記載の方法。
【請求項１６】
前記動作が、グラフィックプロセッシングユニット（ＧＰＵ）によって実行される、請求項３に記載の方法。
【請求項１７】
前記動作が示された順序で実行される、請求項３に記載の方法。
【請求項１８】
各動作が、前記メモリに動作可能に連結された前記少なくとも１つのプロセッサによって実行される、請求項３に記載の方法。
【請求項１９】
１つ以上の機械に請求項３に記載の前記動作を実行させる命令を示す情報を実施する機械可読有形記憶媒体。
【請求項２０】
コンピュータプログラムにおいて命令を実行するコンピュータシステムであって、前記コンピュータプログラム命令は、請求項３に記載の動作を実行するプログラムコードを含むコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連案件の相互参照
本願は、２０１１年９月１２日出願の米国特許仮出願番号第６１／５２７，０６１号（代理人整理番号９０６１９−８０２８６３（００９６００ＵＳ））の優先権を主張する２０１２年７月２０日出願の米国特許出願番号第１３／５５４，９７６号（代理人整理番号９０６１９−８１９６７１（００９６１０ＵＳ））の継続出願であり、その優先権を主張する。これらの出願は、そのすべてがあらゆる目的で参照によって本明細書に組み込まれる。
【０００２】
本発明の実施形態は、一般に、コンピュータグラフィック処理システムに関し、より詳細には、３次元オブジェクトをレンダリングするテクスチャマップのためのメモリフェッチを予測するグラフィック処理ユニットに関する。
【背景技術】
【０００３】
最新のビデオゲームおよびコンピュータ支援設計（ＣＡＤ）アプリケーションにおける３次元（３Ｄまたは３−Ｄ）モデルは、現実的な外観に近づけるために、テクスチャマップを使用している。テクスチャマップ（テクスチャと呼ばれることもある）は典型的には、色、透過性、材料特性、表面配向、またはデジタル処理で３Ｄオブジェクトを包み込む、あるいはその他の方法で３Ｄオブジェクトにマッピングできるその他の特徴の表である。その名称にもかかわらず、テクスチャマップは、オブジェクトの質感的外観だけでなく、オブジェクトの色、反射特性、材料特性、およびその他の表面細部も定義できる。ビデオゲームにおいては、３Ｄモデルに使用されるテクスチャは、特に拡散光色テクスチャ、鏡面反射（輝いている）色テクスチャ、正規図、透過マップ、および材料インデックスを含むことが多い。
【０００４】
コンピュータグラフィックのレンダリングでは、グラフィックプロセッシングユニット（ＧＰＵ）において最も高いレイテンシ動作の一部は、メモリアクセスに関連する。メモリ読み出し動作は、加算、減算、乗算および除算などの代数的演算よりも、実行に桁違いに時間がかかることがある。例えば、メモリからの値の読み出しが、２つの値を加算するよりも１０〜１００倍のクロックサイクルを要することは珍しいことではない。
【０００５】
先行技術においては、シェーダは、その名称にもかかわらず、一般的なレンダリングプログラムであり、シェーディング効果に限らず、いくつかのレンダリングスレッドを一度に連続で開始することによって、メモリアクセスのレイテンシを補正する。各スレッドは、レンダリングするピクセルに割り当てられる。各スレッドは割り当てられたピクセルを使用して、ピクセルがどのオブジェクト（もしくは背景）に対応し、かつどのオブジェクトがテクスチャリングに適切なテクスチャマップにアクセスするかを検索する。詳細には、テクスチャマップ内の適切なテクセルのメモリ上の位置がピクセルに対して読み込まれる。あるスレッドがピクセルで終わると、別のスレッドが別のピクセルに呼び出される。これは、画像のすべてのピクセルがレンダリングされるまで続く。スレッドの数が一度に呼び出され、レジスタ数とスレッドおよび関連する変数を追跡するスタックメモリによって制限される。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
グラフィックプロセッサおよびレンダリング技術は、特に大量生産の、消費者向けビデオゲームハードウェアにおいては、過去数十年間で飛躍的に進歩したが、当技術分野において、より高速で、より効率的な３Ｄレンダリングに対するニーズが絶えず存在している。
【課題を解決するための手段】
【０００７】
シェーダプログラム用のテクスチャマップに関連したメモリのプリフェッチのための方法、システムおよび装置が開示される。一般に、後にアクセスされるメモリ上の位置を予測するのに、前にアクセスされたテクセルのメモリ上の位置が使用される。例えば、３Ｄモデルの同じ三角形ファセットでのピクセルの位置に関して、メモリアドレスに対し、有限差分と差分商に類似した、１次導関数が計算される。この導関数は、別のピクセルに対しておそらくアクセスされるであろう別のテクセルに対するメモリ上の位置を予測するのに使用される。次に、予測されたメモリ上の位置が読み込まれ、その内容はローカル変数またはローカルキャッシュに置かれる。その後、シェーダプログラムがプリフェッチされたテクセルに対応したピクセルをレンダリングすると、テクセルのメモリがすでに読み込まれているため、レンダリングをより高速に実行できる。
【０００８】
１次導関数は、テクスチャマップに対するメモリアドレスが連続し、かつピクセルが３次元モデル上の同じ平面ファセットの一部である場合に、後のメモリアドレスを正確に予測するのに使用できる。この導関数を作成するのに使用されるピクセルと後のピクセルが同じファセット上にあると判定されれば、導関数を計算でき、かつメモリが読み込まれる。これらが相互に非対称になっている異なるファセット上にある場合は、これらのファセット間の非対称性と不連続性を考慮すると、予測が正確でない可能性があるため、導関数の計算は回避することができる。さらに、異なるファセットに対するメモリが非連続である場合があるため、予測が正確でないこともある。
【０００９】
本開示の一部の実施形態は、グラフィック処理のためにテクセルをプリフェッチする準備を行う方法に関する。該方法は、テクスチャマップのテクセルに対し、メモリアドレスを受け取り、これらのテクセルが画像内のピクセルに対応するというステップと、上記ピクセルがすべて３次元モデルの共通ファセットに対応するという判定を行うステップと、メモリに動作可能に連結された少なくとも１つのプロセッサを用いて、上記メモリアドレス内の差を上記画像内のピクセル間の距離で除算することによって導関数を計算するステップと、上記計算された導関数を用いて、別のピクセルの位置に対して、情報をプリフェッチするステップとを含む。プリフェッチのためのこの導関数の計算は、ピクセルが同じファセットに対応するという判定に基づく。
【００１０】
一部の実施形態は、グラフィック処理のためにテクセルをプリフェッチする準備を行う方法に関する。該方法は、３次元モデルにアプリケーションするためにサンプリングされるテクスチャマップの第１のテクセルの第１のメモリアドレスを受け取り、上記第１のテクセルは、画像内の第１のピクセルに対応するステップと、上記テクスチャマップの第２のテクセルの第２のメモリアドレスを受け取り、上記第２のテクセルは、上記画像内の第２のピクセルに対応するステップと、メモリに動作可能に連結された少なくとも１つのプロセッサを用いて、上記第１および第２のメモリアドレス間の差を上記画像の上記第１および第２のピクセルの位置の間の距離で除算することにより、導関数を計算するステップと、上記計算された導関数に基づいて、上記テクスチャマップの第３のテクセルの第３のメモリアドレスを予測するステップとを含む。
【００１１】
その他の実施形態は、コンピュータ可読の、有形の記憶媒体および上記の方法に対する命令を利用または記憶するコンピュータシステムに関する。
【００１２】
本明細書で開示および示唆される実施形態の性質および利点は、本明細書の残りの部分と添付の図面を参照することでさらに理解されうるであろう。
【図面の簡単な説明】
【００１３】
【図１】一実施形態に係るテクスチャ加工された３Ｄモデルを示す図である。
【図２】図１の３Ｄモデルのテクスチャ加工に使用されるテクスチャマップを示す図である。
【図３】一実施形態に係るテクスチャマップのテクセルレベルの細部を示す図である。
【図４】一実施形態に係るテクスチャ加工されている３Ｄモデル上の三角形ファセットを示す図である。
【図５】一実施形態に係るプロセスのフローチャートを示す図である。
【図６】一実施形態に係るプロセスのフローチャートを示す図である。
【図７】一実施形態を実施するのに適したコンピュータシステムを示す図である。
【発明を実施するための形態】
【００１４】
一般に、場面内の２次元、３次元、またはその他の次元オブジェクトにテクスチャマップを適用するときに読み込まれるメモリアドレスを予測する方法、システム、および装置が開示される。ピクセルの位置に関して、テクスチャマップ内のテクセルのメモリアドレスに対して、導関数が取得され、該導関数は、後に呼び出されるメモリアドレスを予測するのに使用される。その他の推定技術も使用してもよい。対応するピクセルがレンダリングされるときにレイテンシを最小限に抑えるため、予測されたメモリアドレスの内容がローカルキャッシュに読み込まれる。
【００１５】
ピクセルが、ファセットなど、３Ｄモデルの同じ部分に対応するか否かの判定は、予測が求める価値があるか否かを決定するのに使用できる。例えば、ピクセルが３Ｄモデルの異なるファセット（例えば平面三角形）上にある場合、予測は真値から十分に離れており、計算する価値がない場合がある。
【００１６】
異なる面上のファセットに対して、高次導関数を計算することができる。これは、ファセット化された３Ｄモデルが、頭部などの曲面に近づこうとしているときに特に便利である。つまり、３Ｄモデルのファセットの多くが、曲線に対し近似であるとき、曲線を取り入れる高次多項式適合がよりよい適合となる場合がある。この場合、ピクセルが次の面上にあるという判定は、適切なメモリ上の位置を予測するための高次導関数の計算を開始できる。
【００１７】
導関数は垂直（つまり、直交）方向に取得できる。例えば、四辺形ファセット上のｘ方向に対して１つの導関数を計算し、次にｙ方向に対して別の導関数を計算できる。これらの方向は、ファセットの方向、画面の空間、テクスチャの空間、またはその他の計算に便利な方向に合わせることができる。
【００１８】
「導関数」は、その他の導関数の他、有限差分の差分商を含む。例えば、ピクセルの位置における差によって除算されたメモリ上の位置における差は導関数となりうる。数学的に表現すると、例示的な導関数は次のように変換できる。
式１：ｄｅｒｉｖ＿ｘ＝（ｍｅｍ１−ｍｅｍ０）／（ｓｑｒｔ（ｐｉｘｅｌｘ１，ｙ０２−ｐｉｘｅｌｘ０，ｙ０２））
上記式中、ｄｅｒｉｖ＿ｘは導関数、ｍｅｍ０とｍｅｍ１は、テクセルのメモリ上の位置、およびｐｉｘｅｌｘ０，ｙ０とｐｉｘｅｌｘ１，ｙ０は、ピクセルの画面上の位置である。関数ｓｑｒｔ（）は、正の平方根を返す。ｍｅｍ０のテクセルは、ｐｉｘｅｌｘ０，ｙ０に位置するか、またはその他の方法でｐｉｘｅｌｘ０，ｙ０に対応し、ｍｅｍ１のテクセルは、ｐｉｘｅｌｘ１，ｙ０に位置するか、またはその他の方法でｐｉｘｅｌｘ１，ｙ０に対応する。
【００１９】
導関数は、後に使用されるメモリ上の位置を予測し、該位置をプリフェッチするのに使用できる。例えば、第３のメモリ上の位置は、次の方程式によって予測できる。
式２：ｍｅｍ２＝ｍｅｍ０＋ｄｅｒｉｖ＿ｘ＊ｓｑｒｔ（ｐｉｘｅｌｘ２，ｙ０２−ｐｉｘｅｌｘ０，ｙ０２）
上記式中、ｍｅｍ２は、予測された第３のメモリ上の位置、ｐｉｘｅｌｘ２，ｙ０は、ｍｅｍ２のテクセルがおそらく対応するであろうピクセルの画面上の位置である。
【００２０】
一部の既存のグラフィックエンジンでは、ｄｄｘ（）と呼ばれる、導関数を計算するための関数がハードウェアでサポートされている。ｄｄｘ（）関数は典型的には、メモリアドレス内の値で動作し、メモリアドレス自体では動作しない。発明者は、メモリアドレスの導関数を素早く計算するために、一部の実施形態においてこの既存の関数を使用できると認識する。
【００２１】
その他のアルゴリズムは、非線形表面に対するメモリ上の位置を予測できる。例えば、ハードウェアは、ベジエまたはｂ−スプライン曲線を補間できる。この場合、それは直線関係ではないが、しかし、それはまだ、その導関数を取得することを知られている補間／細分である。それゆえ、メモリアクセスでパターンを探すことができる。そのような場合、（曲線パラメータによって分析的に導き出される）表面導関数が（表面が補間されているときに観察される）メモリアドレスと併せて、後のメモリアクセスを予測するのに使用できる。
【００２２】
シェーダは多くのピクセルで動作することが多い。ラスタライザは、３Ｄモデルの三角形ファセットを横切り、ピクセルを生成するとき、三角形にそって移動している方向を求めることができる。ラスタライザは、テクスチャを参照するのに使用されるテクスチャ座標が三角形にそってどのように変化するかを判定できる。この情報は、さらなるピクセルがラスタライズされているときに、それらのピクセルに対してテクスチャを推測でプリフェッチするのに使用できる。これは、シェーダが後に使用すると予想するテクセルの導関数に基づいて、ファイアアンドフォーゲット方式のテクスチャ検索を開始するシェーダ自体の中のソフトウェアで実行できる。また、これは、低レベルでの事前予測を支援するために、ハードウェアに組み込むことができる。
【００２３】
異種の点群（ポイントクラウド）には、一連の３Ｄ点がある。各点は、ｘ、ｙおよびｚの位置である。これは、ファセットの一部ではないので、表面にそった移動はない。しかし、アルゴリズムは、２つの独立した点に対するパラメータを参照し、そのパラメータを使用して、第３の点の挙動を予測できる。
【００２４】
上記の通り、１つのファセットから、ピクセル３、４、５およびそれ以上のピクセルに対して、メモリのロードを高速化できる。ただし、点１および２も高速化できる。「点群」（point cloud） 手法を利用できるが、これは、データセット内の２つの点を選択し、この最初の２点がどの場所にあるかを予測する手法である。例えば、その前にレンダリングされたファセットが考えられうる。最初および最後の点は、そのファセットから選択でき、かつ最初および最後のメモリアドレスがそのファセットによって使用されうる。
【００２５】
実施形態の技術的利点は、より高速なレンダリングを含む。現在のメモリアクセスで観察されたパターンに基づいて、後のメモリアクセスを予測することで、ＧＰＵは、事前に後のメモリアクセスをプリフェッチし、それにより、アクセスが実際に必要とされるときに、レイテンシを大幅に減らすことができる。本解決法は、キャッシュの肥大化に対するニーズにつながる可能性があるが、実行している必要のあるスレッドが少ないため、本解決策は、ＧＰＵのレジスタファイルのサイズを減らすことができる。一般的に言えば、実施形態は、メモリアクセスのコストに対して、シェーダの計算が多少「自由」であるという事実を利用できる。予測メモリアクセスを事前計算し、その結果を破棄することによって、計算が無駄になる場合があるが、この無駄は、相当数の計算の結果、予測の精度が上がると、メモリのレイテンシが短くなるという利点で相殺できるということが認識される。
【００２６】
図１は、一実施形態に係るテクスチャ加工されている３Ｄモデルを示す。３次元モデル１０１は、当技術分野で知られているように、頂点、個々のボクセル、またはその他の手段によって定義できる。この図は、モデル上の四辺形要素を示しているが、スプライトおよび点スプライトの他、線、三角形、六角形およびその他の要素が想定されている。「スプライト」は、２つの対角のみが指定された、またはその他に当技術分野で知られている、画面上に配置された四辺形が含む。「点スプライト」は、角と幅および高さが指定された、または当技術分野で知られているような四辺形を含む。例示的な実施形態において、モデル１０１は、上から下にかけて、テクスチャリングを施されている。テクスチャ加工部１０３は上部に、未テクスチャ加工部１０２は下部にある。
【００２７】
ピクセル１０５および１０６は、図中に比較的水平に配置されているが、シェーダプログラムで処理を施されている。処理中、ピクセル１０５および１０６に位置するテクスチャマップのテクセルのメモリ上の位置は、検索を通じて判定される。例えば、仮想カメラのピクセル１０５は、ファセット１０４上の３Ｄモデル１０１の目に見える断片の遮断されていない表示を有していると判定される。それゆえ、３Ｄモデルの断片は、表示のために、検索テクスチャマップを用いて、照らされるか、色付けされるか、あるいはその他の方法でテクスチャ加工される必要がある。テクスチャマップは、色、法線マップ、材料およびその他の特定に対して用いることができる。
【００２８】
図２は、図１の３Ｄモデルのテクスチャ加工に使用されるテクスチャマップを示す。テクスチャマップ２１０は、特にテクセル２０５，２０６および２０７を含む。
【００２９】
テクセル２０５は、図１のピクセル１０５に位置する。たいていは、複数のテクセルが１つのピクセルに位置するため、それらのテクセルの色などは混合される。本考察のため、本実施形態では、１つのテクセルが１つのピクセルに位置する。その他においては、多くのテクセルが１つのピクセルに位置し、かつ多くのピクセルが１つのテクセルによってサービスされてもよいことが理解されるであろう。
【００３０】
テクセル２０５はピクセル１０５に位置するため、テクセル２０５のメモリアドレスは、ピクセル１０５に対応すると言える。同様に、テクセル２０６のメモリアドレスは、ピクセル１０６にマップされる。
【００３１】
ピクセル１０５および１０６は、３Ｄモデルの同じファセットの部分に対応すると判定される。つまり、ピクセル１０５および１０６は、共通ファセット１０４に対応する。メモリの予測は正確になりうる。この共通性の発見に基づき、予測が行えるよう、導関数が計算される。
【００３２】
導関数は、有限差分を用いて計算できる。例えば、テクセル２０５の（３２ビットの）メモリアドレスが８Ｃ８１、かつテクセル２０６のメモリアドレスが８Ｃ８５の場合、これらのメモリアドレスの差は、８Ｃ８５−８Ｃ８１＝０００４となる。ピクセル１０５の位置が（１１５２、５４１）、かつピクセル１０６の位置が（１１７５、５４２）の場合、これら２つのピクセル間の差は、ｓｑｒｔ（（１１７５−１１５２）２＋（５４２−５４１）２）＝２３．０２１７ピクセルと計算できる。導関数は、０００４／２３．０２１７．＝０．１７３７となる。
【００３３】
段階的距離など、その他の距離測定値も使用できる。例えば、上記のピクセルの位置の距離は単に、（１１７５−１１５２）＋（５４２−５４１）＝２３＋１＝２４ピクセルと計算できる。
【００３４】
次にこの導関数は、後に読み出すメモリ上の位置を予測するのに使用される。例えば、シェーダプログラムは、上記２つのピクセルを読み出すよう設定できる。つまり、シェーダプログラムは、ピクセル１０７（図１）に対して読み込まれるテクスチャマップのメモリ上の位置を予測することを試み、次にそのメモリをプリフェッチするよう設定される。その他の先読み設定も可能である。例えば、シェーダプログラムは、１０、１００、またはそれ以上のピクセルを先読みするよう設定されてもよい。先読みされるピクセルの数は、ファセットの長さによって決まってもよい。例えば、シェーダプログラムは、ファセットを横切る道の５０％を先読みするよう設定されてもよい。
【００３５】
例示的な実施形態では、すべてのピクセルが３Ｄモデルの同じ平面ファセット上にあると判定される。つまり、導関数を計算するのに使用されるピクセル１０５および１０６、および予測されるピクセル１０７は、３Ｄモデル１０１の共通ファセット１０４にある。この判定に基づいて、論理回路は、予測段階に進む。つまり、シェーダは、ピクセル１０７にテクスチャマップのメモリ上のどの位置が読み込まれかを予測しようとする。
【００３６】
ピクセル１０７に読み込まれるメモリアドレスは、事前に計算された導関数を用いて予測される。導関数からのテクセルの内の１つのベースアドレスおよび導関数自体は、メモリアドレスを推定するために、直線、傾き切片、式ｙ＝ｍｘ＋ｂで使用される。上記からの数値例を続ければ、ピクセル１０７の位置が（１１９０、５４４）の場合、ピクセル１０５からピクセル１０７までの距離は、ｓｑｒｔ（（１１９０−１１５２）２＋（５４４−５４１）２）＝３８．１１８２ピクセルと計算できる。次にメモリアドレスは、８Ｃ８１＋０．１７３７＊３８．１１８２＝８Ｃ８１＋６．６＝８Ｃ８８と計算される。
【００３７】
それゆえ、メモリアドレス８Ｃ８１および８Ｃ８５を読み込んだ後、シェーダは、おそらく読み込まれるであろう次のメモリが８Ｃ８８であると予測する。そのメモリアドレスは、モデルに関して、次のピクセルがどこにあるかを正確に判定する通常のチャネルを経ないで判定される。メモリ読み出し動作は、通常のチャネルが予測に追いつく間に開始できる。
【００３８】
本実施形態では、予測は、メモリのプリフェッチに使用される。シェーダプログラムは、メモリアドレス８Ｃ８８をローカルレジスタにロードすることを要求する。シェーダは、そのメモリが読み込まれたかを追跡でき、または単にメモリアドレスを読み込んで、ハードウェアにメモリからキャッシュされた値を追跡させることができる。
【００３９】
ピクセルのその他の方向を計算し、そのメモリ上の位置をプリフェッチさせることができる。例えば、ピクセル１０８は、ピクセル１０６よりもピクセル１０５から比較的垂直な方向にある。テクセル２０８は、ピクセル１０８にマッピングされる。導関数は、この垂直な方向に計算される。例えば、導関数は、ピクセル１０５および１０８の位置に関して、テクセル２０５および２０８に対するメモリ上の位置間で計算できる。導関数は、ピクセル109にマッピングされる、テクセル２０９のメモリアドレスを予測するのに使用できる。
【００４０】
一部の実施形態では、すべてのピクセルが同じファセット上にあると判定されると、異なる方向に実行される予測は、より高速に行うことができる。例えば、ピクセル２０５〜２０９はすべてファセット１０４上にある。シェーダプログラムが、第１のピクセルがファセットの左上、またはその他の端にあると判定した場合、その他のピクセルが同じファセット上にあるか否かを明示的に判定する必要はなくてもよい。飛び越すピクセルの数が少なく、ファセットが大きい場合、すべてのピクセルがそのファセット上にあると推測できる。これは、曲線がほとんどない比較的平坦な面でのレンダリングを高速化ができる。
【００４１】
図３は、一実施形態に係るテクスチャマップのテクセルレベル細部を示す。簡略化のため、テクセルレベル細部３０１にはファセットは示されていない。テクセル３０６は、テクセル３０５から４テクセル離れ、１テクセル上にある。２つのテクセルが順に読み込まれており、ハードウェアは次に読み出すテクセルを予測する必要がある。この小さい目盛り上では、導関数／傾きを計算し、線を推定する数学的厳密さに近づく直線目視手法を適用すれば、テクセル３０７（テクセル３０６から４テクセル離れ、１テクセル上にある）に関連するメモリアドレスがおそらく次に読み込まれるメモリアドレスであることは明らかである。
【００４２】
テクセル３０７に関連するメモリがレンダリングされる次のピクセルに正確に対応していない場合でも、レンダリングにテクセルの混合が使用されることがよくあるため、それに関係なく、そのメモリは多分でアクセスされる。つまり、３０７の真上にあるテクセルに関連するメモリアドレスがレンダリングされる次のピクセルに直接対応するメモリアドレスであっても、最終的な色をレンダリングするために、テクセル３０７はおそらく、そのテクセルと混合される。テクセル３０７からのメモリはキャッシュに読み込まれているため、混合アルゴリズムのその部分は、その他の手段で行われた場合よりも高速化しうる。
【００４３】
図４は、一実施形態によりテクスチャ加工される３Ｄモデルの三角形ファセットを示す。ピクセル４０５、４０６、および４０７は配列され、同じファセット、ファセット４０４上にある。従って、ピクセル４０５および４０６から推定された場合、ピクセル４０７にマッピングされたテクセルのメモリアドレスの計算は、比較的成功率が高い。しかし、異なる、別個のファセットに関連するピクセルは、また別の問題を引き起こす可能性がある。
【００４４】
ピクセル４１５、４１６、および４１８も、ファセット４０４上にある。しかし、ピクセル４１７は、ファセット４１４とは異なるファセットである、ファセット４３４上にある。それゆえ、同じファセット上にあるピクセルの傾き切片の推定は、この場合うまく行かない可能性がある。一部の場合、異なるファセット上で、ピクセル４１７および４１５を用いる新しい導関数の方が、傾き切片の推定が向上する場合がある。例えば、ピクセル４２０に対応したテクセルのメモリアドレスは、ピクセル４１５および４１７間の導関数を得ることで予測できる。
【００４５】
垂直な方向において、ピクセル４２１に対応したテクセルのメモリアドレスは、ピクセル４１５および４１９間の導関数を得ることで計算できる。ピクセル４１９および４２１は、ファセット４２４上にある。
【００４６】
異なるファセット間で、曲面または推定のために、高次導関数を計算することができる。有限差分／商を使用できる。高次導関数は単に、ある点での導関数間の差を得て、その点でのピクセル間の距離で除算できる。例えば、２次導関数は次のように計算できる。
式３：ｄｅｒｉｖ２＿ｘ＝（ｄｅｒｉｖ＿ｘ１−ｄｅｒｉｖ＿ｘ０）／（ｓｑｒｔ（ｐｉｘｅｌｘ１，ｙ０２−ｐｉｘｅｌｘ０，ｙ０２））
２次導関数は、１次導関数および係数と結合し、ｙ＝ａｘ’’＋ｂｘ’＋ｘ０の形の数学的な１次方程式を形成できるが、この式中、ｘ’’は２次導関数、ｘ’は１次導関数、およびａ、ｂおよびｘ０は定数である。３次、４次導関数などの高次導関数は、特定の用途では便利な場合がある。指数パラメータ、正弦および余弦関数、ベッセル関数、ラプラス変数、およびその他の直交または非直交基底を用いている手法などその他の予測技術も適用できる。
【００４７】
図５は、一実施形態に係るプロセス５００を示すフローチャートである。動作５０１では、テクスチャマップのテクセルに対するメモリアドレスが受け取られ、これらのテクセルは、画像内のピクセルに対応する。動作５０２では、上記ピクセルがすべて３次元モデルの共通ファセットに対応すると判定される。動作５０３では、メモリに動作可能に連結された少なくとも１つのプロセッサを用いて、上記メモリアドレス内の差を上記画像内のピクセル間の距離により除算することで、導関数が計算される。動作５０４では、上記計算された導関数を用いて、別のピクセルの位置に情報がプリフェッチされる。プリフェッチのための上記導関数の計算は、上記ピクセルが同じファセットに対応するという判定に基づく。動作５０５では、導関数は、上記計算された導関数から、別の方向にそって計算される。動作５０８では、上記計算された導関数は、実質的に垂直なピクセルの位置に対して、情報をプリフェッチするのに用いられる。
【００４８】
図６は、一実施形態に係るプロセス６００を示すフローチャートである。動作６０１では、３次元モデルにアプリケーションのためのサンプリングされるテクスチャマップの第１のテクセルの第１のメモリアドレスが受け取られ、この第１のテクセルは、画像内の第１のピクセルに対応する。動作６０２では、上記テクスチャマップの第２のテクセルの第２のメモリアドレスが受け取られ、この第２のテクセルは、上記画像内の上記第２のピクセルに対応する。動作６０３では、上記第１および第２のピクセルが上記３次元モデルの共通ファセットに対応しているか否かが判定される。動作６０４では、メモリに動作可能に連結された少なくとも１つのプロセッサを用いて、上記第１および第２のメモリアドレス間の差を上記画像内の上記第１および第２のピクセルの位置の間の距離により除算することで、導関数は計算される。上記導関数の上記計算は、上記第１および第２ピクセルが同じファセットに対応しているという判定に基づく。動作６０５では、上記テクスチャマップの第３のピクセルの第３のメモリアドレスは、上記計算された導関数に基づいて予測される。動作６０６では、上記第３のメモリアドレスが読み込まれる。
【００４９】
上記の動作は、上記の順序で、もしくは必要に応じ異なる順序で実行されてもよい。上記の動作は、コンピュータまたはその他の機械で自動化されてもよく、ソフトウェア、ファームウェアでコードされるか、もしくは機械可読な命令としてハードコード化され、これらの命令を実行できる１つ以上のプロセッサで実行されてもよい。
【００５０】
図７は、種々の実施形態による装置を実施するのに適したハードウェアシステムの例を示す。このブロック図は、本発明の実施形態を実施するのに適した、パーソナルコンピュータ、ビデオゲームコンソールおよび関連するディスプレイ、携帯機器、携帯情報端末、またはその他のデジタル装置などのコンピュータシステム７００を示す。コンピュータシステム７００は、ソフトウェアアプリケーションおよび必要に応じて、オペレーティングシステムを実行する中央演算処理装置（ＣＰＵ）７０５を含む。ＣＰＵ７０５は、１つ以上の同種または異種の処理コアで構成されてもよい。メモリ７１０は、ＣＰＵ７０５によって使用されるためのアプリケーションおよびデータを記憶する。記憶装置７１５は、アプリケーションおよびデータのための不揮発性記憶装置およびその他のコンピュータ可読媒体を提供し、信号伝達および記憶媒体の他、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリ素子、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、Ｂｌｕ−ｒａｙ（登録商標）、ＨＤ−ＤＶＤ、またはその他の光学式記憶装置を含んでいてもよい。ユーザ入力装置７２０は、１人または複数のユーザからコンピュータシステム７００へユーザ入力を伝達し、その例として、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、静止またはビデオカメラ、および／またはマイクロフォンを含んでいてもよい。ネットワークインターフェース７２５は、コンピュータシステム７００に電子通信ネットワークを介して、その他のコンピュータシステムとの通信を可能とさせ、インターネットなどのローカルエリアネットワークおよびワイドエリアネットワークの有線または無線通信を含んでいてもよい。オーディオプロセッサ７３０は、ＣＰＵ７０５、メモリ７１０、および／または記憶装置７１５によって提供された命令および／またはデータからアナログまたはデジタル音声出力を生成するよう適合されている。ＣＰＵ７０５、メモリ７１０、データ記憶装置７１５、ユーザ入力装置７２０、ネットワークインターフェース７２５、およびオーディオプロセッサ７３０などコンピュータシステム７００の部品は、１つ以上のデータバス７３５を介して接続される。
【００５１】
グラフィックサブシステム７４０はさらに、データバス７３５およびコンピュータシステム７００の部品と接続される。グラフィックサブシステム７４０は、グラフィックプロセッシングユニット（ＧＰＵ）７４５およびグラフィックメモリ７５０を含む。グラフィックメモリ７５０は、出力画像の各ピクセルに対するピクセルデータを記憶するのに使用されるディスプレイメモリ（例えばフレームバッファ）を含む。グラフィックメモリ７５０は、ＧＰＵ７４５との個別の装置として接続され、かつ／もしくはメモリ７１０内に実装されるＧＰＵ７４５と同じ装置に統合されてもよい。ピクセルデータは、ＣＰＵ７０５から直接グラフィックメモリ７５０に提供されてもよい。あるいは、ＣＰＵ７０５は、ＧＰＵ７４５がそこから１つ以上の出力画像のピクセルデータを生成する、グラフィックメモリ７４５に所望の出力画像を定義するデータおよび／または命令を提供する。所望の出力画像を定義するデータおよび／または命令は、メモリ７１０および／またはグラフィックメモリ７５０に記憶されてもよい。一実施形態では、ＧＰＵ７４５は、場面のための形状、ライティング、シェーディング、テクスチャリング、モーション、および／またはカメラパラメータを定義する命令およびデータからの出力画像に対するピクセルデータを生成する３Ｄレンダリング機能を含む。ＧＰＵ７４５はさらに、シェーダプログラムを実行できる１つ以上のプログラム可能な実行単位を含む。
【００５２】
グラフィックサブシステム７４０は、ディスプレイ装置７５５に表示されるグラフィックメモリ７５０からの画像に対するピクセルデータを定期的に出力する。ディスプレイ装置７５５は、ＣＲＴ、ＬＣＤ、プラズマ、およびＯＬＥＤディスプレイを含む、コンピュータシステム７００からの信号に応答して、視覚情報を表示できる任意の装置であってもよい。コンピュータシステム７００は、ディスプレイ装置７５５にアナログまたはデジタル信号を提供できる。
【００５３】
種々の実施形態によれば、ＣＰＵ７０５は、１つ以上の処理コアを含む１つ以上の汎用マイクロプロセッサである。さらなる実施形態は、メディアおよびインタラクティブエンターテイメントアプリケーションなどの、高並列および計算集約型アプリケーションに特に適合されたマイクロプロセッサアーキテクチャを備えた１つ以上のＣＰＵ７０５を用いて実施されてもよい。
【００５４】
システムの部品は、ネットワークを介して接続されてもよく、このネットワークは、次の組み合わせのいずれであってもよい。インターネット、ＩＰネットワーク、イントラネット、ワイドエリアネットワーク（「ＷＡＮ」）、ローカルエリアネットワーク（「ＬＡＮ」）、仮想プライベートネットワーク（「ＶＰＮ」）、公衆交換電話網（「ＰＳＴＮ」）、または異なる実施形態において、本明細書に記載の装置間でのデータ通信をサポートするその他の種類のネットワーク。ネットワークは、光リンクを含む、有線および無線接続両方を含んでいてもよい。その他多くの例は、本開示を踏まえれば、当業者にとって可能であり、明らかであろう。本明細書での考察において、ネットワークは、具体的に言及しても、しなくてもよい。
【００５５】
先の明細書において、本発明は、先の明細書の具体的な実施形態を参照しながら説明されているが、本発明が先の明細書に限定されないことが当業者には理解されよう。先に開示された種々の特徴および態様は、個別または共同して用いてもよい。さらに、本発明は、本明細書のより広義の趣旨及び範囲から逸脱せずに、本明細書に記載されたものを越えて、如何なる数の環境及び用途においても利用され得る。
【００５６】
上記の方法、システム、および装置は、単なる例であることを意図していることに留意すべきである。種々の実施形態は、適宜種々の手順または部品を省略、変更または追加することがあることが強調されなければならない。例えば、他の実施形態において、上記方法は、上記の順序とは異なる順序で実施されてもよく、かつ種々の手順が追加、省略、または結合されてもよいことが理解されるであろう。また、特定の実施形態に関して説明された特徴は、その他種々の実施形態と結合してもよい。上記実施形態の異なる態様および要素は、同様の方法で結合してもよい。また、技術は発展するため、上記要素の多くは例であり、本発明の範囲を制限するものと解釈されるべきではないことが強調されるであろう。
【００５７】
上記実施形態の徹底した理解を期すために、説明には具体的な詳細が示されている。しかし、これらの具体的な詳細がなくても、上記実施形態が実施され得る当技術分野における当業者によって理解されるであろう。例えば、周知の回路、プロセス、アルゴリズム、構造、および技術は、上記実施形態を不明瞭にすることを避けるべく、その詳細は記載していない。
【００５８】
また、上記実施形態は、フローチャートまたはブロック図として図示されているプロセスとして説明されてもよい。それぞれが上記動作を連続プロセスとして説明してもよいが、上記動作の多くは、並列または同時に実行されうる。さらに、上記動作の順序は、並べ替えてもよい。プロセスは、図に含まれていない追加の手順を含んでいてもよい。
【００５９】
さらに、本明細書で開示されているように、「メモリ」または「メモリユニット」という言葉は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ＲＡＭ、コアメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、または情報を記憶するその他のコンピュータ可読媒体を含む、データを記憶する１つ以上の装置を表してもよい。「コンピュータ可読媒体」という言葉は、携帯または固定記憶装置、光記憶装置、無線チャネル、ＳＩＭカード、その他のスマートカード、および命令またはデータを記憶するか、含むか、または実行するその他種々の媒体を含んでいてもよいが、これらに限定されない。
【００６０】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせによって実施されてもよい。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実施されるとき、必要なタスクを実行するプログラムコードまたはコードセグメントは、記憶媒体などのコンピュータ可読媒体に記憶されてもよい。プロセッサは、上記の必要なタスクを実行してもよい。
【００６１】
いくつかの実施形態を説明してきたが、本発明の趣旨から逸脱することなく、種々の修正、代替構成、および同等を用いてもよい。例えば、上記の要素は単に大規模システムの部品であってもよく、その他の規則が優先するか、もしくは別の方法で本発明の用途を修正してもよい。また、上記の要素が考慮される前、最中または後に、多くの手順が実行されてもよい。従って、上記の説明は、本発明の範囲を制限するものとして受け取られるべきではない。
【図１】
2014529143.tif 000003
【図２】
2014529143.tif 000004
【図３】
2014529143.tif 000005
【図４】
2014529143.tif 000006
【図５】
2014529143.tif 000007
【図６】
2014529143.tif 000008
【図７】
2014529143.tif 000009
【国際調査報告】
2014529143.tif 000010
2014529143.tif 000011