(57)【要約】【課題】ピクセルシェーダによるファーシェーディング処理を実現できるプログラム、情報記憶媒体、画像生成システム等の提供。【解決手段】画像生成システムは、テクスチャ記憶部と、テクスチャを用いたピクセルシェーディング処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部を含む。テクスチャ記憶部はファーシェーディング用テクスチャを記憶する。画像生成部は、描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成する。【選択図】図６
2011095937.tif 000002
【特許請求の範囲】
【請求項１】
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャを用いたピクセルシェーダ処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部として、
コンピュータを機能させ、
前記テクスチャ記憶部は、ファーシェーディング用テクスチャを記憶し、
前記画像生成部は、
描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成することを特徴とするプログラム。
【請求項２】
請求項１において、
前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸をＺ軸とし、前記Ｚ軸に直交する座標軸をＸ軸、Ｙ軸とした場合に、
前記画像生成部は、
描画対象ピクセルの前記法線ベクトルをＸＹ平面に投影した投影法線ベクトルの方向の逆方向により特定される方向に、前記テクスチャ空間でのテクスチャ座標（Ｕ、Ｖ）を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチすることを特徴とするプログラム。
【請求項３】
請求項２において、
前記画像生成部は、
第１のフェッチ処理においてテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）をフェッチし、第２のフェッチ処理においてテクセル値Ｃ２＝ＴＥＸ（Ｕ２、Ｖ２）をフェッチし・・・・第Ｎのフェッチ処理においてテクセル値ＣＮ＝ＴＥＸ（ＵＮ、ＶＮ）をフェッチし、フェッチされたテクセル値Ｃ１〜ＣＮの合成処理を行うことで得られた合成値を、描画対象ピクセルのピクセル値に設定し、
前記投影法線ベクトルの方向の逆方向は、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（ＵＮ、ＶＮ）へと向かう方向であり、前記投影法線ベクトルの長さが長くなるほど、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（ＵＮ、ＶＮ）への距離が長くなることを特徴とするプログラム。
【請求項４】
請求項３において、
前記画像生成部は、
Ｋ１×Ｃ１＋Ｋ２×Ｃ２＋・・・・＋ＫＮ×ＣＮの合成処理を行って合成値を取得し、
ウェイト値Ｋｉ＋１はウェイト値Ｋｉ（１≦ｉ＜Ｎ）よりも小さい値であることを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記画像生成部は、
モデルオブジェクトの第１の部分については、テクスチャがマッピングされた複数の積層されたポリゴンを用いたシェル法により、ファーシェーディング画像を生成し、
前記モデルオブジェクトの第２の部分については、前記ファーシェーディング用テクスチャのフェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成することを特徴とするプログラム。
【請求項６】
請求項５において、
前記第１の部分は、前記モデルオブジェクトの前面側に設定された領域であり、前記第２の部分は、前記モデルオブジェクトの背面側に設定された領域であることを特徴とするプログラム。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記画像生成部は、
合成対象となるテクセル値の個数を可変に設定することを特徴とするプログラム。
【請求項８】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至７のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項９】
テクスチャを記憶するテクスチャ記憶部と、
前記テクスチャを用いたピクセルシェーディング処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、
前記テクスチャ記憶部は、ファーシェーディング用テクスチャを記憶し、
前記画像生成部は、
描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成することを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【０００２】
従来より、キャラクタ等のモデルオブジェクトが配置設定されるオブジェクト空間内（仮想的な３次元空間）において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。格闘ゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、操作部（ゲームコントローラ）を用いてキャラクタ（モデルオブジェクト）を操作し、相手プレーヤやコンピュータが操作する他キャラクタ（敵キャラクタ）と対戦することでゲームを楽しむ。
【０００３】
このような画像生成システムでは、例えばキャラクタに生える毛や、キャラクタが着る毛皮の洋服などについてもリアルに表現できることが望ましい。このような毛質表現を実現するファーシェーディング（fur shading）に関する従来技術としては、例えば特許文献１に開示される技術がある。
【０００４】
しかしながら、これまでのファーシェーディングでは、使用ポリゴン数の増加などが原因となって処理負荷が重くなるなどの課題があった。また、いわゆるピクセルシェーダによりファーシェーディングを実現する手法については提案されていなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−３６０５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の幾つかの態様によれば、ピクセルシェーダによるファーシェーディング処理を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【０００７】
本発明の一態様は、テクスチャを記憶するテクスチャ記憶部と、前記テクスチャを用いたピクセルシェーダ処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する画像生成部とを含み、前記テクスチャ記憶部は、ファーシェーディング用テクスチャを記憶し、前記画像生成部は、描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチし、フェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【０００８】
本発明の一態様によれば、テクスチャ記憶部にはファーシェーディング用テクスチャが記憶される。そして、描画対象ピクセルの法線ベクトルにより特定される方向に、テクスチャ座標が順次シフトされながら、ファーシェーディング用テクスチャのテクセル値がフェッチされる。そしてフェッチされた複数のテクセル値の合成値が、描画対象ピクセルのピクセル値に設定されて、ファーシェーディング画像が生成される。このようにすれば、ピクセルシェーダによりファーシェーディング処理を実現することが可能になり、シェル法等に比べて少ない処理負荷やデータ量でファーシェーディング画像を生成できるようになる。
【０００９】
また本発明の一態様では、前記仮想カメラのカメラ座標系において前記仮想カメラの視線方向に沿った座標軸をＺ軸とし、前記Ｚ軸に直交する座標軸をＸ軸、Ｙ軸とした場合に、前記画像生成部は、描画対象ピクセルの前記法線ベクトルをＸＹ平面に投影した投影法線ベクトルの方向の逆方向により特定される方向に、前記テクスチャ空間でのテクスチャ座標（Ｕ、Ｖ）を順次シフトしながら、前記ファーシェーディング用テクスチャのテクセル値をフェッチしてもよい。
【００１０】
このようにすれば、投影法線ベクトルの方向により、テクスチャ座標（Ｕ、Ｖ）のシフト方向を特定し、ファーシェーディング用テクスチャのテクセル値をフェッチして、ファーシェーディング画像を生成できるようになる。従って、投影法線ベクトルを用いた簡素な処理でテクスチャ座標のシフト方向を設定して、テクセル値をフェッチできるようになる。
【００１１】
また本発明の一態様では、前記画像生成部は、第１のフェッチ処理においてテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）をフェッチし、第２のフェッチ処理においてテクセル値Ｃ２＝ＴＥＸ（Ｕ２、Ｖ２）をフェッチし・・・・第Ｎのフェッチ処理においてテクセル値ＣＮ＝ＴＥＸ（ＵＮ、ＶＮ）をフェッチし、フェッチされたテクセル値Ｃ１〜ＣＮの合成処理を行うことで得られた合成値を、描画対象ピクセルのピクセル値に設定し、前記投影法線ベクトルの方向の逆方向は、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（ＵＮ、ＶＮ）へと向かう方向であり、前記投影法線ベクトルの長さが長くなるほど、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（ＵＮ、ＶＮ）への距離が長くなるようにしてもよい。
【００１２】
このようにすれば、テクスチャ座標のシフト方向やシフト量を簡素な処理で得ることが可能になる。
【００１３】
また本発明の一態様では、前記画像生成部は、Ｋ１×Ｃ１＋Ｋ２×Ｃ２＋・・・・＋ＫＮ×ＣＮの合成処理を行って合成値を取得し、ウェイト値Ｋｉ＋１はウェイト値Ｋｉ（１≦ｉ＜Ｎ）よりも小さい値であってもよい。
【００１４】
このようなウェイト値を設ければ、ファーシェーディングの毛根や毛先の表現等が可能になる。
【００１５】
また本発明の一態様では、前記画像生成部は、モデルオブジェクトの第１の部分については、テクスチャがマッピングされた複数の積層されたポリゴンを用いたシェル法により、ファーシェーディング画像を生成し、前記モデルオブジェクトの第２の部分については、前記ファーシェーディング用テクスチャのフェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定することで、ファーシェーディング画像を生成してもよい。
【００１６】
このようにすれば、リアルな毛質表現と処理負荷の軽減を両立できるようになる。
【００１７】
また本発明の一態様では、前記第１の部分は、前記モデルオブジェクトの前面側に設定された領域であり、前記第２の部分は、前記モデルオブジェクトの背面側に設定された領域であってもよい。
【００１８】
また本発明の一態様では、前記画像生成部は、合成対象となるテクセル値の個数を可変に設定してもよい。
【００１９】
このようにすれば、例えば処理負荷や処理時間に応じて、合成対象となるテクセル値の個数を可変に設定（フェッチ回数を可変に設定）して、複数のテクセル値を合成できるようになる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態の画像生成システムの構成例。
【図２】図２（Ａ）〜図２（Ｃ）はシェル法によるファーシェーディングの説明図。
【図３】シェル法によるファーシェーディングの説明図。
【図４】図４（Ａ）〜図４（Ｅ）はピクセルシェーダによるファーシェーディング手法の説明図。
【図５】ファーシェーディング用テクスチャの例。
【図６】本実施形態のファーシェーディング手法を説明するフローチャート。
【図７】図７（Ａ）、図７（Ｂ）はオブジェクト及びオブジェクトに設定される法線ベクトルの説明図。
【図８】図８（Ａ）、図８（Ｂ）は仮想カメラと法線ベクトルの関係の説明図。
【図９】図９（Ａ）〜図９（Ｃ）は本実施形態のファーシェーディング手法の説明図。
【図１０】図１０（Ａ）〜図１０（Ｃ）は本実施形態のファーシェーディング手法の説明図。
【図１１】図１１（Ａ）〜図１１（Ｃ）は本実施形態のファーシェーディング手法の説明図。
【図１２】図１２（Ａ）、図１２（Ｂ）はモデルオブジェクトの各部分に応じて異なるファーシェーディング手法を適用する手法の説明図。
【図１３】本実施形態の全体的な処理のフローチャート。
【図１４】図１４（Ａ）、図１４（Ｂ）は画像生成システムのハードウェア構成例。
【発明を実施するための形態】
【００２１】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２２】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）のブロック図の例を示す。なお、本実施形態の画像生成システムの構成は図１に限定されず、その構成要素（各部）の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００２３】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ（角速度センサ、加速度センサ等）、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【００２４】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。
【００２５】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００２６】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＬＣＤ、有機ＥＬディスプレイ、ＣＲＴ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００２７】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【００２８】
通信部１９６は、有線や無線のネットワークを介して外部（例えば他の画像生成システム、サーバ、ホスト装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００２９】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０、補助記憶装置１９４）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００３０】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３１】
処理部１００は、ゲーム演算部１０２、オブジェクト空間設定部１０４、移動処理部１０６、モーション処理部１０７、仮想カメラ制御部１０８、画像生成部１２０、音生成部１３０を含む。なおこれらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００３２】
ゲーム演算部１０２はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００３３】
オブジェクト空間設定部１０４は、移動体（人、ロボット、車、戦闘機、ミサイル、弾等）、マップ（地形）、建物、コース（道路）、樹木、壁などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のオブジェクトデータ記憶部１７２には、オブジェクト（パーツオブジェクト）の位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【００３４】
移動処理部１０６は、モデルオブジェクト等の移動オブジェクトを移動させる処理を行う。例えば操作部１６０によりプレーヤが入力した操作データや、プログラム（移動アルゴリズム）や、各種データなどに基づいて、移動オブジェクトをオブジェクト空間内で移動させる。具体的には、移動オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動処理やモーション処理や画像生成処理を行う時間の単位である。
【００３５】
モーション処理部１０７は、キャラクタ等のモデルオブジェクトにモーション（アニメーション）を行わせるモーション処理（モーション再生、モーション生成）を行う。このモーション処理は、モデルオブジェクトのモーションを、モーションデータ記憶部１７３に記憶されているモーションデータに基づいて再生することなどで実現できる。
【００３６】
仮想カメラ制御部１０８は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００３７】
例えば仮想カメラによりキャラクタ、車などのモデルオブジェクト（移動体）を後方から撮影する場合には、モデルオブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動処理部１０６で得られたモデルオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００３８】
画像生成部１２０は、処理部１００で行われる種々の処理（ゲーム処理、シミュレーション処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。具体的には、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ（プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が作成される。そして、この描画データ（プリミティブ面データ）に基づいて、透視変換後（ジオメトリ処理後）のオブジェクト（１又は複数プリミティブ面）を、描画バッファ１７６（フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ）に描画する。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００３９】
例えば画像生成部１２０は、頂点処理部１２２、ピクセル処理部１２４を含むことができる。
【００４０】
頂点処理部１２２（頂点シェーダ、ジオメトリーシェーダ）は頂点処理を行う。具体的には、オブジェクトの頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）に基づいて、頂点処理（頂点シェーダによるシェーディング）を行う。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００４１】
頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。
【００４２】
ピクセル処理部１２４（ピクセルシェーダ）はピクセル処理を行う。具体的には、ラスタライズ後に、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）を行う。
【００４３】
ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャ記憶部１７５からのテクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７４に出力（描画）する。即ち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００４４】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現できる。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００４５】
また画像生成部１２０はテクスチャマッピング処理等を行う。テクスチャマッピング処理（テクスチャフェッチ・テクスチャサンプリング処理）は、テクスチャ記憶部１７５に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングする処理である。具体的には、オブジェクト（プリミティブ面）の頂点等に設定（付与）されるテクスチャ座標等を用いてテクスチャ記憶部１７５からテクスチャ（色、α値などの表面プロパティ）を読み出す。そして、２次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。
【００４６】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００４７】
そして本実施形態では、テクスチャ記憶部１７５は、ファーシェーディング用テクスチャを記憶する。そして画像生成部１２０は、ファーシェーディング用テクスチャなどのテクスチャを用いたピクセルシェーダ処理を行うことで、オブジェクト空間において仮想カメラから見える画像を生成する。
【００４８】
具体的には画像生成部１２０（ピクセル処理部１２４）は、描画対象ピクセル（ピクセルシェーダ処理の対象となるピクセル）の法線ベクトルにより特定される方向（例えば投影法線ベクトルの方向の逆方向、或いはその逆方向と所定パラメータ等により特定される方向）に、テクスチャ空間でのテクスチャ座標を順次シフトしながら、テクスチャ記憶部１７５のファーシェーディング用テクスチャのテクセル値（カラー値）をフェッチ（サンプリング）する。そしてフェッチにより得られた複数のテクセル値の合成値（合成カラー値）を描画対象ピクセルのピクセル値に設定（描画）することで、ファーシェーディング画像を生成する。なお描画対象ピクセルの法線ベクトルは、オブジェクトの頂点の法線ベクトルを補間することなどにより取得できる。
【００４９】
また仮想カメラのカメラ座標系（視点座標系）において仮想カメラの視線方向に沿った座標軸をＺ軸（第３の座標軸）とし、Ｚ軸に直交する座標軸をＸ軸、Ｙ軸（第１、第２の座標軸）としたとする。この場合に画像生成部１２０は、描画対象ピクセルの法線ベクトルをＸＹ平面（Ｘ軸、Ｙ軸を含む平面。第１、第２の座標軸を含む平面）に投影した投影法線ベクトルの方向の逆方向により特定される方向（投影法線ベクトルの方向の逆方向と所定パラメータ等により特定される方向）に、テクスチャ空間でのテクスチャ座標（Ｕ、Ｖ）を順次シフト（移動）しながら、ファーシェーディング用テクスチャのテクセル値をフェッチする。そしてフェッチされた複数のテクセル値を合成することで、描画対象ピクセルのピクセル値を取得する。
【００５０】
更に具体的には画像生成部１２０は、第１のフェッチ処理においてテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）をフェッチし、第２のフェッチ処理においてテクセル値Ｃ２＝ＴＥＸ（Ｕ２、Ｖ２）をフェッチする。同様にして第ｉのフェッチ処理（１≦ｉ＜Ｎ）においてテクセル値Ｃｉ＝ＴＥＸ（Ｕｉ、Ｖｉ）をフェッチし、最後に第Ｎのフェッチ処理においてテクセル値ＣＮ＝ＴＥＸ（ＵＮ、ＶＮ）をフェッチする。そして、フェッチされたこれらのテクセル値Ｃ１〜ＣＮの合成処理を行うことで得られた合成値を、描画対象ピクセルにピクセル値として書き込む。
【００５１】
この場合、各描画対象ピクセルの法線ベクトルをカメラ座標系のＸＹ平面に投影した投影法線ベクトルの方向の逆方向（逆方向に対応する方向）が、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（ＵＮ、ＶＮ）へと向かう方向になる。そして投影法線ベクトルの長さが長くなるほど、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（ＵＮ、ＶＮ）への距離が長くなる。このようにすることで、法線ベクトルを用いたピクセルシェーダによるファーシェーディング処理を実現できる。
【００５２】
また画像生成部１２０は、Ｋ１×Ｃ１＋Ｋ２×Ｃ２＋・・・・＋ＫＮ×ＣＮの合成処理を行って合成値を取得する。この場合に、ウェイト値Ｋｉ＋１がウェイト値Ｋｉ（１≦ｉ＜Ｎ）よりも小さい値になることが望ましい。このようにすれば、仮想カメラの視点から見た場合に、毛根から毛先に向かって太くなって見える毛の画像表現を実現できる。
【００５３】
またモデルオブジェクトの各部分について、適用するファーシェーディングの手法を異ならせてもよい。具体的には、画像生成部１２０は、キャラクタや服などのモデルオブジェクトの第１の部分については、テクスチャがマッピングされた複数の積層されたポリゴンを用いたシェル法により、ファーシェーディング画像を生成する。即ち、毛の断面図を表すテクスチャが各ポリゴンにマッピングされた複数のポリゴンを積層し、これらの複数のポリゴンを描画することでファーシェーディング画像を生成する。一方、モデルオブジェクトの第２の部分については、ファーシェーディング用テクスチャのフェッチにより得られた複数のテクセル値の合成値を描画対象ピクセルのピクセル値に設定する手法により、ファーシェーディング画像を生成する。
【００５４】
ここで第１の部分は、例えばゲーム等において仮想カメラが注視する可能性或いは頻度が高い領域である。具体的には、例えばモデルオブジェクトの前面側に設定された領域である。更に具体的には、キャラクタの顔に近い領域である。この第１の部分については、シェル法のファーシェーディング手法により画像を生成することで、よりリアルな毛質表現を実現する。なお第１の部分に対して、フィン法等の他のファーシェーディング手法を適用してもよい。
【００５５】
一方、第２の部分は、ゲーム等において仮想カメラが注視する可能性或いは頻度が低い領域である。具体的には、第２の部分は、モデルオブジェクトの背面側に設定された領域である。或いはモデルオブジェクトの前面側の領域であっても、仮想カメラが注視する可能性或いは頻度が低い領域は、第２の部分に設定できる。この第２の部分については、ピクセルシェーダを用いた本実施形態のファーシェーディング手法により画像を生成することで、少ない処理負荷で毛質表現を実現する。このようにすれば、シェル法のファーシェーディング手法を全ての領域に適用すると処理負荷が重くなりすぎる場合に、第１の部分よりも広い第２の部分に対してピクセルシェーダを用いた本実施形態のファーシェーディング手法を適用することで、リアルな毛質表現と処理負荷の軽減を両立できるようになる。
【００５６】
また画像生成部１２０は、合成対象となるテクセル値の個数（テクセル値のフェッチ回数）を可変に設定にしてもよい。例えば処理負荷が重かったり処理時間が足りなかった場合には、合成対象となるテクセル値の個数を少なくする。これにより、処理負荷を軽減したり、処理時間を節約できる。一方、処理負荷や処理時間に余裕がある場合には、合成対象となるテクセル値の個数を多くする。これにより、合成対象となるテクセル値の個数を増やして、より品質の高いファーシェーディング画像を生成できるようになる。
【００５７】
例えば合成対象となるテクセル値の個数（フェッチ回数）は、処理部（ＣＰＵ）の処理能力に応じて変更してもよい。即ち、処理能力が高い場合には、合成対象となるテクセル値の個数を多くし、処理能力が低い場合には、合成対象となるテクセル値の個数を少なくする。
【００５８】
２．本実施形態の手法
２．１  ファーシェーディング
まず図２（Ａ）〜図２（Ｃ）を用いて、シェル法によるファーシェーディングについて説明する。このシェル法では、図２（Ａ）に示すような毛を表現するために、図２（Ｂ）に示すように毛を横方向に輪切りにしたような毛の断面図のテクスチャを用意する。そして図２（Ｃ）に示すように、例えばモデルオブジェクトの法線方向に一定の間隔を空けて複数のポリゴンを配置し、これらの複数のポリゴンの各ポリゴンに対して、図２（Ｂ）のテクスチャをマッピングする。すると、断面図のテクスチャが毛の方向に重なることで、仮想カメラの視点から見ると、オブジェクトの表面に毛が生えて見えるような表現になる。なお図２（Ｂ）のテクスチャに対して半透明処理用のα値等を設定することで、毛の透き通った質感等も表現できるようになる。
【００５９】
さて図２（Ａ）〜図２（Ｃ）のシェル法によるファーシェーディングでは、モデルオブジェクトの毛質を表現したい部分に、例えば４〜８枚のポリゴンを積層して配置する必要がある。例えば図３の毛皮のコートのモデルオブジェクトのＥ１やＥ２に示す領域にファーシェーディングを施す場合には、これらの領域に対して複数のポリゴンを積層して配置する必要がある。このため、モデルオブジェクトを構成するポリゴンの枚数が増えてしまい、処理負荷やデータ量が増加してしまう。特に、モデルオブジェクトの全ての部分にシェル法によるファーシェーディングを適用すると、モデルオブジェクトを構成するポリゴンの枚数が数倍になるおそれがある。この場合に、いわゆるジオメトリシェーダにより、積層されるポリゴンをリアルタイムに動的に生成する手法も考えれるが、この手法も処理負荷の増加につながると共に、このようなジオメトリシェーダを有しない画像生成システムでは、この手法を採用できないという問題がある。
【００６０】
そこで本実施形態では、ピクセルシェーダを利用したファーシェーディング手法を採用している。即ち仮想カメラ（画面）に対する法線の傾きでテクスチャのマルチサンプリングを行うことで、擬似的なファーシェーディングを実現する。
【００６１】
例えば図４（Ａ）〜図４（Ｅ）において、ＰＩＸは、ピクセルシェーダの描画対象（処理対象）となるピクセルである。そしてＦＵＲ１は描画対象ピクセルＰＩＸから生えている毛である。そして毛ＦＵＲ１の画像は、毛根では太く、毛先に行くにしたがって細くなる画像になっている。このような毛ＦＵＲ１の画像を生成する場合に、ピクセルシェーダではピクセル単位でしか描画ができないため、毛ＦＵＲ１の画像を一度の描画で生成することはできない。そこで本実施形態では、テクスチャのマルチサンプリングにより、このような毛画像を生成する手法を採用する。
【００６２】
例えば図４（Ｂ）のＦＵＲ２は、ＦＵＲ１の毛根のピクセルＰＩＸの右隣のピクセルから生えている毛である。また図４（Ｃ）のＦＵＲ３は、ＦＵＲ２の毛根の右隣のピクセルから生えている毛であり、図４（Ｄ）のＦＵＲ４は、ＦＵＲ３の毛根の右隣のピクセルから生えている毛である。また図４（Ｅ）のＦＵＲ５は、ＦＵＲ４の毛根の右隣のピクセルから生えている毛である。
【００６３】
前述のようにピクセルシェーダでは、ピクセル単位でしか描画ができない。このため本実施形態においては、図４（Ａ）では、毛ＦＵＲ１の毛根の画像を描画対象ピクセルＰＩＸに描画し、図４（Ｂ）では、隣の毛ＦＵＲ２の毛根から例えば１ピクセル（テクセル）分だけ毛先側の画像を、描画対象ピクセルＰＩＸに描画し、図４（Ｃ）では、更に隣の毛ＦＵＲ３の毛根から例えば２ピクセル分だけ毛先側の画像を、描画対象ピクセルＰＩＸに描画する。そして最後の図４（Ｅ）では、毛ＦＵＲ５の毛先（末端）の画像を描画する。
【００６４】
図４（Ａ）〜図４（Ｅ）のようにすれば、ピクセルシェーダを用いて擬似的なファーシェーディング処理を実現できる。そして図４（Ａ）〜図４（Ｅ）の描画を実現するために、テクスチャのマルチサンプリングと、各ピクセルの法線ベクトルの情報を用いる。
【００６５】
例えば図５に本実施形態のファーシェーディング用のテクスチャの例を示す。本実施形態では、このファーシェーディング用のテクスチャのテクセル値を複数回サンプリングするマルチサンプリング手法を採用する。
【００６６】
図６に本実施形態のファーシェーディング手法を実現する処理のフローチャートを示す。まず、テクスチャ座標（Ｕ１、Ｖ１）によってサンプリングされるテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）をフェッチする（ステップＳ１１）。このテクセル値は、ファーシェーディングを行わない通常のテクスチャマッピングにおいてもフェッチされて、描画対象ピクセルＰＩＸに書き込まれるテクセル値（色データ）であり、例えば毛の毛根の画像に対応するテクセル値（図４（Ａ）のＦＵＲ１の毛根画像）である。
【００６７】
次に、テクスチャ座標を（Ｕ１、Ｖ１）から（Ｕ２、Ｖ２）にシフトさせて、テクスチャ座標（Ｕ２、Ｖ２）によってサンプリングされるテクセル値Ｃ２＝ＴＥＸ（Ｕ２、Ｖ２）をフェッチする（ステップＳ１２）。このテクセル値は、隣の毛（図４（Ｂ）のＦＵＲ２）の毛根から例えば１ピクセル分だけ毛先側の画像に対応するテクセル値である。
【００６８】
次に、テクスチャ座標を（Ｕ２、Ｖ２）から（Ｕ３、Ｖ３）にシフトさせて、テクスチャ座標（Ｕ３、Ｖ３）によってサンプリングされるテクセル値Ｃ３＝ＴＥＸ（Ｕ３、Ｖ３）をフェッチする（ステップＳ１３）。このテクセル値は、更に隣の毛（図４（Ｂ）のＦＵＲ３）の毛根から例えば２ピクセル分だけ毛先側の画像に対応するテクセル値である。
【００６９】
ステップＳ１４、Ｓ１５、Ｓ１６においても、ステップＳ１１、Ｓ１２、Ｓ１３と同様に、テクスチャ座標を順次シフトしながら、ファーシェーディング用テクスチャのテクセル値をフェッチする。
【００７０】
このようにテクスチャ座標をずらしながらテクスチャのマルチサンプリングを行うことで、描画対象ピクセルＰＩＸに対応して、複数のテクセル値Ｃ１〜Ｃ６がフェッチされる。そして、これらのフェッチされたテクセル値Ｃ１〜Ｃ６の合成処理を行う（ステップＳ１７）。具体的には、合成値ＣＳＹ＝Ｋ１×Ｃ１＋Ｋ２×Ｃ２＋Ｋ３×Ｃ３＋Ｋ４×Ｃ４＋Ｋ５×Ｃ５＋Ｋ６×Ｃ６を求め、求められた合成値ＣＳＹを描画対象ピクセルのピクセル値（カラー値）として出力する。
【００７１】
なおウェイト値Ｋ１〜Ｋ６（合成係数）では、ウェイト値Ｋｉ＋１がウェイト値Ｋｉ（１≦ｉ＜Ｎ）よりも小さい値になるという関係が成り立つ。即ちＫ１からＫ６に行くに従って、ウェイト値を徐々に小さくする。こうすることで、図４（Ａ）〜図４（Ｅ）に示すように、毛根の画像のウェイト値（Ｋ１）が最も高くなり、毛先の画像のウェイト値（Ｋ６）が最も低くなるようになる。
【００７２】
なお図６では、テクセル値のフェッチ回数Ｎ（合成対象となるテクセル値の個数）が６回である場合について示しているが、フェッチ回数Ｎは任意である。例えばＣＰＵの処理能力が高い場合や処理に余裕がある場合には、フェッチ回数Ｎを増やし、ＣＰＵの処理能力が低い場合や処理に余裕がない場合には、フェッチ回数Ｎを減らせばよい。
【００７３】
次にテクスチャ座標のシフト手法の詳細について説明する。図７（Ａ）はテクスチャのマッピング対象となるオブジェクトＯＢの例である。ここでは説明を簡素化するために、オブジェクトＯＢは球形状であるとして説明を行う。
【００７４】
図７（Ｂ）に示すように、オブジェクトＯＢの各頂点には法線ベクトル（法線情報）が設定されている。ピクセルシェーダ処理を行う際には、この頂点の法線ベクトルを補間することで、描画対象ピクセルＰＩＸの法線ベクトルを取得する。
【００７５】
図８（Ａ）に、描画対象ピクセルＰＩＸに設定される法線ベクトルＮ（Ｎｘ、Ｎy、Ｎｚ）と仮想カメラＶＣの関係を示す。ここで、仮想カメラＶＣのカメラ座標系において、仮想カメラＶＣの視線方向ＤＶに沿った座標軸をＺ軸（第３の座標軸）とし、Ｚ軸に直交する座標軸をＸ軸、Ｙ軸（第１、第２の座標軸）とする。すると、描画対象ピクセルＰＩＸの法線ベクトルＮ（Ｎｘ、Ｎy、Ｎｚ）をＸＹ平面に投影した投影法線ベクトルＮＰ（Ｎｘ、Ｎｙ）は、図８（Ｂ）に示すようなベクトルになる。この投影法線ベクトルＮＰは、仮想カメラＶＣから見える法線ベクトルＮに相当する。本実施形態では、この投影法線ベクトルＮＰから、フェッチすべきテクスチャのテクスチャ座標（Ｕ、Ｖ）を求める。具体的には、投影法線ベクトルＮＰのＸ座標Ｎｘ、Ｙ座標Ｎｙを用いた所定の演算式（或いは演算テーブル）により、テクスチャ座標（Ｕ、Ｖ）を求める。
【００７６】
例えば図９（Ａ）では、ピクセルシェーダの描画対象ピクセルＰＩＸは中心点（視線方向ＤＶと球オブジェクトＯＢが交わる点）に設定されている。そして描画対象ピクセルＰＩＸの法線ベクトルＮの方向は、仮想カメラＶＣの視線方向ＤＶと平行になっている。即ち法線ベクトルＮは仮想カメラＶＣの方に向いている。従って仮想カメラＶＣからは図９（Ｂ）のように見え、投影法線ベクトルＮＰのＸ座標Ｎｘ、Ｙ座標Ｎｙは共に０になる。このように図９（Ｂ）では、仮想カメラＶＣから見て投影法線ベクトルＮＰは点に見える。従ってこの場合には図９（Ｃ）に示すように、テクスチャ空間において同じ点（同じテクスチャ座標の点）を６回サンプリングしてフェッチする。
【００７７】
具体的には図６のステップＳ１１の第１のフェッチ処理では、対応点ＦＣ１のテクスチャ座標（Ｕ１、Ｖ１）によりテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）がフェッチされる。ここで対応点のテクスチャ座標（Ｕ１、Ｖ１）は、通常のテクスチャマッピングにおいて描画対象ピクセルＰＩＸに対応づけられるテクスチャ座標である。従って、ステップＳ１１の第１のフェッチ処理ＦＣ１では、その描画対象ピクセルＰＩＸに対応づけられるテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）がフェッチされる。
【００７８】
一方、ステップＳ１２〜Ｓ１６の第２〜第６のフェッチ処理においても、対応点ＦＣ１と同じ点ＦＣ２〜ＦＣ６のテクスチャ座標のテクセル値がフェッチされる。即ちステップＳ１２〜Ｓ１６のテクスチャ座標（Ｕ２、Ｖ２）はステップＳ１１のテクスチャ座標（Ｕ１、Ｖ１）と等しくなり、ステップＳ１２〜Ｓ１６でフェッチされるテクセル値Ｃ２〜Ｃ６も、ステップＳ１１でフェッチされるテクセル値Ｃ１と等しくなる。
【００７９】
そして、ステップＳ１１〜Ｓ１６でフェッチされた同じ値のテクセル値（＝Ｃ１）が、ステップＳ１７で合成され、合成値ＣＳＹ＝（Ｋ１＋Ｋ２＋Ｋ３＋Ｋ４＋Ｋ５＋Ｋ６）×Ｃ１が描画対象ピクセルＰＩＸに描画される。
【００８０】
図１０（Ａ）では、描画対象ピクセルＰＩＸは中心点（視線方向ＤＶと球オブジェクトＯＢが交わる点）よりも左側にあり、法線ベクトルＮの方向は図９（Ａ）に比べて左向きになっている。従って仮想カメラＶＣからは図１０（Ｂ）のように見え、投影法線ベクトルＮＰのＸ座標Ｎｘは負の値になり、Ｙ座標Ｎｙは０になる。このように図１０（Ｂ）では、仮想カメラＶＣから見て投影法線ベクトルＮＰの向きは左方向になる。従ってこの場合には図１０（Ｃ）に示すように、対応点ＦＣ１から右方向（ＮＰの方向と逆方向）に６回サンプリングしてフェッチする。
【００８１】
具体的には図６のステップＳ１１の第１のフェッチ処理では、対応点ＦＣ１のテクスチャ座標（Ｕ１、Ｖ１）によりテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）がフェッチされる。次のステップＳ１２の第２のフェッチ処理では、ＦＣ１の右方向の点ＦＣ２のテクスチャ座標（Ｕ２、Ｖ２）によりテクセル値Ｃ２＝ＴＥＸ（Ｕ２、Ｖ２）がフェッチされる。次のステップＳ１３の第３のフェッチ処理では、ＦＣ２の右方向の点ＦＣ３のテクスチャ座標（Ｕ３、Ｖ３）によりテクセル値Ｃ３＝ＴＥＸ（Ｕ３、Ｖ３）がフェッチされる。ステップＳ１４〜Ｓ１６の第４〜第６のフェッチ処理も同様である。
【００８２】
そして、ステップＳ１１〜Ｓ１６でフェッチされたテクセル値Ｃ１〜Ｃ６がステップＳ１７で合成され、合成値ＣＳＹ＝Ｋ１×Ｃ１＋Ｋ２×Ｃ２＋Ｋ３×Ｃ３＋Ｋ４×Ｃ４＋Ｋ５×Ｃ５＋Ｋ６×Ｃ６が、描画対象ピクセルＰＩＸに描画される。
【００８３】
即ち図１０（Ｃ）において、点ＦＣ１のウェイト値Ｋ１は最も大きくなっており、点ＦＣ６のウェイト値Ｋ６は最も小さくなっている。そして、点ＦＣ１でフェッチされるテクセル値Ｃ１により得られるＫ１×Ｃ１は、図４（Ａ）の毛ＦＵＲ１の毛根の画像に相当し、点ＦＣ６でフェッチされるテクセル値Ｃ６により得られるＫ６×Ｃ６は、図４（Ｅ）の毛ＦＵＲ５の毛先の画像に相当する。つまり図１０（Ｃ）のようにテクセル値Ｃ１〜Ｃ６をフェッチして、合成値ＣＳＹ＝Ｋ１×Ｃ１＋Ｋ２×Ｃ２＋Ｋ３×Ｃ３＋Ｋ４×Ｃ４＋Ｋ５×Ｃ５＋Ｋ６×Ｃ６を描画対象ピクセルＰＩＸに描画することは、図４（Ａ）〜図４（Ｅ）での描画対象ピクセルＰＩＸへの描画に相当する。
【００８４】
図１１（Ａ）では、描画対象ピクセルＰＩＸは中心点よりも右上にあり、法線ベクトルＮの方向は図９（Ａ）に比べて右上向きになっている。従って仮想カメラＶＣからは図１１（Ｂ）のように見え、投影法線ベクトルＮＰのＸ座標Ｎｘ、Ｙ座標Ｎｙは共に正の値になる。このように図１１（Ｂ）では、仮想カメラＶＣから見て投影法線ベクトルＮＰの向きは右上方向になる。従ってこの場合には図１１（Ｃ）に示すように、対応点ＦＣ１から左下方向（ＮＰの方向と逆方向）に６回サンプリングしてフェッチする。
【００８５】
具体的には図６のステップＳ１１の第１のフェッチ処理では、対応点ＦＣ１のテクスチャ座標（Ｕ１、Ｖ１）によりテクセル値Ｃ１＝ＴＥＸ（Ｕ１、Ｖ１）がフェッチされる。次のステップＳ１２の第２のフェッチ処理では、ＦＣ１の左下方向の点ＦＣ２のテクスチャ座標（Ｕ２、Ｖ２）によりテクセル値Ｃ２＝ＴＥＸ（Ｕ２、Ｖ２）がフェッチされる。次のステップＳ１３の第３のフェッチ処理では、ＦＣ２の左下方向の点ＦＣ３のテクスチャ座標（Ｕ３、Ｖ３）によりテクセル値Ｃ３＝ＴＥＸ（Ｕ３、Ｖ３）がフェッチされる。ステップＳ１４〜Ｓ１６の第４〜第６のフェッチ処理も同様である。
【００８６】
そして、ステップＳ１１〜Ｓ１６でフェッチされたテクセル値Ｃ１〜Ｃ６がステップＳ１７で合成され、合成値ＣＳＹ＝Ｋ１×Ｃ１＋Ｋ２×Ｃ２＋Ｋ３×Ｃ３＋Ｋ４×Ｃ４＋Ｋ５×Ｃ５＋Ｋ６×Ｃ６が、描画対象ピクセルＰＩＸに描画される。
【００８７】
以上のように本実施形態では、投影法線ベクトルＮＰの方向の逆方向により特定される方向に、テクスチャ座標（Ｕ、Ｖ）を順次シフトしながらファーシェーディング用テクスチャのテクセル値がフェッチされる。
【００８８】
例えば図１０（Ｂ）では、投影法線ベクトルＮＰの方向は左方向である。従ってこの場合には、図１０（Ｃ）の点ＦＣ１〜ＦＣ６に示すように、投影法線ベクトルＮＰの方向と逆方向の右方向に、テクスチャ座標（Ｕ、Ｖ）を順次シフトしながらテクセル値がフェッチされる。また図１１（Ｂ）では、投影法線ベクトルＮＰの方向は右上方向である。従ってこの場合には、図１１（Ｃ）の点ＦＣ１〜ＦＣ６に示すように、投影法線ベクトルＮＰの方向と逆方向の左下方向に、テクスチャ座標（Ｕ、Ｖ）を順次シフトしながらテクセル値がフェッチされる。
【００８９】
また本実施形態では、投影法線ベクトルＮＰの方向の逆方向は、図６、図１０（Ｃ）、図１１（Ｃ）に示すように、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（Ｕ６、Ｖ６）（広義にはテクスチャ座標（ＵＮ、ＶＮ））へと向かう方向である。そして投影法線ベクトルＮＰの長さが長くなるほど、テクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（Ｕ６、Ｖ６）への距離が長くなる。
【００９０】
例えば図１０（Ｂ）に比べて図１１（Ｂ）の方が、投影法線ベクトルＮＰの長さが長い。従って、図１０（Ｃ）に比べて図１１（Ｃ）の方が、ＦＣ１からＦＣ６への距離であるテクスチャ座標（Ｕ１、Ｖ１）からテクスチャ座標（Ｕ６、Ｖ６）への距離が長くなる。このようにすれば、例えば球オブジェクトＯＢの中心点では、毛の長さが最も短くなり、境界に近づくにつれて毛が長くなるように見えるファーシェーディングを実現できる。
【００９１】
以上のように本実施形態では、例えば図６に示すように、ピクセルシェーダによる複数回のテクセル値のフェッチ処理と、得られたテクセル値の合成処理を行うだけで、ファーシェーディング処理を実現できる。従って、シェル法等に比べて少ない処理負荷でファーシェーディング画像を生成することが可能になる。
【００９２】
なお図１０（Ａ）〜図１１（Ｃ）は、テクスチャ座標をシフトさせる方向（ＦＣ１からＦＣ６への向かう方向）が、投影法線ベクトルＮＰの方向の逆方向である場合を例にとり説明したが、本実施形態はこれに限定されない。例えばパラメータの調整により、テクスチャ座標をシフトさせる方向を、投影法線ベクトルＮＰの逆方向から変化させてもよい。例えば方向調整パラメータを用いて、投影法線ベクトルＮＰを回転させる処理を行うことで、テクスチャ座標をシフトさせる方向を変化させる。このようにすることで、いわゆる毛の寝る方向（毛並みの方向）を調整できるようになる。
【００９３】
或いは、テクスチャ座標のシフト距離ＦＣ１からＦＣ６への距離）も、パラメータにより調整してもよい。例えば長さ調整パラメータを用いて、投影法線ベクトルＮＰの長さを長くしたり、短くする。このようにすることで、ファーシェーディングにおける毛の長さを調整できるようになる。
【００９４】
２．２  ファーシェーディング手法の使い分け
本実施形態では、モデルオブジェクトの各部分毎に、適用するファーシェーディングの手法を異ならせてもよい。例えば図１２（Ａ）、図１２（Ｂ）は、毛皮のコートに対するファーシェーディング処理の例である。
【００９５】
図１２（Ａ）に示すように、毛皮のコートでは、襟の部分や肩の部分については、仮想カメラにより頻繁に写され、目立つ部分である。また、襟の部分や肩の部分では、毛皮の立体的なふさふさ感を表現することが望ましい。従って、このような襟の部分や肩の部分（広義には第１の部分、前面側）では、図２（Ａ）〜図２（Ｃ）で説明したシェル法によるファーシェーディング手法によりファーシェーディング画像を生成する。即ち、この部分には、テクスチャがマッピングされた複数のポリゴンを積層し、これらの複数のポリゴンを用いたシェル法により、ファーシェーディング画像を生成する。このように、毛皮のコートやキャラクタなどのモデルオブジェクトの前面側では、シェル法によるファーシェーディング処理を行う。
【００９６】
一方、図１２（Ｂ）に示すように、毛皮の背中側（背面側）は、仮想カメラによりあまり写されない領域であり、目立たない領域である。そして、このような広い範囲の背中の領域に対して、シェル法によるファーシェーディング処理を施すと、ポリゴン数が増えてしまい，処理負荷が増大する。従って、このような背中側（広義には第２の部分、背面側）では、図６で説明したように、複数のテクセル値をフェッチし、フェッチされた複数のテクセル値の合成値をピクセル値に設定するファーシェーディング手法により、ファーシェーディング画像を生成する。このようにすれば、シェル法を全ての領域に適用すると処理負荷が重くなりすぎる場合に、背中側（或いは前面側の目立たない領域）に対してピクセルシェーダを用いた本実施形態のファーシェーディング手法を適用することで、リアルな毛質表現と処理負荷の軽減を両立できるようになる。
【００９７】
３．処理例
次に本実施形態の処理例について図１３のフローチャートを用いて説明する。図１３は画像生成システムの全体的な処理の例を表すフローチャートである。
【００９８】
まず、モデルオブジェクトなどの複数のオブジェクトをオブジェクト空間に配置設定するオブジェクト空間設定処理を行う（ステップＳ１）。そして、モデルオブジェクトなどの移動体をオブジェクト空間内で移動させる移動処理や、モデルオブジェクトの動きを表現するモーション処理などを行う（ステップＳ２、Ｓ３）。具体的には、操作部からの操作データ等に基づいてモデルオブジェクトを移動させる移動処理を行ったり、モデルオブジェクトのスケルトンを構成する各骨を、モーションデータに基づいて動かすモーション処理を行う。
【００９９】
次に頂点シェーダプログラムによる頂点シェーダ処理を行う（ステップＳ４）。この頂点シェーダ処理（頂点処理）では、頂点単位での座標変換処理（ローカル座標系からワールド座標系への変換等）、頂点単位での陰影処理（シェーディング処理）、頂点単位での光源処理（ライティング処理）、テクスチャ座標の演算処理などが行われる。例えばモーション処理後のモデルオブジェクトの頂点位置を求める処理を、この頂点シェーダ処理により実現してもよい。そして、この頂点シェーダ処理により得られた頂点座標、視線ベクトル、光源ベクトル、法線ベクトル等は、出力レジスタに格納され、ピクセルシェーダ処理に渡される。
【０１００】
次に、ピクセルシェーダプログラムによるピクセルシェーダ処理を開始する（ステップＳ５）。このピクセルシェーダ処理では、ラスタライズ後にピクセル単位の様々な処理が行われる。具体的には、ピクセル単位での陰影処理（シェーディング処理）、テクスチャマッピング処理、半透明処理などが行われる。これにより、表示部に表示される最終的な画像（ゲーム画像）が生成される。
【０１０１】
図６で説明した本実施形態のファーシェーディング処理は図１３のステップＳ５で実行できる。これによりピクセルシェーダを用いたファーシェーディング画像が生成されるようになる。
【０１０２】
４．ハードウェア構成
図１４（Ａ）に本実施形態を実現できるハードウェアの構成例を示す。
【０１０３】
ＣＰＵ９００（メインプロセッサ）は、複数のＣＰＵコア１、ＣＰＵコア２、ＣＰＵコア３を含むマルチコアプロセッサである。またＣＰＵ９００は図示しないキャッシュメモリを含む。ＣＰＵコア１、２、３の各々にはベクタ演算器等が設けられている。そしてＣＰＵコア１、２、３の各々は、例えば２つのＨ／Ｗスレッド処理をコンテクストスイッチをすることなしに並列実行でき、マルチスレッド機能がハードウェアでサポートされている。そして３つのＣＰＵコア１、２、３の合計で、６つのＨ／Ｗスレッド処理を並列実行できる。
【０１０４】
ＧＰＵ９１０（描画プロセッサ）は、頂点処理やピクセル処理を行って、描画（レンダリング）処理を実現する。具体的には、シェーダプログラムに従って、頂点データの作成・変更やピクセル（フラグメント）の描画色の決定を行う。１フレーム分の画像がＶＲＡＭ９２０（フレームバッファ）に書き込まれると、その画像はビデオ出力を介してＴＶなどのディスプレイに表示される。なおメインメモリ９３０はＣＰＵ９００やＧＰＵ９１０のワークメモリとして機能する。またＧＰＵ９１０では、複数の頂点スレッド、複数のピクセルスレッドが並列実行され、描画処理のマルチスレッド機能がハードウェアでサポートされている。またＧＰＵ９１０にはハードウェアのテッセレータも備えられている。またＧＰＵ９１０は、頂点シェーダとピクセルシェーダとがハードウェア的に区別されていないユニファイド・シェーダ・タイプとなっている。
【０１０５】
ブリッジ回路９４０（サウスブリッジ）は、システム内部の情報流通を制御する回路であり、ＵＳＢコントローラ（シリアルインターフェース）、ネットワークの通信コントローラ、ＩＤＥコントローラ、或いはＤＭＡコントローラなどのコントローラを内蔵する。そしてこのブリッジ回路９４０により、ゲームコントローラ９４２、メモリーカード９４４、ＨＤＤ９４６、ＤＶＤドライブ９４８との間のインターフェース機能が実現される。
【０１０６】
なお本実施形態を実現できるハードウェア構成は図１４（Ａ）に限定されず、例えば図１４（Ｂ）のような構成であってもよい。
【０１０７】
図１４（Ｂ）ではＣＰＵ９０２が、プロセッサエレメントＰＰと８つのプロセッサエレメントＰＥ１〜ＰＥ８を含む。プロセッサエレメントＰＰは汎用的なプロセッサコアであり、プロセッサエレメントＰＥ１〜ＰＥ８は比較的シンプルな構成のプロセッサコアである。そしてプロセッサエレメントＰＰとプロセッサエレメントＰＥ１〜ＰＥ８のアーキテクチャは異なっており、プロセッサエレメントＰＥ１〜ＰＥ８は、複数のデータに対して１命令で同じ処理を同時にできるＳＩＭＤ型のプロセッサコアとなっている。これによりストリーミング処理などのマルチメディア処理を効率的に実行できる。プロセッサエレメントＰＰは、２つのＨ／Ｗスレッド処理を並列実行でき、プロセッサエレメントＰＥ１〜ＰＥ８の各々は、１つのＨ／Ｗスレッド処理を実行できる。従って、ＣＰＵ９０２では、合計で１０個のＨ／Ｗスレッド処理の並列実行が可能になる。
【０１０８】
図１４（Ｂ）では、ＧＰＵ９１２とＣＰＵ９０２の連携が密になっており、ＧＰＵ９１２は、ＣＰＵ９０２側のメインメモリ９３０に直接にレンダリング処理を行うことができる。また例えばＣＰＵ９０２がジオメトリ処理を行って、頂点データを転送したり、ＧＰＵ９１２からＣＰＵ９０２にデータを戻すことも容易にできる。またＣＰＵ９０２が、レンダリングのプリプロセッシング処理やポストプロセッシング処理を行うことも容易であり、テッセレーション（平面分割）やドットフィルをＣＰＵ９０２が実行できる。例えば抽象度の高い処理はＣＰＵ９０２が行い、抽象度が低い細かな処理はＧＰＵ９１２が行うというような役割分担が可能である。
【０１０９】
なお本実施形態の各部の処理をハードウェアとプログラムにより実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアであるプロセッサ（ＣＰＵ、ＧＰＵ）に処理を指示すると共に、必要であればデータを渡す。そして、プロセッサは、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１１０】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（第１の部分、第２の部分等）と共に記載された用語（前面側、背面側等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、法線ベクトルの方向の取得処理、テクスチャ座標のシフト処理、テクセル値のフェッチ処理、テクセル値の合成処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【０１１１】
ＯＢ  オブジェクト、ＰＩＸ  描画対象ピクセル、Ｎ  法線ベクトル、
ＮＰ  投影法線ベクトル、ＶＣ  仮想カメラ、ＤＶ  視線方向、
１００  処理部、１０２  ゲーム演算部、１０４  オブジェクト空間設定部、
１０６  移動処理部、１０７  モーション処理部、１０８  仮想カメラ制御部、
１２０  画像生成部、１２２  頂点処理部、１２４  ピクセル処理部、
１３０  音生成部、１６０  操作部、１７０  記憶部、
１７２  オブジェクトデータ記憶部、１７３  モーションデータ記憶部、
１７４  モデルデータ記憶部、１７５  テクスチャ記憶部、１７６  描画バッファ、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、１９４  補助記憶装置、
１９６  通信部
【図１】
2011095937.tif 000003
【図２】
2011095937.tif 000004
【図３】
2011095937.tif 000005
【図４】
2011095937.tif 000006
【図６】
2011095937.tif 000007
【図７】
2011095937.tif 000008
【図８】
2011095937.tif 000009
【図９】
2011095937.tif 000010
【図１０】
2011095937.tif 000011
【図１１】
2011095937.tif 000012
【図１２】
2011095937.tif 000013
【図１３】
2011095937.tif 000014
【図１４】
2011095937.tif 000015
【図５】
2011095937.tif 000016