(57)【特許請求の範囲】
【請求項１】
コンピュータグラフィックスシェーディングにおいてカラー照明を提供するための方法であって、
少なくとも１つのカラーイラディアンスベクトルフィールドテーブルを格納するステップであって、該カラーイラディアンスベクトルフィールドテーブルの各々が、レンダリングされるシーンに関するそれぞれのスペクトル波長のイラディアンスフィールドを表している、ステップと、
該イラディアンスベクトルフィールドテーブル中のカラーイラディアンスベクトルに基づいて該シーンのライティングを行うステップと、
を包含する、方法。
【請求項２】
前記格納ステップが、カラーイラディアンスベクトルフィールドテーブルの組を格納することを含み、該カラーイラディアンスベクトルフィールドテーブルの各々が、レンダリングされるシーンに関するそれぞれのスペクトル波長のイラディアンスフィールドを表しており；前記ライティングステップが、ライティングステップが行われている各点毎に、
該イラディアンスベクトルフィールドテーブルの組を用いて、各点毎にカラーイラディアンスベクトルの組を算出するステップと、
該カラーイラディアンスベクトルの組の中の各カラーイラディアンスベクトルと、該点の法平面とのベクトル演算を行い、それによってイラディアンスエネルギー成分を算出するステップと、
を包含し、それによって、該イラディアンスエネルギー成分が、該点に関する陰影値（ｓｈａｄｅ  ｖａｌｕｅ）を決定する際に使用され得る、請求項１に記載の方法。
【請求項３】
前記ライティングステップが、ライティングが行われている各点毎に、前記イラディアンスエネルギー成分に基づいて、該点の表面カラーを変調させるステップをさらに包含する、請求項２に記載の方法。
【請求項４】
前記カラーイラディアンスベクトルを算出するステップが、算出される各カラーイラディアンスベクトル毎に、
それぞれのカラーイラディアンスベクトルフィールドテーブル中で関心のある点の付近にある点のカラーイラディアンスベクトルをルックアップするステップと、
該ルックアップステップで得られた該カラーイラディアンスベクトルを補間し、それによって、該関心のある点に関する前記それぞれのスペクトル波長の該カラーイラディアンスベクトルを算出するステップと、
を包含する、請求項２に記載の方法。
【請求項５】
前記ベクトル演算を行うステップが、前記カラーイラディアンスベクトルの組の中の各カラーイラディアンスベクトルと、前記点の法平面との内積を計算および加算するステップを包含する、請求項２に記載の方法。
【請求項６】
前記格納ステップの前に、エミッタ空間で各カラーイラディアンスベクトルフィールドテーブルを生成するステップと、前記ライティングステップの前に、各点および対応する法平面を該エミッタ空間に変換するステップと、をさらに包含する、請求項１に記載の方法。
【請求項７】
前記格納ステップが、それぞれのスペクトル波長で３次元イラディアンスフィールドを表す３次元カラーイラディアンスベクトルフィールドテーブルを格納する、請求項１に記載の方法。
【請求項８】
前記格納ステップが、少なくとも１つのカラー点光源のイラディアンスフィールドを表すカラーイラディアンスベクトルフィールドテーブルを格納する、請求項１に記載の方法。
【請求項９】
前記格納ステップが、照明器具ファイルフォーマットおよびスペクトル波長によって定義される少なくとも１つの点光源のイラディアンスフィールドを表すカラーイラディアンスベクトルフィールドテーブルを格納する、請求項８に記載の方法。
【請求項１０】
前記格納ステップが、少なくとも１つのカラー面光源のイラディアンスフィールドを表すカラーイラディアンスベクトルフィールドテーブルを格納する、請求項１に記載の方法。
【請求項１１】
各カラーイラディアンスベクトルフィールドテーブルを生成するステップをさらに包含する、請求項１に記載の方法。
【請求項１２】
前記格納ステップが、解像度が段階的に粗くなるにつれて、シーン中の段階的により広い領域をカバーするマルチ解像度カラーイラディアンスフィールドテーブルの組を格納する、請求項１に記載の方法。
【請求項１３】
前記格納ステップが、前記イラディアンスフィールドにおけるシャドウを表す符号化可視度情報を格納するステップをさらに包含する、請求項１に記載の方法。
【請求項１４】
前記格納ステップが、前記イラディアンスフィールドにおける関与媒体を表す符号化可視度情報を格納するステップをさらに包含する、請求項１に記載の方法。
【請求項１５】
シャドウマップから可視度情報を決定するステップと、
該可視度情報に基づいて前記イラディアンスエネルギー成分を量るステップと、
をさらに包含する、請求項２に記載の方法。
【請求項１６】
背景映写計算を行い、それによって、可視度情報を決定するステップと、
該可視度情報に基づいて前記イラディアンスエネルギー成分を量るステップと、
をさらに包含する、請求項２に記載の方法。
【請求項１７】
シャドウ容積計算を行い、それによって、可視度情報を決定するステップと、
該可視度情報に基づいて前記イラディアンスエネルギー成分を量るステップと、
をさらに包含する、請求項２に記載の方法。
【請求項１８】
前記ライティングステップが、アニメーションフレーム中のシーンのライティングを行い、それによって、コンピュータグラフィックスアニメーションにおいてカラー照明が提供される、請求項１に記載の方法。
【請求項１９】
コンピュータグラフィックスシェーディングにおいて照明を提供するための方法であって、
レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを生成するステップと、
該イラディアンスベクトルフィールドテーブル中のイラディアンスベクトルに基づいて該シーンのライティングを行うステップと、
を包含する、方法。
【請求項２０】
前記ライティングステップが、ライティングが行われている各点毎に、
前記イラディアンスベクトルフィールドテーブルを用いて、点のイラディアンスベクトルを算出するステップと、
該イラディアンスベクトルと、該点の法平面とのベクトル演算を行い、それによってイラディアンスエネルギー成分を算出するステップと、
を包含し、それによって、該イラディアンスエネルギー成分が、該点に関する陰影値を決定する際に使用され得る、請求項１９に記載の方法。
【請求項２１】
前記ライティングステップが、ライティングが行われている各点毎に、前記イラディアンスエネルギー成分に基づいて、該点の表面カラーを変調させるステップをさらに包含する、請求項２０に記載の方法。
【請求項２２】
前記イラディアンスベクトルを算出するステップが、
前記イラディアンスベクトルフィールドテーブル中の関心のある点に隣接する点のイラディアンスベクトルをルックアップするステップと、
該ルックアップステップで得られた該イラディアンスベクトルを補間し、それによって、該関心のある点の該イラディアンスベクトルを算出するステップと、
を包含する、請求項２０に記載の方法。
【請求項２３】
前記ベクトル演算を行うステップが、前記イラディアンスベクトルと、前記点の前記法平面との内積を計算するステップを包含する、請求項２０に記載の方法。
【請求項２４】
前記生成ステップが、エミッタ空間で前記イラディアンスベクトルフィールドテーブルを生成し、前記ライティングステップの前に、各点および対応する法平面を該エミッタ空間に変換するステップをさらに包含する、請求項２０に記載の方法。
【請求項２５】
前記生成ステップが、３次元イラディアンスフィールドを表す３次元イラディアンスベクトルフィールドテーブルを生成する、請求項１９に記載の方法。
【請求項２６】
前記生成ステップが、少なくとも１つの点光源のイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを生成する、請求項１９に記載の方法。
【請求項２７】
前記生成ステップが、照明器具ファイルフォーマットによって定義される少なくとも１つの点光源のイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを生成する、請求項２６に記載の方法。
【請求項２８】
前記生成ステップが、少なくとも１つの面光源のイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを生成する、請求項１９に記載の方法。
【請求項２９】
前記イラディアンスベクトルフィールドテーブルをメモリ中に格納するステップをさらに包含する、請求項１９に記載の方法。
【請求項３０】
前記生成ステップが、解像度が段階的に粗くなるにつれて、シーン中の段階的により広い領域をカバーするマルチ解像度イラディアンスフィールドテーブルの組を生成する、請求項１９に記載の方法。
【請求項３１】
前記生成ステップが、前記イラディアンスフィールドにおけるシャドウを表すために可視度情報を符号化するステップをさらに包含する、請求項１９に記載の方法。
【請求項３２】
前記生成ステップが、前記イラディアンスフィールドにおける関与媒体を表すために、可視度情報を符号化するステップをさらに包含する、請求項１９に記載の方法。
【請求項３３】
シャドウマップから可視度情報を決定するステップと、
該可視度情報に基づいて前記イラディアンスエネルギー成分を量るステップと、
をさらに包含する、請求項２０に記載の方法。
【請求項３４】
背景映写計算を行い、それによって、可視度情報を決定するステップと、
該可視度情報に基づいて前記イラディアンスエネルギー成分を量るステップと、
をさらに包含する、請求項２０に記載の方法。
【請求項３５】
シャドウ容積計算を行い、それによって、可視度情報を決定するステップと、
該可視度情報に基づいて前記イラディアンスエネルギー成分を量るステップと、
をさらに包含する、請求項２０に記載の方法。
【請求項３６】
コンピュータグラフィックスシェーディングにおいてカラー照明を提供するための方法であって、
レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを格納するステップと、
レンダリングされるシーンのカラーを表すイラディアンスカラーテーブルを格納するステップと、
該イラディアンスベクトルフィールドテーブル中のイラディアンスベクトルおよび該イラディアンスカラーテーブル中のイラディアンスカラー値に基づいて、該シーンのライティングを行うステップと、
を包含する、方法。
【請求項３７】
前記ライティングステップが、ライティングが行われている各点毎に、
前記イラディアンスベクトルフィールドテーブルを用いて、点のイラディアンスベクトルを算出するステップと、
前記イラディアンスカラーテーブルを用いて、該点のイラディアンスカラーを算出するステップと、
該イラディアンスベクトルと、該点の法平面とのベクトル演算を行い、それによってイラディアンスエネルギー成分を算出するステップと、
該算出されたイラディアンスカラーを用いて該イラディアンスエネルギー成分を変調させるステップと、
を包含し、それによって、該変調されたイラディアンスエネルギー成分が、該点に関する陰影値を決定する際に使用され得る、請求項３６に記載の方法。
【請求項３８】
前記ライティングステップが、ライティングが行われている各点毎に、前記変調されたイラディアンスエネルギー成分に基づいて、該点の表面カラーを変調させるステップをさらに包含する、請求項３７に記載の方法。
【請求項３９】
前記イラディアンスベクトルを算出するステップが、
前記イラディアンスベクトルフィールドテーブル中で関心のある点の付近にある点のイラディアンスベクトルをルックアップするステップと、
該ルックアップステップで得られた該イラディアンスベクトルを補間し、それによって、該関心のある点の該イラディアンスベクトルを算出するステップと、
を包含する、請求項３７に記載の方法。
【請求項４０】
前記ベクトル演算を行うステップが、前記イラディアンスベクトルと、前記点の法平面との内積を計算するステップを包含する、請求項３７に記載の方法。
【請求項４１】
前記イラディアンスカラーを算出するステップが、
前記イラディアンスカラーテーブル中で関心のある点の付近にある点のイラディアンスカラーをルックアップするステップと、
該ルックアップステップで得られた該イラディアンスカラーを補間し、それによって、該関心のある点の該イラディアンスカラーを算出するステップと、
を包含する、請求項３７に記載の方法。
【請求項４２】
前記格納ステップが、解像度が段階的に粗くなるにつれて、シーン中の段階的により広い領域を包含する、マルチ解像度イラディアンスベクトルフィールドテーブルの組およびマルチ解像度イラディアンスカラーテーブルの組を格納する、請求項３６に記載の方法。
【請求項４３】
前記ライティングステップが、最も細かい解像度で点を包含するイラディアンスベクトルフィールドテーブルおよびイラディアンスカラーテーブルを選択するステップを含む、請求項４２に記載の方法。
【請求項４４】
前記格納ステップの前に、前記イラディアンスベクトルフィールドテーブルおよび前記イラディアンスカラーテーブルを生成するステップをさらに包含する、請求項３６に記載の方法。
【請求項４５】
コンピュータグラフィックス画像をシェーディングし、それによって源からのカラー照明を表す方法であって、
イラディアンスベクトルフィールドテーブルを第１のテクスチャとして格納するステップと、
イラディアンスカラーテーブルを第２のテクスチャとして格納するステップと、
該第１のテクスチャを用いて第１の画像をレンダリングし、それによって、画素を着色するステップと、
赤、緑、および青（ＲＧＢ）のカラー成分で符号化された法平面を有する第２の画像をレンダリングするステップと、
該第１および第２の画像を乗算し、それによって、第３の画像を得るステップと、
該第３の画像の成分を累算し、それによって第４の画像を得るステップと、
カラーおよびテクスチャの少なくとも１つを用いてシーンをレンダリングし、それによって、第５の画像を得るステップと、
該第４および第５の画像を乗算し、それによって、フレームバッファ表示画像を得るステップと、
該第２のテクスチャを用いてシーンをレンダリングし、それによって、第６の画像を得るステップと、
該第６の画像および該フレームバッファ表示画像を乗算し、それによって、最終的なフレームバッファ表示画像を得るステップと、
を包含する、方法。
【請求項４６】
コンピュータグラフィックスシェーディングにおいて一定カラーの照明を提供するための方法であって、
レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを格納するステップと、
該イラディアンスベクトルフィールドテーブルを用いて、ライティングが行われている点のイラディアンスベクトルを算出するステップと、
該イラディアンスベクトルと該点の法平面とのベクトル演算を行い、それによって、イラディアンスエネルギー成分を算出するステップと、
該イラディアンスエネルギー成分に基づいて、該点の表面カラーを変調させ、それによって、変調表面カラー値を得るステップと、
光源カラー値によって該変調された表面カラーを乗算するステップと、
を包含する、方法。
【請求項４７】
コンピュータグラフィックス画像をシェーディングし、それによって一定カラーの源からの照明を表す方法であって、
イラディアンスベクトルフィールドテーブルをイラディアンステクスチャとして格納するステップと、
該イラディアンステクスチャを用いて第１の画像をレンダリングし、それによって、画素を着色するステップと、
赤、緑、および青（ＲＧＢ）のカラー成分で符号化された法平面を有する第２の画像をレンダリングするステップと、
該第１および第２の画像を乗算し、それによって、第３の画像を得るステップと、
該第３の画像の成分を累算し、それによって第４の画像を得るステップと、
カラーおよびテクスチャの少なくとも１つを用いてシーンをレンダリングし、それによって、第５の画像を得るステップと、
該第５の画像を光源カラー値によって乗算し、それによって、第６のフレームバッファ画像を得るステップと、
該第４および第６の画像を乗算し、それによって、最終的なフレームバッファ表示画像を得るステップと、
を包含する、方法。
【請求項４８】
コンピュータグラフィックス画像をシェーディングし、それによって源からの照明を表す方法であって、
イラディアンスベクトルフィールドテーブルを生成するステップと、
該イラディアンスベクトルフィールドテーブルを用いて第１の画像をレンダリングし、それによって、画素を着色するステップと、
赤、緑、および青（ＲＧＢ）のカラー成分で符号化された法平面を有する第２の画像をレンダリングするステップと、
該第１および第２の画像を乗算し、それによって、第３の画像を得るステップと、
該第３の画像の成分を累算し、それによって第４の画像を得るステップと、
カラーおよびテクスチャの少なくとも１つを用いてシーンをレンダリングし、それによって、第５の画像を得るステップと、
該第４および第５の画像を乗算し、それによって、最終的な表示画像を得るステップと、
を包含する、方法。
【請求項４９】
コンピュータグラフィックスアニメーションにおいて照明を提供するための方法であって、
レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを生成するステップと、
該イラディアンスベクトルフィールドテーブル中のイラディアンスベクトルに基づいて、アニメーションフレーム中で該シーンのライティングを行うステップと、
を包含する、方法。
【請求項５０】
コンピュータグラフィックス画像の点をシェーディングし、それによって源からの照明を表すシステムであって、
該源照明のイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを格納するメモリと、
該イラディアンスベクトルフィールドテーブル中の選択された点のイラディアンスベクトルをルックアップおよび補間し、それによって補間イラディアンスベクトルを算出するルックアップユニットと、
該補間イラディアンスベクトルと、シェーディングされている該点の法平面との内積を計算し、イラディアンスエネルギー成分を出力する内積ユニットと、
を備え、それによって、該イラディアンスエネルギー成分が、該点に関する最終的なシェーディングカラー値を決定する際に使用され得る、システム。
【請求項５１】
前記メモリが、３次元イラディアンスフィールドを表す３次元イラディアンスベクトルフィールドテーブルを格納するためのテクスチャメモリを含む、請求項５０に記載のシステム。
【請求項５２】
前記源照明が、少なくとも１つの点または面光源を含み、前記メモリが、該少なくとも１つの点または面光源の前記イラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを格納する、請求項５０に記載のシステム。
【請求項５３】
コンピュータグラフィックス画像の点をシェーディングし、それによって一定カラーの源からの照明を表すシステムであって、
該源照明のイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを格納するメモリと、
該イラディアンスベクトルフィールドテーブル中の選択された点のイラディアンスベクトルをルックアップおよび補間し、それによって補間イラディアンスベクトルを算出するルックアップユニットと、
該補間イラディアンスベクトルと、シェーディングされている該点の法平面との内積を計算し、イラディアンスエネルギー成分を出力する内積ユニットと、
該イラディアンスエネルギー成分に基づいて、該点の表面カラーを変調させる表面カラー変調器と、
該変調された表面カラーを、該点に関する光源カラー値によって乗算する、乗算器ユニットと、
を備える、システム。
【請求項５４】
コンピュータグラフィックスシェーディングにおいてカラー照明を提供するためのシステムであって、
少なくとも１つのカラーイラディアンスベクトルフィールドテーブルを格納するためのメモリであって、該カラーイラディアンスベクトルフィールドテーブルの各々は、レンダリングされるシーンに関するそれぞれのスペクトル波長のイラディアンスフィールドを表す、メモリと、
該イラディアンスベクトルフィールドテーブルのカラーイラディアンスベクトルに基づいて、該シーンのライティングを行うためのライティング手段と、
を備えた、システム。
【請求項５５】
前記メモリが、カラーイラディアンスベクトルフィールドテーブルの組を格納し、該カラーイラディアンスベクトルフィールドテーブルの各々が、レンダリングされるシーンに関するそれぞれのスペクトル波長のイラディアンスフィールドを表し；前記ライティング手段が、ライティングが行われている各点毎に、
該イラディアンスベクトルフィールドテーブルの組を用いて、各点毎にカラーイラディアンスベクトルの組を算出するための算出手段と、
該カラーイラディアンスベクトルの組の中の各カラーイラディアンスベクトルと、該点の法平面とのベクトル演算を行い、それによってイラディアンスエネルギー成分を算出するためのベクトル演算を行う手段と、
を備え、それによって、該イラディアンスエネルギー成分が、該点に関する陰影値を決定する際に使用され得る、請求項５４に記載のシステム。
【請求項５６】
前記ライティング手段が、ライティングが行われている各点毎に、前記イラディアンスエネルギー成分に基づいて、該点の表面カラーを変調させるための手段をさらに備えた、請求項５５に記載のシステム。
【請求項５７】
前記カラーイラディアンスベクトルを算出する手段が、
それぞれのカラーイラディアンスベクトルフィールドテーブル中で関心のある点に隣接する点のカラーイラディアンスベクトルをルックアップするためのルックアップ手段と、
該ルックアップ手段によって出力された該カラーイラディアンスベクトルを補間し、それによって、該関心のある点に関する前記それぞれのスペクトル波長の該カラーイラディアンスベクトルを得る補間器手段と、
を備え、前記ベクトル演算を行う手段が、前記カラーイラディアンスベクトルの組の中の各カラーイラディアンスベクトルと、該点の法平面との内積を計算するための内積計算手段を含む、請求項５５に記載のシステム。
【請求項５８】
コンピュータグラフィックスシェーディングにおいてカラー照明を提供するためのシステムであって、
カラーイラディアンスベクトルフィールドテーブルの組を格納するためのメモリであって、該カラーイラディアンスベクトルフィールドテーブルの各々は、レンダリングされるシーンに関するそれぞれのスペクトル波長のイラディアンスフィールドを表している、メモリと、
それぞれのカラーイラディアンスベクトルフィールドテーブル中で関心のある点に隣接する点のカラーイラディアンスベクトルをルックアップするルックアップユニットと、
該ルックアップユニットによって出力された該カラーイラディアンスベクトルを補間し、それによって、該関心のある点に関する該それぞれのスペクトル波長の該カラーイラディアンスベクトルを得る補間器ユニットと、
該カラーイラディアンスベクトルの組の中の各カラーイラディアンスベクトルと、該点の法平面との内積を計算し、それによってイラディアンスエネルギー成分を算出する内積ユニットと、
を備え、それによって、該イラディアンスエネルギー成分が、該点に関する陰影値を決定する際に使用され得る、システム。
【請求項５９】
コンピュータグラフィックスシェーディングにおいてカラー照明を提供するためのシステムであって、
レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを格納するための第１のメモリ場所と、
レンダリングされるシーンのカラー照明を表すイラディアンスカラーテーブルを格納するための第２のメモリ場所と、
該イラディアンスベクトルフィールドテーブル中のカラーイラディアンスベクトルに基づいて、該シーンのライティングを行うためのライティング手段と、
を備えた、システム。
【請求項６０】
前記ライティング手段が、ライティングが行われている各点毎に、
前記イラディアンスベクトルフィールドテーブルを用いて、該各点のイラディアンスベクトルを算出するための算出手段と、
前記イラディアンスカラーテーブルを用いて、該各点のイラディアンスカラーを算出するための算出手段と、
該イラディアンスベクトルと、該点の法平面とのベクトル演算を行い、それによってイラディアンスエネルギー成分を算出するためのベクトル演算を行う手段と、
補間されたイラディアンスカラーを用いて該イラディアンスエネルギー成分を変調させ、それによって、シェーディングされる関心のある点の陰影値を決定するために使用され得る変調イラディアンスエネルギー成分が得られる変調手段と、
を備えた、請求項５９に記載のシステム。
【請求項６１】
コンピュータグラフィックスシェーディングにおいてカラー照明を提供するためのシステムであって、
レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを格納するための第１のメモリ場所と、
レンダリングされるシーンのカラー照明を表すイラディアンスカラーテーブルを格納するための第２のメモリ場所と、
該イラディアンスベクトルフィールドテーブル中で関心のある点に隣接する点のイラディアンスベクトルをルックアップし、且つ該イラディアンスカラーテーブル中で関心のある点に隣接する点のイラディアンカラーをルックアップするルックアップユニットと、
該ルックアップユニットによって出力された該イラディアンスベクトルを補間し、それによって、該関心のある点の補間イラディアンスベクトルを得、且つ該ルックアップユニットによって出力された該イラディアンスカラーを補間し、それによって該関心のある点の補間イラディアンスカラーを得る補間器ユニットと、
該補間イラディアンスベクトルと、該点の法平面との内積を計算し、それによってイラディアンスエネルギー成分を算出する内積ユニットと、
該補間イラディアンスカラーを用いて該イラディアンスエネルギー成分を変調させ、それによって、シェーディングされる該関心のある点に関する陰影値を決定するために使用され得る変調イラディアンスエネルギー成分が得られる変調器ユニットと、
を備えた、システム。
【請求項６２】
コンピュータプログラムプロダクトであって、該コンピュータプログラムプロダクトは、コンピュータシステム中のグラフィックスプロセッサがコンピュータグラフィックスシェーディングにおいて照明を提供することを可能にする、その上に記録されたコンピュータプログラム論理を備えたコンピュータ使用可能媒体を備え、該コンピュータプログラム論理が、
該グラフィックスプロセッサが、レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルを生成することを可能にする手段と、
該グラフィックスプロセッサが、該イラディアンスベクトルフィールドテーブル中のイラディアンスベクトルに基づいて、該シーンのライティングを行うことを可能にする手段と、
を備えた、コンピュータプログラムプロダクト。
【請求項６３】
前記ライティングを可能にする手段が、
前記グラフィックスプロセッサが、前記イラディアンスベクトルフィールドテーブルを用いて点に関するイラディアンスベクトルを算出し、且つ該イラディアンスベクトルと、該点の法平面とのベクトル演算を行い、それによってイラディアンスエネルギー成分を算出することを可能にする手段を備え、それによって、該イラディアンスエネルギー成分が、該点の陰影値を決定する際に用いられ得る、請求項６２に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【０００１】
（発明の背景）
（発明の分野）
本発明は、コンピュータグラフィックスに関し、具体的には、シェーディングおよびアニメーションコンピュータ生成画像に関する。
【０００２】
（関連分野）
シェーディングは、レンダリングされる幾何シーンの写実感に貢献する重要な要素である。シェーディングに関連する計算は、２つの部分に分割され得る。すなわち、シェーディングされている各点における表面反射特性を求めること、およびシェーディングされている点における入射照明（ｉｎｃｉｄｅｎｔ）を計算することである。表面反射特性は、表面がどのように光を放散するかを定義するために、コンピュータグラフィックスアプリケーションプログラミングインタフェース（グラフィックスＡＰＩ）によって使用される。例えば、グラフィックスＡＰＩの１つであるＳｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．によるＯｐｅｎＧＬTMは、５つの表面反射特性、すなわち、拡散および周辺（ａｍｂｉｅｎｔ）特性、鏡面反射および光沢特性、および放射特性をサポートする。例えば、Ｒ．ＦｏｓｎｅｒのＯｐｅｎＧＬTM  Ｐｒｏｇｒａｍｍｉｎｇ  ｆｏｒ  Ｗｉｎｄｏｗｓ  ９５  ａｎｄ  Ｗｉｎｄｏｗｓ  ＮＴ（Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂ．：レディング、マサチューセッツ州、１９９７年、第９章、「Ｃｏｌｏｒｓ、Ｍａｔｅｒｉａｌｓ、ａｎｄ  Ｌｉｇｈｔｓ」、１８１〜２０１頁）を参照のこと。
【０００３】
しかし、入射光成分に関するシェーディング計算は、現在のグラフィックスハードウェアでは、かなり原始的なものである。従って、全体的なシェーディングの写実感は、表面反射特性が表現される精巧さとは無関係に低減される。現在の市販のグラフィックスシェーダーでは、入射光源は、点源（ｐｏｉｎｔ  ｓｏｕｒｃｅ）ライティングモデルによってのみ表される。例えば、ＯｐｅｎＧＬTMは、指向性光、異なる距離に基づく減少関数（ｆａｌｌｏｆｆ  ｆｕｎｃｔｉｏｎ）を有する点光源、および円錐状の照明を提供するスポットライトのみをサポートする。
【０００４】
市販のグラフィックスシェーダーにはまだ反映されていない点光源の重要なタイプの１つは、Ｉｌｌｕｍｉｎａｔｉｎｇ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｓｏｃｉｅｔｙ（ＩＥＳ）の標準照明器具ファイルフォーマットに記載されるような、方向によって異なる放射を有する点光源である。ＩＥＳの標準照明器具ファイルフォーマットは、源が点エミッタ（ｐｏｉｎｔ  ｅｍｉｔｔｅｒ）として扱われ得るほど観測者が十分遠くに離れていることを仮定した場合の、複雑な（ｃｏｍｐｌｅｘ）エミッタからの放射の標準的な表記である。測光データの電子移動のためのＩＥＳ推奨標準ファイルフォーマットであるＩＥＳ  ＬＭ−６３−１９９０は、Ｉｌｌｕｍｉｎａｔｉｎｇ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｓｏｃｉｅｔｙ  ｏｆ  Ｎｏｒｔｈ  Ａｍｅｒｉｃａから入手可能である。
【０００５】
点光源（ｐｏｉｎｔ  ｌｉｇｈｔ）とは対照的に、現実の世界の光源は、面源（ａｒｅａ  ｓｏｕｒｃｅ）である。面光源からの入射光を算出するための現在の方法は、コンピュータグラフィックスアプリケーションおよびシステムにとっては非実用的なものである。現在の技術は、ハードウェアまたはリアルタイムアプリケーションにとっては非効率的および高価すぎるか、あるいは限定された形状または放射分布を持つ面照明器具にのみ有効であるかのどちらかである。例えば、Ａｓｈｄｏｗｎは、複雑な面光源からの放射分布を、球上にマッピングするための方法を開発した（Ａｓｈｄｏｗｎ，Ｉ．、Ｊ．Ｉｌｌｕｍｉｎａｔｉｎｇ  Ｅｎｇ．  Ｓｏｃ．２２（１）：１６３〜１８０頁、１９９３年冬）。球上の多数の点における出射放射は、シェーディングされる各点毎に算出され、この技術の計算的要件は、現在のグラフィックスハードウェアにとっては過度のものである。Ｓｔｏｃｋは、光源の指向性分布が球上の様々な点で算出される類似の方法を開発した（Ｓｔｏｃｋ，Ｒ．Ｄ．、Ｆｏｕｒｉｅｒ  Ｆｏｒｍｕｌａｔｉｏｎ  ｏｆ  Ｉｌｌｕｍｉｎａｔｉｏｎ  Ｏｐｔｉｃｓ  ａｎｄ  Ｃｏｍｐｕｔｅｒ−Ａｕｔｏｍａｔｅｄ  Ｒｅｆｌｅｃｔｏｒ  Ｄｅｓｉｇｎ、博士論文、ＣＭＵ、１９９５年）。この分布は、フーリエ空間（Ｆｏｕｒｉｅｒ  ｓｐａｃｅ）に投影（ｐｒｏｊｅｃｔ）され、係数は、球源上で補間され、それによって任意の点における中間分布が構築される。しかし、ＡｓｈｄｏｗｎおよびＳｔｏｃｋの技術は、ハードウェアまたはリアルタイムアプリケーションにとってまだ非実用的なものである。
【０００６】
Ｓｎｙｄｅｒは、様々な種類の面光源に関する入射照明の閉形式（ｃｌｏｓｅｄ  ｆｏｒｍ  ｅｘｐｒｅｓｓｉｏｎ）を研究した（Ｓｎｙｄｅｒ，Ｊ．の「Ａｒｅａ  ｌｉｇｈｔ  ｓｏｕｒｃｅｓ  ｆｏｒ  ｒｅａｌ−ｔｉｍｅ  ｇｒａｐｈｉｃｓ」、Ｍｉｃｒｏｓｏｆｔ  Ｒｅｓ．Ｔｅｃｈ．Ｒｅｐ．ＭＳＲ−ＴＲ−９６−１１、１９９６年３月）。この研究は、Ａｒｖｏによって書かれたＳＩＧＧＲＡＰＨ’９５中の論文に基づく（Ａｒｖｏ，Ｊ．、「Ａｐｐｌｉｃａｔｉｏｎｓ  ｏｆ  ｉｒｒａｄｉａｎｃｅ  ｔｅｎｓｏｒｓ  ｔｏ  ｔｈｅ  ｓｉｍｕｌａｔｉｏｎ  ｏｆ  ｎｏｎ−Ｌａｍｂｅｒｔｉａｎ  ｐｈｅｎｏｍｅｎａ」、ＡＣＭ  ＳＩＧＧＲＡＰＨ’９５  Ｃｏｎｆ．Ｐｒｏｃ．、Ｃｏｏｋ，Ｒ．編、Ａｄｄｉｓｏｎ  Ｗｅｓｌｅｙ  １９９５年８月、３３５〜３４２頁）。しかし、Ｓｎｙｄｅｒの技術は、ハードウェア実現にはまだ十分に効率的なものではなく、少数の種類のエミッタに限定される。
【０００７】
Ｓｕｎらは、ディファレンシャルエリアトゥーエリアフォームファクタ（ｄｉｆｆｅｒｅｎｔｉａｌ  ａｒｅａ  ｔｏ  ａｒｅａ  ｆｏｒｍ−ｆａｃｔｏｒ）の計算を作表するための技術を研究した（Ｓｕｎ，Ｊ．ら、Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  Ｆｏｒｕｍ  １２（４）：１９１〜１９８頁、１９９３年）。この計算は、拡散放射する光源からある点への入射エネルギーを求めることに等しい。この技術は、幾つかの局面を作表することによって計算を減らすが、それでも多量の計算要求があり、より一般的なエミッタ形状または非拡散放射分布に対して容易に一般化されない。
【０００８】
ラジオシティに基づくアルゴリズムは、面光源からの光および非放射表面からの光の相互反射の両方を考慮して、環境画像を生成するために使用されてきた。ラジオシティの総論として、Ｆｒａｎｃｏｉｓ  ＳｉｌｌｉｏｎおよびＣｌａｕｄｅ  ＰｕｅｃｈのＲａｄｉｏｓｉｔｙ  ａｎｄ  Ｇｌｏｂａｌ  Ｉｌｌｕｍｉｎａｔｉｏｎ（Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌ：米国、１９９４年）を参照のこと。ラジオシティアルゴリズムは、典型的に、時間のかかる前処理ステップにおいて光輸送（ｌｉｇｈｔ  ｔｒａｎｓｐｏｒｔ）のシミュレーションを算出し、次に、その結果が、インタラクティブに表示され得る。ラジオシティ技術を用いた場合には、ライティング解（ｌｉｇｈｔｉｎｇ  ｓｏｌｕｔｉｏｎ）が、表示に用いられるビューイングパラメータとは無関係の環境における決められた点の組において算出される。この１組の解点（ｓｏｌｕｔｉｏｎ  ｐｏｉｎｔ）は、全ての可能なビューイングパラメータに対して正確な解を提供するには決して十分なものではない。
【０００９】
完全なラジオシティ解は、面光源を持つシーンのインタラクティブビューイングには非実用的であるが、ラジオシティ解に用いられる技術の幾つかは、面源からの光を算出する可能性を提供する。これらの技術は、計算的にあまりにも高価で、一般的な適応性に関して柔軟性が少なすぎる。
【００１０】
ある点における入射光を算出（フォームファクタ算出）するためにラジオシティアルゴリズムに一般的に使用される技術の１つは、多角形光源の端部の周りの閉曲線積分（ｃｏｎｔｏｕｒ  ｉｎｔｅｇｒａｌ）の算出に基づく（Ｄａｎｉｅｌ  Ｒ．ＢａｕｍおよびＨｏｌｌｙ  Ｅ．ＲｕｓｈｍｅｉｅｒおよびＪａｍｅｓ  Ｍ．Ｗｉｎｇｅｔ、「Ｉｍｐｒｏｖｉｎｇ  Ｒａｄｉｏｓｉｔｙ  Ｓｏｌｕｔｉｏｎｓ  Ｔｈｒｏｕｇｈ  ｔｈｅ  Ｕｓｅ  ｏｆ  Ａｎａｌｙｔｉｃａｌｌｙ  Ｄｅｔｅｒｍｉｎｅｄ  Ｆｏｒｍ−Ｆａｃｔｏｒｓ」、ＳＩＧＧＲＡＰＨ’８９予稿集、３２５〜３３４頁）。これは、入射光の潜在的に正確な算出であるが、現在、インタラクティブシステム中で評価するには高価すぎ、且つ、非拡散放射分布を持つ光を考慮するために容易に拡張されることはできない。
【００１１】
Ｗａｌｌａｃｅらは、光がディスク形状であるという単純化した仮定に基づいてフォームファクタを算出するという、より効率的ではあるが精度の低い方法を提唱した（Ｊｏｈｎ  Ｒ．ＷａｌｌａｃｅおよびＫｅｌｌｓ  Ａ．ＥｌｍｑｕｉｓｔおよびＥｒｉｃ  Ａ．Ｈａｉｎｅｓ、「Ａ  Ｒａｙ  Ｔｒａｃｉｎｇ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｐｒｏｇｒｅｓｓｉｖｅ  Ｒａｄｉｏｓｉｔｙ」、ＳＩＧＧＲＡＰＨ’８９予稿集）。これは、光がディスク形状でなければ正確な算出ではなく、入射光が算出されている点は、エミッタに平行であり、且つ、エミッタの真上または真下である。さらに、この算出は、リアルタイムアプリケーションにとってまだ十分に効率的なものではなく、異なる放射分布を持つ光を考慮するために容易に拡張されることは不可能である。
【００１２】
Ｗａｒｄは、表面上の点におけるスカラーイラディアンス値を算出することと、その付近の点におけるイラディアンスを算出するために、該イラディアンス値を補間することとに基づくグローバル照明および面光源の算出のためのアルゴリズムを開発した。Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  （ＳＩＧＧＲＡＰＨ’８８予稿集）中のＷａｒｄ，Ｇｒｅｇｏｒｙ  Ｊ．らの「Ａ  Ｒａｙ  Ｔｒａｃｉｎｇ  Ｓｏｌｕｔｉｏｎ  ｆｏｒ  Ｄｉｆｆｕｓｅ  Ｉｎｔｅｒｒｅｆｌｅｃｔｉｏｎ」;  Ｔｈｉｒｄ  Ｅｕｒｏｇｒａｐｈｉｃｓ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｒｅｎｄｅｒｉｎｇ（１９９２年５月）中のＷａｒｄ，Ｇｒｅｇｏｒｙ  Ｊ．およびＨｅｃｋｂｅｒｔ，Ｐ．の「Ｉｒｒａｄｉａｎｃｅ  Ｇｒａｄｉｅｎｔｓ」；およびＳＩＧＧＲＡＰＨ’９４予稿集（オーランド、フロリダ、１９９４年７月２４〜２９日）中のＷａｒｄ，Ｇｒｅｇｏｒｙ  Ｊ．の「Ｔｈｅ  ＲＡＤＩＡＮＣＥ  Ｌｉｇｈｔｉｎｇ  Ｓｉｍｕｌａｔｉｏｎ  ａｎｄ  Ｒｅｎｄｅｒｉｎｇ  Ｓｙｓｔｅｍ」を参照のこと。これらのアルゴリズムは、高品質のライティングシミュレーションを生成し、且つ、イラディアンスがあるシーン中で変化するレートに自然に適応するが、これらのアルゴリズムは、インタラクティブアプリケーションには複雑過ぎる空間データ構造でイラディアンスの推定値を格納することに依存し、これらのイラディアンスの推定値は、組み合わせられ、これもまたインタラクティブアプリケーションには複雑過ぎる関数によって重み付けされる。このアルゴリズムは、イラディアンスをベクトル形式では格納せず、ハードウェアにおける効率的なルックアップ動作に必要な通常のテーブル構造にイラディアンスを作表しない。
【００１３】
他の容積測定的照明表記が、Ｃｈｉｕ，Ｋ．ら（「Ｔｈｅ  Ｌｉｇｈｔ  Ｖｏｌｕｍｅ：  Ａｎ  Ａｉｄ  Ｔｏ  Ｒｅｎｄｅｒｉｎｇ  Ｃｏｍｐｌｅｘ  Ｅｎｖｉｒｏｎｍｅｎｔ」、Ｅｕｒｏｇｒａｐｈｉｃｓ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｒｅｎｄｅｒｉｎｇ、１９９６年）およびＧｒｅｇｅｒ，Ｇ．ら（「Ｔｈｅ  Ｉｒｒａｄｉａｎｃｅ  Ｖｏｌｕｍｅ」、ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓに掲載、１９９７年）によって開発されている。これらの手法もまた、空間データ構造でのシーンイラディアンスの表記を格納し、該シーンにおける中間点のためにそれらのイラディアンスを補間する。これらのアルゴリズムもまた、シェーディングされている点におけるイラディアンスを決定するために、高価なルックアップおよび多量の計算を必要とし、その結果、インタラクティブアプリケーションには不適当である。このアルゴリズムは、イラディアンスをベクトル形式では格納せず、ハードウェアにおける効率的なルックアップ動作に必要な通常のテーブル構造でイラディアンスを作表しない。
【００１４】
複雑な点または面照明器具からの入射光を算出するための効率的な技術が必要とされる。より写実的なシーンをシミュレートするためには、より複雑な照明器具が重要である。大きな面光源によって照明される表面は、点源によって照明される場合と比較して、かなり柔らかい外観を有する。面光源は、点源よりもより正確に一般的な光源（例えば、蛍光灯）をモデリングすることも可能である。
【００１５】
従って、インタラクティブレートで点および／または面光源からの入射光を効率的に算出可能なシェーディングおよびアニメーションのためのコンピュータグラフィックス方法およびシステムが必要とされる。レンダリングされるシーンにおいて、様々な種類および範囲の点および面光源（潜在的に複雑な放射分布関数を有する源を含む）から入射光を算出し得る効率的且つ汎用な算出技術が必要とされる。ＩＥＳの標準照明器具ファイルフォーマットに記載されるような、方向によって異なる放射を持つ点光源の形態でデータが与えられた場合にも、光源が表される必要がある。
【００１６】
（発明の要旨）
コンピュータグラフィックスシェーディングおよびアニメーションにおいて、複雑な点および面照明を行う方法、システム、およびコンピュータプログラムプロダクトが提供される。複雑な点および面照明は、純白でもよく、あるいは、着色されていてもよい。
【００１７】
レンダリングされるシーンのイラディアンスフィールドを表すイラディアンスベクトルフィールドテーブルが、生成および格納される。次に、レンダリング中に、該シーンがイラディアンスベクトルフィールドテーブル中のイラディアンスベクトルに基づいて照明される。照明されている各点毎に、対応するイラディアンスベクトルが、イラディアンスベクトルフィールドテーブル中でルックアップされる。ベクトル演算が、イラディアンスベクトルと、該点に関する法平面（ｓｕｒｆａｃｅ  ｎｏｒｍａｌ）との間で行われ、それによって、イラディアンスエネルギー成分が算出される。次に、イラディアンスエネルギー成分は、該点の最終的な陰影（ｓｈａｄｅ）値を決定するために使用される。
【００１８】
あるハードウェア実施形態例では、ルックアップユニットが、イラディアンスベクトルフィールドテーブル中で、選択された点に関するイラディアンスベクトルをルックアップおよび補間し、それによって、補間イラディアンスベクトルを算出する。内積ユニットは、補間イラディアンスベクトルと、シェーディングされている点に関する法平面との内積を計算し、イラディアンスエネルギー成分を出力する。イラディアンスエネルギー成分は、点の表面カラーを決定するために使用される。例えば、イラディアンスエネルギー成分は、点の表面カラーを算出するために、表面材料特性に関連して用いられ得る。
【００１９】
本発明のさらなる特徴によれば、３次元イラディアンスフィールドを表す３次元イラディアンスベクトルフィールドテーブルが生成され、テクスチャメモリを含む（但しこれに限定されることはない）任意の種類のメモリ中に格納され得る。イラディアンスベクトルフィールドテーブルは、照明器具ファイルフォーマットに規定される点光源を含む（但しこれに限定されることはない）１つ以上の点光源に関するイラディアンスフィールドを表し得る。イラディアンスベクトルフィールドテーブルは、電球、点灯器具（ｆｉｘｔｕｒｅ）、および他の面照明器具等の直接的面エミッタ、およびシーン中のオブジェクトからの二次的反射等の非直接的面エミッタ、または直接的および非直接的面エミッタの組み合わせを含む（但しこれらに限定されることはない）面光源のイラディアンスフィールドも表し得る。
【００２０】
本発明の別の実施形態によれば、複数のレンダリングパスが、複雑な点または面光源からの照明を表すコンピュータグラフィックス画像をレンダリングするために使用される。イラディアンスベクトルフィールドテーブルが生成され、テクスチャメモリ中に格納される。第１の画像は、画素を着色するためにイラディアンスベクトルフィールドテーブルを用いてレンダリングされ、第１のフレームバッファ中に格納される。第２の画像がレンダリングされ、第２のフレームバッファ中に格納される。第２の画像は、赤、緑、および青（ＲＧＢ）のカラー成分で符号化された法平面を有する。
【００２１】
内積を計算するためには、第１および第２の画像が乗算され、それによって、第３の画像が得られる。第３の画像の成分は累算され、それによって、第４の画像が得られる。シーンが任意のカラーおよび／またはテクスチャ（イラディアンスフィールドテーブルによって表される照明は含まない）でレンダリングされ、それによって第５の画像を得る。第４および第５の画像を乗算し、それによって最終的な表示画像を得る。入射ライティング成分および表面シェーディング成分のこのデカップリングは、入射ライティングおよびラジオシティシステム中にテクスチャマッピングを包含するために用いられるテクスチャリング（ｔｅｘｔｕｒｉｎｇ）のデカップリングに類似している（Ｇｅｒｓｈｂｅｉｎ，Ｒ．ら、「Ｔｅｘｔｕｒｅｓ  ａｎｄ  Ｒａｄｉｏｓｉｔｙ：  Ｃｏｎｔｒｏｌｌｉｎｇ  Ｅｍｉｓｓｉｏｎ  ａｎｄ  Ｒｅｆｌｅｃｔｉｏｎ  ｗｉｔｈ  Ｔｅｘｔｕｒｅ  Ｍａｐｓ」、ＳＩＧＧＲＡＰＨ’９４予稿集）。
【００２２】
複雑な点または面光源を用いたカラー照明に関して、３つの手法が説明される。第１の手法では、レンダリングされるシーンのそれぞれのスペクトル波長でイラディアンスフィールドを表す１組のカラーイラディアンスベクトルフィールドテーブルが生成され、テクスチャメモリ中に格納される。レンダリング中に、該シーンは、カラーイラディアンスベクトルフィールドテーブルから取り出された１組のカラーイラディアンスベクトルに基づいて照明される。照明されている各点毎に、対応するイラディアンスベクトルの組が、カラーイラディアンスベクトルフィールドテーブルから生成される。ベクトル演算が、各カラーイラディアンスベクトルと、シェーディング点の法平面との間で行われ、それによって、イラディアンスエネルギー成分が算出される。あるハードウェア実施形態例では、各カラー毎に、ルックアップユニットが、対応するカラーイラディアンスベクトルフィールドテーブル中の選択された点に近いカラーイラディアンスベクトルをルックアップおよび補間する。内積ユニットは、各補間カラーイラディアンスベクトルと、シェーディングされている点の法平面との内積を算出し、シェーディングに使用するためのイラディアンスエネルギー成分を出力する。段階的に解像度が粗くなるにつれて、あるシーンの段階的により大きな領域を包含する１組のマルチ解像度カラーイラディアンスフィールドテーブルが用いられ得る。
【００２３】
より効率的な第２の手法は、イラディアンスベクトルテーブルおよびイラディアンスカラーテーブルを格納する。イラディアンスベクトルフィールドテーブルは、レンダリングされるシーンのイラディアンスフィールドを表す。イラディアンスカラーテーブルは、あるスペクトル波長のカラー照明を表す。次に、レンダリング中に、シーンが、イラディアンスベクトルフィールドテーブル中のイラディアンスベクトルと、イラディアンスカラーテーブル中のイラディアンスカラーに基づいて照明される。
【００２４】
照明されている各点毎に、対応するイラディアンスベクトルが、イラディアンスベクトルフィールドテーブルにおいてルックアップされる。このルックアップ動作は、直接的ルックアップでもよく、あるいは、関心のある点に近い複数のイラディアンスベクトルの補間に関与してもよい。ベクトル演算が、イラディアンスベクトルと、該点に関する法平面との間で行われ、それによって、イラディアンスエネルギー成分が算出される。イラディアンスカラーが、イラディアンスカラーテーブル中でルックアップされる。このルックアップ動作は、直接的ルックアップでもよく、あるいは、関心のある点に近い複数のイラディアンスカラーの補間に関与してもよい。イラディアンスエネルギー成分は、次に、イラディアンスカラーを用いて変調される。
【００２５】
あるハードウェア実施形態例では、ルックアップユニットが、イラディアンスベクトルフィールドテーブル中のシェーディング点に近い点におけるイラディアンスベクトルをルックアップおよび補間し、それによって、シェーディング点に関する補間イラディアンスベクトルを算出する。内積ユニットは、補間イラディアンスベクトルと、シェーディングされている点の法平面との内積を計算し、イラディアンスエネルギー成分を出力する。ルックアップユニットはまた、イラディアンスカラーテーブル中のシェーディング点に近い点におけるイラディアンスカラーをルックアップおよび補間し、それによって補間イラディアンスカラーを算出する。表面変調器ユニットは、補間イラディアンスカラーによってイラディアンスエネルギー成分を変調する乗算器を含む。
【００２６】
一定カラーという特別なケースに対する第３の手法は、イラディアンスベクトルフィールドテーブルおよびイラディアンスカラーのみを格納することを必要とする。次に、レンダリング中に、シーンが、イラディアンスベクトルフィールドテーブル中のイラディアンスベクトルおよび格納されたイラディアンスカラーに基づいて照明される。
【００２７】
具体的には、照明されている各点毎に、第２の手法の場合と同様に、対応するイラディアンスベクトルが、イラディアンスベクトルフィールドテーブルにおいてルックアップされる。このルックアップ動作は、直接的ルックアップでもよく、あるいは、関心のある点に近い複数のイラディアンスベクトルの補間に関与していてもよい。ベクトル演算が、イラディアンスベクトルと、該点の法平面との間で行われ、それによって、イラディアンスエネルギー成分が算出される。イラディアンスエネルギー成分は、次に、格納されたイラディアンスカラーを用いて変調される。
【００２８】
あるハードウェア実施形態例では、ルックアップユニットが、イラディアンスベクトルフィールドテーブル中のシェーディング点に近い点におけるイラディアンスベクトルをルックアップおよび補間し、それによって、シェーディング点に関する補間イラディアンスベクトルを算出する。内積ユニットは、補間イラディアンスベクトルと、シェーディングされている点に関する法平面との内積を計算し、イラディアンスエネルギー成分を出力する。表面変調器ユニットは、格納されたイラディアンスカラーによってイラディアンスエネルギー成分を変調する乗算器を含む。
【００２９】
本発明のさらなる特徴によれば、イラディアンスベクトルフィールドテーブルは、照明器具ファイルフォーマットに規定される点光源を含む（但しこれに限定されることはない）１つ以上の点光源に関するイラディアンスフィールドを表し得る。イラディアンスベクトルフィールドテーブルは、電球、点灯器具、および他の面照明器具等の直接的面エミッタ、およびシーン中のオブジェクトからの二次的反射等の非直接的面エミッタ、または直接的および非直接的面エミッタの組み合わせを含む（但しこれらに限定されることはない）面光源のイラディアンスフィールドも表し得る。同様に、イラディアンスカラーベクトルフィールドテーブルは、複雑な点または面照明源のそれぞれのスペクトル波長で、イラディアンスフィールドを表し得る。ある好適な実施形態では、赤、緑、および青の波長を包含する１組の３つのイラディアンスカラーベクトルフィールドテーブルが用いられる。
【００３０】
光およびカラーの光が、ベクトルフィールドに表されるので、標準的なベクトルフィールド代数演算が、同フィールドに関して行われ得る。例えば、２つの光源のフィールドが合計され、それによって、それらの組み合わせの照明を表す単一のフィールドが得られる。これによって、シェーディング計算が行われる際に行われなければならない計算量を増加させることなく、多数の光源からのライティングを取り込むことが可能となり得る。
【００３１】
本発明のある特徴によれば、イラディアンスベクトルフィールドテーブル（または単一または複数のイラディアンスカラーベクトルフィールドテーブル）が、シャドウまたは関与媒体（霧または煙等）を考慮するために生成される。ある実施形態では、可視度情報が、イラディアンスベクトルフィールドテーブル（または単一または複数のイラディアンスカラーベクトルフィールドテーブル）中で符号化され、それによって、シーン中でシャドウおよび／または関与媒体を表す。
【００３２】
本発明の別の実施形態では、イラディアンスベクトルフィールドテーブル（またはイラディアンスカラーベクトルフィールドテーブル）が、シャドウを考慮することなく算出される。シャドウマップは、エミッタ表面上の多数の点に関して算出される。次に、算出されたシャドウマップが、シャドウマップに関与する従来のシェーディング計算の場合と同様に、光源のどの程度がシェーディングされている点にとって可視性であるかの概算として用いられる。具体的には、イラディアンスエネルギー成分を得るために内積演算を行った後に、イラディアンスエネルギー成分が、１つまたは複数のシャドウマップを用いて量られる（ｓｃａｌｅ）。あるいは、標準的な背景映写またはシャドウ容積アルゴリズムを用いて、シェーディングされている点からの光源可視度が算出され得る。次に、算出された可視度が、イラディアンスエネルギー成分を量るために用いられる。
【００３３】
本発明のさらなる特徴によれば、１組のイラディアンスベクトルフィールドテーブル（または１組のイラディアンスカラーベクトルフィールドテーブル）が生成される。各テーブルは、より大きな空間容積を包含する。これにより、光源からより遠くに離れるほどイラディアンスフィールドがよりゆっくりと変化する状況を利用して、テーブルを生成するために必要とされる格納要件および多数の計算が減らされる。
【００３４】
ある実施例では、１組のイラディアンスベクトルフィールドテーブル（または１組のイラディアンスカラーベクトルフィールドテーブルおよび／またはイラディアンスカラーテーブル）が生成され、クリップマップ（例えば、３次元クリップマップ）として格納され、それによって、適応的詳細レベル（ａｄａｐｔｉｖｅ  ｌｅｖｅｌ−ｏｆ−ｄｅｔａｉｌ）が提供され、テクスチャメモリが節約される。クリップマップ中では、１組のマルチ解像度イラディアンスフィールドテーブルが、段階的に解像度が粗くなるにつれて、あるシーン中で段階的により大きな領域を包含する等しい大きさのメモリ領域（タイルとも呼ばれる）を表す。
【００３５】
本発明の別の実施形態によれば、複数のレンダリングパスが、複雑な点または面光源からのカラー照明を表すコンピュータグラフィックス画像をレンダリングするために使用される。イラディアンスベクトルフィールドテーブルが生成され、テクスチャメモリ中に格納される。第１の画像は、画素を着色するためにイラディアンスベクトルフィールドテーブルを用いてレンダリングされ、第１のフレームバッファ中に格納される。第２の画像がレンダリングされ、第２のフレームバッファ中に格納される。第２の画像は、赤、緑、および青（ＲＧＢ）のカラー成分で符号化された法平面を有する。
【００３６】
内積を計算するためには、第１および第２の画像が乗算され、それによって、第３の画像が得られる。第３の画像の成分は累算され、それによって、第４の画像が得られる。シーンが任意のカラーおよび／またはテクスチャ（イラディアンスフィールドテーブルによって表される照明は含まない）でレンダリングされ、それによって第５の画像が得られる。第４および第５の画像を乗算し、それによってフレームバッファ表示画像を得る。
【００３７】
シーンはまた、格納されたイラディアンスカラーテクスチャを用いてレンダリングされ、それによって、第６の画像が得られる。６番目の画像およびフレームバッファ表示画像が乗算され、それによって、最終的なフレームバッファ表示画像が得られる。入射ライティング成分および表面シェーディング成分のこのデカップリングは、入射ライティングおよびラジオシティシステム中にテクスチャマッピングを包含するために用いられるテクスチャリングのデカップリングに類似している（Ｇｅｒｓｈｂｅｉｎ，Ｒ．ら、「Ｔｅｘｔｕｒｅｓ  ａｎｄ  Ｒａｄｉｏｓｉｔｙ：  Ｃｏｎｔｒｏｌｌｉｎｇ  Ｅｍｉｓｓｉｏｎ  ａｎｄ  Ｒｅｆｌｅｃｔｉｏｎ  ｗｉｔｈ  Ｔｅｘｔｕｒｅ  Ｍａｐｓ」、ＳＩＧＧＲＡＰＨ’９４予稿集）。
【００３８】
従って、本発明は、インタラクティブレートで点または面照明器具からの入射光（純白またはカラー）を算出するための効率的且つ汎用的な技術を提供する。複雑な点および面照明器具は、照明を用いた高品質のシェーディング、アニメーション、およびより写実的なシーンを提供するために、効率的にシミュレートされ得る。白熱電球、蛍光灯、および照明器具等の一般的な面光源、および二次的反射が、コンピュータグラフィックスシェーディングおよびアニメーションにおいて表され得る。１つ以上の面光源に関する入射照明光を算出しながら、レンダリングパイプライン中で最小限の追加ハードウェアを必要とする効率的なハードウェア実行が実現される。
【００３９】
（好適な実施形態の詳細な説明）
本明細書中で援用され、且つ明細書の一部を構成する添付の図面は、本発明を図示し、さらには、本明細書の記載内容と共に本発明の原理を説明し、当業者が本発明を製造および利用することが可能となるように貢献する。
【００４０】
本発明を、添付の図面に関連して説明する。図面中では、同じ参照番号が、同一または機能的に類似した部品を指す。さらに、参照番号の左端の１つまたは複数の数字が、該参照番号が最初に記載された図面を表している。
【００４１】
目次
１．概要
２．用語
３．環境例
４．イラディアンスフィールド理論
５．イラディアンスフィールドの算出
６．イラディアンスベクトルフィールドに基づくシェーディング
ａ．擬似コード
ｂ．例１
ｃ．例２
７．シャドウおよび媒体の効果
８．固定小数点および浮動小数点の実施
９．複数のレンダリングパス
１０．クリップマップ
１１．アニメーション
１２．実施例
１３．複雑な点および面光源の効率的なハードウェアシミュレーション
１４．ＧＵＩコンピュータシステム例
１５．カラー照明
ａ．カラー照明の第１の手法
ｂ．カラー照明の第２の手法
ｃ．第３の手法：一定カラー源の特別なケース
ｄ．マルチ解像度フォーマットを用いたカラー照明
１６．結論
１．概要
本発明は、作表されたベクトルイラディアンスフィールドを使用し、それによって、コンピュータグラフィックスシェーディングおよびアニメーションにおいて点または面光源を表す入射カラーまたは純白照明光を算出する。ベクトルイラディアンスフィールドは、複雑な（ｃｏｍｐｌｅｘ）照明器具からの放射分布を符号化し、且つシェーディング計算が行われる点における入射光を算出するために本発明において用いられる。ベクトルイラディアンスフィールドは、電気照明分野の照明エンジニアには公知である。Ｍｏｏｎ，Ｐ．およびＳｐｅｎｃｅｒ，Ｄ．Ｅ．のＴｈｅ  Ｐｈｏｔｉｃ  Ｆｉｅｌｄ（ＭＩＴ  Ｐｒｅｓｓ、ケンブリッジ、マサチューセッツ、１９８１年）を参照のこと。ベクトルイラディアンスフィールドは、コンピュータグラフィックスにおいてはそれほど周知のものではないが、Ａｒｖｏは、幾つかの閉形照明式をベクトルイラディアンスフィールドに基づかせており（Ａｒｖｏ，Ｊ．、「Ｔｈｅ  ｉｒｒａｄｉａｎｃｅ  Ｊａｃｏｂｉａｎ  ｆｏｒ  ｐａｒｔｉａｌｌｙ  ｏｃｃｌｕｄｅｄ  ｐｏｌｙｈｅｄｒａｌ  ｓｏｕｒｃｅｓ」、ＡＣＭ  ＳＩＧＧＲＡＰＨ’９４予稿集、Ｇｌａｓｓｎｅｒ，Ａ．編、ＡＣＭ  Ｐｒｅｓｓ、１９９４年７月、３４３〜３５０頁）、Ｈａｕｓｎｅｒは、フィールドの球面調和関数展開を求める研究を行っている（Ｈａｕｓｎｅｒ，Ａ．、「Ｍｕｌｔｉｐｏｌｅ  Ｅｘｐａｎｓｉｏｎ  ｏｆ  ｔｈｅ  Ｌｉｇｈｔ  Ｖｅｃｔｏｒ」、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｖｉｓｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｃｏｍｐ．Ｇｒａｐｈｉｃｓ  ３（１）、１９９７年１月〜３月、１２〜２２頁）。
【００４２】
しかし、本発明に先だって、効率的に光源を表すために、イラディアンスベクトルフィールド分野と、市販のコンピュータグラフィックスシェーディング分野とを組み合わせるという教示または示唆は全く存在していなかった。複雑な点または面光源をサポートする効率的なグラフィックスシェーダーに対する商業上の需要にもかかわらず、本発明の場合のように、作表イラディアンスベクトルフィールドを用いて、市販のグラフィックスシェーダーにおいて点または面光源を効率的且つ汎用的に表すという教示または示唆は全くなかった。
【００４３】
イラディアンスフィールドは、３次元空間のベクトルフィールドとして、エミッタからの放射を表す。発明者らによって認識されたのだが、イラディアンスベクトルフィールドは、コンピュータグラフィックスシェーディングにおいて非常に効率的な計算につながる２つの関連性のある特徴を有する：
・空間中のある点における入射イラディアンス（照明器具からの放射エネルギー）を求めるための計算は内積である：該点における法平面と、該点におけるイラディアンスベクトルとの内積。
【００４４】
・この計算は、照明器具の複雑さとは無関係である：イラディアンスフィールドの表記が与えられると、エミッタの実際のジオメトリおよび放射分布が、ライティング計算に必要とされることはない。
【００４５】
本発明のある実施形態によると、イラディアンスフィールドの作表フォームが生成され、効率的で安価なハードウェアの実行で、３次元テーブル中に格納される。本発明の別の実施形態によれば、エミッタの付近（ここでは、フィールドが急速に変化する）ではより正確で、エミッタから遠くに離れる（ここでは、フィールドが非常にゆっくりと変化する）と正確さが低減する、１組のマルチ解像度イラディアンスベクトルフィールドテーブルが用いられる。１組のマルチ解像度イラディアンスベクトルフィールドテーブルによって、適応的詳細レベルが提供され、メモリのコストが節約される。ある実施例では、１組のマルチ解像度イラディアンスベクトルフィールドテーブルは、クリップマップである。照明エネルギーの適応表示は、以前には、ラジオシティアルゴリズムを加速させるために使用されていたことに留意されたい。（Ｈａｎｒａｈａｎ，Ｐ．ら、「Ａ  Ｒａｐｉｄ  Ｈｉｅｒａｒｃｈｉｃａｌ  Ｒａｄｉｏｓｉｔｙ  Ａｌｇｏｒｉｔｈｍ」、Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ、ＳＩＧＧＲＡＰＨ’９１予稿集）。
【００４６】
計算は、固定小数点または浮動小数点演算で行われ得る。ある実施では、計算は、固定小数点演算を用いて行われる。この固定小数点の実行は、現在、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．が販売するＩｎｆｉｎｉｔｅ  Ｒｅａｌｉｔｙグラフィックスマシンに対して１５ｆｐｓ（フレーム／秒）で実行され、このレートは、リアルタイムコンピュータグラフィックスレンダリングおよびスムーズなアニメーションをサポートするのに十分な速さである。
【００４７】
２．用語
「面光源」という用語は、コンピュータグラフィックスシーン中で光放射の領域を有するあらゆる光源をさすために使用される。面光源は、電球、点灯器具、および他の面照明器具等の直接的面エミッタ、およびシーン中のオブジェクトからの二次的反射等の非直接的面エミッタを包含し得る。
【００４８】
「シェーディングモデル」、「ライティングモデル」、「照明モデル」、「グローバル照明モデル」、およびこれらの等価の用語は、本明細書中では、互換性をもって使用され、それによって、表面のカラーを決定するための要素を記述するあらゆるモデルまたはライティング式をさす。本発明は、本明細書中に例として記載される照明モデル、および本明細書中に全文が参考として援用されるＦｏｌｅｙらのＣｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ：Ｐｒｉｎｃｉｐｌｅｓ  ａｎｄ  Ｐｒａｃｔｉｃｅ、Ｓｅｃｏｎｄ  Ｅｄ．ｉｎ  Ｃ（Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂｌ．：レディング、マサチューセッツ州、１９９６年、特に第１６章の７２１〜８１４頁を参照）；および本明細書中に参考として援用されるＢｅｉｄｅｒらのＯｐｅｎＧＬ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ（Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏ．、１９９３年、第６章、１５７〜１９４頁）に記載される照明モデルを含む（但し、これらに限定されることはない）あらゆる照明モデルに適用され得る。
【００４９】
カラー照明に関しては、本明細書中に記載されるルーチンおよびシステムが、カラー源を包含するように拡張され得る。本明細書中で使用されるように、「カラー」という用語は、概して、あらゆる純白ではない色または色の組み合わせさす。「カラー源」という用語は、一定のカラー表面または変化するカラー表面を有する源、および異なる波長の光を異なるように散乱させる空間で放射する源などのイラディアンスが波長の関数である源を包含する。
【００５０】
３．環境例
本発明を、コンピュータグラフィックス処理環境例に関連して説明する。本明細書中に記載されるように、本発明は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの任意の組み合わせとして実施され得る。ある好適な実施では、本発明により、複雑な点および面光源の効率的なハードウェアシミュレーションが提供される。
【００５１】
本明細書中の記載内容が与えられれば、あらゆるコンピュータグラフィックスアプリケーション、アプリケーションプログラミングインタフェース（ＡＰＩ）、またはコンピュータグラフィックスプロセッサ（単一チップまたは複数チップ）、ハイエンド−ローエンドグラフィックスワークステーション、ゲーミングプラットフォーム、システムおよびコンソール、ネットワークアーキテクチャ（例えば、クライアント／サーバ、ローカル、中間、またはワイドエリアネットワーク）、および仮想マシン（例えば、ジャバ作成アプリケーション）を含む（但し、これらに限定されることはない）システムにおいて、本発明を実施することは当業者には明らかである。限定されることはないが、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．が製造するＩｎｆｉｎｉｔｅ  Ｒｅａｌｉｔｙ、Ｉｎｄｉｇｏ2、Ｉｎｄｙ、Ｏｎｙｘ、またはＯ2グラフィックスワークステーションを含むＯｐｅｎ  ＧＬTMグラフィックスＡＰＩアーキテクチャ、および本明細書中で上記に参考として援用されたＦｏｌｅｙら（第１８章、８５５〜９２２頁）に記載されるようなラスタグラフィックスアーキテクチャを含む（但し、これらに限定されることはない）任意のコンピュータグラフィックスアーキテクチャが使用され得る。もちろん、これらの特定のコンピュータグラフィックスシステムは、本発明をサポートし得る例として列挙されるが、本発明を実施するために必ずしも必要ではない。例えば、Ｏｐｅｎ  ＧＬTMグラフィックスＡＰＩアーキテクチャは、本発明の使用を必要としない。つまり、Ｏｐｅｎ  ＧＬTMグラフィックスＡＰＩアーキテクチャは、本発明に関連して本明細書中に記載されるように、イラディアンスベクトルフィールドを用いて光源を表すことなく照明を提供し得る。
【００５２】
これらの用語での説明は、便宜上のためだけに提供される。本発明がこの環境例における適用に限定されることは意図しない。実際、以下の説明を読めば、本発明を代替の環境でどのように実施するかが、当業者には明らかとなるであろう。
【００５３】
４．イラディアンスフィールド理論
光源によって生成される成分（Ｐx，Ｐy，Ｐz）を有する点Ｐにおけるイラディアンスベクトルは、
【００５４】
【数１】
0004219090.tif 000002
である。但し、積分値（ｉｎｔｅｇｒａｌ）はエミッタの領域Ａより上であり、Ｌeは、方向ωにおけるエミッタ上の点ｘAにおける放射イラディアンスであり、ｒ2は、ＰからｘAへの距離ｒの二乗であり、Ｖは、ｘAからＰへの正規化ベクトルである。ωおよびθ（ＶとｘAにおけるエミッタの法平面との間の角度）は、Ｖによって決定される。Ｖｉｓ（Ｐ，ｘ＿Ａ）は、可視度の項であり、点Ｐおよびｘ＿Ａが互いに可視であれば１の値を有し、点Ｐとｘ＿Ａとの間に閉塞（ｏｃｃｌｕｄｅｒ）が存在すれば０の値を有する。Ｖｏｌ（Ｐ，ｘ＿Ａ）は、Ｐとｘ＿Ａとの間の減衰媒体の容積散乱効果（ｖｏｌｕｍｅ  ｓｃａｔｔｅｒｉｎｇ  ｅｆｆｅｃｔ）を表し、Ｖｏｌ（Ｐ，ｘ＿Ａ）は、Ｐに到達する前のｘ＿Ａから放射されている光の減衰およびＰに到達する前のエミッタ上の他の点からの光のインスキャタリング（ｉｎ−ｓｃａｔｔｅｒｉｎｇ）の両方を包含し得る。
【００５５】
点Ｐにおける入射イラディアンスは、Ｐにおける法平面とＰにおけるイラディアンスフィールドベクトルとの内積を計算することによって算出される。エミッタがＰにおける水平線によって部分的に隠されない限り、この計算は正確である。光源がシェーディングされている点における水平線の下に部分的に隠されている場合には、この計算は、実際に到来するよりも多い光が到来していると報告するが、これは、大きな欠点ではない。なぜなら、光が水平線に近い場合に到来するエネルギー量は、典型的に少ないからである。
【００５６】
閉塞するオブジェクトが存在しない場合に真空中で全方向に均一な放射強度を有する、原点（０，０，０）における点光源のイラディアンスフィールドは、平凡に以下のように求められる：
【００５７】
【数２】
0004219090.tif 000003
但し、
【００５８】
【数３】
0004219090.tif 000004
である。
【００５９】
５．イラディアンスフィールドの算出
ＩＥＳ点源照明器具に関するフィールドは、点源のフィールドを得て、源からフィールド中の点の方向への放射に基づいてベクトルを量ることによって、容易に算出され得る。より複雑な放射のジオメトリおよびより複雑な放射分布に関するイラディアンスフィールドの算出は、点源の場合と比較してより複雑である。
【００６０】
面光源のフィールドを求めることは、上記の積分を算出することを必要とする。閉形式の解が、均一な放射分布を有する多角形源（本明細書中に全文が参考として援用されるＡｒｖｏ，Ｊ．の「Ｔｈｅ  ｉｒｒａｄｉａｎｃｅ  Ｊａｃｏｂｉａｎ  ｆｏｒ  ｐａｒｔｉａｌｌｙ  ｏｃｃｌｕｄｅｄ  ｐｏｌｙｈｅｄｒａｌ  ｓｏｕｒｃｅｓ」、ＡＣＭ  ＳＩＧＧＲＡＰＨ’９４予稿集、Ｇｌａｓｓｎｅｒ，Ａ．編、ＡＣＭ  Ｐｒｅｓｓ、１９９４年７月、３４３〜３５０頁）、およびディスク形状源（本明細書中に参考としてその全文が援用されるＭｏｏｎ，Ｐ．およびＳｐｅｎｃｅｒ，Ｄ．Ｅ．、Ｔｈｅ  Ｐｈｏｔｉｃ  Ｆｉｅｌｄ、ＭＩＴ  Ｐｒｅｓｓ、ケンブリッジ、マサチューセッツ州、１９８１年）に対して存在する。ジオメトリおよび放射分布関数のより複雑な組み合わせに関するイラディアンスフィールドは、必ずしも閉形式の解を有するとは限らない。しかし、その場合には、数値の積分法が素早く収束するべきであり、イラディアンスフィールドは、典型的には、滑らかで、ゆっくりと変化する。
【００６１】
６．イラディアンスベクトルフィールドに基づくシェーディング
図１は、本発明のある実施形態による、複雑な点または面照明を提供するためのシェーディングルーチン１００を示す。第１に、イラディアンスベクトルフィールドテーブルが生成される（ステップ１１０）。イラディアンスベクトルフィールドは、イラディアンスフィールドでベクトルを表すエントリを有する。イラディアンスベクトルフィールドテーブルは、３次元のテーブルである。好ましくは、イラディアンスベクトルフィールドテーブルは、レンダリングの前に、予め算出され、且つメモリ（テクスチャメモリ等）に格納される。しかし、本発明は、その方法に限定されることはない。なぜなら、イラディアンスベクトルフィールドテーブルは、処理能力、時間、および他の設計基準に基づいてレンダリング中に計算され、且つメモリ（テクスチャメモリ等）に格納され得るからである。１次元および／または２次元のテーブルも使用され得る。
【００６２】
ライティングステージ１１５は、ステップ１２０から１４０を含む。ライティングステージ１１５は、ステップ１１０で格納されたイラディアンスフィールドデータを用いて、レンダリングされているオブジェクト中の１つ以上の点を照明（またはシェーディング）する。概して、エミッタ空間中のある点Ｐeの場合には、ライティングおよびカラーを算出するために、該点におけるイラディアンスベクトルが、イラディアンスフィールドテーブルのルックアップによって算出される（ステップ１２０）。例えば、関心のある点Ｐeの周囲のテーブル中の８個のベクトルが求められ、且つ三線（ｔｒｉｌｉｎｅａｒｌｙ）補間され、それによって、点ＰeにおけるイラディアンスベクトルＩeが得られる。
【００６３】
次に、イラディアンスエネルギー成分Ｅが、イラディアンスベクトルＩeと、点Ｐeにおける法平面Ｎeとのベクトル演算に基づいて算出される（ステップ１３０）。ある好適な実施形態では、ベクトル演算は、イラディアンスベクトルＩeと、点Ｐeにおける法平面Ｎeとの内積を計算し、それによって入射するイラディアンスエネルギー成分Ｅを得ることを含む。イラディアンスエネルギー成分Ｅは、次に、表面カラーを変調させるために、あらゆるライティング式またはシェーディングモデル中で使用される（ステップ１４０）。
【００６４】
多角形（例えば、三角形）がラスタ化されるある実施例においては、ステップ１２０および１３０が、バーテックス毎に計算される（および三角形の内部で補間される）が、ステップ１４０は、画素毎に行われる。しかし、本発明は、その方法に限定されることを意図していない。概して、本明細書の記載内容を与えられれば、当業者には明らかなように、ステップ１２０から１４０の各々は、バーテックス毎および／または画素毎に算出され得る。
【００６５】
ラスタ化多角形に基づかない画像レンダリングアルゴリズム（レイトレーシングまたはＲＥＹＥＳアルゴリズム等）の場合には、シェーディング計算は、様々なレートおよび様々な位置で行われ得る。他のレンダリングアルゴリズムへの本発明の適用は、本発明の記載内容を与えられれば、当業者には明らかである。
【００６６】
図２Ａは、本発明による、ディスク形状源２００に関するイラディアンスベクトルフィールド例２１０の２次元スライスの模式図である。図２Ｂおよび図２Ｃは、図２Ａのイラディアンスベクトルフィールド例２１０を表すイラディアンスフィールドテーブル２２０を示す。明瞭にするために、イラディアンスベクトルフィールド２１０は、６４個の点のみを含む。各点において、ベクトルは、イラディアンスフィールドベクトルを表している。従って、イラディアンスフィールドテーブル２２０は、６４個のエントリ（またはロウ）を有する２カラムテーブルである。各エントリは、それぞれの点およびベクトルの位置およびイラディアンスフィールドベクトルの座標を含む。位置は、複雑な点または面光源の座標空間（エミッタ座標空間とも呼ばれる）等の座標空間中の３つの空間座標によって与えられる。ベクトル座標は、点におけるイラディアンスフィールドを定義する３つの成分を表す。
【００６７】
図１の上記の説明では、イラディアンスベクトルフィールドテーブルは、エミッタ空間で生成されていた。つまり、ある光源に関するイラディアンスベクトルのテーブルが算出されると、エミッタは、何らかの配向を有して原点に位置する。シェーディングされている点Ｐeおよび法平面Ｎeもまた、エミッタ空間中に位置していた（またはライティングの前に、ワールド空間または他の任意の座標空間からエミッタ空間へ変換される）。
【００６８】
レンダリングの際に、エミッタを異なるように配置するために、それは、標準的な４×４の幾何マトリックスを用いて変換され得る。次に、共通座標空間で計算が行われることを確実にするために、シェーディングルーチン１００中で２つの調節が行われる。第１に、イラディアンスベクトルフィールドテクスチャにインデックスを付けるために点座標が使用される前に、シェーディングされている各点が、エミッタと同じ座標変換によって変換される。第２に、内積が算出される前に、同じ変換が、シェーディングされている点における法平面に適用される。
【００６９】
ａ．擬似コード
本発明のアルゴリズムを要約するために、この項は、アルゴリズムの実行のための２つの短い擬似コード表記を含む。図３に関連して以下に説明されるある実施形態では、シェーディングされている全ての点において同時に効率的に実行されるように、一方のコードが、フレーム−バッファ動作を用いて実施され得る。
【００７０】
ｂ．例１
【００７１】
【数４】
0004219090.tif 000005
ｃ．例２
【００７２】
【数５】
0004219090.tif 000006
７．シャドウおよび媒体の効果
光源からのシャドウおよび／または関与媒体の効果を算出することもまた、写実感のためには重要である。ある実施例では、シャドウおよび／または関与媒体（霧または煙等）を表す可視度情報が、作表フィールド中でさらに符号化される。例えば、シャドウになっていた空間領域中では、ベクトルは０である。この手法の下では、シャドウのシェーディング品質は、より高い解像度のイラディアンスベクトルフィールドテーブル中で、粗さが少なくなる。
【００７３】
光が空間を移動する際の光に対する関与媒体（霧または煙等）の効果が、ベクトルテーブルにも組み込まれ得る。イラディアンスベクトルフィールドテーブルは、上記のように、関与媒体を考慮することなく生成される。次に、各ベクトルは、どの程度の光が減衰され、テーブル中の各点においてどの程度の光が散乱されたかを表す項によって量られる。例えば、シーンおよび光源が、各単位距離に沿って光の１０％を吸収する同質の霧に囲まれ、且つ、霧による減衰のみが考慮される場合には、イラディアンスフィールド式中の容積項は、Ｖｏｌ（Ｐ，ｘ＿Ａ）＝０．９＾（距離Ｐ，ｘ＿Ａ）である。Ｍｏｂｌｅｙは、複数の光の散乱およびこれもまた容積項に使用され得る減衰を含む容積散乱に関する閉形式を展開した。本明細書中に参考としてその全文が援用されるＭｏｂｌｅｙの「Ｌｉｇｈｔ  ａｎｄ  Ｗａｔｅｒ：Ｒａｄｉａｔｉｖｅ  Ｔｒａｎｓｆｅｒ  ｉｎ  Ｎａｔｕｒａｌ  Ｗａｔｅｒｓ」（Ａｃａｄｅｍｉｃ  Ｐｒｅｓｓ、１９９４年）を参照のこと。これにより、テーブルが生成される場合に、媒体による光の複雑な散乱の効果を効率的にシミュレートすることが可能になる。点がシェーディングされている場合には、媒体効果を包含することに対する追加の費用はかからない。
【００７４】
別の実施形態では、シャドウマップが、本発明と共に使用され得る。シャドウマップは、点源からシャドウを算出するのに効果的である。具体的には、シャドウマップは、源上の多数の点に関して算出され得る。イラディアンスベクトルフィールドテーブルは、シャドウまたは関与媒体効果を考慮して、またはシャドウまたは関与媒体効果を考慮することなく算出され得る。イラディアンスエネルギー成分が、内積演算で得られた後に、イラディアンスエネルギー成分が、シャドウマップからの情報に基づいて、エミッタのどの程度の割合が可視であるかの推定値を用いて量られる。Ｗｉｌｌｉａｍｓ，Ｌ．の「Ｃａｓｔｉｎｇ  ｃｕｒｖｅｄ  ｓｈａｄｏｗｓ  ｏｎ  ｃｕｒｖｅｄ  ｓｕｒｆａｃｅｓ」（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ、ＳＩＧＧＲＡＰＨ’７８予稿集、第１２巻、１９７８年８月、２７０〜２７４頁）およびＲｅｅｖｅｓ，Ｗ．Ｔ．らの「Ｒｅｎｄｅｒｉｎｇ  ａｎｔｉａｌｉａｓｅｄ  ｓｈａｄｏｗｓ  ｗｉｔｈ  ｄｅｐｔｈ  ｍａｐｓ」（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ、ＳＩＧＧＲＡＰＨ’８７予稿集、第２１巻、Ｓｔｏｎｅ，Ｍ．Ｃ．編、１９８７年７月、２８３〜２９１頁）を参照のこと（これらは、本明細書中に参考として援用される）。シャドウマップ（および特に面光源に使用される複数のシャドウマップ）は、エミッタと受け取る側の点との間の可視度の概算にすぎないことに留意されたい。
【００７５】
あるいは、背景映写アルゴリズムまたはシャドウ容積アルゴリズムが、シャドウマップの代わりに用いられ、それによって、光源可視度が算出され、次に、イラディアンスエネルギー成分が量られ得る。しかし、背景映写アルゴリズムは、典型的には、シャドウマップを用いて光源可視度を算出することに比べて、より非効率的である。例えば、本明細書中に全文が参考として援用される、Ｂｏｕｋｎｉｇｈｔ，Ｗ．ＪおよびＫｅｌｌｅｙ，Ｋ．Ｃが記載する背景映写アルゴリズム（「Ａｎ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｐｒｏｄｕｃｉｎｇ  Ｈａｌｆ−Ｔｏｎｅ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ  Ｐｒｅｓｅｎｔａｔｉｏｎｓ  ｗｉｔｈ  Ｓｈａｄｏｗｓ  ａｎｄ  Ｍｏｖａｂｌｅ  Ｌｉｇｈｔ  Ｓｏｕｒｃｅｓ」、Ｓｐｒｉｎｇ  Ｊｏｉｎｔ  Ｃｏｍｐｕｔｅｒ  Ｃｏｎｆｅｒｅｎｃｅの予稿集、ＡＦＩＰＳ  Ｐｒｅｓｓ、Ｍｏｎｔｖａｌｅ、ＮＪ、１９７０年、１〜１０頁）；および本明細書中に全文が参考として援用されるＡｔｈｅｒｔｏｎ，Ｐ．Ｒ．、Ｗｅｉｌｅｒ，Ｋ．およびＧｒｅｅｎｂｅｒｇ，Ｄの「Ｐｏｌｙｇｏｎ  Ｓｈａｄｏｗ  Ｇｅｎｅｒａｔｉｏｎ」（ＳＩＧＧＲＡＰＨ７８の予稿集、２７５〜２８１頁）；および本明細書中に全文が参考として援用されるＣｒｏｗ，Ｆ．Ｃが記載するシャドウ容積アルゴリズム（「Ｓｈａｄｏｗ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ」、ＳＩＧＧＲＡＰＨ  １９９７の予稿集、２４２〜２４７頁）を参照のこと。シャドウマップ（および特に面光源に使用される複数のシャドウマップ）は、エミッタと受け取る側の点との間の可視度の概算にすぎないことに留意されたい。
【００７６】
８．固定小数点および浮動小数点の実施
本発明は、固定小数点および／または浮動小数点演算を用いるコンピュータシステムに対して実施され得る。具体的には、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．による現在のＩｎｆｉｎｉｔｅ  Ｒｅａｌｉｔｙシステム等のグラフィックスシステムが、ハードウェアレンダリングパイプラインの全ステージにおいて浮動小数点値をサポートしない場合に、ルーチン１００が、固定小数点演算を用いて行われる。その結果、主に内積を算出するために多数の追加の計算が必要となる（内積の算出は、固定小数点演算ではより複雑である）。
【００７７】
浮動小数点フレームバッファを備えたシミュレータを用いる、様々な光源を有する様々なシーンの高品質シェーディング画像が得られた。例えば、図１０Ａおよび図１０Ｂは、本発明のシミュレーションで描かれた円形源およびディスク状源によって照明されるシーンを示すカラー画像である。
【００７８】
ルーチン１００は、本明細書の記載内容を与えられれば、当業者には明らかなように、ソフトウェア、ファームウェア、ハードウェア、およびこれらの任意の組み合わせにおいて実施され得る。例えば、ルーチン１００は、グラフィックスエンジンのライティングおよびカラーリングステージにおいて実施され得る。ある例では、バーテックス毎の演算は、主にソフトウェアにおいて実施され得、画素毎の演算は、主にハードウェアにおいて実施され得る。
【００７９】
本発明による複雑な点および面照明を提供するグラフィックス処理環境およびアーキテクチャの例は、図６から図９を参照してさらに詳しく説明される。
【００８０】
９．複数のレンダリングパス
さらなる実施形態によれば、ルーチン１００に関連して説明されたシェーディング計算が、複数のレンダリングパスおよびフレームバッファ記憶を行うことによって実施される。図３は、本発明による複雑な点および面照明を提供するための複数のレンダリングパスルーチン３００のフローチャートである。ルーチン３００では、複雑な点または面光源を有するシーンが、３回レンダリングされ、それによって、図１に示されるシェーディング計算が行われる。ステップ３１０では、イラディアンスベクトルフィールドテーブルが、ステップ１１０に関連して前に説明したように、２次元または３次元テクスチャマップに格納される。
【００８１】
ステップ３２０では、格納された３次元テクスチャマップを用いてシーンがレンダリングされ、それによって、画素を着色し、その結果生じた第１の画像が、第１のフレームバッファ（ＦＢ１）中に格納される。このフレームバッファでは、各画素の赤、緑、および青の成分が、同点におけるイラディアンスベクトルのそれぞれのｘ、ｙ、およびｚの成分と等しい。例えば、ステップ３２０では、テクスチャジェネレータ機能（ＯｐｅｎＧＬTMにおける「ｔｅｘｇｅｎ」等）が、空間中の点を、イラディアンスフィールドを保持する３次元テクスチャマップにマッピングするために使用され得る。これにより、シェーディングされている各可視性の点毎に、三線補間されたイラディアンスベクトルを有する画像が与えられる。次に、ステップ３３０において、赤、緑、および青（ＲＧＢ）のカラー成分で符号化された法平面を用いてシーンがレンダリングされ、その結果生じた第２の画像が、第２のフレームバッファ（ＦＢ２）中に格納される。
【００８２】
２つのフレームバッファ画像（ＦＢ１、ＦＢ２）は、内積Ｉe・Ｎeを算出するために使用される（ステップ３４０および３５０）。ステップ３４０では、フレームバッファのコンテンツであるＦＢ１およびＦＢ２が乗算され、それによって第３の画像ＦＢ３が得られる。ステップ３５０では、第３の画像中の画素成分が、赤、緑、および青の各成分中に格納された結果と合計され、それによって、第４のフレームバッファ画像（ＦＢ４）が得られる。最後に、フレームバッファ画像ＦＢ４中のシーンジオメトリが、任意の別のカラーおよびテクスチャマップを用いてレンダリングされ、それによって第５のフレームバッファ画像（ＦＢ５）が得られる（ステップ３６０）。第４および第５のフレームバッファ画像（ＦＢ４およびＦＢ５）が乗算され、それによって、最終的なフレームバッファ表示画像が得られる（ステップ３７０）。このように、第５の画像が、第４の画像に表される内積の画素毎の結果を用いて変調される。
【００８３】
本明細書の記載内容を与えられれば、当業者には明らかなように、この６パスアルゴリズムは、所与のハードウェアアーキテクチャにおいて利用可能な資源に応じて、またはパスにおける演算速度に応じて、より多くのパスまたはより少ないパスを使用するように変更され得る。例えば、アーキテクチャは、単一パスで、２つのフレームバッファ間の内積演算をサポートすることが可能であり、これにより、ステップ３４０および３５０が単一のパスに組み合わせられることが可能となる。
【００８４】
複数のレンダリングルーチン３００は、コンピュータグラフィックスプロセッサにおいて、ソフトウェア、ファームウェア、ハードウェア、またはこれらの任意の組み合わせとして実施され得る。ある好適な実施では、ルーチン３００は、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．が製造するグラフィックスワークステーションを含む（但し、これに限定されることはない）任意のＯｐｅｎＧＬTMマシンに対して実行されるＯｐｅｎＧＬTMプログラムとして書かれる。
【００８５】
１０．クリップマップ
本発明の別の実施形態によれば、クリップマップが、２次元または３次元イラディアンスベクトルフィールドテーブルを格納するために使用される。クリップマップは、適応的詳細レベルおよびテクスチャメモリ量の多量の節約を提供し得る。
【００８６】
本発明の発明者らは、２次元または３次元イラディアンスベクトルフィールドテーブルのためにクリップマップを使用することによって、イラディアンスフィールドのスムーズさがうまく利用され得ることも認めている。イラディアンスベクトルは、光源付近では素早く変化する。しかし、光源からより遠く離れた位置では、イラディアンスベクトルは、最終的に、放射状に対称的なフィールド(点源が生成するようなフィールド)に近づく（照明エンジニアは、光源の直径の５倍の距離離れた位置にある点に対しては、面光源は点源として扱われ得るという経験則を持つ（Ａｓｈｄｏｗｎ，Ｉ、Ｊ．Ｉｌｌｕｍｉｎａｔｉｎｇ  Ｅｎｇ．Ｓｏｃ．  ２２（１）：１６３〜１８０頁、１９９３年冬））。
【００８７】
クリップマッピングは、限られたサイズのテーブル外の点に対する特別のケースを必要とすることなく、エミッタから遠く離れた点にうまく対処する。クリップマッピングでは、１組の２次元または３次元のイラディアンスベクトルフィールドが生成され、それによって、あるシーンのフィールドを保持する。連続するイラディアンスベクトルフィールドテーブルの各々は、解像度がより低くなる、または粗くなるにつれて、空間のより大きな容積に広がる。エミッタから非常に遠く離れて受け取られたイラディアンスに対応する最も粗いレベルは、シーンの全空間を包含し、長さがゼロのベクトルを有する。クリップマッピングによって、これらの複数の詳細レベルが上手く特定および編成されることも可能となる。
【００８８】
例えば、図４Ａに示されるように、面光源４０１を有するシーンは、該シーンの段階的により大きな領域を包含する３つの異なるフィールド領域４００、４２２、および４２４に細分され得る。本発明によれば、イラディアンスベクトルフィールドテーブル４１０、４１２、および４１４は、それぞれ対応するフィールド領域４００、４２２、および４２４に対して個々に生成される。各イラディアンスベクトルフィールドテーブル４１０、４１２、および４１４は、解像度がより低くなる、または粗くなるにつれて、空間のより大きな容積に広がる。このように、各イラディアンスベクトルフィールドテーブル４１０、４１２、および４１４は、等しい大きさ（例えば、１６×１６テクセル（ｔｅｘｅｌ））であり得、その結果、各テーブルがシーン全体を覆わなければならない完全なマルチ解像度イラディアンスフィールドベクトルテーブルの組を生成することと比較して、多量のメモリの節約が生じる。最初のテーブル（最も細かい解像度でシーンの最小の容積を包含する）の後は、各テーブルの８分の１は、算出および格納される必要がない。なぜなら、そのエントリがアクセスされることは決してないからである。もちろん、本発明は、クリップマップのみに限定されることはない。シーン全体に対して一定の解像度の単一のテーブルまたは完全なマルチ解像度イラディアンスフィールドベクトルテーブルの組が使用され得る。
【００８９】
図５は、本発明の別の実施形態による、コンピュータグラフィックスシェーディングにおいてマルチ解像度イラディアンスフィールドテーブルのクリップマップを用いて複雑な点および面照明を提供するためのルーチン５００のフローチャートである。第１に、１組のマルチ解像度イラディアンスフィールドテーブルが生成される（ステップ５１０）。この１組のマルチ解像度イラディアンスフィールドテーブルは、図４Ａおよび図４Ｂに関連して上に説明したようなクリップマップ中の１組のメモリ領域またはタイルに対応する。好ましくは、このイラディアンスフィールドテーブルの組は、レンダリングの前に、予め算出され、３次元クリップマップとしてメモリ（テクスチャメモリ等）中に格納される。しかし、本発明は、その方法に限定されることはない。なぜなら、イラディアンスフィールドテーブルは、処理能力、時間、および他の設計基準に基づいて、レンダリング中に計算され、メモリ（テクスチャメモリ等）に格納され得るからである。
【００９０】
ライティングステージ５１５は、ステップ５２２から５４０を含む。ライティングステージ５１５は、ステップ５１０で格納されたイラディアンスフィールドデータを用いて、レンダリングされているオブジェクト中の１つ以上の点を照明（またはシェーディング）する。第１に、エミッタ空間における点Ｐeを包含する解像度（または詳細レベル）を有するイラディアンステーブルが選択される。好ましくは、点Ｐeを包含する最も細かい解像度を有するクリップマップ内のイラディアンステーブルが選択される（ステップ５２２）。
【００９１】
ステップ５２４、５３０、および５４０は、図１に関連して上に説明したステップ１２０から１４０と類似している。法平面においてライティングを算出し、且つそのカラーを算出するためには、該点におけるイラディアンスベクトルが、選択されたイラディアンスフィールドテーブル中でのルックアップによって算出される（ステップ５２２）。例えば、関心のある点を包囲するテーブル中の８つのベクトルが求められ、且つ、三線補間され得ることによって、点ＰeにおけるイラディアンスベクトルＩeが得られる。トリキュービック（ｔｒｉｃｕｂｉｃ）等の他のフィルタリングもまた、イラディアンスベクトルＩeを算出するために使用され得る。
【００９２】
次に、イラディアンスエネルギー成分Ｅが、イラディアンスベクトルＩeと、点Ｐeにおける法平面Ｎeとのベクトル演算に基づいて算出される（ステップ５３０）。例えば、ベクトル演算は、イラディアンスベクトルＩeと、点Ｐeにおける法平面Ｎeとの内積を計算し、それによって入射するイラディアンスエネルギー成分Ｅを求めることを含み得る。イラディアンスエネルギー成分Ｅは、次に、表面カラーを変調させるために、あらゆるライティング式またはシェーディングモデル中で使用される（ステップ５４０）。
【００９３】
ある実施例においては、ステップ５２２、５２４、および５３０は、バーテックス毎に計算されるが、ステップ５４０は、画素毎に行われる。しかし、本発明は、その方法に限定されることを意図していない。概して、本明細書の記載内容を与えられれば当業者には明らかなように、ステップ５２２から５４０の各々は、バーテックス毎および／または画素毎に算出され得る。
【００９４】
本発明はまた、どの程度急速にフィールドが変化しているかに応じて、クリップマップの詳細に適応し得る。上記の説明では、クリップマップタイルは、エミッタの周りで同心状に配置され、これは、イラディアンスフィールドが同じレートであらゆる方向によりスムーズになると仮定して、最も効果的な構成である。指向性の高い放射を持つ光源の場合には、クリップマップは、ある方向では、その他の方向における場合よりも急速にフィールドが変化していることを反映するべきである（例えば、テーブルの形状が、長方形となってもよい）。
【００９５】
１１．アニメーション
本発明はまた、本明細書中の記載内容が与えられれば当業者には明らかなように、コンピュータグラフィックスアニメーションにおいて照明を提供するために使用され得る。エミッタの変換が、フレーム毎に変更され得る。これは、イラディアンスベクトルフィールドテーブルを再算出する必要なしに、エミッタが、非常に効率的にシーンの周りを移動させられることが可能であることを意味する。しかし、エミッタの形状または放射特性が変化する場合には、イラディアンスベクトルフィールドテーブルのある部分または全てが更新される。シーン中のジオメトリがアニメーション化されている場合には、アニメーション化シーケンスをレンダリングする際に典型的に必要とされるように、シェーディング計算が、各フレーム毎に再び行われる。従って、アニメーション化シーケンスをレンダリングする際に通常行われなければならない作業と比較して、追加の作業が必要とされない。例えば、本明細書中にその全文が参考として援用されるＷａｔｔおよびＷａｔｔの「Ａｄｖａｎｃｅｄ  Ａｎｉｍａｔｉｏｎ  ａｎｄ  Ｒｅｎｄｅｒｉｎｇ  Ｔｅｃｈｎｉｑｕｅｓ：Ｔｈｅｏｒｙ  ａｎｄ  Ｐｒａｃｔｉｃｅ」（ＡＣＭ  Ｐｒｅｓｓ、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂｌ．：ニューヨーク、ニューヨーク州、１９９２年）、および上記の本明細書中で参考として援用されるＦｏｌｅｙら（第２１章、１０５７〜１０８１頁）を参照のこと。
【００９６】
１２．実施例
本発明による複雑な点および面照明を提供するグラフィックス処理環境およびグラフィックスサブシステムアーキテクチャの例が、図６から図９に関連して以下に説明される。これらの例は、例示的なものであり、本発明を限定することを意図するものではない。
【００９７】
図６は、上記のようなルーチン１００、３００、および５００を実施するためのグラフィックス処理パイプライン環境例６０００のブロック図である。グラフィックス処理環境６０００は、Ｂｅｉｄｅｒらの「ＯｐｅｎＧＬ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ、Ｔｈｅ  Ｏｆｆｉｃｉａｌ  Ｇｕｉｄｅ  ｔｏ  Ｌｅａｒｎｉｎｇ  ＯｐｅｎＧＬ」（Ｒｅｌｅａｓｅ  １、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ  Ｉｎｃ．、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏ．、米国、１９９３年）、および「ＯｐｅｎＧＬ  Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ、Ｔｈｅ  Ｏｆｆｉｃｉａｌ  Ｒｅｆｅｒｅｎｃｅ  Ｄｏｃｕｍｅｎｔ  ｆｏｒ  ＯｐｅｎＧＬ」（Ｒｅｌｅａｓｅ  １、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ  Ｉｎｃ．、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏ．、米国、１９９２年）（これらは共に、本明細書中で参考として全文が援用される）に記載されるようなＯｐｅｎＧＬTM動作を包含し得る（但し、これらに限定されることはない）。
【００９８】
図６に示されるように、グラフィックス処理パイプライン６０００は、表示リスト６００７、評価器（ｅｖａｌｕａｔｏｒ）６０１０、バーテックス毎の演算およびプリミティブアセンブリステージ６０２０、ラスタ化ステージ６０３０、画素演算ステージ６０４０、テクスチャメモリ６０５０、フラグメント毎の演算ステージ６０６０、フレームバッファ６０７０、およびコンピュータグラフィックス表示装置６０８０から構成される。コマンド６００５は、グラフィックス処理パイプライン６０００に入力される。コマンド６００５は、描かれる幾何オブジェクトを特定し、様々な処理ステージ中に、どのようにオブジェクトが扱われるかを制御する。コマンド６００５は、パイプライン６０００を通して即座に処理されてもよいし、後に処理するために、表示リスト６００７中に蓄積されてもよい。
【００９９】
評価器６０１０は、入力値の多項式コマンドを評価することによって、曲線および表面ジオメトリを概算する。次のステージ中に、バーテックス毎の演算およびプリミティブアセンブリステージ６０２０が、幾何プリミティブを処理する。幾何プリミティブは、点、ラインセグメント、三角形、および多角形であり、これらは全て、バーテックスによって記述される。バーテックスは変換および照明され、プリミティブは、ラスタ化ステージ６０３０に備えて、ビューポートにクリッピングされる。
【０１００】
ラスタ化ステージ６０３０は、点、ラインセグメント、三角形、または多角形の２次元記述を用いて、一連のフレームバッファアドレスおよび関連の値を生成する。ラスタ化ステージ６０３０で生成された各フラグメントは、最後のステージである、フラグメント毎の演算ステージ６０６０に送られる。フラグメント毎の演算ステージ６０６０は、データがフレームバッファ６０７０中に画素として格納される前に、グラフィックスデータに対して最終的な演算を行う。これらの最終的な演算には、Ｚバッファリングの到来するＺ値または以前に格納されたＺ値に基づくフレームバッファ６０７０に対する条件付き更新、到来する画素カラーと格納されたカラーとの混合、マスキング、および画素値に対する他の論理演算が含まれ得る。
【０１０１】
入力グラフィックスデータは、バーテックスではなく、画素の形態であり得る。例えば、テクスチャマッピングに使用される画像は、画素演算ステージ６０４０で処理される。画素演算ステージ６０４０は、グラフィックスデータを画素として処理し、その結果生じたテクスチャマップをテクスチャメモリ６０５０中に格納する。次に、ラスタ化ステージ６０３０が、テクスチャ処理を行うために、テクスチャメモリ６０５０に格納されたテクスチャマップを用い得る。画素演算ステージ６０４０からの出力はまた、出力が幾何データから生成されたかのように、ラスタ化ステージ６０３０に直接与えられ、結果的に生じたフラグメントとマージされて、フレームバッファ６０７０内に入り得る。
【０１０２】
本発明のある実施形態では、複雑な点および面照明を提供するためのルーチン１００が、以下のように、グラフィックス処理パイプライン６０００において実施される。テクスチャメモリ６０５０は、ステップ１１０で生成されたイラディアンスベクトルフィールドテーブルを格納するために使用される。ステップ１２０は、バーテックス毎の演算およびプリミティブアセンブリステージ６０２０において、バーテックス毎の演算として処理される。
【０１０３】
ステップ１３０および１４０は、画素演算ステージ６０４０において、画素毎に処理される。画素演算ステージ６０４０（あるいは、バーテックス毎の演算およびプリミティブアセンブリステージ６０２０）は、ステップ１４０で計算された拡散および鏡面反射成分に基づくカラー値を、処理のためにラスタ化ステージ６０３０に出力し得る。
【０１０４】
図７は、本発明によるシェーディングにおいて複雑な面または点照明を実施するグラフィックスサブシステム例７００を示す模式図である。ライティングおよびカラーリングモジュール７１０は、照明モジュール７２０を含む。メモリ７３０は、上記のステップ１１０、３１０、または５１０に従って生成された２次元または３次元イラディアンスベクトルフィールドテーブル（または１組のマルチ解像度イラディアンスベクトルフィールドテーブル）を格納する。ある例では、照明モジュール７２０は、グラフィックスプロセッサまたは別のプロセッサによって実行され得るプログラムモジュールとして、主にソフトウェア中でルーチン１００を実施する。様々なフィルタリング関数（ｆｉｌｔｅｒｉｎｇ  ｆｕｎｃｔｉｏｎ）もまた、イラディアンスベクトルフィールドテーブルのエントリ間の補間を行うために使用され得る。
【０１０５】
１３．複雑な点および面光源の効率的なハードウェアシミュレーション
図８は、本発明の別の実施形態による、ハードウェア中で安価にルーチン１００を実施する照明モジュール７２０のブロック図である。照明モジュール７２０は、ルックアップユニット８１０、内積ユニット８２０、および表面カラー変調ユニット８３０を含む。変換ユニット（不図示）は、点および法平面を、ワールド空間からエミッタ空間に変換するために使用され得る。概して、点または法平面の各変換は、１６回の乗算演算および１２回の加算演算を必要とする。
【０１０６】
ルックアップユニット８１０は、ステップ１１０に関連して説明したような、格納されたイラディアンスベクトルテーブルを用いて、点のイラディアンスベクトルを算出する。次に、ルックアップユニット８１０は、エミッタ空間中の変換された点に隣接する８個の予め算出されたベクトルを求め、且つ三線補間を行い、それによってイラディアンスベクトルフィールドを表すライティングベクトルが得られる。このルックアップおよび補間は、８回のベクトルルックアップ動作、２１回の乗算演算、および４２回の加算を必要とする。
【０１０７】
内積ユニット８２０は、ルックアップユニット８１０によって出力されたベクトルと、エミッタ空間中の法平面Ｎとの内積を算出する。この内積計算は、たった３回の乗算演算および２回の加算演算を必要とする。次に、内積ユニット８２０は、イラディアンスエネルギー成分Ｅを出力する。
【０１０８】
表面カラー変調器ユニット８３０は、イラディアンスエネルギー成分Ｅを用いて、３回の乗算演算のみを必要とする動作で表面カラーを変調させる。表面カラー変調器ユニット８３０は、入射する点または面照明を表すシェーディングカラーを出力し、これは次に、最終的なシェーディングカラーとして出力される、またはシェーダーにおけるさらなるライティングおよびカラーリング動作と組み合わせられる。
【０１０９】
上記のような光の可視度情報（または閉塞）を算出するための任意のユニット（不図示）が、内積ユニット８２０から出力されたイラディアンスエネルギー成分Ｅを量るため、および／または表面カラー変調器ユニット８３０の結果からシェーディングカラーを量るために使用され得る。
【０１１０】
従って、この実施形態では、本発明は、わずかなハードウェアの追加で、複雑な点および面光源を安価に表すことができる。
【０１１１】
１４．ＧＵＩコンピュータシステム例
図９は、本発明が動作し得る環境例を示すブロック図である。この環境は、プロセッサ９０４等の１つ以上のプロセッサを含むコンピュータシステム９００である。コンピュータシステム９００は、任意の種類のコンピュータグラフィックスコンピュータ、仮想マシン、プロセッサ（単一バスプロセッサ、複数バスプロセッサ、またはバスを持たないプロセッサ）、ワークステーション、およびネットワークアーキテクチャを包含し得る。ある好適な実施では、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ，Ｉｎｃ．が製造するグラフィックスワークステーションを含む（但し、これに限定されることはない）ＯｐｅｎＧＬマシンが使用され得る。
【０１１２】
プロセッサ９０４は、通信バス９０２に接続されている。様々なソフトウェアの実施形態が、このコンピュータシステム例に関連して説明される。この説明は、例示的なものであり、本発明を限定することを意図したものではない。本明細書の記載内容を読めば、他のコンピュータシステムおよび／またはコンピュータアーキテクチャを用いて本発明を実施する方法が、当業者には明らかとなるであろう。
【０１１３】
コンピュータシステム９００は、グラフィックスサブシステム９０３を含む。グラフィックスサブシステム９０３は、１つ以上のプロセッサチップとして実現され得る。グラフィックスサブシステム９０３は、図９に示されるように、プロセッサ９０４の一部として包含され得る、または別個のグラフィックスエンジンまたはプロセッサとして存在し得る。グラフィックスデータは、グラフィックスサブシステム９０３からバス９０２に出力される。ディスプレイインタフェース９０５は、表示装置９０６上での表示のために、バス９０２からのグラフィックスデータを転送する。
【０１１４】
コンピュータシステム９００はまた、好ましくはランダムアクセスメモリ（ＲＡＭ）であるメインメモリ９０８を含み、二次メモリ９１０も包含し得る。二次メモリ９１０は、例えば、ハードディスクドライブ９１２および／またはフロッピーディスクドライブ、磁気テープドライブ、または光ディスクドライブ等に代表される除去可能なストレージドライブ９１４を包含し得る。除去可能なストレージドライブ９１４は、周知の様式で、除去可能なストレージユニット９１８から読み取る、および／または除去可能なストレージユニット９１８に書き込む。除去可能なストレージユニット９１８は、フロッピーディスク、磁気テープ、または光ディスク等を表し、これは、除去可能なストレージドライブ９１４によって読み取られる、および除去可能なストレージドライブ９１４によって書き込まれる。理解されるように、除去可能なストレージユニット９１８は、内部にコンピュータソフトウェアおよび／またはデータを格納したコンピュータ使用可能記憶媒体を含む。
【０１１５】
代替の実施形態では、二次メモリ９１０は、コンピュータプログラムまたは他の命令がコンピュータシステム９００にロードされることが可能となる他の類似の手段を包含し得る。このような手段には、例えば、除去可能なストレージユニット９２２およびインタフェース９２０が包含され得る。例には、プログラムカートリッジおよびカートリッジインタフェース（ビデオゲーム機器に見られるようなもの）、除去可能なメモリチップ（ＥＰＲＯＭまたはＰＲＯＭ等）および関連のソケット、およびソフトウェアおよびデータが除去可能なストレージユニット９２２からコンピュータシステム９００に転送されることが可能な他の除去可能なストレージユニット９２２およびインタフェース９２０が包含され得る。
【０１１６】
コンピュータシステム９００はまた、通信インタフェース９２４を包含し得る。通信インタフェース９２４により、ソフトウェアおよびデータが、通信パス９２６を介して、コンピュータシステム９００と外部装置との間で転送されることが可能となる。通信インタフェース９２４の例には、モデム、ネットワークインタフェース（イーサネットカード等）、および通信ポート等が包含され得る。通信インタフェース９２４を介して転送されるソフトウェアおよびデータは、通信パス９２６を介した通信インタフェース９２４による受信が可能な電子、電磁石、光、または他の信号であり得る信号の形態である。通信インタフェース９２４により、コンピュータシステム９００がインターネット等のネットワークにインタフェースをとり得る手段が提供されることに注目されたい。
【０１１７】
グラフィカルユーザインタフェースモジュール９３０は、ユーザ入力を、周辺装置９３２からバス９０２に転送する。これらの周辺装置９３２は、マウス、キーボード、タッチスクリーン、マイクロホン、ジョイスティック、スタイラス、ライトペン、音声認識装置、または任意の他の種類の周辺装置であり得る。
【０１１８】
本発明は、この環境例に関連して説明される。これらの用語での説明は、便宜上のためだけに提供される。本発明がこの環境例における適用に限定されることは意図していない。実際、以下の記載内容を読めば、本発明を代替の環境でどのように実施するかが、当業者には明らかとなるであろう。
【０１１９】
本発明は、好ましくは、図９に関連して上に説明した環境に類似する環境でランされている（すなわち、実行されている）ソフトウェアを用いて実施される。本明細書中では、「コンピュータプログラムプロダクト」という用語は、概して、除去可能なストレージユニット９１８またはハードディスクドライブ９１２に設置されたハードディスクを指すために使用される。これらのコンピュータプログラムプロダクトは、ソフトウェアをコンピュータシステム９００に提供するための手段である。
【０１２０】
コンピュータプログラム（コンピュータ制御理論とも呼ばれる）は、メインメモリおよび／または二次メモリ９１０中に格納される。コンピュータプログラムはまた、通信インタフェース９２４を介して受信され得る。このようなコンピュータプログラムは、実行されると、コンピュータシステム９００が本明細書中に記載されるような本発明の特徴を行うことを可能にする。具体的には、コンピュータプログラムは、実行されると、プロセッサ９０４が本発明の特徴を行うことを可能にする。従って、このようなコンピュータプログラムは、コンピュータシステム９００のコントローラを表す。
【０１２１】
本発明がソフトウェアを用いて実施されるある実施形態では、ソフトウェアは、コンピュータプログラムプロダクト中に格納され、除去可能なストレージドライブ９１４、ハードドライブ９１２、または通信インタフェース９２４を用いてコンピュータシステム９００内にロードされ得る。あるいは、コンピュータプログラムプロダクトは、通信パス９２６上でコンピュータシステム９００にダウンロードされ得る。制御論理（ソフトウェア）は、プロセッサ９０４によって実行される際に、プロセッサ９０４に本明細書中に記載されるような本発明の機能を行わせる。
【０１２２】
別の実施形態では、本発明は、例えば特定用途集積回路（ＡＳＩＣ）等のハードウェア構成機器を用いて、主にファームウェアおよび／またはハードウェア中で実施される。本明細書中に記載される機能が行われるようにハードウェア状態マシンを実現することは、当業者には明らかであろう。
【０１２３】
１５．カラー照明
上記の複雑な点および面照明光は、純白でもよい。上記のイラディアンスベクトルは、スペクトル特性を持たない。実際には、光源は、運ぶ光の波長によって異なるイラディアンスベクトルの分布を生成する。つまり、カラー照明を提供するためには、上記のイラディアンスベクトルは、波長の関数となるように改変され得る。例えば、光源によって生成される成分（Ｐx，Ｐy，Ｐz）を有する波長λでの点Ｐにおけるイラディアンスカラーベクトルは、
【０１２４】
【数６】
0004219090.tif 000007
である。但し、積分値はエミッタの領域Ａより上であり、Ｌeは、方向ωにおけるエミッタ上の点ｘAにおける波長λの放射イラディアンスであり、ｒ2は、ＰからｘAへの距離ｒの二乗であり、Ｖは、ｘAからＰへの正規化ベクトルである。ωおよびθ（ＶとｘAにおけるエミッタの法平面との間の角度）は、Ｖによって決定される。Ｖｉｓ（Ｐ，ｘA）は、可視度の項であり、点ＰおよびｘAが互いに可視であれば１の値を有し、点ＰとｘAとの間に閉塞が存在すれば０の値を有する。Ｖｏｌ（Ｐ，ｘA）は、ＰとｘAとの間の減衰媒体の容積散乱効果を表し、Ｖｏｌ（Ｐ，ｘA）は、Ｐに到達する前のｘAから放射されている光の減衰およびＰに到達する前のエミッタ上の他の点からの光のインスキャタリングの両方を包含し得る。変数λは、エミッタの波長を表す。明瞭にするために、波長の関数であるイラディアンスベクトルをさす「イラディアンスカラーベクトル」という用語が以下で使用されることに留意されたい。
【０１２５】
さらに、他のグラフィックスアプリケーションの場合のように、標準的な赤、緑、青（ＲＧＢ）の近似が適用され得る。この場合には、単一のイラディアンスベクトルを有するのではなく、赤、緑、および青のイラディアンスカラーベクトルの組み合わせが使用され得る。
【０１２６】
あるアプリケーションにおいては、カラー光源を有することが望ましい。例えば、このようなカラー光源は、白ではない一定のカラーを有する光、表面（例えば、テレビ画面）上で異なるカラー有する光、または異なる波長の光を異なるように散乱させる非均一な霧を通る光であり得る。
【０１２７】
本発明によるカラー照明に対する３つの手法が提供される。カラー照明の第１の手法は、主に図１１に関連して説明される。カラー照明の第２の手法は、主に図１２から図１４に関連して説明される。これらの２つの手法は、機能的に類似しており、概して、一定カラー源を含む全てのカラー源に適用可能である(但し、第２の手法では、必要とされる計算が少ない）。第３の手法は、一定のカラーを有するカラー源という特別なケースに向けられる。第３の手法は、第１および第２のより一般的な手法と比べて、はるかに効率的に、且つ少ない計算量で実施され得る。第３の手法の一例が、図１５に関連して説明される。
【０１２８】
ａ．カラー照明の第１の手法
図１１は、本発明の第１のカラー実施形態による、コンピュータグラフィックスシェーディングにおいてカラー照明を提供するためのルーチン１１００のフローチャートである。ルーチン１１００は、上記のルーチン１００と類似しているので、カラー照明をサポートするための改変のみが、詳細に説明される必要がある。
【０１２９】
ステップ１１１０では、ステップ１１０で説明したような１つのイラディアンスベクトルフィールドテーブルの代わりに、３つのカラーイラディアンスベクトルフィールドテーブルが算出される。例えば、３つのカラーイラディアンスベクトルフィールドテーブルは、赤、緑、および青のカラーイラディアンスベクトルフィールドに対応し得る。ライティングステージ１１１５では、各シェーディング点Ｐeにおいて、３つのカラーイラディアンスベクトル（ＩR，ＩG，ＩB）が、３つのカラーイラディアンスフィールドテーブルに対するルックアップ動作によって算出される（ステップ１１２０）。各カラー毎に、ルックアップ動作は、カラーイラディアンスベクトルの直接的ルックアップでもよく、あるいは、関心のある点に近いカラーイラディアンスベクトルの補間に関与していてもよい。次に、イラディアンスエネルギー成分Ｅが、各シェーディング点Ｐeにおいて算出される（ステップ１１３０）。具体的には、ベクトル演算（例えば、内積）が、３つのカラーイラディアンスベクトル（ＩR，ＩG，ＩB）の各々と、エミッタ空間の法平面との間で行われる。これらの３つの内積が合計され、それによってイラディアンスエネルギー成分Ｅが得られ得る。
【０１３０】
最後に、ステップ１１３０で算出されたイラディアンスエネルギー成分Ｅが、ステップ１４０に関連して上に説明したように、シェーディング点の表面カラーを変調させるためにステップ１１４０で用いられる。
【０１３１】
ｂ．カラー照明の第２の手法
第２の手法は、内積の場合のステップ１１３０におけるベクトル演算を最適化する。具体的には、第２の手法は、ベクトルの内積の以下の特性を利用することによって、内積がさらに最適化され得ることを認める。該特性とは、ｒが実数であり、且つｖ１およびｖ２がベクトルである場合に、
（（ｒ*ｖ１）ｄｏｔ（ｖ２））＝＝ｒ*（ｖ１  ｄｏｔ（ｖ２））である。この内積特性を、３つのカラーイラディアンスベクトル（ＩR，ＩG，ＩB）の各々と、エミッタ空間の法平面との３つの内積に適用することによって、１つのイラディアンスベクトルテーブルおよび１つのカラーテーブルが用いられることが可能となる。エミッタ空間中の各シェーディング点において、ステップ１３０に関連して上に説明したように、ただ１つの内積が、イラディアンスベクトル（スペクトル成分を持たない）と法平面との間で行われる。その結果生じたイラディアンスエネルギー成分は、次に、カラーテーブルからの補間カラーによって変調される。
【０１３２】
図１２は、本発明の第２のカラー実施形態による、コンピュータグラフィックスシェーディングにおいてカラーの複雑な点または面照明を提供するためのルーチン１２００のフローチャートである。ステップ１２１０において、１つのイラディアンスベクトルテーブルおよび１つのカラーテーブルが生成される。イラディアンスベクトルテーブルは、ステップ１１０に関連して上に説明したように予め算出される。エミッタ空間中の各点に割り当てられた１つ以上のカラーを有する１つのカラーテーブルが生成される。ある好適な実施形態では、赤、緑、および青の成分が、エミッタ空間中の各点に割り当てられる。
【０１３３】
ライティングステージ１２１５では、ステップ１２２０において、イラディアンスベクトルＩe（スペクトル成分を持たない）が、ステップ１２０に関連して上に説明したように算出される。例えば、イラディアンスベクトルＩeは、ステップ１２１０で生成されたイラディアンスベクトルフィールドテーブルから容易に取り出され得る。ルックアップ動作またはユニットが、エミッタ空間中のシェーディングされている点に対応するイラディアンスベクトルＩeをルックアップするために使用され得る。直接的ルックアップまたは付近のイラディアンスベクトルの補間が行われ得る。
【０１３４】
同様に、ステップ１２２２において、イラディアンスカラーが算出される。例えば、イラディアンスカラーは、ステップ１２１０で生成されたイラディアンスカラーテーブルから取り出され得る。ルックアップ動作またはユニットが、エミッタ空間中のシェーディングされている点に対応するイラディアンスカラー成分（すなわち、赤、緑、および青）をルックアップするために使用され得る。補間器（ｉｎｔｅｒｐｏｌａｔｏｒ）は、付近の点の取り出されたイラディアンスカラー成分を補間し、それによって、エミッタ空間中のシェーディングされている点に対応する補間イラディアンスカラー値を得ることもできる。
【０１３５】
ステップ１２３０では、エミッタ空間中の各シェーディング点において、ステップ１３０に関連して上に説明したように、ステップ１２２０で算出されたイラディアンスベクトルＩeと、法平面Ｎeとの内積計算を行う。ステップ１２３２では、その結果生じたイラディアンスエネルギー成分Ｅが、ステップ１２２２で算出されたイラディアンスカラーによって変調される。
【０１３６】
最後に、ステップ１２４０において、ステップ１２３２からの変調されたイラディアンスエネルギー成分Ｅcが、任意のライティング式またはシェーディングモデル中で使用され、それによって、表面カラーが変調される（上記のステップ１４０に類似する）。
【０１３７】
図１３は、本発明の第２のカラー実施形態のある実施例による、照明を提供するための複数のレンダリングパスルーチン１３００のフローチャートである。ルーチン１３００は、上記のルーチン３００に類似する。実際、ステップ１３１０、３１２０、１３３０、１３４０、１３５０、１３６０、および１３７０は、上記のステップ３１０、３２０、３３０、３４０、３５０、３６０、および３７０と同じであり、当業者には明白であるので、さらに説明される必要はない。
【０１３８】
ステップ１３１２、１３６２、および１３７２が加えられ、それによってカラー照明が提供される。ステップ１３１２では、イラディアンスカラーテーブルが生成され、３次元テクスチャマップ（イラディアンスカラーテクスチャと呼ぶ）として格納される。ステップ１３６２では、ステップ１３１２で格納されたイラディアンスカラーテクスチャを用いて、シーンがレンダリングされる。これにより、フレームバッファに格納される第６のフレームバッファ画像ＦＢ６が生成される。次に、ステップ１３７２では、第６のフレームバッファ画像ＦＢ６が、ステップ１３７０から出力されたフレームバッファ表示画像と乗算され、それによって、最終的なフレームバッファ表示画像が得られる。
【０１３９】
図１４は、本発明の第２のカラー実施形態の別の実施例における照明モジュールを示すブロック図である。照明モジュールは、ルックアップユニット１４１０、内積ユニット１４２０、および表面カラー変調ユニット１４３０を含む。変換ユニット（不図示）は、点および法平面を、ワールド空間からエミッタ空間に変換するために使用され得る。概して、点または法平面の各変換は、１６回の乗算演算および１２回の加算演算を必要とする。
【０１４０】
ルックアップユニット１４１０は、ステップ１１０に関連して説明したような、メモリ７３０中の格納されたイラディアンスベクトルテーブルを用いて、点のイラディアンスベクトルを算出する。ルックアップユニット１４１０は、エミッタ空間中の変換された点に隣接する８個の予め算出されたベクトルを求め、且つ三線補間を行い、それによってイラディアンスベクトルフィールドを表すライティングベクトルＩeが得られる。このルックアップおよび補間は、８回のベクトルルックアップ、２１回の乗算演算、および４２回の加算を必要とする。
【０１４１】
カラー照明を提供するために、ルックアップユニット１４１０は、メモリ１４１２からエミッタ空間中のシェーディングされている点に対応するイラディアンスカラー成分（すなわち、赤、緑、および青）を取り出す。ルックアップユニット１４１０中の補間器は、１つ以上の付近の点からのイラディアンスカラー成分を補間し、それによって、エミッタ空間中のシェーディングされている点に対応するイラディアンスカラー値を得る。次に、イラディアンスカラー値が、表面カラー変調器ユニット１４３０に出力される。
【０１４２】
内積ユニット１４２０は、ルックアップユニット１４１０が出力したベクトルＩeと、エミッタ空間中の法平面Ｎeとの内積を算出する。この内積計算は、たった３回の乗算演算および２回の加算演算を必要とする。内積ユニット１４２０は、次に、イラディアンスエネルギー成分Ｅを出力する。
【０１４３】
表面カラー変調器ユニット１４３０は、ステップ１２３２に関連して説明したように、ルックアップユニット１４１０が出力したイラディアンスカラーを用いてイラディアンスエネルギー成分Ｅを変調し、それによって、イラディアンスカラー変調イラディアンスエネルギー成分Ｅcを得る。次に、イラディアンスカラー変調イラディアンスエネルギー成分Ｅcが用いられ、それによって、３回の乗算演算のみを必要とする動作で表面カラーを変調させる。表面カラー変調器ユニット１４３０は、入射する点または面照明を表すシェーディングカラーを出力し、これは次に、最終的なシェーディングカラーとして出力される、またはシェーダーにおけるさらなるライティングおよびカラーリング動作と組み合わせられる。
【０１４４】
上記のような光の可視度情報（または閉塞）を算出するための任意のユニット（不図示）が、内積ユニット１４２０から出力されたイラディアンスエネルギー成分Ｅを量るため、および／または表面カラー変調器ユニット１４３０の結果からシェーディングカラーを量るために使用され得る。
【０１４５】
従って、この実施形態では、本発明は、わずかなハードウェアの追加で、複雑なカラーの点および面光源を安価に表すことができる。
【０１４６】
ｃ．第３の手法：一定カラー源の特別なケース
上記の第１および第２の手法は、あらゆるカラー源に適用される。一定カラー源の場合には、さらに効率的な第３の手法が使用され得る。具体的には、図１５の一定カラー照明を提供するためのルーチン１５００に示されるように、ステップ１４０で得られた変調された表面カラーが、光源カラーによってさらに乗算される（ステップ１５５０）ように、ルーチン１００が改変される必要があるだけである。
【０１４７】
同様に、一定カラー照明を提供するためには、ステップ３６０の後に、第５のフレームバッファ画像ＦＢ５がさらに光源カラーによって乗算され、それによって第６のフレームバッファ画像ＦＢ６が得られるように、ルーチン３００が改変される必要があるだけである。次に、ステップ３７０では、第６のフレームバッファ画像ＦＢ６が、第４のフレームバッファ画像ＦＢ４によって乗算され、それによって最終的なフレームバッファ表示画像が得られる。
【０１４８】
図８のハードウェアを用いて一定カラー照明を提供するためには、追加の光源カラー入力が、表面カラー変調器ユニット８３０に提供される。表面カラー変調器ユニット８３０によって得られた変調表面カラーは、光源カラーによってさらに乗算される。図１４のシステムと比較して、追加のメモリ１４１２またはメモリ１４１２中のイラディアンスカラーテーブルに対するルックアップ動作は、必要とされない。
【０１４９】
ｄ．マルチ解像度フォーマットを用いたカラー照明
最後に、カラー照明に関する上記の３つの手法の各々が、本明細書の記載内容を与えられれば当業者には明らかなように、マルチ解像度イラディアンスフィールドテーブルに基づいて、ルーチン５００でカラー照明を提供するために使用され得る。すなわち、第１の手法の下では、マルチ解像度のイラディアンスカラーベクトルフィールドテーブルの組が、ステップ５１０において生成される。ステップ５２２では、最も細かい解像度で点を包含するイラディアンスカラーテーブルが選択される。ステップ５２４では、イラディアンスカラーベクトルが、ステップ５２２で選択されたイラディアンスカラーテーブルを用いて算出される。ステップ５３０では、各シェーディング点において、内積演算が、各イラディアンスカラーベクトル（ＩR,ＩB,ＩR）と、法平面Ｎeとの間で行われる。次に、ステップ５４０では、ステップ１１４０に関連して説明したように、表面カラーが、イラディアンスエネルギー成分に基づいて変調される。
【０１５０】
第２の手法の下においても、１組のマルチ解像度イラディアンスカラーテーブルが、ステップ５１０で生成される。ステップ５２２では、最も細かい解像度で点を包含するイラディアンスカラーテーブルが選択される。イラディアンスカラーが、ステップ１２２２に関連して説明したように算出される。ステップ１２３２およびステップ１２４０に関連して説明したように、ステップ５３０とステップ５４０との間で、イラディアンスエネルギー成分をさらに変調させるために該イラディアンスカラーが使用される。
【０１５１】
一定カラー源という特別なケースの第３の手法の下では、ステップ５４０で得られた変調された表面カラーが、光源カラーによってさらに乗算されるように、ルーチン５００が改変される必要があるだけである。
【０１５２】
擬似コード
上記のカラー照明に対する第２の手法の一例の擬似コードを以下に示す。
【０１５３】
カラーの場合の例３
【０１５４】
【数７】
0004219090.tif 000008
１６．結論
本発明の様々な実施形態を上に記載したが、これらの実施形態は、ただの例として提示されたものであり、限定的なものではないことが理解されるべきである。当業者は、形態および詳細における様々な変更が、添付の請求の範囲に規定されるような本発明の精神および範囲から逸脱することなく行われ得ることを理解するであろう。従って、本発明の広がりおよび範囲は、上記の例示的な実施形態の何れによっても限定されるべきではなく、以下の請求の範囲およびそれらの等価物によってのみ規定されるべきである。
【図面の簡単な説明】
【図１】  図１は、本発明のある実施形態による、コンピュータグラフィックスシェーディングにおいて照明を提供するためのルーチンのフローチャートである。
【図２Ａ】  図２Ａは、本発明によるイラディアンスベクトルフィールド例の模式図である。
【図２Ｂ】  図２Ｂは、本発明による図２Ａのイラディアンスベクトルフィールド例を表すイラディアンスフィールドテーブルである。
【図２Ｃ】  図２Ｃは、本発明による図２Ａのイラディアンスベクトルフィールド例を表すイラディアンスフィールドテーブルである。
【図３】  図３は、本発明による照明を提供するための複数のレンダリングパスルーチンのフローチャートである。
【図４Ａ】  図４Ａは、あるシーン内の複数の領域を示す図である。
【図４Ｂ】  図４Ｂは、本発明による１組のマルチ解像度イラディアンスフィールドテーブルによって覆われる図４Ａの複数の領域を示す図である。
【図５】  図５は、本発明の別の実施形態による、コンピュータグラフィックスシェーディングにおいて１組のマルチ解像度イラディアンスフィールドテーブルを用いて照明を提供するためのルーチンのフローチャートである。
【図６】  図６は、本発明による照明をサポートするためのグラフィックス処理パイプラインである。
【図７】  図７は、本発明による照明をサポートするためのグラフィックスサブシステムを例示するブロック図である。
【図８】  図８は、本発明による照明をサポートするための追加ハードウェアを例示するブロック図である。
【図９】  図９は、図７のグラフィックスサブシステムを含むコンピュータシステム例を示す。
【図１０Ａ】  図１０Ａは、本発明のシミュレーションで描かれた円形源およびディスク状源によって照明されるシーンを示すカラー画像である。
【図１０Ｂ】  図１０Ｂは、本発明のシミュレーションで描かれた円形源およびディスク状源によって照明されるシーンを示すカラー画像である。
【図１１】  図１１は、本発明の第１のカラー実施形態による、コンピュータグラフィックスシェーディングにおいてカラー照明を提供するためのルーチンのフローチャートである。
【図１２】  図１２は、本発明の第２のカラー実施形態による、コンピュータグラフィックスシェーディングにおいてカラー照明を提供するためのルーチンのフローチャートである。
【図１３】  図１３は、本発明の第２のカラー実施形態のある実施例による、照明を提供するための複数のレンダリングパスルーチンのフローチャートである。
【図１４】  図１４は、本発明の第２のカラー実施形態の別の実施例による、照明をサポートするための追加ハードウェアを示すブロック図である。
【図１５】  図１５は、本発明の第３のカラー実施形態による、一定カラーの照明を提供するためのルーチンのフローチャートである。
【図１】
0004219090.tif 000009
【図２Ａ】
0004219090.tif 000010
【図２Ｂ】
0004219090.tif 000011
【図２Ｃ】
0004219090.tif 000012
【図３】
0004219090.tif 000013
【図４Ａ】
0004219090.tif 000014
【図４Ｂ】
0004219090.tif 000015
【図５】
0004219090.tif 000016
【図６】
0004219090.tif 000017
【図７】
0004219090.tif 000018
【図８】
0004219090.tif 000019
【図９】
0004219090.tif 000020
【図１０Ａ】
0004219090.tif 000021
【図１０Ｂ】
0004219090.tif 000022
【図１１】
0004219090.tif 000023
【図１２】
0004219090.tif 000024
【図１３】
0004219090.tif 000025
【図１４】
0004219090.tif 000026
【図１５】
0004219090.tif 000027