(57)【要約】【課題】コンピュータシステムにおけるコンピュータグラフィックスに関連してテクスチャサンプリングを制御可能なシステムおよび方法を提供すること。【解決手段】様々な実施形態において、（１）モーションブラー、（２）異方性の表面反射を生成すること、（３）表面の自己シェーディングを生成すること、（４）レイキャストボリュームサンプリング、（４）自己シャドーイングを伴うボリュームレンダリング、および（５）自己シャドーイングを伴うボリュームレイキャストのための改良された機構を含め、３Ｄアクセラレータハードウェアが、レンダリングを行う際の現実感のレベルを大幅に向上させることができるようにするテクスチャサンプリングを制御するための改良された機構を提供する。これにより、既存のテクスチャサンプリング技術を補足する際に、テクスチャサンプリングのためのパラメータを置き換えや変更を行うことができる。【選択図】　　　　図４Ａ
2004021979.tif 000002
【特許請求の範囲】
【請求項１】
制御可能なテクスチャサンプリングを提供するための方法であって、
テクスチャマップのテクスチャサンプリングに関連して利用されるサンプリングフットプリントの少なくとも１つのパラメータを指定するステップと、
前記サンプリングフットプリントの前記指定されたパラメータに従って前記テクスチャマップのテクスチャサンプリングを行うステップと
を具えたことを特徴とする方法。
【請求項２】
前記指定するステップは、
（１）前記少なくとも１つの標準パラメータに関する少なくとも１つのオフセット値を指定することによって少なくとも１つの標準のパラメータを変更するステップ、および（２）少なくとも１つの標準のパラメータを少なくとも１つの置換パラメータで置き換えるステップの少なくともどちらかを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記変更するステップは、
前記オフセット値と前記標準のパラメータを加算するステップ、前記オフセット値と前記標準のパラメータを乗算するステップ、前記オフセット値と前記標準のパラメータのどちらかを指数として適用するステップ、前記オフセット値と前記標準のパラメータを減算するステップ、および前記標準のパラメータおよび前記オフセット値に基づいて事前定義された数学的関数を実行するステップのうち少なくとも１つを含むことを特徴とする請求項２記載の方法。
【請求項４】
前記サンプリングフットプリントは、
ポイントサンプリングプロセス、バイリニアフィルタリングプロセス、ＭＩＰマッピングプロセス、異方性フィルタリングプロセス、およびアンチエイリアシングプロセスのうち少なくとも１つからのサンプリングフットプリントであることを特徴とする請求項１記載の方法。
【請求項５】
前記指定するステップは、前記テクスチャサンプリングに関連して頂点ごとおよびピクセルごとの少なくともどちらかで、前記少なくとも１つのパラメータを指定するステップを含むことを特徴とする請求項１記載の方法。
【請求項６】
前記テクスチャサンプリングを反復して適用するステップをさらに含むことを特徴とする請求項５記載の方法。
【請求項７】
前記指定するステップは、前記サンプリングフットプリントのステップサイズおよび向きの少なくともどちらかを指定するステップを含むことを特徴とする請求項１記載の方法。
【請求項８】
前記指定するステップは、ｕ方向でサンプルのｄｕ間隔を指定するステップ、およびｖ方向でサンプルのｄｖ間隔を指定するステップの少なくともどちらかを含むことを特徴とする請求項５記載の方法。
【請求項９】
前記指定するステップは、Δｕ値、Δｖ値、およびΔｗ値のうち少なくとも１つを指定するステップを含むことを特徴とする請求項５記載の方法。
【請求項１０】
前記指定するステップは、バイリニアフィルタリング計算に関連して使用するためにαａ値とαｂ値のどちらかを指定するステップを含むことを特徴とする請求項１記載の方法。
【請求項１１】
前記サンプリングフットプリントは、異方性フィルタリングサンプリングフットプリントであることを特徴とする請求項１記載の方法。
【請求項１２】
前記少なくとも１つのパラメータは、異方性フィルタカーネルサンプルの方向と間隔の少なくともどちらかを含むことを特徴とする請求項１１記載の方法。
【請求項１３】
前記指定されたパラメータに従う前記テクスチャマップの前記テクスチャサンプリングを行うステップは、
前記テクスチャサンプリングからもたらされるピクセル空間の少なくとも１つの視覚的効果を通知し、前記少なくとも１つの視覚的効果は、ブラーリング（ｂｌｕｒｒｉｎｇ）効果、ブロッキーネス（ｂｌｏｃｋｉｎｅｓｓ）効果、テクスチャスイミング（ｓｗｉｍｍｉｎｇ）効果、ピクセルポッピング（ｐｏｐｐｉｎｇ）効果、時間的エイリアシング効果、テクスチャシマリング（ｓｈｉｍｍｅｒｉｎｇ）効果、テクスチャクローリング（ｃｒａｗｌｉｎｇ）効果、およびストリーキング効果のうち少なくとも１つを含むことを特徴とする請求項１記載の方法。
【請求項１４】
前記指定されたパラメータに従う前記テクスチャマップの前記テクスチャサンプリングを行うステップは、
三角形表面にテクスチャを与えて、ライティング（ｌｉｇｈｔｉｎｇ）効果、バンプ（ｂｕｍｐ）マッピング効果、ブラーリング効果、反射ブラーリング効果、フレネル（Ｆｒｅｓｎｅｌ）ブラーリング効果、マーブリング（ｍａｒｂｌｉｎｇ）効果、ムービングウォータ（ｍｏｖｉｎｇ　ｗａｔｅｒ）効果、線形フォギング（ｆｏｇｇｉｎｇ）効果、指数的フォギング効果、範囲ベースのフォギング効果、透明効果、半透明効果、曲面効果、シャープシャドーイング（ｓｈａｒｐ　ｓｈａｄｏｗｉｎｇ）効果、ファジー（ｆｕｚｚｙ）シャドーイング効果、およびボリュームテクスチャリング効果のうち少なくとも１つを実現することを特徴とする請求項１記載の方法。
【請求項１５】
少なくとも１つのパラメータを前記指定するステップは、
モーションブラー（ｍｏｔｉｏｎ　ｂｌｕｒ）を印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
反復される頂点レベルのデータを適用して前記サンプリングフットプリントの方向ベクトルを制御するステップをさらに含むことを特徴とする請求項１記載の方法。
【請求項１６】
少なくとも１つのパラメータを前記指定するステップは、
異方性表面反射、散乱ライティング、および鏡面ライティングの近似のうち少なくとも１つを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向の頂点ごとの指定とピクセルごとの指定のどちらかを適用するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１７】
少なくとも１つのパラメータを前記指定するステップは、
表面自己シャドーイングを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向のピクセルごとの指定を適用するステップをさらに含むことを特徴とする請求項１記載の方法。
【請求項１８】
少なくとも１つのパラメータを前記指定するステップは、
表面自己シャドーイングを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向のピクセルごとの指定を適用するステップをさらに含むことを特徴とする請求項１記載の方法。
【請求項１９】
前記指定するステップは、ネルソンマックス（Ｎｅｌｓｏｎ　Ｍａｘ）の水平マッピングの微分計算に関する制御パラメータを指定するステップをさらに含むことを特徴とする請求項１８記載の方法。
【請求項２０】
少なくとも１つのパラメータを前記指定するステップは、
レイキャスト（ｒａｙ−ｃａｓｔ）ボリュームサンプリングを適用するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、前記レイキャストボリュームサンプリングは、ボリュームをスライスして視線方向に比較的直交なポリゴンにするステップを含み、
前記サンプリングフットプリントの前記サンプリング方向を指定するステップをさらに含み、前記テクスチャサンプリングを行うステップは、前記指定されたサンプリング方向を反復して適用するステップを含むことを特徴とする請求項１記載の方法。
【請求項２１】
投射された光線が現行のｚバッファと交差したとき、および飽和が生じたときのどちらかを検出するステップをさらに含むことを特徴とする請求項２０記載の方法。
【請求項２２】
少なくとも１つのパラメータを前記指定するステップは、
従来のスライススタイルまたはスプラットスタイルのボリュームレンダリングと組み合わせて自己シャドーイングを伴うボリュームレンダリングを適用するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向の頂点ごとの指定を適用するステップをさらに含むことを特徴とする請求項１記載の方法。
【請求項２３】
前記指定するステップは、ＡＰＩ構成要素を介して前記サンプリングフットプリントの方向ベクトルを指定するステップを含むことを特徴とする請求項１記載の方法。
【請求項２４】
請求項１記載の前記制御可能なテクスチャサンプリングを提供することを特徴とするオペレーティングシステム、ドライバコード、アプリケーションプログラミングインターフェース、ツールキット、およびコプロセッシングデバイスのうち少なくとも１つ。
【請求項２５】
請求項１記載の方法を行うためのコンピュータ実行可能命令を搬送することを特徴とする変調されたデータ信号。
【請求項２６】
請求項１記載の方法を行うための手段を備えることを特徴とする計算デバイス。
【請求項２７】
方法を行うためのコンピュータ実行可能命令を備えた少なくとも１つのコンピュータ実行可能モジュールが記憶されている制御可能なテクスチャサンプリングを提供するためのコンピュータ可読媒体であって、
前記方法は、
テクスチャマップのテクスチャサンプリングに関連して利用されるサンプリングフットプリントの少なくとも１つのパラメータを指定するステップと、
前記サンプリングフットプリントの前記指定されたパラメータに従って前記テクスチャマップのテクスチャサンプリングを行うことを開始するステップとを含むことを特徴とする媒体。
【請求項２８】
前記指定するステップは、
（１）前記少なくとも１つの標準パラメータに関する少なくとも１つのオフセット値を指定することによって少なくとも１つの標準のパラメータを変更するステップ、および（２）少なくとも１つの標準のパラメータを少なくとも１つの置換パラメータで置き換えるステップの少なくともどちらかを含むことを特徴とする請求項２７記載のコンピュータ可読媒体。
【請求項２９】
前記変更するステップは、
前記オフセット値と前記標準のパラメータを加算するステップ、前記オフセット値と前記標準のパラメータを乗算するステップ、前記オフセット値と前記標準のパラメータのどちらかを指数として適用するステップ、前記オフセット値と前記標準のパラメータを減算するステップ、および前記標準のパラメータおよび前記オフセット値に基づいて事前定義された数学的関数を実行するステップのうち少なくとも１つを含むことを特徴とする請求項２８記載の少なくとも１つのコンピュータ可読媒体。
【請求項３０】
前記サンプリングフットプリントは、
ポイントサンプリングプロセス、バイリニアフィルタリングプロセス、ＭＩＰマッピングプロセス、異方性フィルタリングプロセス、およびアンチエイリアシングプロセスのうち少なくとも１つからのサンプリングフットプリントであることを特徴とする少なくとも１つの請求項２７記載のコンピュータ可読媒体。
【請求項３１】
前記指定するステップは、前記テクスチャサンプリングに関連して頂点ごと、およびピクセルごとの少なくともどちらかで前記少なくとも１つのパラメータを指定するステップを含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項３２】
前記テクスチャサンプリングを反復して適用するステップをさらに含むことを特徴とする請求項３１記載の少なくとも１つのコンピュータ可読媒体。
【請求項３３】
前記指定するステップは、前記サンプリングフットプリントのステップサイズおよび向きの少なくともどちらかを指定するステップを含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項３４】
前記指定するステップは、ｕ方向でサンプルのｄｕ間隔を指定するステップ、およびｖ方向でサンプルのｄｖ間隔を指定するステップの少なくともどちらかを含むことを特徴とする請求項３１記載の少なくとも１つのコンピュータ可読媒体。
【請求項３５】
前記指定するステップは、Δｕ値、Δｖ値、およびΔｗ値のうち少なくとも１つを指定するステップを含むことを特徴とする請求項３１記載の少なくとも１つのコンピュータ可読媒体。
【請求項３６】
前記指定するステップは、バイリニアフィルタリング計算に関連して使用するためにαａ値とαｂ値のどちらかを指定するステップを含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項３７】
前記サンプリングフットプリントは、異方性フィルタリングサンプリングフットプリントであることを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項３８】
前記少なくとも１つのパラメータは、異方性フィルタカーネルサンプルの方向と間隔の少なくともどちらかを含むことを特徴とする請求項３７記載の少なくとも１つのコンピュータ可読媒体。
【請求項３９】
前記指定されたパラメータに従う前記テクスチャマップのテクスチャサンプリングを前記開始するステップによって開始されたテクスチャサンプリングは、前記テクスチャサンプリングからもたらされるピクセル空間の少なくとも１つの視覚的効果を通知し、
前記少なくとも１つの視覚的効果は、ブラーリング効果、ブロッキーネス効果、テクスチャスイミング効果、ピクセルポッピング効果、時間的エイリアシング効果、テクスチャシマリング効果、テクスチャクローリング効果、およびストリーキング効果のうち少なくとも１つを含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４０】
前記指定されたパラメータに従う前記テクスチャマップのテクスチャサンプリングを前記開始するステップによって開始された前記テクスチャサンプリングは、
三角形表面にテクスチャを与えて、ライティング効果、バンプマッピング効果、ブラーリング効果、反射ブラーリング効果、フレネルブラーリング効果、マーブリング効果、ムービングウォータ効果、線形フォギング効果、指数的フォギング効果、範囲ベースのフォギング効果、透明効果、半透明効果、曲面効果、シャープシャドーイング効果、ファジーシャドーイング効果、およびボリュームテクスチャリング効果のうち少なくとも１つを実現することを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４１】
少なくとも１つのパラメータを前記指定するステップは、
モーションブラーを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
反復される頂点レベルのデータを適用して前記サンプリングフットプリントの方向ベクトルを制御するステップをさらに含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４２】
前記少なくとも１つのパラメータを前記指定するステップは、
異方性表面反射、散乱ライティング、および鏡面ライティングの近似のうち少なくとも１つを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向の頂点ごとの指定とピクセルごとの指定のどちらかを適用するステップをさらに含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４３】
少なくとも１つのパラメータを前記指定するステップは、
表面自己シャドーイングを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向のピクセルごとの指定を適用するステップをさらに含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４４】
少なくとも１つのパラメータを前記指定するステップは、
表面自己シャドーイングを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向のピクセルごとの指定を適用するステップをさらに含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４５】
前記指定するステップは、ネルソンマックスの水平マッピングの微分計算に関する制御パラメータを指定するステップをさらに含むことを特徴とする請求項４４記載の少なくとも１つのコンピュータ可読媒体。
【請求項４６】
少なくとも１つのパラメータを前記指定するステップは、
レイキャストボリュームサンプリングを適用するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、前記レイキャストボリュームサンプリングは、ボリュームをスライスして視線方向に比較的直交なポリゴンにするステップを含み、
前記サンプリングフットプリントの前記サンプリング方向を指定するステップをさらに含み、テクスチャサンプリングを前記開始するステップによって開始された前記テクスチャサンプリングは、前記指定されたサンプリング方向を反復して適用するステップを含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４７】
投射された光線が現行のｚバッファと交差したとき、および飽和が生じたときのどちらかを検出するステップをさらに含むことを特徴とする請求項４６記載の少なくとも１つのコンピュータ可読媒体。
【請求項４８】
少なくとも１つのパラメータを前記指定するステップは、
従来のスライススタイルまたはスプラットスタイルのボリュームレンダリングと組み合わせて自己シャドーイングを伴うボリュームレンダリングを適用するサンプリングフットプリントの少なくとも１つのパラメータを指定するステップを含み、
前記サンプリングフットプリントのサンプリング方向の頂点ごとの指定を適用するステップをさらに含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項４９】
前記指定するステップは、アプリケーションプログラミングインターフェース（ＡＰＩ）構成要素を介して前記サンプリングフットプリントの方向ベクトルを指定するステップを含むことを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項５０】
前記モジュールが、アプリケーションプログラミングインターフェース（ＡＰＩ）、ドライバコード、オペレーティングシステム、およびアプリケーションのうち少なくとも１つに含まれることを特徴とする請求項２７記載の少なくとも１つのコンピュータ可読媒体。
【請求項５１】
制御可能なテクスチャサンプリング命令に関連して使用するためのコプロセッシングデバイスであって、
テクスチャマップのテクスチャサンプリングに関連して利用されるサンプリングフットプリントの少なくとも１つのパラメータの指定を受け取るように動作することが可能な入力構成要素と、
前記サンプリングフットプリントの前記指定されたパラメータに従って前記テクスチャマップに対してテクスチャサンプリングを行うように動作することが可能なテクスチャサンプリング構成要素と
を具えたことを特徴とするデバイス。
【請求項５２】
前記入力構成要素は、
（１）少なくとも１つの標準のパラメータに関する少なくとも１つのオフセット値の指定を受け取ることによって前記少なくとも１つの標準のパラメータを変更するための命令を受け取る第１の入力構成要素、および（２）少なくとも１つの標準のパラメータを少なくとも１つの置換パラメータで置き換えるための命令を受け取る第２の入力構成要素の少なくともどちらかを含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項５３】
変更するための命令を受け取る前記第１の入力構成要素は、
前記オフセット値と前記標準のパラメータを加算するための命令を受け取る第３の入力構成要素、前記オフセット値と前記標準のパラメータを乗算するための命令を受け取る第４の入力構成要素、前記オフセット値と前記標準のパラメータのどちらかを指数として適用するための命令を受け取る第５の入力構成要素、前記オフセット値と前記標準のパラメータを減算するための命令を受け取る第６の入力構成要素、および前記標準のパラメータおよび前記オフセット値に基づいて事前定義された数学的関数を実行するための命令を受け取る第７の入力構成要素のうち少なくとも１つを含むことを特徴とする請求項５２記載のコプロセッシングデバイス。
【請求項５４】
前記サンプリングフットプリントは、
ポイントサンプリングプロセス、バイリニアフィルタリングプロセス、ＭＩＰマッピングプロセス、異方性フィルタリングプロセス、およびアンチエイリアシングプロセスのうち少なくとも１つからのサンプリングフットプリントであることを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項５５】
指定するための命令を受け取る前記入力構成要素は、
前記テクスチャサンプリング構成要素に関連して頂点ごと、およびピクセルごとの少なくともどちらかで前記少なくとも１つのパラメータを指定するための命令を受け取る構成要素を含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項５６】
前記テクスチャサンプリング構成要素の前記テクスチャサンプリングを反復して適用するステップをさらに含むことを特徴とする請求項５５記載のコプロセッシングデバイス。
【請求項５７】
指定するための命令を受け取る前記入力構成要素は、前記サンプリングフットプリントのステップサイズおよび向きの少なくともどちらかを指定するための命令を受け取る構成要素を含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項５８】
指定するための命令を受け取る前記入力構成要素は、ｕ方向でサンプルのｄｕ間隔を指定するための命令を受け取る第１の入力構成要素、およびｖ方向でサンプルのｄｖ間隔を指定するための命令を受け取る第２の入力構成要素の少なくともどちらかを含むことを特徴とする請求項５５記載のコプロセッシングデバイス。
【請求項５９】
指定するための命令を受け取る前記入力構成要素は、Δｕ値、Δｖ値、およびΔｗ値のうち少なくとも１つを指定するための命令を受け取る構成要素を含むことを特徴とする請求項５５記載のコプロセッシングデバイス。
【請求項６０】
指定するための命令を受け取る前記入力構成要素は、バイリニアフィルタリング計算に関連して使用するためにαａ値とαｂ値のどちらかを指定するための命令を受け取る構成要素を含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６１】
前記サンプリングフットプリントは、異方性フィルタリングサンプリングフットプリントであることを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６２】
前記少なくとも１つのパラメータは、異方性フィルタカーネルサンプルの方向と間隔の少なくともどちらかを含むことを特徴とする請求項６１記載のコプロセッシングデバイス。
【請求項６３】
前記指定されたパラメータに従う前記テクスチャサンプリング構成要素による前記テクスチャマップの前記テクスチャサンプリングは、
前記テクスチャサンプリングからもたらされるピクセル空間の少なくとも１つの視覚的効果を通知し、前記少なくとも１つの視覚的効果は、ブラーリング効果、ブロッキーネス効果、テクスチャスイミング効果、ピクセルポッピング効果、時間的エイリアシング効果、テクスチャシマリング効果、テクスチャクローリング効果、およびストリーキング効果のうち少なくとも１つを含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６４】
前記指定されたパラメータに従う前記テクスチャサンプリング構成要素による前記テクスチャマップの前記テクスチャサンプリングは、
三角形表面にテクスチャを与えて、ライティング効果、バンプマッピング効果、ブラーリング効果、反射ブラーリング効果、フレネルブラーリング効果、マーブリング効果、ムービングウォータ効果、線形フォギング効果、指数的フォギング効果、範囲ベースのフォギング効果、透明効果、半透明効果、曲面効果、シャープシャドーイング効果、ファジーシャドーイング効果、およびボリュームテクスチャリング効果のうち少なくとも１つを実現することを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６５】
少なくとも１つのパラメータを指定するための命令を受け取る前記入力構成要素は、
モーションブラーを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するための命令を受け取る第１の入力構成要素を含み、かつ反復される頂点レベルのデータを適用して前記サンプリングフットプリントの方向ベクトルを制御するための命令を受け取る第２の入力構成要素をさらに含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６６】
少なくとも１つのパラメータを指定するための命令を受け取る前記入力構成要素は、
異方性表面反射、散乱ライティング、および鏡面ライティングの近似のうち少なくとも１つを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するための命令を受け取る第１の入力構成要素を含み、
前記サンプリングフットプリントのサンプリング方向の頂点ごとの指定とピクセルごとの指定のどちらかを適用するための命令を受け取る第２の入力構成要素をさらに含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６７】
少なくとも１つのパラメータを指定するための命令を受け取る前記入力構成要素は、
表面自己シャドーイングを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するための命令を受け取る第１の入力構成要素を含み、
前記サンプリングフットプリントのサンプリング方向のピクセルごとの指定を適用するための命令を受け取る第２の入力構成要素をさらに含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６８】
少なくとも１つのパラメータを指定するための命令を受け取る前記入力構成要素は、
表面自己シャドーイングを印加するサンプリングフットプリントの少なくとも１つのパラメータを指定するための命令を受け取る第１の入力構成要素を含み、
前記サンプリングフットプリントのサンプリング方向のピクセルごとの指定を適用するための命令を受け取る第２の入力構成要素をさらに含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項６９】
指定するための命令を受け取る前記入力構成要素は、ネルソンマックスの水平マッピングの微分計算に関する制御パラメータを指定するための命令を受け取る構成要素をさらに含むことを特徴とする請求項６８記載のコプロセッシングデバイス。
【請求項７０】
少なくとも１つのパラメータを指定するための命令を受け取る前記入力構成要素は、レイキャストボリュームサンプリングを適用するサンプリングフットプリントの少なくとも１つのパラメータを指定するための命令を受け取る第１の入力構成要素を含み、
前記レイキャストボリュームサンプリングは、ボリュームをスライスして視線方向に比較的直交なポリゴンにするステップを含み、前記サンプリングフットプリントの前記サンプリング方向を指定するための命令を受け取る第２の入力構成要素をさらに含み、
前記テクスチャサンプリング構成要素は、前記指定されたサンプリング方向を反復して適用することを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項７１】
投射された光線が現行のｚバッファと交差したとき、および飽和が生じたときのどちらかを検出する検出構成要素をさらに含むことを特徴とする請求項７０に記載のコプロセッシングデバイス。
【請求項７２】
少なくとも１つのパラメータを指定するための命令を受け取る前記入力構成要素は、
従来のスライススタイルまたはスプラットスタイルのボリュームレンダリングと組み合わせて自己シャドーイングを伴うボリュームレンダリングを適用するサンプリングフットプリントの少なくとも１つのパラメータを指定するための命令を受け取る第１の入力構成要素を含み、
前記サンプリングフットプリントのサンプリング方向の頂点ごとの指定を適用するための命令を受け取る第２の入力構成要素をさらに含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項７３】
指定するための命令を受け取る前記入力構成要素は、
アプリケーションプログラミングインターフェース（ＡＰＩ）、ドライバコード、オペレーティングシステム、およびアプリケーションのうち少なくとも１つから前記サンプリングフットプリントの方向ベクトルを指定するための命令を受け取る構成要素を含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項７４】
少なくとも１つのグラフィックス処理ユニット（ＧＰＵ）を含むことを特徴とする請求項５１記載のコプロセッシングデバイス。
【請求項７５】
コンピュータ実行可能命令を備えた１つまたは複数のコンピュータ実行可能モジュールを記憶している制御可能なテクスチャサンプリングを提供するためのコンピュータ可読媒体であって、
前記モジュールは、
テクスチャマップのテクスチャサンプリングに関連して利用されるサンプリングフットプリントの少なくとも１つのパラメータを指定するための手段と、
前記サンプリングフットプリントの前記指定されたパラメータに従って前記テクスチャマップのテクスチャサンプリングを開始するための手段と
を具えたことを特徴とする媒体。
【請求項７６】
制御可能なテクスチャサンプリング命令に関連して使用するためのコプロセッシングデバイスであって、
テクスチャマップのテクスチャサンプリングに関連して利用されるサンプリングフットプリントの少なくとも１つのパラメータの指定を受け取るための手段と、
前記サンプリングフットプリントの前記指定されたパラメータに従って前記テクスチャマップのテクスチャサンプリングを行うための手段と
を具えたことを特徴とするデバイス。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関連してテクスチャサンプリングを提供するためのシステムおよび方法を対象とする。より詳細には、本発明は、制御可能なテクスチャサンプリングを提供するためのシステムおよび方法を対象とする。
【０００２】
【従来の技術】
本特許の開示の一部分は、著作権保護の対象となる資料を含む可能性がある。著作権所有者は、特許商標事務所の特許ファイルまたは特許記録に現れる本特許を何人が複写することにも異議はないが、そうでない場合は何であれ、すべての著作権を保留する。著作権（ｃ）２００１年、マイクロソフトコーポレーションという表示が、本特許に適用される。
【０００３】
テクスチャマッピングは、色又はテクスチャを有する信号を幾何形状の上にイメージングして、粗い三角形メッシュ上に詳細な外観を与えることができる。テクスチャを使用することは、一般に、担体幾何形状を精緻化して頂点ごとに信号を表すことより効率的である。ラスタ化ハードウェアが、長年にわたって基本的なテクスチャマッピングをサポートしてきたが、このハードウェアは、最近、より強力な機能を提供するのを開始した。
【０００４】
テクスチャマッピングプロセスの概要を図１に示している。テクセル（ｔｅｘｅｌ）２０２を有するテクスチャマップ２００を所与として、テクスチャマッピングは、メッシュの三角形２１０に、その三角形の何らかの幾何形状構成に従ってテクスチャマップ２００の信号を印加し、かつ／またはテクセル２０２をピクセル２２２にマップするシャドーイング（ｓｈａｄｏｗｉｎｇ）、ライティング（ｌｉｇｈｔｉｎｇ）などの何らかのさらなる変形を提供する。
【０００５】
テクスチャマッピングは、エイリアシングが回避されるべきである限り、ナイキスト（Ｎｙｑｕｉｓｔ）理論が関与する問題であり、ナイキスト理論によれば、アナログ波形を正確に再現するのに、アナログ信号をその最高周波数の少なくとも２倍の周波数でサンプリングして、その信号をデジタル領域において高いレベルの精度で表現することができなければならない。次に、デジタル−アナログ変換技術を利用して元のアナログ信号を正確に再構成する。不十分なサンプリング速度が使用された場合、結果は、エイリアシングであり、エイリアシングは、より低い周波数の雑音として現れる、誤ったサンプリングの行われた高周波の情報である。
【０００６】
テクスチャマッピングに関連してもサンプリング問題が生じる。テクスチャマッピングのプロセスは、スクリーンピクセルに対するテクスチャマップをサンプリングし、可能な限り、テクスチャマップデータは、最も高い周波数の情報を包含するのに十分なだけ高いサンプリング速度でサンプリングされていなければならない。これに関して、通常、ある数のピクチャ要素（ピクセル）で表現されるスクリーンオブジェクトは、異なる数のテクスチャ要素（テクセル）を有するテクスチャマップを使用する。テクスチャマップが、ピクセル空間より多くのテクセルを有するとき、単一のピクセルが、複数のテクセルにマップされる可能性があり、またテクスチャマップが、ピクセル空間より少ないテクセルを有するとき、複数のピクセルが、単一のテクセルにマップされる可能性がある。テクスチャ空間とピクチャ空間の間に正確なマッピングが存在しないとき、表示品質の問題が生じる可能性がある。
【０００７】
実際、テクスチャマップは、適切なイメージの詳細を指定されたピクセルエリアに効果的にマップすることができないか、または反対に、より少ないピクセルエリアが、より大きい／より豊富なテクスチャマップからのすべてのテクスチャの詳細を使用することができない可能性がある。
【０００８】
具体的には、テクスチャマップが、マップが行われるピクセルエリアと比べて小さすぎるケースでは、同一のテクセルが、隣接するピクセルにマップされ、これにより、イメージを見るとき、ブロッキーネス効果（ｂｌｏｃｋｉｎｅｓｓ　ｅｆｆｅｃｔ）が生じる。もう一方のケースで、複数のテクセルが、同一のピクセルにマップされる場合、所与のピクセルにマップされるのが可能なグループのテクセルからどのテクセルが実際にテクスチャマップから選択されて、そのピクセルに印加されるかは、しばしば、早い者勝ちである。したがって、これは、アルゴリズムに依存するプロセスであり、テクスチャスイミング（ｓｗｉｍｍｉｎｇ）およびテクスチャポッピング（ｐｏｐｐｉｎｇ）として知られるアーチファクトがもたらされる可能性があり、この両方とも、カメラが動くとき非常に目立つ。さらに、ピクセルとテクセルの間のマッピングに関して実質的に同様の、または同一の数のピクセルおよびテクセルが存在する場合でさえ、レンダリングに先立ってテクセルに適用される何らかの変形または機能が存在する可能性があり、その場合、何らかのアルゴリズムが、ピクセルデータがテクセルデータとの関係でどこから来なければならないかをやはり、決定しなければならない。
【０００９】
生じる可能性がある問題を例示するため、テクセルの数がピクセルの数より多いケースを次のように考えることができる。２つの二等辺三角形を含む３次元（３Ｄ）シーンに１００×１００ピクセルの正方形のビルボード（ｂｉｌｌｂｏａｒｄ）表面が存在するものと想定する。２００の水平のレッドのストライプおよびブルーのストライプを含むテクスチャマップを１００×１００ピクセル正方形エリアの上に印加した場合、テクスチャの２００のストライプのすべては、ビルボードに印加された後、区別されない可能性がある。というのは、このテクスチャは、印加される先のピクセルエリアより多いサンプルを有するからである。中間テクスチャデータの一部が、マッピングで使用されず、基本的に無視される。
【００１０】
自らの３Ｄの視点がビルボードの上で動くにつれ、例えば、ゲームでナビゲートしている場合、ピクセルポッピングと呼ばれる現象が生じ、この現象は、テクスチャのストライプが、ビルボードのピクセルと揃ったり、ずれたりする結果である。また、これは、シーンの詳細を記述するのにテクスチャサンプリング速度が不十分であるケースである。さらに、これは、もたらされる可能性がある１つのタイプのアーチファクトを例示するものである。というのも、他のタイプのアーチファクトも、不良なテクスチャサンプリングからもたらされる可能性があるからである。
【００１１】
不十分なテクスチャサンプリング速度によって生じさせられるレンダリングアーチファクトを最小限に抑えるいくつかの手法が、概して、フィルタリングおよび再サンプリングの形態で存在する。ポイントサンプリングのような簡単なテクスチャリング方法で使用される２つのフィルタ方法は、テクスチャサンプリング方法を変更して以上に述べた問題を回避するのを助けるマグニフィケーション（Ｍａｇｎｉｆｉｃａｔｉｏｎ）およびミニフィケーション（Ｍｉｎｉｆｉｃａｔｉｏｎ）である。
【００１２】
ミニフィケーションアルゴリズムは、複数のテクセルが単一のピクセルにマップされる可能性があるケースで使用され、ピクセルにマップされる可能性があるグループのテクセルのなかから最適のテクセルを選択する。マグニフィケーション技法は、複数のピクセルが単一のテクセルにマップされる可能性があるとき使用され、単一のテクセルを複数のピクセルにマップする。ポイントサンプリング、バイリニア（ｂｉｌｉｎｅａｒ）フィルタリング、トライリニア（ｔｒｉｌｉｎｅａｒ）ＭＩＰマッピング、異方性ファイリングおよびアンチエイリアシングを含め、テクスチャを印加するための速度および品質の異なる多くの方法が存在する。
【００１３】
表面にテクスチャを印加する最も基本的なやり方は、「最近接（ｎｅａｒｅｓｔ　ｎｅｉｇｈｂｏｒ）」サンプリング方法を使用するポイントサンプリングである。レンダラ（ｒｅｎｄｅｒ）は、あるテクスチャを取り出すとき、ピクセルの座標（ピクセル中心）に最も近接してマッピングされる（ｕ，ｖ）座標を有するテクスチャマップからテクスチャサンプルを取り込み、そのサンプルをピクセルに印加する。この手法を図２Ａに示しており、図２Ａでは、ピクセル空間からテクセル空間へのマッピングの関係のある位置が、位置Ｐ１にある。この場合、最も近接したテクセルはＴ１であるので、Ｔ１が選択される。この手法は、テクスチャメモリから読み取られる必要のあるテクセルの数の点で最も少ない量のメモリ帯域幅しか、すなわち、１ピクセル当り１つしか必要としないが、結果は、しばしば、テクスチャを記述するのにサンプル、すなわち、スクリーンピクセルが不十分であることに起因して前述したアーチファクトを生じさせる。ただし、第１世代のパーソナルコンピュータ（ＰＣ）３Ｄハードウェアでさえ、以上のサンプリング問題を片付けるのを助ける、または少なくともある程度、隠すのを助ける、すなわち、バイリニアフィルタリングを利用することによる機能を有していた。
【００１４】
テクスチャ上で最近接のものをただ取り込むの代わりに、バイリニアフィルタリングは、ピクセルの中心に最も近接した４つのサンプルを読み取り、色の値の重み付けされた平均を最終の色の値として使用する。したがって、図２Ｂに示すとおり、Ｔ１、Ｔ２、Ｔ３、およびＴ４の重み付けされた平均が取られ、この重みは、ピクセルの中心から４つのテクセルの中心までの距離に基づく。グラフィックス処理の分野の技術者に周知のバイリニアフィルタリングに関する例としての方程式は、以下のとおりである。
ｃａ＝ｐｉ，ｊ・α＋（ｐｉ，ｊ＋ｌ）・（ｌ−αａ）
ｃｂ＝ｐｉ＋ｌ，ｊ・α＋（ｐｉ＋ｌ，ｊ＋ｌ）・（ｌ−αａ）
Ｆ＝ｌｒｐ（ｃａ，ｃｂ）・αｂ
【００１５】
ｌｒｐは、今日のグラフィックス処理ユニット（ＧＰＵ）によって容易に理解される１次補間関数である。視覚上の最終的な効果は、ポイントサンプリングで見られるテクスチャアーチファクトの相当な量をぼやけさせることであるが、単一のテクスチャマップを使用して機能する４タップのフィルタに過ぎないため、バイリニアフィルタリングの有効性は限られている。
【００１６】
テクスチャイメージ品質を向上させる別の手法は、レンダラが、元のテクスチャの複数のコピーを作成し、また連続する各ＭＩＰマップが、前のもののちょうど半分の解像度であるＭＩＰマッピングとして知られる技術である。これは、実質的に、標準の２つの座標（ｕ，ｖ）が存在するが、どのマップの解像度がマップが行われる先のピクセルエリアに最もよくマッチするかに基づき、どのＭＩＰマップを選択すべきかを測定するのに使用される第３の座標ｄも存在する、ある種の３Ｄテクスチャになる。戦闘機が、ビューカメラに近い場合、非常に詳細なテクスチャマップが選択されるが、その飛行機が遠くに飛び去るにつれ、順々により小さく、それほど詳細ではないマップが使用される。
【００１７】
ｄ座標が増大するにつれ、順々に小さいＭＩＰマップが使用される。ｄ座標の導出は、複雑であり、実施形態に依存する傾向があるが、一般に、カバーされるべきピクセルエリアに基づき、特定のＭＩＰマップの選択から、どれだけのテクスチャマグニフィケーションまたはテクスチャミニフィケーションがもたらされるかを計算することに関する。したがって、最小の量のテクスチャマグニフィケーションおよびテクスチャミニフィケーションを伴うＭＩＰマップが、この方法によって選択される。図２Ｃに示すとおり、ＭＩＰマッピングの問題は、ピクセルレンディション（ｒｅｎｄｉｔｉｏｎ）２２０において最もよくピクセルの数を表すのにどのテクスチャ２００ａ、２００ｂ、２００ｃ等を利用するかを選択する問題である。
【００１８】
アプリケーションがＭＩＰマップを使用することができるいくつかの異なるやり方が存在し、そのやり方は、しばしば、グラフィックスハードウェアサポートに依存する。一部のケースでは、アプリケーションが、（Ａ）マップが行われる先のピクセルに最もよく対応する単一のマップを選択し、（Ｂ）そのマップの中のテクセルにバイリニアフィルタリングを適用し、次に（Ｃ）、結果の平均されたテクセルを対応するピクセルに印加するのを選択することができる。ただし、ＭＩＰマッピングの抱える視覚上の問題が、シーンの中で動いているとき、マップの境界で生じる可能性がある。例えば、ゲームの中で路上で車を走らせているとき、路上のテクスチャに目に見える断絶が見える可能性がある。これは、ＭＩＰマップの切り替えに起因する可能性が高い。
【００１９】
しばしば使用されるＭＩＰマッピングの高品質の方法が、トライリニアＭＩＰマッピングと呼ばれ、このマッピングは、前述したＭＩＰマップ境界の問題を緩和するのに役立つ。このフィルタリング方法は、マップが行われる先のピクセルエリアと比べて１つのテクスチャマップの解像度の方が少し大きく、もう１つのテクスチャマップの解像度の方が少し小さい、ピクセルに最も近接した２つのＭＩＰマップから、４つのテクセルサンプルをそれぞれ使用する２つのバイリニアサンプルを取る。次に、トライリニアアルゴリズムが、重み付きの平均を使用してその２つのバイリニアフィルタにかけられたテクセルを結合して結果のテクスチャを有するピクセルにし、ピクセルエリアにより近い解像度のマップが、より大きな重みを受ける。
【００２０】
トライリニアＭＩＰマッピングでさえ、いくつかの欠点を抱えているが、欠点は、概して、詳細レベル（ＬＯＤ）バイアスを行うことに関連している。各ＭＩＰマップは、関連するＬＯＤを有するとされ、バイアスを行うことは、２つの異なるマップから取られた２つの双線形フィルタにかけられたサンプル間の平均の重み付け係数に関わる。ＬＯＤバイアスが余りにも「上方に」向けられすぎ、より小さい解像度のマップの方に向けて平均に重みを付けた場合、テクスチャのぼやけがもたらされる可能性がある。ＬＯＤバイアスが、あまりにも「下方」に向けられすぎ、より大きいＭＩＰマップの方に向けて平均に重みが付けられた場合、エイリアシング、およびテクスチャシマリング（ｓｈｉｍｍｅｒｉｎｇ）／クローリング（ｃｒａｗｌｉｎｇ）などの時間的エイリアシングがもたらされる可能性がある。したがって、ＬＯＤバイアスを行うことにより、ｄ値が変更され、より小さいマップまたはより大きいマップが使用されることがもたらされる。ただし、ｄ値は、それでも、開発時に事前設定されている。この技術の抱える主な問題は、バイリニアフィルタリングまたはトライリニアフィルタリングの等方性の性質である。テクスチャの一方の軸に沿ったマグニフィケーション／ミニフィケーションは、他方の軸に沿ったマグニフィケーション／ミニフィケーションとは相当に異なる可能性があり、一方の軸に沿ってエイリアシングがもたらされ、また他方の軸に沿ってぼやけがもたらされる可能性がある。
【００２１】
バイリニアフィルタリングまたはトライリニアフィルタリングの等方性の性質に対処しようと試みる異方性フィルタリングと呼ばれる別のフィルタリング技術が存在する。１つの形態の異方性フィルタリングは、ＭＩＰマップサンプリングを使用するが、８つのサンプルを取る代わりに、最高で１６のサンプルを取る。異方性フィルタリングを使用する際、レンダラに対して、異方性の度合いはどの程度かを指定する。この度合いは、イメージ品質の低下が始まる手前まで、どれだけテクスチャを引き伸ばすことができるかの比である。
【００２２】
別の形態の異方性フィルタリングでは、バイリニアフィルタリングを何らかの角に沿って複数回行う。これは、例えば、レースカービデオゲームにおける路上の接近通過（ｆｌｙｉｎｇ　ｂｙ）でそうであるように、「ストリーキング（ｓｔｒｅａｋｉｎｇ）」がピクセルレンダリングの自然な副産物である場合、役立つ可能性がある。テクスチャを有するポリゴン（ｐｏｌｙｇｏｎ）がスクリーンの平面に対して斜めの角にあるとき、テクスチャ上にマップされるスクリーンピクセルに対応するフットプリント（ｆｏｏｔｐｒｉｎｔ）が、長くなる、すなわち、もはや正方形ではなくなる。より高度な方法は、このフットプリントにおいて凹凸のある（ｏｄｄ−ｓｈａｐｅｄ）テクセルの集合を使用し、そのテクセルを融合させて最終の結果を生成する。このサンプリングフットプリントに使用するのに正しい形状を計算し、またその形状がどれだけの長さであるべきかを計算することは、非常に難しい問題である。これを行うためのあらゆる現在知られているアルゴリズムは、計算をスクリーンピクセル−ポリゴンテクセル間の整列の相対的幾何形状だけに基づいて行い、開発者が、プロセスを予測できるように／インテリジェントに制御できるようにする柔軟性を提供するものは存在しない。
【００２３】
バイリニアフィルタリングを複数回行うこの形態の異方性サンプリングを図２Ｄに示しており、このサンプリングは、レンダリングされる三角形の一部の事前に定められた幾何形状のアスペクトに従って比Δｖ／Δｕで定義される角θ、およびΔｖとΔｕの大きさで定義されるポイントＰ１ａ、Ｐ１ｂ、Ｐ１ｃ等の間のステップサイズに沿って異方性フィルタにかけられるポイントＰ１ａに関する。角θに沿った楕円形状が、Ｐ１ｂおよびＰ１ｃの位置を定義する。次に、Ｐ１ａ、Ｐ１ｂ、およびＰ１ｃのそれぞれに関してバイリニアフィルタリングが行われ、このフィルタリングは、この例では、重み付けされた仕方で、対応する４つの要素のグループ（Ａ）Ｔ１４、Ｔ１１、Ｔ１５、およびＴ１２、（Ｂ）Ｔ１１、Ｔ１２、Ｔ６、およびＴ５、ならびに（Ｃ）Ｔ７、Ｔ６、Ｔ８、およびＴ１をそれぞれ融合させる。
【００２４】
テクスチャが印加される表面に合うようにテクスチャが引き伸ばされなければならない方向でより多くのサンプルを使用することで、異方性フィルタリングは、バイリニアフィルタリングまたはトライリニアフィルタリングと比べてよりシャープなイメージ品質を実現し、またポイントサンプリングで見られるテクスチャシマリングも回避する。また、レーシングゲームの中のビルボードにおいて、またはスターウォーズ映画の開始時に可能性があるようにある角で表示される異方性フィルタにかけられたテキストが、他のフィルタリング方法を使用したのと比べて、より明瞭にレンダリングされることにも留意されたい。
【００２５】
一般に、グラフィックスアプリケーションプログラミングインターフェース（ＡＰＩ）は、マルチテクスチャリング効果で使用するために単一の頂点に関して２つまたはそれより多くのテクスチャアドレスを記憶する備えを有する。初期に、マルチテクスチャリングは、ライトマップを使用してライティング効果を生成するのに使用されたが、以来、バンプ（ｂｕｍｐ）マッピングのようなさらなる効果を行うのに適用されてきた。以上のマルチテクスチャリング機能により、最終的に３Ｄチップ製造業者は、チップ不動産（ｃｈｉｐ　ｒｅａｌ　ｅｓｔａｔｅ）を並列ピクセルパイプラインを作成するのに投資することに駆り立てられ、またより新しい世代のチップでは、クロック単位のピクセルごとに複数のテクセルを処理することに駆り立てられている。
【００２６】
１ピクセル当り複数のテクセルを扱うことができる並列パイプを有することによって得られる利点は、マルチテクスチャリング演算を、シーンにおける各ピクセルが数回描かれる複数回の走査の（ｍｕｌｔｉｐａｓｓ）レンダリングを行わなければならないのではなく、しばしば、単一のクロックサイクルで行うのが可能なことである。チップが、シーンをレンダリングするのに行わなければならないさらなる各回の走査について、有効ピクセル充填速度を行う必要がある走査の回数で割る。したがって、毎秒５００Ｍピクセル充填速度のチップが、マルチテクスチャリング効果を伴ってシーンをレンダリングするために２回の走査を行わなければならないとした場合、そのチップの有効充填速度が毎秒２５０Ｍピクセルに半減される。チップが４回の走査を行う場合、充填速度は、毎秒１２５Ｍピクセルまで低下する。したがって、並列パイプラインにより、グラフィックスレンダリングの効率も大幅に向上した。
【００２７】
マルチテクスチャリングの演算を行うやり方は、通常の単一のテクスチャリングとそれほど異なっていない。ただし、違っているのは、別個のテクスチャを一緒に融合させなければならず、またシェーディングによって生成された既存のピクセルの色と融合させなければならないことである。しかし、シーンで使用されるテクスチャの数を２倍または３倍にすることにより、追加のテクスチャを取り出すのに必要とされるフレームバッファ帯域幅の量が激増し、複数回の走査が行われなければならない場合、全体的パフォーマンスが低下することが、かつて懸念される問題であった。ただし、近年の極めて高速なグラフィックスプロセッサの発展が、そのような懸念を静めた。
【００２８】
テクスチャリングおよびマルチテクスチャリングを使用して多彩な視覚上の効果を生成することができ、基本的な表面記述は、氷山の一角に過ぎない。また、開発者は、テクスチャを生成する別のやり方も発見した。すなわち、開発者は、「あらかじめ用意された（ｃａｎｎｅｄ）」ビットマップを記憶する代わりに、テクスチャを手続き式に生成する小さいプログラムを作成することができる。この技術は、大理石表面から、大型の野外環境における地形テクスチャ、動く水の効果に至るまであらゆるものを生成するのに使用されてきた。
【００２９】
多くのアプリケーションが３Ｄで行うことを追求する別のプロセスが、雰囲気を設定することである。これは、開発者が現出させた世界内部にゲームをする人を没頭させようと試みる上で特に重要である。異なる雰囲気を実現するのに役立つ１つのツールがフォグであり、フォグは、シーンにさらなる奥行きの感覚を与えるのにも役立つ。
【００３０】
フォグは、いくつかの異なる仕方で実施することができ、変異形態は、概して、どのようにフォグ（ｆｏｇ）がより濃くなるかに関する。２つの非常に一般的な方法が、線形のフォグおよび指数のフォグと呼ばれ、その名前が示唆するとおり、それぞれ線形的に、また指数的にスケーリングが行われる。また、フォグを頂点ごとに、またはピクセルごとに印加することもでき、３Ｄにおけるほとんどの事でそうであるように、ピクセルごとの方がより納得させるが、より多くの計算処理を要する。
【００３１】
フォグを印加するより進んだ方法が、範囲ベースのフォグと呼ばれ、従来、一般消費者向けの３Ｄチップで利用可能ではなかったが、ＤｉｒｅｃｔＸ８における頂点シェーダ（ｓｈａｄｅｒ）の到来とともに、範囲ベースのフォグは、選択肢となった。別の方法は、フォグのテーブルと呼ばれ、フォグの値がルックアップテーブルの中に記憶され、次に、各ピクセルに印加される。
【００３２】
しかし、技術に関わらず、フォグは、オブジェクトがどれだけ遠くに離れているかに関係するものであり、これは、通常、ビューカメラからの距離であるｚ値で決まる。次に、線形的にか、または指数的にか計算されるフォグの係数が、計算されて、フォグの量（色）とライト／シェード／テクスチャを伴うピクセルの色を結合する融合演算を使用してピクセルに印加される。フォグが頂点ごとに実施される場合、フォグの演算は、ライティング計算の一部分となり、グーロー（Ｇｏｕｒａｕｄ）シェーディングを使用して各三角形全体に補間される。
【００３３】
フォグの別の実際的な用法は、遠くのクリッピング（ｃｌｉｐｐｉｎｇ）平面におけるオブジェクトが、シーンから単に突然に消えるのではなく、優美に「次第に消える」のを可能にすることである。また、フォグを使用して、レンダラが、ビューカメラに比較的近接した世界オブジェクトを描くだけでよいようにすることもできる。フォグの値が、ゼロに近くなった、またはゼロに達したとき（フォグの値は、通常、０と１の間の浮動小数点値であり、ゼロは絶対的なフォグであり、１はフォグがないことである）オブジェクトが、基本的に廃棄され、さらなるレンダリング作業は、全く行う必要がない。
【００３４】
透明度および半透明度を印加する技法も存在する。不透明なオブジェクトとは異なり、透明なオブジェクトは、一般に、前後逆の順序で深度によるソートを行い、透明なオブジェクトと融合される下にある色が、融合演算を行う際に利用可能であるのを確実にしなければならない。オブジェクトの半透明度を計算するのに使用されるいくつかの公式が存在するが、一般的な公式は、以下のとおりである。
ｃｏ＝α・ｃｓ＋（１−α）・ｃｄ、ただし、
ｃｏ＝最終のピクセルの色
α＝アルファ値（０と１の間の）であり、
ｃｓ＝透明なピクセル（元と呼ばれる）の色であり、また
ｃｄ＝遮られたピクセル（先と呼ばれる）の色である。
【００３５】
この公式は、アルファ値が、両方のピクセルに異なる仕方で適用され、結果の値が加算されて最終のピクセルの色が与えられる２つのピクセル変調の和である。
【００３６】
【発明が解決しようとする課題】
以上より、テクスチャサンプリングを行うコンピュータグラフィックスに関連して適用することができる数限りない技術が存在する。
【００３７】
しかし、これまでの従来技術は、その数限りない技術のうちのどれかの選択は、あまり柔軟性があるわけではなく、開発時に開発者によって固定されていた。
【００３８】
例えば、ある変数およびヒューリスティックは、あるグラフィックスの状況に関して有用であり、他の状況に関しては有用でないので、最終的な品質結果は、ますます高まる処理能力を使用してさえも、まちまちな結果となる。
【００３９】
その結果、プロセスのフロントエンドでテクスチャサンプリングアルゴリズムに適用するインテリジェンスの量を増やすことが望まれる。
【００４０】
また、柔軟機能（ｆｌｅｘ−ｆｕｎｃｔｉｏｎ）ＧＰＵにますます向かっている傾向に鑑みて、開発者が、最も効果的な仕方で様々な状況を扱うようにオンザフライで動的なインテリジェンスを適用する制御可能なテクスチャサンプリングを開示することが望まれる。
【００４１】
さらに、物質プロパティ、曲面、ボリューム（ｖｏｌｕｍｅｔｒｉｃ）テクスチャを考慮に入れ、またはるかに複雑な単一回の走査によるテクスチャ融合を有するより進んだプログラム可能なピクセルごとのシェーディングアルゴリズムおよびライティングアルゴリズムが利用可能になるにつれ、開発者が、テクスチャサンプリングプロセスを制御できるようにすることが一層望まれる。
【００４２】
さらにまた、ブラー、またはストリーキング、またはシマリングなどのアーチファクトをレンダリングされるイメージに制御可能な仕方で導入することも望まれる。
【００４３】
したがって、サンプリング能力が制御可能な機構を、オペレーティングシステム、ドライバコード、アプリケーションプログラミングインターフェース、ＧＰＵまたは他の処理デバイスを含むグラフィックスパイプライン自体におけるツールキットおよび／または機能のいずれか１つに提供することが望まれる。
【００４４】
すなわち、従来の技術においては、例えば既存のテクスチャサンプリング技術を補足する際に、テクスチャサンプリングのためのパラメータの置き換えや変更を柔軟に行うことができないため、３Ｄアクセラレータハードウェアがレンダリングを行う際の現実感のレベルを大幅に向上させることができないという問題がある。
【００４５】
そこで、本発明の目的は、コンピュータシステムにおけるコンピュータグラフィックスに関連してテクスチャサンプリングを制御可能なシステムおよび方法を提供することにある。
【００４６】
【課題を解決するための手段】
様々な実施形態において、（１）モーションブラー（ｍｏｔｉｏｎ　ｂｌｕｒ）、（２）異方性の表面反射を生成すること、（３）表面の自己シェーディングを生成すること、（４）レイキャスト（ｒａｙ−ｃａｓｔ）ボリュームサンプリング、（４）自己シャドーイングを伴うボリュームレンダリング、および（５）自己シャドーイングを伴うボリュームレイキャストのための改良された機構を含め、３Ｄアクセラレータハードウェアが、レンダリングを行う際の現実感のレベルを大幅に向上させることができるようにするテクスチャサンプリングを制御するための改良された機構を提供する。既存のテクスチャサンプリング技術の補足を行う際、テクスチャサンプリングに関するパラメータを置き換え、かつ／または変更することができる。
【００４７】
様々な実施形態において、テクスチャマップのテクスチャサンプリングに関連して利用されるサンプリングフットプリントのパラメータを指定すること、およびそのサンプリングフットプリントの指定されたパラメータに従ってテクスチャマップのテクスチャサンプリングを行うことを含め、制御可能なテクスチャサンプリングを可能にする方法、装置、コンピュータ可読媒体、およびコプロセッシング（ｃｏｐｒｏｃｅｓｓｉｎｇ）デバイスを提供する。
【００４８】
本発明のその他の特徴およびその他の実施形態を以下に説明する。
【００４９】
本発明に従って制御可能なテクスチャサンプリングを提供するためのシステムおよび方法を、添付の図面を参照してさらに説明する。
【００５０】
【発明の実施の形態】
＜概要＞
３Ｄアクセラレータハードウェアが、レンダリングを行う際の現実感のレベルを大幅に向上させることを可能にし、３Ｄハードウェアにおける光線追跡（ｒａｙ−ｔｒａｃｉｎｇ）計算の使用に向けての道を開く制御可能なテクスチャサンプリングを提供するための機構が提供される。現在まで、そのような方法は、ホストプロセッサで動作するソフトウェアのレンダラに限定され、グラフィックスパイプラインの速度を大幅に低下させてきた。これに関して、現在、３Ｄグラフィックスチップは、レンダリング中にポリゴン上のテクスチャから色を抽出するのに使用されるサンプラと呼ばれるユニットを有している。レンダリングされるピクセルの位置は、一般に、テクスチャにおけるテクスチャの位置と厳密には一致しないので、何らかの作業が関与する。テクスチャサンプリングは、ポイントサンプリング、バイリニアフィルタリング、ＭＩＰマッピング、および異方性フィルタリングなどの「背景」で説明した技術、ならびにその他の技術を使用して様々なレベルの複雑さ（ｓｏｐｈｉｓｔｉｃａｔｉｏｎ）で機能することができる。そのような従来技術の技法は、すべての状況にはよく適応しない固定された態様を有する。さらに、現在の異方性フィルタリング技術は、開発者が、実際にはブラー効果を生成するのを望む可能性があるのにブラー効果を除去する。したがって、本発明は、前に固定されたパラメータを開発者に明らかにし、開発者に、テクスチャサンプリングプロセスに対する制御のレベルに関して前例のないインテリジェンスを提供するようにする。様々な実施形態では、本発明が、様々なテクスチャリング効果に役立つことが示される。さらに、本発明は、ソフトウェアでも、ハードウェアでも、あるいはソフトウェアとハードウェアの両方でも同じように実施することができる。例えば、一部の実装の詳細は、ＧＰＵのようなコプロセッシングチップで実装することができ、一方、その他の実装の詳細は、ＡＰＩツールキット、オペレーティングシステム、ドライバ、ダウンロード可能なコード等を介してグラフィックス開発者に開示することができる。
【００５１】
例としてのネットワーク化された環境および分散された環境
当分野の技術者は、コンピュータ、あるいはその他のクライアントデバイスまたはサーバデバイスをコンピュータ網の一部として配備する、つまり分散された計算環境で配備するのが可能であることを認めることができよう。これに関して、本発明は、テクスチャサンプリングプロセスに関連して使用することができる、任意の数のメモリユニットまたは記憶ユニット、および任意の数の記憶ユニットまたは記憶ボリュームにわたって生じる任意の数のアプリケーションおよびプロセスを有する任意のコンピュータシステムに属する。本発明は、遠隔のストーレッジまたはローカルのストーレッジを有するネットワーク環境または分散された計算環境に配備されたサーバコンピュータおよびクライアントコンピュータを有する環境に適用することができる。また、本発明は、遠隔サービスまたはローカルサービスに関連して情報を生成し、受信し、また送信するためのプログラミング言語機能、解釈能力および実行能力を有する独立型計算デバイスにも適用することができる。
【００５２】
分散されたコンピューティングは、計算デバイスと計算システムの間の直接交換によってコンピュータリソースおよびコンピュータサービスの共用を容易にする。そのリソースおよびサービスには、情報の交換、キャッシュ記憶、およびファイルに関するディスク記憶が含まれる。分散されたコンピューティングは、ネットワーク接続性を利用し、クライアントが、集合的能力を活用して企業全体に益をもたらすことができるようにする。これに関して、様々なデバイスが、本発明の技術を利用する可能性があるテクスチャサンプリングプロセスが関係していることが可能なアプリケーション、オブジェクト、またはリソースを有することが可能である。
【００５３】
図３Ａは、例としてのネットワーク化された計算環境または分散された計算環境の概略図を提供している。分散計算環境は、計算オブジェクト１０ａ、１０ｂ等、および計算オブジェクトまたは計算デバイス１１０ａ、１１０ｂ、および１１０ｃ等を含む。以上のオブジェクトは、プログラム、メソッド、データストア、プログラマブル論理等を含むことが可能である。オブジェクトは、ＰＤＡ、テレビジョン、ＭＰ３プレーヤ、テレビジョン、パーソナルコンピュータなどの同じデバイスまたは異なるデバイスの部分を含むことが可能である。各オブジェクトは、通信網１４を介して別のオブジェクトと通信することができる。このネットワーク自体、図３Ａのシステムにサービスを提供する他の計算オブジェクトおよび計算デバイスを含むことが可能である。本発明の態様によれば、各オブジェクト１０ａ、１０ｂ等、または１１０ａ、１１０ｂ、１１０ｃ等が、テクスチャサンプリングサービスを要求する可能性があるアプリケーションを含むことが可能である。
【００５４】
分散計算アーキテクチャでは、従来はクライアントとしてだけ使用されていた可能性があるコンピュータ群が、互いに直接に通信し、そのネットワークにとって最も効率的であるどちらの役割でも引き受けて、クライアントとしてもサーバとしても動作することができる。これにより、サーバにかかる負荷が減り、クライアントのすべてが、他のクライアント上で利用可能なリソースにアクセスすることができるようになり、これにより、ネットワーク全体の能力および効率が向上する。これにより、本発明によるテクスチャサンプリングサービスを、ネットワーク全体にとって効率的な仕方で動作するクライアント群およびサーバ群の間で分散させることができる。
【００５５】
分散コンピューティングは、企業が、様々な地理的境界を越えてより効率的にサービスおよび能力のデリバリを行うのを助けることができる。さらに、分散コンピューティングは、ネットワークキャッシング機構として作用するデータが消費されるポイントのより近くにデータを移動させることができる。また、分散コンピューティングにより、計算ネットワーク群が、インテリジェントなエージェントを使用して動的に協働するのを可能にする。エージェントは、ピアコンピュータに常駐し、様々な種類の情報を通信してやり取りする。また、エージェントは、他のピアシステムに代行してタスクを開始することもできる。例えば、インテリジェントなエージェントを使用してネットワーク上のタスクに優先順位を付ける、トラフィックフローを変更する、ローカルでファイルを探索する、またはウィルスなどの異常な挙動を判別し、その挙動がネットワークに影響を与える前にその挙動を停止することができる。種々の他のサービスも企図することができる。グラフィカルオブジェクトおよびテクスチャマップは、実際には、１つまたは複数の場所に物理的に位置しているので、テクスチャサンプリングサービスを分散させる能力は、そのようなシステムにおいて非常に有用である。
【００５６】
また、１１０ｃのようなオブジェクトが、別の計算デバイス１０ａ、１０ｂ等または１１０ａ、１１０ｂ等の上でホストされるのが可能なことも認められよう。したがって、描かれた物理環境は、コンピュータなどの接続されたデバイスを示していることが可能であるが、そのような図示は、単に例としてのものであり、代わりに、ＰＤＡ、テレビジョン、ＭＰ３プレーヤなどの様々なデジタルデバイス、インターフェース、ＣＯＭオブジェクトなどのソフトウェアオブジェクトを含むものとして物理環境を描く、または説明することも可能である。
【００５７】
分散計算環境をサポートする様々なシステム、構成要素、およびネットワーク構成が存在する。例えば、コンピュータシステム群を有線システムまたは無線システムで、ローカルネットワークまたは広く分散されたネットワークで一緒に接続することができる。現在、ネットワークの多くは、広く分散されたコンピューティングのためのインフラストラクチャを提供し、多くの異なるネットワークを包含するインターネットに結合されている。
【００５８】
ホームネットワーキング環境では、電力線、データ（無線と有線両の）媒体、音声（例えば、電話機）媒体、およびエンターテイメント媒体などの、固有のプロトコルをそれぞれがサポートしていることが可能な少なくとも４つの別々のネットワークトランスポート媒体が存在する。照明スイッチなどのほとんどの家庭用制御デバイスおよび器具は、接続のために電力線を使用することができる。データサービスは、ブロードバンド（例えば、ＤＳＬモデムまたはケーブルモデム）として家庭に入ることが可能であり、無線（例えば、ＨｏｍｅＲＦまたは８０２．１１ｂ）接続または有線（例えば、Ｈｏｍｅ　ＰＮＡ、Ｃａｔ　５、電力線までも）接続を使用して家庭内でアクセス可能である。音声トラフィックは、有線（例えば、Ｃａｔ　３）または無線（例えば、セル電話機）として家庭に入ることが可能であり、Ｃａｔ　３配線を使用して家庭内で配信することができる。エンターテイメント媒体、またはその他のグラフィカルデータは、サテライトまたはケーブルを介して家庭に入ることが可能であり、通常、同軸ケーブルを使用して家庭内で配信される。また、ＩＥＥＥ　１３９４およびＤＶＩも、媒体デバイスのクラスタのためのデジタル相互接続として現れている。以上のネットワーク環境のすべて、およびプロトコル標準として現れる可能性があるその他の環境が、インターネットを介して外部の世界に接続することができるイントラネットを形成するように相互するのが可能である。要するに、データの記憶および伝送のために様々な別々のソースが存在し、したがって、計算デバイスを前進させることは、本発明によるグラフィックスオブジェクトおよびテクスチャマップのテクスチャサンプリングに付随してアクセスされる、または利用されるデータなどのデータを共用するやり方を必要とする。
【００５９】
インターネットとは、一般に、コンピュータネットワーキングの分野で周知のＴＣＰ／ＩＰセットのプロトコルを利用するネットワークおよびゲートウェイの集合を指す。ＴＣＰ／ＩＰは、「Ｔｒａｎｓｐｏｒｔ　Ｃｏｎｔｒｏｌ　Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｆａｃｅ　Ｐｒｏｇｒａｍ」の頭字語である。インターネットは、ユーザが、ネットワーク群を介して対話し、情報を共用することができるようにするネットワーキングプロトコルを実行するコンピュータ群によって相互接続された地理的に分散された遠隔コンピュータネットワーク群のシステムとして説明することができる。そのような広汎な情報共用のため、インターネットなどの遠隔ネットワークは、これまで、一般に、特殊化された動作またはサービスを行うためのソフトウェアアプリケーションを基本的に制限なしに開発者が設計することができるオープンなシステムに発展してきた。
【００６０】
したがって、ネットワークインフラストラクチャにより、クライアント／サーバアーキテクチャ、ピアツーピアアーキテクチャ、または混成アーキテクチャなどの多数のネットワークトポロジが可能になる。「クライアント」は、自らが関連していない別のクラスまたは別のグループのサービスを使用するあるクラスまたはあるグループのメンバである。したがって、コンピューティングでは、クライアントは、プロセスである。すなわち、おおむね、別のプログラムによって提供されるサービスを要求する１組の命令またはタスクである。クライアントプロセスは、他方のプログラムまたはサービス自体に関して動作上の詳細を全く「知る」必要なしに要求のサービスを利用することができる。クライアント／サーバアーキテクチャ、特にネットワーク化されたシステムでは、クライアントは、通常、別のコンピュータ、例えば、サーバによって提供される共用ネットワークリソースにアクセスするコンピュータである。図３Ａの例では、コンピュータ１１０ａ、１１０ｂ等をクライアントと考えることができ、またコンピュータ１０ａ、１０ｂ等をサーバと考えることができ、サーバ１０ａ、１０ｂ等は、クライアントコンピュータ１１０ａ、１１０ｂ等において複製されるデータを保持する。
【００６１】
サーバは、通常、インターネットなどの遠隔ネットワークを介してアクセス可能な遠隔コンピュータシステムである。クライアントプロセスが、第１のコンピュータシステムにおいてアクティブであることが可能であり、またサーバプロセスが、第２のコンピュータシステムにおいてアクティブであることが可能であり、通信媒体を介して互いに通信し、これにより、分散された機能を提供して、複数のクライアントが、サーバの情報収集能力を利用することができるようにしている。
【００６２】
クライアントとサーバは、プロトコル層によって提供される機能を利用して互いに通信する。例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）が、ワールドワイドウェブ（Ｗｏｒｌｄ　Ｗｉｄｅ　Ｗｅｂ）（ＷＷＷ）に関連して使用される一般的なプロトコルである。通常、ユニバーサルリソースロケータ（Ｕｎｉｖｅｒｓａｌ　Ｒｅｓｏｕｒｃｅ　Ｌｏｃａｔｏｒ）（ＵＲＬ）アドレスまたはインターネットプロトコル（ＩＰ）アドレスなどのコンピュータ網アドレスを使用してサーバコンピュータまたはクライアントコンピュータを互いに識別する。ネットワークアドレスは、ＵＲＬアドレスと呼ぶことができる。例えば、通信媒体を介して通信を提供することができる。詳細には、大容量通信のためにＴＣＰ／ＩＰ接続を介してクライアントとサーバを互いに結合することができる。
【００６３】
したがって、図３Ａは、本発明を使用することができる、ネットワーク／バスを介してクライアントコンピュータと通信しているサーバを備えた例としてのネットワーク化された環境または分散された環境を示している。より詳細には、本発明に従い、いくつかのサーバ１０ａ、１０ｂ等が、ＬＡＮ、ＷＡＮ、イントラネット、インターネット等であることが可能な通信ネットワーク／バス１４を介して、可搬コンピュータ、ハンドヘルドコンピュータ、小型軽量クライアント（ｔｈｉｎ　ｃｌｉｅｎｔ）、ネットワーク化された器具、またはＶＣＲ、ＴＶ、オーブン、照明、ヒータなどの他のデバイスなど、いくつかのクライアントまたは遠隔計算デバイス１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなどと相互接続されている。したがって、本発明は、グラフィカルオブジェクトを処理するのが望ましい任意の計算デバイスに適用できることが企図されている。
【００６４】
通信ネットワーク／バス１４が、例えば、インターネットであるネットワーク環境で、サーバ１０ａ、１０ｂ等は、クライアント１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅ等が、ＨＴＴＰなどのいくつかの周知のプロトコルにどれかを介して通信する相手のＷｅｂサーバであることが可能である。また、サーバ１０ａ、１０ｂ等は、分散計算環境が特徴とするのが可能であるように、クライアント１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅ等としての役割をすることもできる。通信は、適宜、有線または無線であることが可能である。クライアントデバイス１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅ等は、通信ネットワーク／バス１４を介して通信しても、しなくてもよく、独立の通信が関連していることが可能である。例えば、ＴＶまたはＶＣＲのケースでは、制御にネットワーク化された態様が存在していても、存在していなくてもよい。各クライアントコンピュータ１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅ等、およびサーバコンピュータ１０ａ、１０ｂ等が、様々なアプリケーションプログラムモジュールまたはオブジェクト１３５を備えていることが可能であり、またファイルを記憶することができる、またはファイルをダウンロードする、または移動させることができる様々なタイプの記憶要素またはオブジェクトへの接続またはアクセスを備えていることが可能である。任意のコンピュータ１０ａ、１０ｂ、１１０ａ、１１０ｂが、グラフィックスオブジェクト、または本発明に従って処理される中間グラフィックスオブジェクトを記憶するためのデータベースまたはメモリ２０などの、本発明によるデータベース２０またはその他の記憶要素の保持および更新を担うことができる。したがって、本発明は、コンピュータネットワーク／バス１４にアクセスし、対話することができるクライアントコンピュータ１１０ａ、１１０ｂ等、ならびにクライアントコンピュータ１１０ａ、１１０ｂ等、他の同様なデバイス、およびデータベース２０と対話することができるサーバコンピュータ１０ａ、１０ｂ等を有するコンピュータネットワーク環境において利用することができる。
【００６５】
例としての計算デバイス
図３Ｂおよび以下の考察は、本発明を実施することができる適切な計算環境の簡単な一般的説明を提供することを意図する。ただし、ハンドヘルド計算デバイス、可搬計算デバイス、および他の計算デバイス、ならびにあらゆる種類の計算オブジェクトを本発明と関連して使用することが企図されていることを理解されたい。以下では、汎用コンピュータについて述べるが、これは一例に過ぎず、本発明は、ネットワーク／バス相互運用性およびネットワーク／バス対話を有する小型軽量クライアントを使用して実施することもできる。したがって、本発明は、非常にわずかな、または最小限のクライアントリソースが関与するネットワーク化されたホストされるサービスの環境で、例えば、クライアントデバイスが、器具内部に配置されたオブジェクトなどのネットワーク／バスに対するインターフェースとしてだけの役割をするネットワーク化された環境において実施することができる。要するに、データを記憶することができる、またはデータを取り出すことができるあらゆる場所が、本発明の制御可能なテクスチャサンプリング技術の動作のための望ましい、または適切な環境である。
【００６６】
必須ではないが、本発明は、デバイスまたはオブジェクトに関するサービスの開発者が使用するための、かつ／または本発明の制御可能なテクスチャサンプリングに関連して動作するアプリケーションソフトウェア内部に含まれるオペレーティングシステムを介して実施することができる。ソフトウェアは、クライアントワークステーション、サーバ、またはその他のデバイスなどの１つまたは複数のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストで説明することができる。一般に、プログラムモジュールには、特定のタスクを行う、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造等が含まれる。通常、プログラムモジュールの機能は、所望に応じて様々な実施形態で組み合わせる、または分散させることができる。さらに、本発明を他のコンピュータシステム構成と使用して実施できることが、当分野の技術者には認められよう。本発明とともに使用するのに適していることが可能な他の周知の計算システム、計算環境、および／または計算構成には、パーソナルコンピュータ（ＰＣ）、現金自動預け払い機（ａｕｔｏｍａｔｅｄ　ｔｅｌｌｅｒ　ｍａｃｈｉｎｅ）、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル家庭用電化製品、ネットワークＰＣ、器具、照明、環境制御要素、ミニコンピュータ、メインフレームコンピュータ等が含まれるが、以上には限定されない。また、本発明は、タスクが、通信ネットワーク／バスまたはその他のデータ伝送媒体を介してリンクされた遠隔の処理デバイスによって行われる分散計算環境で実施することもできる。分散計算環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルのコンピュータ記憶媒体と遠隔のコンピュータ記憶媒体の両方の中にあることが可能であり、クライアントノードは、サーバノードとしての挙動を行うことができる。
【００６７】
したがって、図３Ｂは、本発明を実施することができる適切な計算システム環境１００の例を示しており、ただし、上記に明らかにしたとおり、計算システム環境１００は、適切な計算環境の一例に過ぎず、本発明の使用または機能の範囲に関する限定を示唆するものでは全くない。また、計算環境１００は、例としての動作環境１００に図示した構成要素のいずれか１つ、または組合せに関連する何らかの依存性または要件を有するものと解釈すべきでもない。
【００６８】
図３Ｂを参照すると、本発明を実施するための例としてのシステムが、コンピュータ１１０の形態で汎用計算デバイスを含む。コンピュータ１１０の構成要素は、それだけに限らないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリから処理ユニット１２０までを含む様々なシステム構成要素を結合するシステムバス１２１を含むことが可能である。システムバス１２１は、様々なバスアーキテクチャの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造の任意のものであることが可能である。例として、限定としてではなく、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＭＣＡ）バス、エンハンストＩＳＡ（Ｅｎｈａｎｃｅｄ　ＩＳＡ）（ＥＩＳＡ）バス、ビデオエレクトロニクススタンダーズアソシエーション（Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ）（ＶＥＳＡ）ローカルバス、およびペリフェラルコンポーネントインターコネクト（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）（ＰＣＩ）バス（メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られる）が含まれる。
【００６９】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることのできる任意の利用可能な媒体であることが可能であり、揮発性の媒体と不揮発性の媒体、取外し可能な媒体と取外し不可能な媒体の両方を含む。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または任意の技術で実装される揮発性と不揮発性の媒体、取外し可能な媒体と取外し不可能な媒体の両方が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ディスクストーレッジ、磁気カセット、磁気テープ、磁気ディスクストーレッジまたは他の磁気記憶デバイス、あるいは所望の情報を記憶するのに使用することができ、コンピュータ１１０がアクセスすることができる任意の他の媒体が含まれるが、以上には限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実体化し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号に情報を符号化するような仕方で特定の１つまたは複数が設定または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。また、前述したもののいずれかの組合せも、コンピュータ可読媒体の範囲に含まれるべきものである。
【００７０】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性メモリおよび／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。始動中など、コンピュータ１１０内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力／出力システム１３３（ＢＩＯＳ）が、通常、ＲＯＭ１３１の中に記憶されている。ＲＡＭ１３２は、通常、処理ユニット１２０によって即時にアクセス可能であり、かつ／または現在、動作させられているデータおよび／またはプログラムモジュールを含む。例として、限定としてではなく、図３Ｂは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００７１】
また、コンピュータ１１０は、他の取外し可能な／取外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体を含むことも可能である。単に例として、図３Ｂは、取外し不可能な不揮発性の磁気媒体に対して読取りおよび書込みを行うハードディスクドライブ１４１、取外し可能な不揮発性の磁気ディスク１５２に対して読取りおよび書込みを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭまたは他の光媒体などの取外し可能な不揮発性の光ディスク１５６に対して読取りおよび書込みを行う光ディスクドライブ１５５を示している。例としての動作環境において使用することができる他の取外し可能な／取外し不可能な揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等が含まれるが、以上には限定されない。ハードディスクドライブ１４１は、通常、インターフェース１４０のような取外し不可能なメモリインターフェースを介してシステムバス１２１に接続され、また磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０のような取外し可能なメモリインターフェースでシステムバス１２１に接続される。
【００７２】
図３Ｂに示すドライバおよび関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストーレッジをコンピュータ１１０に提供する。図３Ｂでは、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているものとして示されている。以上の構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであるのも、異なるのも可能であることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７に、ここでは、少なくともそれらが異なるコピーであることを示すために異なる符合を付けている。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを介してコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれる可能性がある。
【００７３】
以上の入力デバイスおよび他の入力デバイスは、しばしば、システムバス１２１に結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造で接続してもよい。また、ノースブリッジなどのグラフィックスインターフェース１８２も、システムバス１２１に接続することができる。ノースブリッジは、ＣＰＵまたはホスト処理ユニット１２０と通信するチップセットであり、アクセラレーテッドグラフィックスポート（ａｃｃｅｌｅｒａｔｅｄ　ｇｒａｐｈｉｃｓ　ｐｏｒｔ）（ＡＧＰ）通信を担うことを引き受ける。１つまたは複数のグラフィックス処理ユニット（ＧＰＵ）１８４が、グラフィックスインターフェース１８２と通信することができる。これに関して、ＧＰＵ１８４は、一般に、レジスタストーレッジなどのオンチップ（ｏｎ−ｃｈｉｐ）メモリストーレッジを含み、またＧＰＵ１８４は、ビデオメモリ１８６と通信する。ただし、ＧＰＵ１８４は、コプロセッサの一例に過ぎず、したがって、様々なコプロセッシングデバイスが、コンピュータ１１０に含まれることが可能である。また、モニタ１９１または他のタイプの表示デバイスも、ビデオメモリ１８６と通信することができるビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１に加えて、コンピュータは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７やプリンタ１９６などの他の周辺出力デバイスも含むことが可能である。
【００７４】
コンピュータ１１０は、遠隔コンピュータ１８０のような１つまたは複数の遠隔コンピュータへの論理接続を使用するネットワーク化された、または分散された環境で動作することもできる。遠隔コンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードであることが可能であり、通常、コンピュータ１１０に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶デバイス１８１だけを図３Ｂに示している。図３Ｂに描いた論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワーク／バスを含むことも可能である。そのようなネットワーキング環境は、家庭、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【００７５】
ＬＡＮネットワーキング環境で使用されるとき、コンピュータ１１０は、ネットワークインターフェースまたはネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ１１０は、通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２、または他の手段を含む。内部にあることも、外部にあることも可能なモデム１７２は、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１０に関連して描いたプログラムモジュール、またはプログラムモジュールの部分を遠隔のメモリ記憶デバイスの中に記憶することができる。例として、限定としてではなく、図３Ｂは、遠隔アプリケーションプログラム１８５をメモリデバイス１８１上に常駐するものとして示している。図示したネットワーク接続は、例としてのものであり、コンピュータ間で通信リンクを確立する他の手段を使用してもよいことが認められよう。
【００７６】
例としての分散計算フレームワークまたはアーキテクチャ
パーソナルコンピュータとインターネットの収斂に鑑みて、様々な分散計算フレームワークが開発されており、開発されつづけている。個人ユーザも企業ユーザも同様に、アプリケーションおよび計算デバイスのためのシームレスに相互運用性のあるＷｅｂ対応のインターフェースを備えており、コンピュータ活動が、ますますＷｅｂブラウザ指向またはネットワーク指向になっている。
【００７７】
例えば、ＭＩＣＲＯＳＯＦＴ（商標）の．ＮＥＴプラットフォームが、サーバ、Ｗｅｂベースのデータ記憶およびダウンロード可能なデバイスソフトウェアなどの構成単位（ｂｕｉｌｄｉｎｇ−ｂｌｏｃｋ）サービスを含む。一般的に言って、．ＮＥＴプラットフォームは、（１）全範囲の計算デバイスが協働するようにさせ、ユーザ情報が自動的に更新され、計算デバイスのすべてにおいて同期されるようにする能力、（２）ＨＴＭＬではなく、ＸＭＬのより広汎な使用で可能にされるＷｅｂサイトに関するより高い対話能力、（３）例えば、電子メール、またはＯｆｆｉｃｅ．ＮＥＴなどのソフトウェアなどの様々なアプリケーションの管理のための、中央開始ポイントからユーザへの製品およびサービスのカスタマイズされたアクセスおよびデリバリを特徴とするオンラインサービス、（４）情報へのアクセス、ならびにユーザおよびデバイスの間における情報の同期の効率および容易さを向上させる集中データ記憶、（５）電子メール、ファックス、および電話などの様々な通信媒体を統合する能力、（６）開発者にとって、再使用可能なモジュールを作成し、これにより、生産性を高め、プログラミングの誤りの数を減らす能力、および（７）多数の他のクロスプラットフォーム（ｃｒｏｓｓ−ｐｌａｔｆｏｒｍ）統合機能をも提供する。
【００７８】
本明細書では、例としての実施形態をコンピュータデバイス上に常駐するソフトウェアに関連して説明しているが、本発明の１つまたは複数の部分をオペレーティングシステム、アプリケーションプログラミングインターフェース（ＡＰＩ）、またはコプロセッサと要求側オブジェクトの間の「仲介役（ｍｉｄｄｌｅ　ｍａｎ）」オブジェクトを介して実施して、制御可能なテクスチャサンプリングサービスが、．ＮＥＴの言語およびサービスのすべてで、また他の分散計算フレームワークにおいても行われること、サポートされること、またはアクセスされることが可能であるようにすることができる。
【００７９】
制御可能なテクスチャサンプリング
「従来の技術」で説明したとおり、関与するアプリケーションに応じて、コンピュータグラフィックスでテクスチャサンプリングを行うのに適用することができるいくつかの異なる技術が存在する。ただし、問題は、ひとたび選択されると、その技術は、あまり柔軟性なしに固定され、選択されたテクスチャサンプリング技術に適さない独特の状況が生じた場合、または開発者が、最終結果において、ブラーなどのあるアーチファクトを所望するようなことがある場合、できることがほとんどないようになる。したがって、本発明は、テクスチャサンプリングアルゴリズムにインテリジェンスを加え、開発者にフロントエンドでより多くの自由を与え、バックエンドでより動的なテクスチャサンプリングを可能にするようにする。したがって、本発明の技術は、柔軟機能ＧＰＵに向かう傾向を利用し、開発者がオンザフライで適用する制御可能なテクスチャサンプリング、および様々な状況を様々な仕方で扱う動的なインテリジェンスを開示する。したがって、様々な実施形態で、本発明は、オペレーティングシステム、ドライバコード、ＡＰＩ、ＧＰＵまたは他のコプロセッシングデバイスを含むグラフィックスパイプライン自体におけるツールキットおよび／または機能の任意の１つまたは複数のものに、制御可能なテクスチャサンプリング機能を提供する機構を提供する。
【００８０】
したがって、本発明は、プログラマブルサンプリングを介してテクスチャサンプリングプロセスを制御するための様々な技術を提供する。「従来の技術」で述べたとおり、異方性サンプリングの１つの形態では、バイリニアサンプリングが、何らかの角に沿って複数回、行われる。図４Ａに示すとおり、テクスチャを有するポリゴンが、スクリーンの平面に対して斜めの角にあるとき、テクスチャに対してマップされたスクリーンピクセルに対応するフットプリントが、楕円などの細長い形状になる。このサンプリングフットプリントのために使用する正しい形状を計算するためのあらゆる現在、周知の方法は、計算をスクリーンピクセル−ポリゴンテクセル間の整列の相対的ジオメトリだけに依拠して行い、開発者が、フットプリントのサイズおよび向きを直接に予測可能でインテリジェントな仕方で制御することができるようにする柔軟性を提供するものは存在しない。したがって、本発明は、既に行われた自動計算の「手動オーバーライド（ｏｖｅｒｒｉｄｅ）」、および／または自動計算が生成する結果の変更を可能にして、リアルタイム３Ｄグラフィックスにおいて新しいレベルの視覚的現実感を可能にするための様々な機構を提供する。
【００８１】
手動オーバーライドに関し、本発明を利用して、フットプリントを計算するのに通常、利用されるΔｕおよびΔｖを値ΔｕｎｅｗおよびΔｖｎｅｗで置き換えることによってフットプリントのサイズおよび向きを置換することができる。このことを図４Ａで示しており、ΔｕｎｅｗおよびΔｖｎｅｗが、置換の向きθｎｅｗを定義し、また置換のステップサイズｓｎｅｗを定義している。したがって、ＡＰＩ、オペレーティングシステム、ツールキット、ドライバ等を介して置換のΔｕｎｅｗおよびΔｖｎｅｗを指定することを介して、テクスチャサンプリングプロセスを制御することができる。これに関して、今日の柔軟機能ＧＰＵは、そのような処理を実現するあるレジスタの割当ておよび／または割当て変更を行うことにより、以上のことを実現する機能を表すトークンを受け取ることができる。また、この処理を扱うようにＧＰＵを前もって製造することもできる。置換は、一部の状況では、現在、使用されている技術より高速である。というのは、置換中にアプリケーションによって定義されるパラメータを計算することにチップがもはや関与していないからである。
【００８２】
異方性技術に関連して利用される現在のフットプリントの変更に関し、本発明を利用して、フットプリントを計算するのに通常、利用されるΔｕおよびΔｖをオフセット値Δｕ０およびΔｖ０で変更することにより、フットプリントのサイズおよび向きを変更することができる。このことを図４Ａに示しており、Δｕ＋Δｕ０およびΔｖ＋Δｖ０が、変更された向きθ０を定義し、また変更されたステップサイズｓ０も定義している。したがって、ＡＰＩ、オペレーティングシステム、ツールキット、ドライバ等を介してオフセット値Δｕ０およびΔｖ０を指定することを介して、テクスチャサンプリングプロセスを制御することができる。置換と同様に、今日の柔軟機能ＧＰＵは、以上のことを実現する機能を表すトークンを受け取ることができるか、または同じ結果を実現するように前もって製造することができる。本明細書で説明する変更は、単に加算ではないΔｕとΔｕ０、またはΔｖ＋Δｖ０のあらゆる関数を企図している。すなわち、当面のフィルタリングタスクに適切である可能性がある乗算、累乗、平方根、減算、または任意の関数Ｆ（ΔｕおよびΔｕ０）またはＦ（Δｖ＋Δｖ０）が企図されている。
【００８３】
開発者が、ハードウェアがテクスチャマッピングに関して通常どおり挙動するのを可能にするように選択した場合、変更能力と置換能力はともに同時に提供することができ、また両方とも、オプションである。ただし、本発明は、テクスチャサンプリングフットプリントを定義するパラメータを置き換え、かつ／または変更して制御可能なテクスチャサンプリングを実現することにより、現在、既存の技術を補足するオプションを開発者に提供する。
【００８４】
また、「従来の技術」で説明したとおり、グラフィックス処理の分野の技術者に知られているバイリニアフィルタリングのための例としての方程式は、以下を含む。
ｃａ＝ｐｉ，ｊ・α＋（ｐｉ，ｊ＋１）・（１−αａ）
ｃｂ＝ｐｉ＋１，ｊ・α＋（ｐｉ＋１，ｊ＋１）・（１−αａ）
Ｆ＝ｌｒｐ（ｃａ，ｃｂ）・αｂ
【００８５】
さらなる実施形態では、本発明は、開発者が、バイリニアフィルタリング計算に関連して使用するαａおよびαｂを置き換える、または変更するのを可能にして、テクスチャサンプリングプロセスに対するさらなる制御の層を提供する。
【００８６】
本発明によって提供される技術は一般的であり、本発明の使用に関する適用範囲は、実質的に無限である。したがって、本発明の使用の多数の例を以下に提示し、また本発明を関連して使用することができる効果の多数の例を「従来の技術」で供与したが、本発明は、マッピングの態様を制御することが望ましいあらゆるテクスチャサンプリングプロセスに適用されるものとする。
【００８７】
したがって、本発明の使用の例、およびその例としての使用に関する例としての擬似コードを以下に提示する。
【００８８】
モーションブラーのための現在の方法は、例えば、４回ないし８回の複数回のレンダリング走査を必要とし、これにより、より遅いパフォーマンス、例えば、４倍ないし８倍遅いパフォーマンスが直接にもたらされる。本発明によるフィルタリング手法を使用することにより、はるかに小さい影響しかパフォーマンスに与えることなく、一回だけの走査で同様の結果を提供することができる。そのようなケースでは、本発明は、反復（頂点レベル）データを適用してブラーが生じる方向ベクトルを制御する。前に説明したとおり、方向ベクトルは、定義パラメータを変更する、または置き換えることにより、変更する、または置換することができる。同様の手法を使用して反射／フレネル（Ｆｒｅｓｎｅｌ）ブラーをシミュレートし、かつ／または制御することができる。
【００８９】
拡散ライティングのため、また鏡面ライティングの何らかの近似のため、異方性表面反射およびライティングの効果を生成することが可能である。真の鏡面ライティングは、現行の技術が、異方性のサンプリングを行うことができない環境マップによってもたらされる。本発明の技術は、反射環境マップの異方性レンダリングを可能にする。そのような技術は、ステンレス鋼継手に対する軽くブラシがかけられた金属仕上げなどの輝きがあるが、異方性の表面に特に適しており、サンプリング方向の定義パラメータを変更するか、または置き換えることによってサンプリング方向の頂点ごとの指定またはピクセルごとの指定を使用することができる。
【００９０】
表面の自己シャドーイングに関して、表面のピクセルごとのライティングを促進する多くの技術が存在する。これらの技術のほとんどは、定義上、スムーズでソフトなライティング効果である拡散照明効果だけしか行うことができない。粗い表面の主要な視覚的インパクトは、より高いエリアがより低いエリアの上に投じる影からもたらされ、この影は、表面テクスチャの粗さを明確に描く切れのよいハイコントラストの境界を提供する。３Ｄグラフィックスにおいて影を計算するための他の方法は、１つのポリゴンから別のポリゴンの上に影を投じることができるだけであり、同一のポリゴン上のテクセル間で影を計算するためには有効でない。したがって、本発明は、サンプリング方向の定義パラメータを変更するか、または置き換えることによってサンプリング方向のピクセルごとの指定を適用する。
【００９１】
図５は、シャドーイングの背後にある基本原理を示し、また本発明のさらなる実施形態を示している。図５では、ポイントソースｐｓからシャドーイングまたはライティングが行われる任意の地形または表面Ｔが示されており、シェーディングが行われた領域は、数学上、ポイントソースｐｓからの光線に晒された表面のエリアを表す。これに関して、地形Ｔは、ｕ値およびｖ値を有することに加えて、地形Ｔのポイントの高さに対応するｗ値も有する複数のポイントによって定義される。したがって、３Ｄにおけるシャドーイングまたはライティングに関するサンプリング方向には、通常、Δｕ値、Δｖ値、およびΔｗ値によって定義される向きおよびステップサイズを有する３Ｄサンプリング方向ベクトルを設定することが関与する。これに関して、本発明は、Δｕ値、Δｖ値、およびΔｗ値の置換え、または変更を可能にし、前述したΔｕ値およびΔｖ値に適用される技術をΔｗ値にまで拡張する。
【００９２】
レイキャストボリュームサンプリングに関して、ボリュームレンダリングのための現在の方法は、ボリュームをスライスして視線方向に比較的直交するポリゴンにすることを必要とする。この手続きは、そのようなボリュームの端および隅に沿って帯状アーチファクトを生じさせる。本発明の技術により、それらのアーチファクトの制御可能な回避が可能になり、パフォーマンスも向上する。したがって、本発明により、サンプリング方向を決定する３Ｄベクトルの指定または変更が可能になり、この指定または変更が、頂点から直線的に繰り返される。次に、サンプリングが、一連のマルチセルごとに、例えば、８セル、トライリニアサンプル、またはバイリニアサンプルごとに行われることが可能である。
【００９３】
自己シャドーイングを伴うボリュームレンダリングに関して、この技術を従来のスライススタイルまたはスプラット（ｓｐｌａｔ）スタイルのボリュームレンダリングと組み合わせて使用するとき、自己シャドーイング効果または自己照明効果をレンダリングされるボリュームの中でシミュレートすることができる。したがって、本発明により、３Ｄサンプリング方向ベクトルの頂点ごとの指定または変更が可能になる。
【００９４】
自己シャドーイングを伴うボリュームレイキャスティングに関して、ネスト化されたループレベルが追加され、光線に沿った各サンプルで、別個のセットのサンプリングが、光源に向かう方向に沿って投射されて自己シャドーイングを伴う真のボリュームレイキャストレンダリングが提供される。この技術は、以上で考察した技術の簡単な拡張であるが、サンプリングハードウェアのより大きな変更を伴う。
【００９５】
プログラマブルテクスチャサンプリングおよびサンプリングシェーダ（ｓｈａｄｅｒ）に関して、本発明によって実現される重要な技術は、アプリケーション、または開発者が、異方性フィルタカーネルサンプルの方向および間隔を指定できるようにすることである。
【００９６】
現行のバイリニア／トライリニアサンプリングにおいて使用されるプログラミングされた値には、４ポイントカーネルのｕ幅およびｖ幅が含まれる。本発明によるプログラマブル異方性サンプリングに関するさらなる値には、ｕにおけるサンプルのｄｕ間隔、およびｖにおけるサンプルのｄｖ間隔が含まれる。これに関して、本発明は、ピクセルごとに以上のパラメータを指定するか、または変更することを、頂点ごとに行うのに加えて行った後、それを繰り返すことを可能にする。例えば、そのような技術で、異方性のブラーリングが行われる環境マップに十分である。
【００９７】
非限定的な例としての擬似コード
基本的な異方性シェーダのための例としての擬似コードは、以下のとおりである。
【００９８】
各ピクセルに関して、
2004021979.tif 000003
【００９９】
２Ｄの頂点ごとのデータに関して演算を行うモーションブラーのための、例えば、環境マップでブラシのかけられた金属をシミュレートするための異方性ブラーシェーダのための例としての擬似コードは、以下のとおりである。
【０１００】
各ピクセルに関して、
2004021979.tif 000004
【０１０１】
鮮明な影の端をもたらすが、位置が影に入っていると判定されたとき、サンプリングの早期終了（ｅａｒｌｙ−ｏｕｔ）を可能にする、シャープシャドー表面シェーダのための、例えば、局所表面自己シャドーイングシェーダのための例としての擬似コードは、以下のとおりである。
【０１０２】
2004021979.tif 000005
【０１０３】
最も近いオクルーダ（ｏｃｃｌｕｄｅｒ）に影を分配することによって分数の影の値を計算するファジーシャドー表面シェーダのための例としての擬似コードは、以下のとおりである。
【０１０４】
2004021979.tif 000006
【０１０５】
本発明の使用のさらなる例には、トライリニアサンプル値を累算し、積分するプログラマブルボリュームレイキャスティングシェーダを提供することが含まれる。そのようなシェーダは、パイプライン式の環境においてデータがどれだけハードであるかに基づいて異なる仕方で挙動することが可能である。これに関して、本発明をｚバッファと協調して利用して不透明なオブジェクトを積分することができる。そのような場合、１回のｚバッファ読取りを行い、そのｚバッファをサンプルごとに比較することができる。また、そのような技術が、光線が常に目から遠ざかる方向に向かうものと想定し、したがって、深度比較演算の結果に従って積分を終了できることが可能である。
【０１０６】
本発明の使用の他の例には、ボリュームデータに関して現行のスプラットタイプのレンダリング方法を利用するが、シャドーレイ（ｓｈａｄｏｗ　ｒａｙ）を計算するのに前述した技術を使用するプログラマブル自己シャドーイングボリュームフォグ／ファー（ｆｕｒ）シェーダを提供することが含まれる。
【０１０７】
本発明を実施する複数のやり方が存在する。１つのやり方は、コプロセッサ、例えば、ＧＰＵが、本発明の機能を行い、本明細書で説明する制御可能なテクスチャサンプリングに適したコマンドを受け取るように前もって製造されている実装形態を提供することである。本発明の別の実施形態には、適切なＡＰＩ、ツールキット、ドライバコード、オペレーティングシステム、独立型のソフトウェアオブジェクトまたはダウンロード可能なソフトウェアオブジェクト等により、アプリケーションとコプロセッサの間などにおいて本発明を使用できるようになる、手作業で、または自動的にコプロセッサをプログラミングして本発明の機能を実現することが含まれる。別の実施形態には、アプリケーションによってコプロセッサに送り込まれるパラメータを通知して、テクスチャサンプリングプロセスのフットプリントパラメータの変更／置換えをコプロセッサにトランスペアレントにすることが含まれる。したがって、本発明は、本明細書で説明するプログラマブルテクスチャサンプリングを完全にハードウェアだけで実施することも、一部はハードウェアで、また一部はソフトウェアで実施することも、またソフトウェア実施形態として実施することも企図している。
【０１０８】
本発明の例としての実施形態では、サンプリングが行われる方向ベクトルを特定するサンプリングステートメントにおけるパラメータの指定を可能にするＡＰＩ構成要素が提供される。また、多次元サンプリングベクトルに関して前述した変形形態のすべても企図されている。例えば、評価スロープのために使用される第３の構成要素を影を投射するため、ボリュームレンダリングのためなどに使用することができる。ハードウェアレジスタに対して演算を行うためのそのようなＡＰＩ構成要素の例が、擬似コード形式で以下のとおりであり、
【０１０９】
2004021979.tif 000007
【０１１０】
また、ステージ＃の宣言において定義されるサンプリングカウント／混合モードが、以下のようなものである。
2004021979.tif 000008
【０１１１】
異方性シェーディングに関する方向ベクトル／ストライド（ｓｔｒｉｄｅ）を前述したＡＰＩによって指定された手段によって制御可能にする例としてのハードウェア部分は、以下の機能を含む。すなわち、（Ａ）デフォルト、（Ｂ）置換え、（Ｃ）加算、および（Ｄ）変調である。
【０１１２】
これに関して、デフォルトは、標準の異方性フィルタリングアルゴリズムに基づいてサンプリングに関するストライドおよび方向を計算する従来のアプリケーションによって制御されないサンプリングを定義する。
【０１１３】
置換え機能は、デフォルトをアプリケーションによって指定された値で置き換える。加算機能は、アプリケーションによって指定された値をチップによって計算された値に加算して最終のサンプリング方向を決定する。変調機能は、アプリケーションによって指定された方向ベクトルにチップによって計算された方向ベクトルを掛けて最終のサンプリング方向を決定する。
【０１１４】
本発明の一実施形態では、ハードウェアチップが、本発明の様々な技術を実施するため、既存の従属する読取りハードウェア技術を活用して個々のサンプルを取る。そのような実施形態により、アプリケーションが、２×２のバイリニアフットプリントの各セットの位置だけでなく、カーネルにおけるすべてのサンプルの位置を制御することが可能になり、したがって、そのような実施形態は、前述した技術のいくつかよりもさらに一般的である。
【０１１５】
本発明のさらなる使用には、ネルソンマックス（Ｎｅｌｓｏｎ　Ｍａｘ）の水平マッピング手法の導関数を使用して、自己シャドーイングを伴うテクスチャを、そのテクスチャに付随して利用されるパラメータを制御することによって実現する。
【０１１６】
また、本発明は、様々な妥当な実施形態において、投射された光線が、現行のｚバッファと交差するとき、または飽和が生じたとき、（１）検出、（２）「早期終了」、または（３）ナルを戻すこともサポートする。
【０１１７】
本発明の他の実施形態では、様々な詳細で前述したとおり、サンプリング動作のアルゴリズム式制御を可能にするプログラマブルサンプリングシェーダが提供される。さらに、ブラーリング、分散された光等をモデル化することができるように各ステップにおいて増分の間隔、またはカーネルのサイズを変更できる能力などの、ある２次効果も達せられる。
【０１１８】
前述したとおり、本発明の例としての実施形態を様々な計算デバイスおよびネットワークアーキテクチャに関連して説明してきたが、基礎にある概念は、テクスチャサンプリングを行うことが望ましいあらゆる計算デバイスまたは計算システムに適用することができる。したがって、本発明による改良された信号処理を提供するための技術は、様々なアプリケーションおよびデバイスに適用することができる。例えば、本発明のアルゴリズムは、デバイス上の別個のオブジェクト、別のオブジェクトの一部、サーバからダウンロード可能なオブジェクト、デバイスまたはオブジェクトとネットワークの間の「仲介役」、配布されたオブジェクト等として提供されて、計算デバイスのオペレーティングシステムに適用されることが可能である。様々な選択を表すものとして、例としてのプログラミング言語、名前、および例を本明細書で選択しているが、これらの言語、名前、および例は、限定することを意図するものではない。本発明によって実現されるのと同一の、同様な、または等価な制御可能なテクスチャサンプリングを実現するオブジェクトコードを提供する様々なやり方が存在することが、当分野の技術者には理解されよう。
【０１１９】
本明細書で説明する様々な技術をハードウェアまたはソフトウェアと関係して、または適切な場合、ハードウェアとソフトウェアの組合せで実施することができる。したがって、本発明の方法および装置、または本発明のある態様またはある部分が、フロッピー（Ｒ）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または任意の他のマシン可読記憶媒体などの実体のある媒体で実現されたプログラムコード（すなわち、命令）の形態をとることが可能であり、そのプログラムコードが、コンピュータなどのマシンにロードされ、そのマシンによって実行されるとき、そのマシンが、本発明を実施するための装置になる。プログラマブルコンピュータ上でプログラムコードを実行する場合、計算デバイスは、一般に、プロセッサ、プロセッサによる読取りが可能な記憶媒体（揮発性メモリおよび不揮発性メモリおよび／または記憶要素を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを含む。例えば、データ処理ＡＰＩ等の使用を介して、本発明の信号処理サービスを利用することができる１つまたは複数のプログラムが、好ましくは、高レベルの手続き言語またはオブジェクト指向言語で実装されてコンピュータシステムと通信する。ただし、プログラムは、所望される場合、アセンブリ言語または機械言語で実装することができる。いずれにしても、言語は、コンパイルされる、または解釈される言語であり、ハードウェア実装形態と組み合わせられることが可能である。
【０１２０】
また、本発明の方法および装置は、電気配線またはケーブル配線を介する、光ファイバを介する、または任意の他の形態の伝送を介するなどの何らかの伝送媒体を介して伝送されるプログラムコードの形態で実現される通信を介して実施することも可能であり、そのプログラムコードが、ＥＰＰＲＯＭ、ゲートアレイ、プログラマブル論理デバイス（ＰＬＤ）、クライアントコンピュータ、ビデオレコーダ等、または例としての実施形態で前述した信号処理能力を有する受信側マシンによって受信され、ロードされ、実行されたるとき、本発明を実施するための装置となる。汎用プロセッサ上で実施されるとき、プログラムコードは、プロセッサとの組み合わされて本発明の機能を呼び出すように動作する独特の装置となる。さらに、本発明に関連して使用されるあらゆる記憶技術が、常にハードウェアとソフトウェアの組合せであることが可能である。
【０１２１】
本発明を様々な図の好ましい実施形態に関連して説明してきたが、本発明を逸脱することなく本発明と同じ機能を行うために、他の同様な実施形態を使用できること、または説明した実施形態に変更または追加を行うのが可能なことを理解されたい。例えば、本発明の例としてのネットワーク環境は、ピアツーピアのネットワーク化された環境などのネットワーク化された環境のコンテキストで説明しているが、本発明は、そのような環境に限定されず、本発明の適用で説明した方法は、ゲームコンソール、ハンドヘルドコンピュータ、可搬コンピュータなどの任意の計算デバイスまたは計算環境に、有線であるか、無線であるかに関わらず、適用することができ、また通信ネットワークを介して接続され、そのネットワークを介して対話する任意の数のそのような計算デバイスに適用することができる。さらに、特に無線ネットワーク化されたデバイスが増え続けるなかで、ハンドヘルドデバイスオペレーティングシステム、および他のアプリケーション特有のオペレーティングシステムを含む様々なコンピュータプラットフォームが企図されていることを強調しておかなければならない。さらに、本発明は、複数の処理チップまたは処理デバイスで、またはその全体で実施することができ、また記憶も同様に、複数のデバイス全体で行うことができる。したがって、本発明は、何らかの単一の実施形態に限定されるべきものではなく、頭記の特許請求の範囲に準拠する広がりおよび範囲で解釈されるべきものである。
【０１２２】
【発明の効果】
以上説明したように、本発明によれば、テクスチャサンプリングを制御可能な改良された機構を設けたので、例えば既存のテクスチャサンプリング技術を補足する際に、テクスチャサンプリングのためのパラメータの置き換えや変更を柔軟に行うことができ、３Ｄアクセラレータハードウェアがレンダリングを行う際の現実感のレベルを大幅に向上させることが可能となる。
【図面の簡単な説明】
【図１】コンピュータグラフィックスシステムにおけるテクスチャサンプリングのプロセスの概要を提供する図である。
【図２Ａ】コンピュータグラフィックスシステムにおけるテクスチャサンプリングに関連して利用される従来技術のポイントサンプリングプロセスの概要を提供する図である。
【図２Ｂ】コンピュータグラフィックスシステムにおけるテクスチャサンプリングに関連して利用される従来技術のバイリニアフィルタリングプロセスの概要を提供する図である。
【図２Ｃ】コンピュータグラフィックスシステムにおけるテクスチャサンプリングに関連して利用される従来技術のＭＩＰマッピングプロセスの概要を提供する図である。
【図２Ｄ】コンピュータグラフィックスシステムにおけるテクスチャサンプリングに関連して利用される従来技術の異方性フィルタリングプロセスの概要を提供する図である。
【図３Ａ】本発明を実施することができる様々な計算デバイスを有する例としてのネットワーク環境を示すブロック図である。
【図３Ｂ】本発明を実施することができる例としての限定するものではない計算デバイスを示すブロック図である。
【図４Ａ】制御可能なテクスチャサンプリングが提供される本発明の実施形態を示す図である。
【図４Ｂ】制御可能なテクスチャサンプリングが提供される本発明のさらなる実施形態を示す図である。
【図５】本発明のさらなる実施形態を適用することができるプロセスを示す図である。
【符号の説明】
２００　テクスチャ
２０２　テクスチャ
２２０　レンダリングされたイメージ部分
２２２　ピクセル
２２４　ピクセル走査線
【図１】
2004021979.tif 000009
【図２Ａ】
2004021979.tif 000010
【図２Ｂ】
2004021979.tif 000011
【図２Ｃ】
2004021979.tif 000012
【図２Ｄ】
2004021979.tif 000013
【図３Ａ】
2004021979.tif 000014
【図３Ｂ】
2004021979.tif 000015
【図４Ａ】
2004021979.tif 000016
【図４Ｂ】
2004021979.tif 000017
【図５】
2004021979.tif 000018