(57)【要約】      （修正有）【課題】固定機能パイプラインからシェーダプロセッサに必要な演算結果を効率的に提供する。【解決手段】演算処理をプログラム可能なシェーダプロセッサ１００に接続され固定機能パイプラインとして機能する描画装置２００であって，シェーダプロセッサ１００からライティング演算に用いる共通パラメータが入力されるパラメータ入力部２１０と，シェーダプロセッサ１００から各フラグメントに対応するベクトルデータが入力されるベクトル入力部２２０と，各ベクトルデータの正規化を行うベクトル正規化部２３０と，正規化された各ベクトルデータについて内積演算を行う内積処理部２４０と，共通パラメータ及び内積演算結果に基づいてライティング演算を行うライティング演算部２５０と，ライティング演算結果の中からモードに応じて出力パラメータを選択してシェーダプロセッサ１００へ出力する出力選択部２６０とを備える。【選択図】図１
2019057106.tif 000002
【特許請求の範囲】
【請求項１】
実行する演算処理をプログラム可能なシェーダプロセッサに接続され固定機能パイプラインとして機能する描画装置であって，
前記シェーダプロセッサからライティング演算に用いる共通パラメータが入力されるパラメータ入力部と，
前記シェーダプロセッサから各フラグメントに対応するベクトルデータが入力されるベクトル入力部と，
前記ベクトル入力部に入力された各ベクトルデータの正規化を行うベクトル正規化部と，
前記ベクトル正規化部により正規化された各ベクトルデータについて内積演算を行う内積処理部と，
前記パラメータ入力部に入力された共通パラメータ及び前記内積処理部による内積演算結果に基づいてライティング演算を行うライティング演算部と，
前記ライティング演算部における演算結果の中から，モードに応じて出力パラメータを選択し，選択した出力パラメータを前記シェーダプロセッサへ出力する出力選択部と，を備える
描画装置。
【請求項２】
前記パラメータ入力部は，システムバスに接続されており，前記シェーダプロセッサ以外のプロセッサ又はメモリからも前記共通パラメータを読み込むことができる
請求項１に記載の描画装置。
【請求項３】
前記パラメータ入力部は，前記システムバスを通じて，遅延レンダリングの演算結果を記憶したＧバッファからデータを読み込む
請求項２に記載の描画装置。
【請求項４】
前記ライティング演算部は，
描画対象の表面上の一点に入射する光が当該表面で反射される割合を表す双方向反射率分布関数（ＢＲＤＦ）モデルの微小面勾配分布関数を演算するＤ演算部，幾何学的減数関数を演算するＧ演算部，及び反射率を演算するＦ演算部と，
前記内積処理部，前記Ｄ演算部，前記Ｇ演算部，及び前記Ｆ演算部による各種演算結果に基づいて，前記ＢＲＤＦ及び最終カラーの演算を行う最終出力演算部と，を有し，
前記出力選択部は，前記内積処理部，前記Ｄ演算部，前記Ｇ演算部，前記Ｆ演算部，及び前記最終出力演算部による各種演算結果から，モードに応じて出力パラメータを選択し，選択した出力パラメータを前記シェーダプロセッサへ出力する
請求項１から請求項３のいずれかに記載の描画装置。
【請求項５】
前記パラメータ入力部は，前記内積処理部，前記Ｄ演算部，前記Ｇ演算部，前記Ｆ演算部，及び前記最終出力演算部に，各種演算に必要な共通パラメータを提供する
請求項４に記載の描画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，コンピュータグラフィックス用の描画装置に関する。具体的に説明すると，本発明は，コンピュータグラフィックスによるライティング処理を行うための描画装置に関するものである。
【背景技術】
【０００２】
従来から，３次元コンピュータグラフィックスにおける演算処理の高速化と低消費電力化を目的として，予め決められた演算処理を実行する固定機能パイプラインと，実行すべき演算処理をプログラム可能なプログラマブルパイプライン（シェーダプロセッサ）とを並列使用したコンピュータグラフィックス用の描画装置が提案されている（特許文献１）。特許文献１では，固定機能パイプラインにおいて単位での固定された演算処理を行い，プログラマブルパイプラインにおいてピクセル単位での演算処理を行い，処理の内容に応じてこれらの固定機能パイプラインとプログラマブルパイプラインとを使い分ける技術が開示されている。
【０００３】
より具体的に説明すると，特許文献１で提案されている固定機能パイプラインは，ラスタライズ処理，テクスチャ処理，ライティング処理，及びブレンディング処理をこの順に行う固定機能の回路によって構成されており，これら一連の固定処理が行われたデータがプログラマブルパイプラインに入力されるか，あるいはカラーアップデータに出力されるように構成されている。このように，主にライティング処理のような頻繁に実行される処理を固定機能パイプラインで行うことにより，グラフィックス処理の高速化や低消費電力化を図ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１６４２３８号公報（特許第４７５６１０７号）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで，ライティング処理では，物理的な回路で演算を行う方程式や関数によっては，演算処理の途中であっても種々の有用な演算結果が得られる場合がある。しかしながら，特許文献１の従来技術では，一連のライティング処理を終えた最終的な演算結果をプログラマブルパイプラインに入力することしか想定されておらず，固定機能パイプラインからプログラマブルパイプラインで行うことのできる演算結果が制限されている。このため，従来技術では，プログラマブルパイプラインが演算処理を自由にプログラム可能であることの利点を最大限活用できているとはいえないものであった。
【０００６】
また，従来技術に係る演算装置は，上記のように固定機能パイプラインからプログラマブルパイプラインに入力可能な演算結果が制限されていることから，例えば双方向反射率分布関数（ＢＲＤＦ：Bidirectional Reflectance Distribution Function）モデルのように，演算途中で出力されるＤ演算値（微小面勾配分布関数），Ｇ演算値（幾何学的減数関数），及びＦ演算値（反射率）などの各種演算値がプログラマブルパイプラインでの演算に必要なものである場合には，固定機能パイプラインにその演算機能を分担させることができず，プログラマブルパイプラインにて演算処理を行う必要があった。そうすると，プログラマブルパイプラインで行う処理の負荷が大きくなり，このプログラムパイプラインにプログラムできる演算量が減少し，ひいては装置全体における演算処理に遅延が生じることが懸念される。
【０００７】
そこで，本発明は，３次元コンピュータグラフィックスにおけるライティング処理を行うにあたり，固定機能パイプラインからプログラマブルシェーダプロセッサ（パイプライン）に対して必要な演算結果を効率良く提供できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の発明者らは，上記従来技術の問題を解決する手段について鋭意検討した結果，固定機能パイプラインでライティング処理を行うにあたり，そのライティング演算結果から任意の出力パラメータを選択してプログラマブルシェーダプロセッサへと提供する出力選択部を設けることで，固定機能パイプラインからシェーダプロセッサに対して必要な演算結果を効率良く提供できるようになるという知見を得た。そして，本発明者らは，上記知見に基づけば従来技術の課題を解決できることに想到し，本発明を完成させた。具体的に説明すると，本発明は以下の構成を有する。
【０００９】
本発明は，３次元コンピュータグラフィックス処理用の描画装置に関する。本発明に係る描画装置は，実行する演算処理をプログラム可能なシェーダプロセッサ（プログラマブルパイプライン）に接続された固定機能パイプラインとして機能するものである。本発明に係る描画装置は，パラメータ入力部，ベクトル入力部，ベクトル正規化部，内積処理部，ライティング演算部，及び出力選択部を備える。これらの各部は，基本的にハードウェアとしての回路として実装される。パラメータ入力部には，シェーダプロセッサからライティング演算に用いる共通パラメータが入力される。ベクトル入力部には，シェーダプロセッサから各フラグメントに対応するベクトルデータが入力される。ベクトル正規化部は，ベクトル入力部に入力された各ベクトルデータの正規化を行う。内積処理部は，ベクトル正規化部により正規化された各ベクトルデータについて内積演算を行う。ライティング演算部は，パラメータ入力部に入力された共通パラメータ及び内積処理部による内積演算結果に基づいてライティング演算を行う。出力選択部は，ライティング演算部における演算結果の中から，モードに応じて出力パラメータを選択し，選択した出力パラメータを前記シェーダプロセッサへ出力する。なお，「ライティング演算部における演算結果」には，ライティング演算の最終的な演算結果の他に，ライティング演算の途中で出力される演算結果が含まれる。出力選択部は，任意のモードに応じて，これらの最終又は途中の演算結果を出力パラメータとして選択する。また，出力選択部に内積処理部による内積演算の結果が入力されるようにして，出力選択部が内積演算の結果を出力パラメータとして選択できるようにしてもよい。
【００１０】
上記構成のように，固定機能パイプラインに出力選択部を設けて，ライティング演算の最終又は途中の演算結果を必要に応じて固定機能パイプラインからシェーダプロセッサに提供できるように構成することで，これら固定機能パイプラインとシェーダプロセッサからなるシステムの設計の自由度が向上する。例えば従来はＢＲＤＦモデルの演算のような複雑な演算処理はシェーダプロセッサにプログラムすることが一般的であったが，本発明の回路構成によれば，ＢＲＤＦモデルの演算を固定機能パイプラインに行わせることが可能になる。その結果，シェーダプロセッサの処理負荷が軽減されるため，このシェーダプロセッサに他の演算をプログラミングすることも可能となり，シェーダプロセッサを効率的に利用することができる。また，頻繁に実行される複雑な処理を固定機能パイプラインで行うことで，システム全体の演算処理の高速化と低消費電力化を実現できる。
【００１１】
本発明に係る描画装置において，パラメータ入力部は，システムバスに接続されており，シェーダプロセッサ以外のプロセッサ又はメモリからも共通パラメータを読み込むことができるようにしてもよい。このように，本発明に係る描画装置（固定機能パイプライン）には，プログラマブルなシェーダプロセッサからの入力の他に，システムバスを介して他のプロセッサやメモリからの入力も存在していることが好ましい。これにより，固定機能パイプラインにおいて遅延レンダリング（ディファードレンダリング）を行うことも可能となる。「遅延レンダリング」とは，ある視点において，他のオブジェクトに隠れている画像を全部排除した後に，見えている部分だけを精密に計算する手法である。従来手法の場合，他のオブジェクトに隠される部分までその都度計算をしていたが，遅延レンダリングでは，オブジェクトの形状を一度描画してメモリ上に格納しておき，ある視点から見えない部分を排除した後に，メモリ上に格納されている形状のうちの見えている部分だけを着色していく。このため，それぞれの見えているフラグメントに対する着色の計算に多くの計算時間を割くことが可能となるため，より精密な描画処理を行うことができる。このように，遅延レンダリングを行う場合には，固定機能パイプラインにメモリ上に格納されているパラメータ（描画済みの形状データ）を入力できるようにする必要がある。そこで，上記構成では，このような遅延レンダリング時に，固定機能パイプラインがメモリ上のデータを直接読み取るための新規なパスが設けている。
【００１２】
より具体的には，パラメータ入力部は，システムバスを通じて，遅延レンダリングの演算結果を記憶したＧバッファからデータを読み込むことが好ましい。「Ｇバッファ」は，グラフィックスバッファを意味するものであり，遅延レンダリングに使用されるバッファである。本発明の好ましい実施形態は，Ｇバッファを生成した後にフラグメントごとにシェーディングを行う遅延レンダリングに対応するために，パラメータや入力法線データなどの各種データをシステムバスを介して固定機能パイプラインに直接を読み込むことができるように構成されていることが好ましい。
【００１３】
本発明に係る描画装置において，ライティング演算部は，双方向反射率分布関数（ＢＲＤＦ）モデルの微小面勾配分布関数を演算することが好ましい。ＢＲＤＦモデルは，描画対象の表面上の一点に入射する光が当該表面で反射される割合を表す関数モデルである。この場合に，ライティング演算部は，Ｄ演算部，Ｇ演算部，Ｆ演算部，及び最終出力演算部を有する。Ｄ演算部は，微小面勾配分布関数を演算する。Ｇ演算部は，幾何学的減数関数を演算する。Ｆ演算部は，反射率を演算する。最終出力演算部は，内積処理部，Ｄ演算部，Ｇ演算部，及びＦ演算部による各種演算結果に基づいて，ＢＲＤＦ及び最終カラーの演算を行う。このような構成において，出力選択部は，内積処理部，Ｄ演算部，Ｇ演算部，Ｆ演算部，及び最終出力演算部による各種演算結果から，モードに応じて出力パラメータを選択し，選択した出力パラメータをシェーダプロセッサへ出力することができる。このような，ＢＲＤＦモデルは，従来，プログラマブルなシェーダプロセッサにおいて演算することが想定されていたが，本発明の構成によれば，ＢＲＤＦモデルの演算を固定機能パイプラインにて行うことが可能となる。
【００１４】
より具体的には，ＢＲＤＦモデルの演算を行う場合に，パラメータ入力部は，内積処理部，Ｄ演算部，Ｇ演算部，Ｆ演算部，及び最終出力演算部に，各種演算に必要な共通パラメータを提供することが好ましい。すなわち，パラメータ入力部は，シェーダプロセッサ又はシステムバスから入力された共通パラメータを，データの内容に応じて各部に振り分ける機能を持つ。
【発明の効果】
【００１５】
本発明によれば，３次元コンピュータグラフィックスにおけるライティング処理を行うにあたり，固定機能パイプラインからプログラマブルシェーダプロセッサに対して必要な演算結果を効率良く提供することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は，グラフィックス処理システムの全体構成を示すブロック図である。
【図２】図２は，システム内部で使用するベクトルの定義を示している。
【図３】図３は，ベクトル入力部の構成例を示している。
【図４】図４は，ベクトル正規化部の構成例を示している。
【図５】図５は，正規化演算部の構成例を示している。
【図６】図６は，内積処理部の構成例を示している。
【図７】図７は，内積演算部の構成例を示している。
【図８】図８は，Ｄ演算部の構成例を示している。
【図９】図９は，Ｇ演算部の構成例を示している。
【図１０】図１０は，Ｆ演算部の構成例を示している。
【図１１】図１１は，最終出力演算部の構成例を示している。
【図１２】図１２は，出力選択部における選択及び出力されるパラメータの一覧を示している。
【発明を実施するための形態】
【００１７】
以下，図面を用いて本発明を実施するための形態について説明する。本発明は，以下に説明する形態に限定されるものではなく，以下の形態から当業者が自明な範囲で適宜変更したものも含む。
【００１８】
図１は，シェーダプロセッサ１００と固定機能パイプライン２００とを備えるグラフィックス処理システム全体のブロック図を示している。本システムは，OpenGLの様なグラフィックス標準規格の機能を有するプログラマビリティを持つシェーダプロセッサ１００に対して固定機能パイプライン２００を接続し，この固定機能パイプライン２００上でライティング処理を行うものである。シェーダプロセッサ１００は，実行する演算処理を自由にプログラムすることが可能であり，いわゆるプログラマブルパイプラインとして機能する。固定機能パイプライン２００は，シェーダプロセッサ１００から入力されたパラメータ等に基づいて予め定められた演算を実行する複数の回路から構成されている。なお，図示は省略しているが，本システムには，シェーダプロセッサ１００に対して演算対象のデータや各種コマンドを提供するＣＰＵやバッファが存在していてもよい。
【００１９】
本発明では，固定機能パイプライン２００で主にライティング処理を実行することを想定している。このため，シェーダプロセッサ１００では，固定機能パイプライン２００で行うライティング処理以外の処理，例えば頂点処理，ラスタライズ処理，フラグメント処理，ピクセル処理などを実行すればよい。
【００２０】
頂点処理では，頂点の移動処理や，座標変換（ワールド座標変換，カメラ座標変換，スクリーン座標変換），クリッピング処理，透視変換，及び光源処理等のジオメトリ処理が行われる。座標変換処理では，ポリゴンを定義する各頂点の座標を，視点の位置や方向に合わせて２次元のスクリーン座標系へ変換する。また，クリッピング処理では，表示画面の外に位置するポリゴンを取り除く処理を行う。シェーダプロセッサ１００は，これらの頂点処理の結果に基づいて，オブジェクトを構成する頂点群について与えられた頂点データを変更（更新，調整）する。
【００２１】
シェーダプロセッサ１００は，上記頂点処理完了後，頂点処理済みの頂点データを参照して，複数の頂点を組み合わせたポリゴン（三角形）を形成する。シェーダプロセッサ１００は，このポリゴンデータに基づいてラスタライズ処理を行う。ラスタライズ処理では，三角形で定義されたポリゴンに対してサンプリングして，ポリゴンをピクセルに変換する。つまり，ラスタライズ処理では，３次元空間上のポリゴンを，描画平面上（スクリーン座標系）のフラグメントに変換するビュー変換を行う。さらに，ラスタライズ処理において，描画平面上のフラグメントを描画平面の水平方向に沿ってスキャンしながら，ラスタライン毎に量子化されたピクセルに変換する。
【００２２】
シェーダプロセッサ１００は，上記ラスタライズ処理で得られたピクセルデータを用いて，ライティング処理を省いた３Ｄ描画処理を行う。例えば，シェーダプロセッサ１００では，フラグメント処理が行われる。フラグメント処理では，画像を構成するピクセル（表示画面を構成するフラグメント）が描画される。例えば，シェーダプロセッサ１００は，必要に応じてメモリ等からテクスチャ情報を読み込み，テクスチャ処理を行う。テクスチャ処理は，三次元オブジェクトの表面に質感を与えるためのテクスチャ画像を貼り付ける処理である。テクスチャ処理により，テクスチャ画像に対応したテクスチャ座標がピクセルデータに付与される。また，シェーダプロセッサ１００は，ここでの３Ｄ描画処理を行うにあたり，ライティング処理に関わる固定回路を備える固定機能パイプライン２００にアクセスし，固定機能パイプライン２００に対してライティング処理で用いる共通パラメータを提供したり，あるいは固定機能パイプライン２００からライティング処理の最終演算結果や途中の演算結果を受け取って３Ｄ描画処理を進める。このような複雑でありながらも典型的なライティング処理を，固定機能パイプライン２００に実行させることで，処理の高速化と効率化を図る。
【００２３】
その後，シェーダプロセッサ１００は，深度テストやアルファテストを含むピクセル処理）を行い，各ピクセルデータを実際にスクリーン座標上に描画するか否かを判定する。深度テストは，各ピクセルデータの奥行きを表すＺ値の大小比較し，そのピクセルが描かれる予定の２Ｄ座標上に，よりカメラに近い他のピクセルがあるかどうかで描画の有無を判定するテストである。また，アルファテストは，各ピクセルデータの透明度を表すアルファ値を比較し，そのピクセルを描画するかしないかを決定するテストである。シェーダプロセッサ１００は，これらのテストに合格したピクセルのデータを，スクリーン座標上に描画することが決定されたピクセルデータのみが格納される中間バッファへと出力する。
【００２４】
他方で，固定機能パイプライン２００では，主にシェーダプロセッサ１００でのフラグメント処理（３Ｄ描画処理）中に，ライティング処理を高速で行う。ライティング処理は，各頂点と光源の距離や，各頂点と光源の角度に基づいて，その頂点の輝度を計算する処理である。例えば，ライティング処理では，３次元シーンから２次元スクリーン空間への光反射強度や光反射率を計算する。図１に示した実施形態では，固定機能パイプライン２００において，双方向反射率分布関数（ＢＲＤＦ）モデルの演算を行うことを想定している。
【００２５】
図１の実施形態において，固定機能パイプライン２００は，パラメータ入力部２１０，ベクトル入力部２２０，ベクトル正規化部２３０，内積処理部２４０，ライティング処理部２５０，及び出力選択部２６０を有する。また，ライティング処理部２５０は，Ｄ演算部２５１，Ｇ演算部２５２，Ｆ演算部２５３，及び最終出力演算部２５４を含んで構成されている。
【００２６】
パラメータ入力部２１０は，シェーダプロセッサ１００から，共通パラメータ（物体表面のラフ加減，物体のカラー，ライトのカラー，モード情報など）の入力を受け付けて，この共通パラメータを固定機能パイプライン２００に含まれる各回路に供給する。また，パラメータ入力部２１０は，シェーダプロセッサ１００からだけでなく，システムバスを介して，他のプロセッサ（ＣＰＵ，ＧＰＵ）やバッファメモリ（Ｇバッファなど）か共通パラメータを取得することもできるように構成されている。また，ベクトル入力部２２０は，シェーダプロセッサ１００から，各フラグメント（ピクセル）に対応するベクトルデータ（Ｖ，Ｎ，Ｌ）の入力を受け付ける。また，ベクトル正規化部２３０は，入力されたベクトルの正規化演算処理を行う。また，内積処理部２４０は，各ベクトルに対して必要な内積演算を行う。さらに，Ｄ演算部２５１，Ｇ演算部２５２，及びＦ演算部２５３は，それぞれ，ＢＲＤＦモデルの演算に関するＤ値（微小面勾配分布関数），Ｇ値（幾何学的減数関数），及びＦ値（反射率）を求める演算を行う。最終出力演算部２５４は，Ｄ演算部２５１，Ｇ演算部２５２，及びＦ演算部２５３の演算結果から双方向反射率分布関数（ＢＲＤＦ）を求めたり，カラーのデータを演算する処理を行う。出力選択部２６０は，内積演算結果や，Ｄ値，Ｇ値，Ｆ値，最終演算結果（ＢＲＤＦ）のうち，どの演算結果をシェーダプロセッサ１００に提供するかを選択する。以下では，固定機能パイプライン２００を構成する各回路の構成例について具体的に説明する。
【００２７】
図２は，本実施形態において固定機能パイプライン２００の内部で使用するベクトルの定義を示している。図２に示した例では，シーン内に光源及び視点が定義され，描画対象の物体に対しては法線が定義されている。ここでは，視点方向のベクトルをＶ，光源方向（位置）のベクトルをＬ，物体表面の法線をＮと定義する。なお，図２中のｔは単位接線ベクトルであり，ｎは単位主法線ベクトルであり，ｂは単位従法線ベクトルである。
【００２８】
図３は，ベクトル入力部２２０の回路構成例を示している。図３に示されるように，ベクトル入力部２２０には，シェーダプロセッサ１００から，描画対象の物体表面上におけるライティング演算の対象となる点の３次元座標値（ｘ，ｙ，ｚ）のそれぞれについて，視点方向のベクトルＶ，光源方向のベクトルＬ，及び物体表面の法線Ｎが入力される。また，ベクトル入力部２２０では，視点方向のベクトルＶ及び光源方向のベクトルＬに基づいて，各ｘ，ｙ，ｚ成分それぞれのハーフベクトルＨを求める。ハーフベクトルＨは，Ｈ＝（Ｌ＋Ｖ）／｜Ｌ＋Ｖ｜で求められる。なお，この段階ではハーフベクトルの正規化は行わずに，この後のベクトル正規化部２３０でまとめて正規化演算を行うことが好ましい。ベクトル入力部２２０に入力されたＶ，Ｌ，Ｎ，及びベクトル入力部２２０で求めたＨは，ベクトル正規化部２３０に入力される。
【００２９】
図４は，ベクトル正規化部２３０の回路構成例を示している。図４に示されるように，ベクトル正規化部２３０では，Ｖ，Ｌ，Ｎ，Ｈの各ベクトルに対して，それらの長さを１にするための正規化処理を行う。ここでの正規化処理とは，ノルムが定義されたベクトル空間のベクトルに対して，それにノルムの逆数を掛けてノルムを１のベクトルにすることを意味する。具体的には，ベクトル正規化部２３０には，Ｖ，Ｌ，Ｎ，Ｈの各ベクトルを正規化するための正規化演算部がそれぞれ設けられている。図５は，各正規化演算部の回路構成例を示している。なお，図５において，Ｉは正規化演算部に入力されるベクトルであり，Ｏは正規化演算部から出力されるベクトル（すなわち正規化されたベクトル）である。図５に示されるように，各正規化演算部では，入力ベクトルの長さを演算するための内積演算を行った後，その内積演算結果の平方根の逆数を求め，その後に入力ベクトルの各ｘ，ｙ，ｚ成分を乗算することで，ベクトルの正規化を計算する。正規化されたベクトルは，内積処理部２４０に入力される。
【００３０】
図６は，内積処理部２４０の回路構成例を示している。図４に示されるように，内積処理部２４０は，内積ＮＨ，内積ＮＬ，内積ＮＶ，内積ＶＨのそれぞれを求める演算を行う４種類の内積演算部を有している。図７は，各内積演算部の回路構成例を示している。図７に示されるように，内積演算部では，入力された２ベクトルの内積演算を行う。具体的には，２つのベクトルＶ０，Ｖ１の内積ＤＰは，次のベクトル演算によって求められる。
［式］ＤＰ=Ｖ０ｘ・Ｖ１ｘ＋Ｖ０ｙ・Ｖ１ｙ＋Ｖ０ｘ・Ｖ１ｘ
【００３１】
内積処理部２４０で求めた上記各内積ＮＨ，ＮＬ，ＮＶ，ＶＨは，図１に示されるように，ライティング処理部２５０を構成するＤ演算部２５１，Ｇ演算部２５２，及びＦ演算部２５３にそれぞれ振り分けて入力される。具体的には，Ｄ演算部２５１に内積ＮＨが入力され，Ｇ演算部２５２に内積ＮＬ，ＮＶが入力され，Ｆ演算部２５３に内積ＶＨが入力される。また，本実形態では，内積処理部２４０で算出された内積ＮＨ，ＮＬ，ＮＶ，ＶＨはすべて出力選択部２６０にも入力される。また，Ｄ演算部２５１，Ｇ演算部２５２，,Ｆ演算部２５３，及び最終出力演算部２５４には，それぞれの演算で使用する粗さ（Roughness），反射色（SpecularColor），拡散色（DiffuseColor），光源色（LightColor）に関するパラメータが，パラメータ入力部２１０から入力される。
【００３２】
図８は，Ｄ演算部２５１の回路構成例を示している。Ｄ演算部２５１は，パラメータ入力部２１０から入力された粗さ（Roughness）に関するパラメータ及びＮＨの内積値に基づいて，ＢＲＤＦモデルにおける微小面勾配分布関数（Ｄ値）を求める。なお，図８において，Ｐｉは円周率を示し，ｒｃｐは逆数演算器を示している。
【００３３】
Ｄ値は，以下の計算式で算出される。
2019057106.tif 000003
ここで，ｌ，ｖ，ｎ，ｈ，αは，それぞれ光源方向のベクトル，視線方向のベクトル，法線ベクトル，ハーフベクトル，粗さの２乗を表している。また，なお，「ｎ・ｈ」は，内積値ＮＨである。Ｄ値は，これらの要素から上記計算式で表される関数となる。なお，法線ベクトルｎ，光源方向のベクトルｌ，視線方向のベクトルｖ，及び粗さ（Roughness）は，シェーダプロセッサ１００から公知のOpenGL ES Shading Language拡張ビルトイン関数に基づいて設定すればよい。
【００３４】
図９は，Ｇ演算部２５２の回路構成例を示している。Ｇ演算部２５２は，パラメータ入力部２１０から入力された粗さ（Roughness）に関するパラメータ及びＮＬ，ＮＶの内積値に基づいて，ＢＲＤＦモデルにおける幾何学的減数関数（Ｇ値）を求める。なお，図９において，ｒｃｐは逆数演算器を示している。
【００３５】
Ｇ値は，以下の計算式で算出される。
2019057106.tif 000004
ここで，ｌ，ｖ，ｎ，αはそれぞれ光源方向のベクトル，視線方向のベクトル，法線ベクトル，粗さの２乗を表している。また，「ｎ・ｌ」及び「ｎ・ｖ」はそれぞれ内積値ＮＬ及びＮＶである。Ｇ値は，これらの要素から上記計算式で表される関数となる。なお，法線ベクトルｎ，光源方向のベクトルｌ，視線方向のベクトルｖ，及び粗さ（Roughness）は，シェーダプロセッサ１００から公知のOpenGL ES Shading Language拡張ビルトイン関数に基づいて設定すればよい。
【００３６】
図１０は，Ｆ演算部２５３の回路構成例を示している。Ｆ演算部２５３は，パラメータ入力部２１０から入力された反射色（SpecularColor）に関するパラメータ及びＶＨの内積値に基づいてＢＲＤＦモデルにおける反射率（Ｆ値）の演算を行う。なお，図１０において，ｍａｘは，２つの入力値のうちの最大値を選択する演算器を示す。
【００３７】
Ｆ値は，以下の計算式で算出される。
2019057106.tif 000005
ここで，ｌ，ｖ，ｈ，Ｆ０は，それぞれ光源方向のベクトル，視線方向のベクトル，ハーフベクトル，垂直入射時の反射率を表している。また，「ｖ・ｈ」は内積値ＶＨである。Ｆ値は，これらの要素から上記計算式で表される関数となる。なお，光源方向のベクトルｌ，視線方向のベクトルｖ，垂直入射時の反射率Ｆ０は，シェーダプロセッサ１００から公知のOpenGL ES Shading Language拡張ビルトイン関数に基づいて設定すればよい。
【００３８】
図１１は，最終出力演算部２５４の回路構成例を示している。最終出力演算部２５４は，パラメータ入力部２１０から入力された拡散色（DiffuseColor）や光源色（LightColor）に関するパラメータ，ＮＬの内積値，Ｄ値，Ｇ値，Ｆ値の各演算結果に基づいて，双方向反射率分布関数（ＢＲＤＦ）及び最終出力（Final output）の値を演算する。
【００３９】
ＢＲＤＦ関数は，以下の計算式で算出される。
2019057106.tif 000006
ここで，ｌ，ｖ，ｎ，ｈは，それぞれ光源方向のベクトル，視線方向のベクトル，法線ベクトル，ハーフベクトルを表す。また，Ｄ（ｈ），Ｇ（ｌ，ｖ，ｈ）／（ｎ・ｌ）（ｎ・ｖ），及びＦ（ｖ，ｈ）は，それぞれＤ演算部２５１，Ｇ演算部２５２，及びＦ演算部２５３で演算されたものを用いる。
その後に，最終出力（Final output）を，以下の式から計算する
2019057106.tif 000007
ｃｏｎｓｔ１は，シェーダプロセッサ１００からOpenGL ES Shading Language拡張ビルトイン関数に基づいて設定すればよい。ＮＬは，内積処理部２４０で求めた内積値である。
【００４０】
図１に示されるように，最終出力演算部２５４で求めた最終出力（Final output）は，出力選択部２６０に入力される。また，Ｄ演算部２５１の演算結果（Ｄ），Ｇ演算部２５２の演算結果（Ｇ），Ｆ演算部２５３の演算結果（Ｆ，（１−ＶＨ）５），及び内積処理部２４０の演算結果（ＮＨ，ＮＬ，ＮＶ，ＶＨ）も全て出力選択部２６０に入力される。出力選択部２６０は，上記各種の演算結果を一時的に記憶するためのメモリを備え，パラメータ入力部２１０からのモード選択を受け付けて，各種演算結果の中からモードに応じて出力パラメータを選択し，その選択した出力パラメータをシェーダプロセッサ１００に提供するための回路である。
【００４１】
図１２は，モードに応じて出力選択部２６０において選択及び出力されるパラメータの一覧の例を示している。例えば，モード０では，ｘ，ｙ，ｚ成分ごとの最終出力（Final output）や，ＬＮの内積値がシェーダプロセッサ１００に提供される。モード０は，固定機能パイプライン２００においてライティング処理の全てを実行する場合の通常時のモードであるといえる。他方で，例えばモード１では，ｘ成分として（１−ＶＨ）５，ｙ成分としてＧ値，ｚ成分としてＮＨの内積値，ｗ成分としてＮＬの内積値がシェーダプロセッサ１００に提供される。その他のモード２〜７の出力値は図１２に示すとおりである。これらのモード１〜７は，例えばこれらの出力値を用いてシェーダプロセッサでユーザがカスタマイズしたライティング処理を行う場合に選択される。シェーダプロセッサは，通常，射影行列等の４成分（ｘ，ｙ，ｚ，ｗ）のベクトル演算に長けたものであり，これらの４成分を固定機能パイプライン２００からシェーダプロセッサ１００へと提供することができる
【００４２】
このように，本システムは，固定機能パイプライン２００内に出力選択部２６０が設けられており，固定機能パイプライン２００内の各モジュールでの演算結果を，最終的な演算結果だけでなく，その途中で得られた演算結果を含めて，モードに応じて固定機能パイプライン２００からシェーダプロセッサ１００にできるように構成されている。これにより，シェーダプロセッサ１００のプログラマビリティを拡張するとともに，物理ベースライティングモデルの演算処理の高速化を図ることができる。すなわち，物理ベースライティングモデルはＢＲＤＦ関数をモデル化したものであり，従来の実装ではシェーダプロセッサ上にＢＲＤＦ関数の演算機能を実装することが一般的であったが，本発明の構成によれば，シェーダプロセッサ１００からアクセス可能な固定機能パイプライン２００にＢＲＤＦ関数の演算機能を実装することが可能となる。これにより，頻繁に使用される機能部分の高速化を図ると同時に，固定機能パイプライン２００からシェーダプロセッサ１００に対して必要な演算結果を効率良く提供することが可能となる。また，シェーダプロセッサ１００では，比較的処理の重いＢＲＤＦ関数の演算機能をプログラムせずに済むため，汎用的なシェーダプロセッサ１００を他の処理で利用することが可能となる。
【００４３】
さらに，図１に示されるように，固定機能パイプライン２００のパラメータ入力部２１０は，システムバスに接続されており，このシステムバスを介して他のプロセッサ（ＣＰＵ，ＧＰＵ）やバッファメモリから，前述した共通パラメータや法線ベクトルのデータなどを直接読み込むことができるように構成されている。これは，遅延レンダリング（ディファードレンダリング）モード向けに，固定機能パイプライン２００がシステムバスを介して直接データを読み込むことのできる機能である。
【００４４】
遅延レンダリングとは，ある視点において，他のオブジェクトに隠れている画像を全部排除した後に，見えている部分だけを精密に計算する手法である。従来手法の場合，他のオブジェクトに隠される部分までその都度計算をしていたが，遅延レンダリングでは，オブジェクトの形状を一度描画してメモリ上に格納しておき，ある視点から見えない部分を排除した後に，メモリ上に格納されている形状のうちの見えている部分だけを着色していく。このため，それぞれの見えているフラグメントに対する着色の計算に多くの計算時間を割くことが可能となるため，より精密な描画処理を行うことができる。このように，遅延レンダリングを行う場合には，固定機能パイプライン２００にメモリ上に格納されているパラメータ（描画済みの形状データ）を入力できるようにする必要がある。そこで，図１に示した構成では，このような遅延レンダリングモード時に，固定機能パイプライン２００がメモリ上のデータを直接読み取るための新規なパスが設けられている。
【００４５】
より具体的には，パラメータ入力部２１０は，システムバスを通じて，遅延レンダリングの演算結果を記憶したＧバッファからデータを読み込むことが好ましい。Ｇバッファは，グラフィックスバッファを意味するものであり，遅延レンダリングに使用されるバッファである。本発明の好ましい実施形態は，Ｇバッファを生成した後にフラグメントごとにシェーディングを行う遅延レンダリングに対応するために，パラメータや入力法線データなどの各種データをシステムバスを介して固定機能パイプライン２００に直接を読み込むことができるように構成している。
【００４６】
以上，本願明細書では，本発明の内容を表現するために，図面を参照しながら本発明の実施形態の説明を行った。ただし，本発明は，上記実施形態に限定されるものではなく，本願明細書に記載された事項に基づいて当業者が自明な変更形態や改良形態を包含するものである。
【産業上の利用可能性】
【００４７】
本発明は，コンピュータグラフィックス用の描画装置に関する。従って，本発明はコンピュータ産業において好適に利用されうる。
【符号の説明】
【００４８】
１００…シェーダプロセッサ        ２００…固定機能パイプライン（描画装置）
２１０…パラメータ入力部          ２２０…ベクトル入力部
２３０…ベクトル正規化部          ２４０…内積処理部
２５０…ライティング処理部        ２５１…Ｄ演算部
２５２…Ｇ演算部                  ２５３…Ｆ演算部
２５４…最終出力演算部            ２６０…出力選択部
【図１】
2019057106.tif 000008
【図２】
2019057106.tif 000009
【図３】
2019057106.tif 000010
【図４】
2019057106.tif 000011
【図５】
2019057106.tif 000012
【図６】
2019057106.tif 000013
【図７】
2019057106.tif 000014
【図８】
2019057106.tif 000015
【図９】
2019057106.tif 000016
【図１０】
2019057106.tif 000017
【図１１】
2019057106.tif 000018
【図１２】
2019057106.tif 000019