(57)【特許請求の範囲】
【請求項１】
多眼立体視画像の第１の視点画像を生成するための第１の視点用コマンドが書き込まれる第１の視点用コマンドバッファと、
前記多眼立体視画像の第２の視点画像を生成するための第２の視点用コマンドが書き込まれる第２の視点用コマンドバッファと、
前記多眼立体視画像を生成するための共通コマンドが書き込まれる共通コマンドバッファと、
前記第１の視点用コマンド、前記第２の視点用コマンド、前記共通コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファ、前記共通コマンドバッファに書き込むコマンド生成部と、
前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファ、前記共通コマンドバッファに書き込まれたコマンドを実行するコマンド実行部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
前記コマンド生成部は、
前記コマンド実行部により実行される各処理のうち、前記第１の視点用コマンド、前記第２の視点用コマンドが必要な処理については、前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込み、前記第１の視点用コマンド、前記第２の視点用コマンドが必要ではない処理については、前記共通コマンドを生成して、前記共通コマンドバッファに書き込むことを特徴とするプログラム。
【請求項３】
請求項１又は２において、
前記コマンド生成部は、
描画処理を行うハードウェアの制御コマンド及び影の生成処理用のコマンドの少なくとも１つを、前記共通コマンドとして、前記共通コマンドバッファに書き込むことを特徴とするプログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記コマンド生成部は、
前記コマンド実行部により実行される各処理のうち、多眼立体視の第１、第２の視点で内容が異なる処理については、異なる内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込み、前記第１、第２の視点で内容が同じになる処理については、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込むことを特徴とするプログラム。
【請求項５】
請求項４において、
前記コマンド生成部は、
カメラ依存パラメータの設定コマンドについては、異なる内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込み、カメラ非依存パラメータの設定コマンドについては、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込むことを特徴とするプログラム。
【請求項６】
請求項５において、
前記コマンド生成部は、
前記カメラ依存パラメータ又は前記カメラ非依存パラメータが設定されるシェーダの設定コマンドを、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファ
に書き込むことを特徴とするプログラム。
【請求項７】
請求項５又は６において、
前記コマンド生成部は、
ワールド座標系からカメラ座標系への変換行列、ワールド座標系から射影座標系への変換行列、及びカメラの位置ベクトルの少なくとも１つの設定コマンドを、前記カメラ依存パラメータの設定コマンドとして、異なる内容の前記第１の視点用コマンド、前記第２の視点用コマンドを前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込むことを特徴とするプログラム。
【請求項８】
請求項５乃至７のいずれかにおいて、
前記コマンド生成部は、
ローカル座標系からワールド座標系への変換行列、モーション用行列、ライトの位置ベクトル、環境色、スペキュラ色、フォグ色、頂点データ、及びテクスチャデータの少なくとも１つの設定コマンドを、前記カメラ非依存パラメータの設定コマンドとして、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドを前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込むことを特徴とするプログラム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記コマンド実行部は、
前記第１の視点用コマンドバッファに書き込まれた前記第１の視点用コマンドを実行した後に、前記第２の視点用コマンドバッファに書き込まれた前記第２の視点用コマンドを実行し、その後に、前記共通コマンドバッファに書き込まれた前記共通コマンドを実行することを特徴とするプログラム。
【請求項１０】
請求項９において、
前記コマンド実行部は、
前記第１の視点用コマンド、前記第２の視点用コマンドの実行後に、多眼立体視画像の第１の視点画像と第２の視点画像の合成コマンド及びバックバッファとフロントバッファの切り替えコマンドの少なくとも１つを、前記共通コマンドとして実行することを特徴とするプログラム。
【請求項１１】
請求項９又は１０において、
前記コマンド実行部は、
前記第１の視点用コマンド、前記第２の視点用コマンドの実行前に、前記共通コマンドバッファに書き込まれた前記共通コマンドを実行することを特徴とするプログラム。
【請求項１２】
請求項１１において、
前記コマンド実行部は、
前記第１の視点用コマンド、前記第２の視点用コマンドの実行前に、ハードウェア制御コマンド及び影生成処理用コマンドの少なくとも１つを、前記共通コマンドとして実行することを特徴とするプログラム。
【請求項１３】
請求項１乃至１２のいずれかにおいて、
前記コマンド生成部は、
前記第１の視点用コマンドバッファから前記第２の視点用コマンドバッファに対して、前記コマンド実行部の処理をジャンプさせるためのコマンドを、前記第１の視点用コマンドバッファに書き込み、前記第２の視点用コマンドバッファから前記共通コマンドバッファに対して、前記コマンド実行部の処理をジャンプさせるためのコマンドを、前記第２の視点用コマンドバッファに書き込むことを特徴とするプログラム。
【請求項１４】
請求項１３において、
前記コマンド生成部は、
前記共通コマンドバッファから前記第１の視点用コマンドバッファに対して、前記コマンド実行部の処理をジャンプさせるためのコマンドを、前記共通コマンドバッファに書き込むことを特徴とするプログラム。
【請求項１５】
請求項１乃至１４のいずれかにおいて、
多眼立体視の第１の視点と第２の視点とで共通のカリング処理を行うカリング処理部として、
コンピュータを機能させ、
前記コマンド生成部は、
前記共通のカリング処理により得られる頂点データの設定コマンドを、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドとして生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込むことを特徴とするプログラム。
【請求項１６】
多眼立体視画像の第１の視点画像を生成するための第１の視点用コマンドと前記多眼立体視画像の第２の視点画像を生成するための第２の視点用コマンドを生成するコマンド生成部と、
前記コマンド生成部により生成されたコマンドを実行するコマンド実行部と、
多眼立体視の第１視点用、第２視点用に共通のカリング処理用ボリュームを用いて、多眼立体視の第１の視点と第２の視点とで共通のカリング処理を行うカリング処理部として、
コンピュータを機能させ、
前記コマンド生成部は、
前記共通のカリング処理により得られる頂点データの設定コマンドを、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドとして生成し、
前記コマンド実行部は、
生成された前記第１の視点用コマンド、前記第２の視点用コマンドを実行することを特徴とするプログラム。
【請求項１７】
請求項１６において、
多眼立体視の第１視点用、第２視点用に共通の前記カリング処理用ボリュームは、第１視点用ビューボリュームと第２視点用ビューボリュームを内包するボリュームであり、
前記コマンド生成部は、
前記カリング処理用ボリュームに存在しないオブジェクトを削除したオブジェクトリストに基づいて頂点データを生成し、生成された頂点データを設定するためのコマンドであるカメラ非依存パラメータ設定コマンドを、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドとして生成することを特徴とするプログラム。
【請求項１８】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１乃至１７のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１９】
多眼立体視のための画像生成システムであって、
多眼立体視画像の第１の視点画像を生成するための第１の視点用コマンドが書き込まれる第１の視点用コマンドバッファと、
前記多眼立体視画像の第２の視点画像を生成するための第２の視点用コマンドが書き込まれる第２の視点用コマンドバッファと、
前記多眼立体視画像を生成するための共通コマンドが書き込まれる共通コマンドバッファと、
前記第１の視点用コマンド、前記第２の視点用コマンド、前記共通コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファ、前記共通コマンドバッファに書き込むコマンド生成部と、
前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファ、前記共通コマンドバッファに書き込まれたコマンドを実行するコマンド実行部と、
を含むことを特徴とする画像生成システム。
【請求項２０】
多眼立体視のための画像生成システムであって、
多眼立体視画像の第１の視点画像を生成するための第１の視点用コマンドと前記多眼立体視画像の第２の視点画像を生成するための第２の視点用コマンドを生成するコマンド生成部と、
前記コマンド生成部により生成されたコマンドを実行するコマンド実行部と、
多眼立体視の第１視点用、第２視点用に共通のカリング処理用ボリュームを用いて、多眼立体視の第１の視点と第２の視点とで共通のカリング処理を行うカリング処理部とを含み、
前記コマンド生成部は、
前記共通のカリング処理により得られる頂点データの設定コマンドを、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドとして生成し、
前記コマンド実行部は、
生成された前記第１の視点用コマンド、前記第２の視点用コマンドを実行することを特徴とする画像生成システム。
【請求項２１】
請求項２０において、
第１視点用、第２視点用に共通の前記カリング処理用ボリュームは、第１視点用ビューボリュームと第２視点用ビューボリュームを内包するボリュームであり、
前記コマンド生成部は、
前記カリング処理用ボリュームに存在しないオブジェクトを削除したオブジェクトリストに基づいて頂点データを生成し、生成された頂点データを設定するためのコマンドであるカメラ非依存パラメータ設定コマンドを、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドとして生成することを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【０００２】
従来より、ゲームや映画などの分野において、臨場感溢れる画像を生成するシステムとして、立体視画像の生成が可能な画像生成システムが注目を浴びている。このような画像生成システムとしては例えば特許文献１に開示される従来技術がある。この画像生成システムでは、右目用画像と左目用画像を用意し、これらの画像を表示画面上にフレーム毎（例えば１／６０秒毎）に交互に表示する。そして観者は専用の眼鏡を装着し、右目は右目用画像のみを見て、左目は左目用画像のみを見ることで、立体視を実現する。
【０００３】
しかしながら、従来の立体視の画像生成システムでは、右目用画像の生成に必要な処理と左目用画像の生成に必要な処理を別個独立に行っていた。従って、本来は共通化できるはずの処理が重複して行われてしまう事態が生じ、処理の効率化が不十分であるという課題があった。
【特許文献１】特開２００４−１７８５８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の幾つかの態様によれば、処理の無駄を防止して多眼立体視画像の効率的な生成を可能にするプログラム、情報記憶媒体及び画像生成システムを提供できる。
【課題を解決するための手段】
【０００５】
本発明は、多眼立体視の第１の視点用コマンドが書き込まれる第１の視点用コマンドバッファと、多眼立体視の第２の視点用コマンドが書き込まれる第２の視点用コマンドバッファと、共通コマンドが書き込まれる共通コマンドバッファと、前記第１の視点用コマンド、前記第２の視点用コマンド、前記共通コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファ、前記共通コマンドバッファに書き込むコマンド生成部と、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファ、前記共通コマンドバッファに書き込まれたコマンドを実行するコマンド実行部とを含む画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【０００６】
本発明によれば、第１の視点用コマンドバッファ、第２の視点用コマンドバッファ、共通コマンドバッファが、別個に用意される。そしてコマンド生成部は、第１の視点用コマンド、第２の視点用コマンド、共通コマンドを生成して、第１の視点用コマンドバッファ、第２の視点用コマンドバッファ、共通コマンドバッファに書き込む。一方、コマンド実行部は、第１の視点用コマンドバッファ、第２の視点用コマンドバッファ、共通コマンドバッファから、第１の視点用コマンド、第２の視点用コマンド、共通コマンドを読み出して、実行する。このようにすれば、例えば第１の視点と第２の視点とで共通で行うことができる処理を、重複して行わなくても済むようになるため、処理の無駄が防止され、多眼立体視画像の効率的な生成が可能になる。
【０００７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、前記コマンド実行部により実行される各処理のうち、前記第１の視点用コマンド、前記第２の視点用コマンドが必要な処理については、前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込み、前記第１の視点用コマンド、前記第２の視点用コマンドが必要ではない処理については、前記共通コマンドを生成して、前記共通コマンドバッファに書き込んでもよい。
【０００８】
このようにすれば、第１、第２の視点用コマンドが必要な処理についてだけ、第１、第２の視点用コマンドが生成されて第１、第２の視点用コマンドバッファに書き込まれ、その他の共通コマンドについては共通コマンドバッファに書き込まれるため、コマンドの生成、書き込み処理を簡素化できる。
【０００９】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、描画処理を行うハードウェアの制御コマンド及び影の生成処理用のコマンドの少なくとも１つを、前記共通コマンドとして、前記共通コマンドバッファに書き込んでもよい。
【００１０】
このようにすれば、ハードウェア制御コマンドや影生成処理用コマンドについては、第１、第２の視点用コマンドを生成せずに、共通コマンドとして共通コマンドバッファに書き込んで、処理を実行できるようになる。
【００１１】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、前記コマンド実行部により実行される各処理のうち、多眼立体視の第１、第２の視点で内容が異なる処理については、異なる内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込み、前記第１、第２の視点で内容が同じになる処理については、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込んでもよい。
【００１２】
このようにすれば、第１、第２の視点で内容が同じになる処理については、同じ内容の第１、第２の視点用コマンドを生成すれば済むため、処理を効率化できる。
【００１３】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、カメラ依存パラメータの設定コマンドについては、異なる内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込み、カメラ非依存パラメータの設定コマンドについては、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドを生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込んでもよい。
【００１４】
このようにすれば、カメラ非依存パラメータの設定コマンドについては、同じ内容の第１、第２の視点用コマンドを生成すれば済むため、処理を効率化できる。
【００１５】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、前記カメラ依存パラメータ又は前記カメラ非依存パラメータが設定されるシェーダの設定コマンドを、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込んでもよい。
【００１６】
このようにすれば、シェーダにカメラ依存パラメータやカメラ非依存パラメータを設定して、多眼立体視の第１、第２の視点画像をシェーダにより生成できるようになる。
【００１７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、ワールド座標系からカメラ座標系への変換行列、ワールド座標系から射影座標系への変換行列、及びカメラの位置ベクトルの少なくとも１つの設定コマンドを、前記カメラ依存パラメータの設定コマンドとして、異なる内容の前記第１の視点用コマンド、前記第２の視点用コマンドを前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込んでもよい。
【００１８】
このようにすれば、これらの変換行列や位置ベクトルなどのカメラ依存パラメータを、第１、第２の視点に応じたパラメータ値に設定にして、第１、第２の視点画像を生成できる。
【００１９】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、ローカル座標系からワールド座標系への変換行列、モーション用行列、ライトの位置ベクトル、環境色、スペキュラ色、フォグ色、頂点データ、及びテクスチャデータの少なくとも１つの設定コマンドを、前記カメラ非依存パラメータの設定コマンドとして、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドを前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込んでもよい。
【００２０】
このようにすれば、これらのカメラ非依存パラメータを求める処理が、第１、第２の視点で重複して行われてしまう事態を防止できる。
【００２１】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド実行部は、前記第１の視点用コマンドバッファに書き込まれた前記第１の視点用コマンドを実行した後に、前記第２の視点用コマンドバッファに書き込まれた前記第２の視点用コマンドを実行し、その後に、前記共通コマンドバッファに書き込まれた前記共通コマンドを実行してもよい。
【００２２】
このようにすれば、第１の視点用コマンドバッファに書き込まれた第１の視点用コマンドを実行して、第１の視点画像を生成し、第２の視点用コマンドバッファに書き込まれた第２の視点用コマンドを実行して、第２の視点画像を生成し、その後に、共通コマンドを実行できるようになる。
【００２３】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド実行部は、前記第１の視点用コマンド、前記第２の視点用コマンドの実行後に、多眼立体視画像の第１の視点画像と第２の視点画像の合成コマンド及びバックバッファとフロントバッファの切り替えコマンドの少なくとも１つを、前記共通コマンドとして実行してもよい。
【００２４】
このようにすれば、第１、第２の視点用コマンドを実行して第１、第２の視点画像を生成した後に、生成された第１、第２の視点画像を合成して多眼立体視画像を生成したり、複数バッファ方式におけるバックバッファとフロントバッファの切り替えを実行できるようになる。
【００２５】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド実行部は、前記第１の視点用コマンド、前記第２の視点用コマンドの実行前に、前記共通コマンドバッファに書き込まれた前記共通コマンドを実行してもよい。
【００２６】
このようにすれば、第１、第２の視点用コマンドを実行して第１、第２の視点画像を生成する前に、共通コマンドを実行できるようになる。
【００２７】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド実行部は、前記第１の視点用コマンド、前記第２の視点用コマンドの実行前に、ハードウェア制御コマンド及び影生成処理用コマンドの少なくとも１つを、前記共通コマンドとして実行してもよい。
【００２８】
このようにすれば、第１、第２の視点用コマンドを実行して第１、第２の視点画像を生成する前に、共通のハードウェア制御コマンドを実行したり、カメラに依存しない影生成処理を実行することが可能になる。
【００２９】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、前記第１の視点用コマンドバッファから前記第２の視点用コマンドバッファに対して、前記コマンド実行部の処理をジャンプさせるためのコマンドを、前記第１の視点用コマンドバッファに書き込み、前記第２の視点用コマンドバッファから前記共通コマンドバッファに対して、前記コマンド実行部の処理をジャンプさせるためのコマンドを、前記第２の視点用コマンドバッファに書き込んでもよい。
【００３０】
このようにすれば、コマンド実行部は、第１の視点用コマンドを第１の視点用コマンドバッファから読み出して実行した後に、ジャンプコマンドを実行することで、第２の視点用コマンドバッファの第２の視点用コマンドを実行できるようになる。
【００３１】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記コマンド生成部は、前記共通コマンドバッファから前記第１の視点用コマンドバッファに対して、前記コマンド実行部の処理をジャンプさせるためのコマンドを、前記共通コマンドバッファに書き込んでもよい。
【００３２】
このようにすれば、コマンド実行部は、第２の視点用コマンドを第２の視点用コマンドバッファから読み出して実行した後に、ジャンプコマンドを実行することで、共通コマンドバッファの共通コマンドを実行できるようになる。
【００３３】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、多眼立体視の第１の視点と第２の視点とで共通のカリング処理を行うカリング処理部を含み（カリング処理部としてコンピュータを機能させ）、前記コマンド生成部は、前記共通のカリング処理により得られる頂点データの設定コマンドを、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドとして生成して、前記第１の視点用コマンドバッファ、前記第２の視点用コマンドバッファに書き込んでもよい。
【００３４】
このようにすれば、カリング処理を、第１の視点用、第２の視点用に重複して行う必要がなくなるため、処理負荷を軽減できる。
【００３５】
また本発明は、多眼立体視の第１の視点用コマンドと第２の視点用コマンドを生成するコマンド生成部と、前記コマンド生成部により生成されたコマンドを実行するコマンド実行部と、多眼立体視の第１の視点と第２の視点とで共通のカリング処理を行うカリング処理部とを含み、前記コマンド生成部は、前記共通のカリング処理により得られる頂点データの設定コマンドを、同じ内容の前記第１の視点用コマンド、前記第２の視点用コマンドとして生成し、前記コマンド実行部は、生成された前記第１の視点用コマンド、前記第２の視点用コマンドを実行する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【００３６】
本発明によれば、多眼立体視の第１の視点と第２の視点とで共通のカリング処理が実行される。そして、この共通のカリング処理により得られる頂点データの設定コマンドが、同じ内容の第１、第２の視点用コマンドとして生成されて、実行される。このようにすれば、カリング処理を、第１の視点用、第２の視点用に重複して行う必要がなくなるため、処理負荷を軽減できる。
【発明を実施するための最良の形態】
【００３７】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３８】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）のブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００３９】
操作部１６０は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、ステアリング、アクセル、ブレーキ、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【００４０】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＤＲＡＭ、ＶＲＡＭ）などにより実現できる。この記憶部１７０は、電源を切るとデータが消えてしまう揮発性のメモリにより構成できるが、補助記憶装置１９４よりも高速な記憶装置になっている。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部１７０に保持される。
【００４１】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、ＨＤＤ（ハードディスクドライブ）、或いはメモリ（ＲＯＭ等）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータ（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００４２】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００４３】
補助記憶装置１９４（補助メモリ、２次メモリ）は、記憶部１７０の容量を補うために使用される大容量の記憶装置であり、ＳＤメモリーカード、マルチメディアカードなどのメモリーカードや、ＨＤＤなどにより実現できる。この補助記憶装置１９４は脱着自在になっているが、内蔵されるものであってもよい。この補助記憶装置１９４は、ゲームの途中結果などのセーブデータや、プレーヤ（ユーザ）の個人的な画像データや音楽データなどを保存するために使用される。
【００４４】
通信部１９６は、有線や無線のネットワークを介して外部（例えば他の画像生成システム、サーバ、ホスト装置）との間で通信を行うものであり、その機能は、通信用ＡＳＩＣ又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【００４５】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）は、サーバ（ホスト装置）が有する情報記憶媒体からネットワーク及び通信部１９６を介して情報記憶媒体１８０（あるいは記憶部１７０、補助記憶装置１９４）に配信してもよい。このようなサーバ（ホスト装置）による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【００４６】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部１００は記憶部１７０（主記憶部１７２）をワーク領域として各種処理を行う。この処理部１００の機能は、各種プロセッサ（ＣＰＵ、ＧＰＵ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００４７】
処理部１００は、ゲーム演算部１０２、オブジェクト空間設定部１０４、移動体演算部１０６、仮想カメラ制御部１０８、コマンド生成部１１０、コマンド実行部１１８を含む。コマンド実行部１１８は描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００４８】
ゲーム演算部１０２はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００４９】
オブジェクト空間設定部１０４は、モデルオブジェクト（車、戦闘機、人、ロボット、ミサイル、弾等の移動体）、マップ（地形）、建物、コース（道路）、樹木、壁などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。具体的には、記憶部１７０のモデルデータ記憶部ＭＳには、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。そしてこのオブジェクトデータは、移動体演算部１０６の移動体演算処理等により順次更新される。
【００５０】
オブジェクト空間設定部１０４はカリング処理部１０５を含む。このカリング処理部１０５は例えばソフトウェアによるカリング処理を行う。具体的には、オブジェクトデータのオブジェクトリストの中から、当該フレームにおいて表示されることがないオブジェクトを削除する処理を行う。例えば当該フレームにおいて仮想カメラの視野範囲内に存在せず、表示処理を行う必要がないオブジェクトを予め削除する。このようにすれば、削除されたオブジェクトを構成するポリゴンについては頂点データ等を作成しなくても済むため、処理負荷を大幅に軽減できる。
【００５１】
移動体演算部（移動体制御部）１０６は、移動体（移動体オブジェクト）を移動させるための演算を行う。また移動体を動作させるための演算も行う。即ち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、移動体（オブジェクト、モデルオブジェクト）をオブジェクト空間内で移動させたり、移動体を動作（モーション、アニメーション）させる処理を行う。具体的には、移動体の移動情報（位置、回転角度、速度、或いは加速度）や動作情報（パーツオブジェクトの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００５２】
より具体的には、移動体演算部１０６は、モーションデータ記憶部ＭＴＳに記憶されるモーションデータに基づいて、オブジェクトのモーションを再生する処理を行う。即ち、オブジェクト（スケルトン）を構成する各パーツオブジェクト（スケルトンを構成する骨）の位置又は回転角度（方向）等を含むモーションデータを、モーションデータ記憶部ＭＴＳから読み出す。そして、オブジェクトの各パーツオブジェクト（骨）を動かすことで（スケルトン形状を変形させることで）、オブジェクトのモーションを再生する。
【００５３】
仮想カメラ制御部１０８は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。
【００５４】
例えば仮想カメラにより車、キャラクタ、戦闘機などの移動体を後方から撮影する場合には、移動体の位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動体演算部１０６で得られた移動体の位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【００５５】
なお本実施形態では仮想カメラ制御部１０８は、多眼立体視画像を生成するために、複数の視点の仮想カメラの制御を行う。具体的には第１の視点用（例えば右目用）の仮想カメラと第２の視点用（例えば左目用）の仮想カメラを制御して、プレーヤに立体感を感じさせるための両眼視差等を実現する。
【００５６】
コマンド生成部１１０は、コマンド実行部１１８（描画プロセッサ、ＧＰＵ）により実行される各種のコマンドを生成する。
【００５７】
具体的には、記憶部１７０には、多眼立体視の第１の視点用（例えば右目用）のコマンドが書き込まれる第１の視点用のコマンドバッファＣＢＲや、多眼立体視の第２の視点用（例えば左目用）のコマンドが書き込まれる第２の視点用のコマンドバッファＣＢＬや、共通コマンド（メインコマンド、第１、第２の視点に非依存のコマンド）が書き込まれる共通コマンドバッファＣＢＭが確保（用意）される。例えばｎ眼立体視（ｎ≧２）の場合には、第１〜第ｎの視点用のコマンドバッファが確保される。
【００５８】
そしてコマンド生成部１１０は、第１の視点用コマンド、第２の視点用コマンド、或いは共通コマンドを生成する。そして生成した各々のコマンドを、第１の視点用のコマンドバッファＣＢＲ、第２の視点用のコマンドバッファＣＢＬ、共通コマンドバッファＣＢＭに書き込む。
【００５９】
例えばコマンド生成部１１０は、コマンド実行部１１８により実行される各処理のうち、第１、第２の視点用コマンドが必要な処理（例えば第１、第２の視点画像の生成に使用されるコマンド）については、第１、第２の視点用コマンドを生成して、第１、第２の視点用のコマンドバッファＣＢＲ、ＣＢＬに書き込む。具体的には、コマンド実行部１１８により実行される各処理のうち、多眼立体視の第１、第２の視点で内容が異なる処理については、異なる内容の第１、第２の視点用コマンドを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込み、第１、第２の視点で内容が同じになる処理については、同じ内容の第１、第２の視点用コマンドを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む。
【００６０】
一方、コマンド生成部１１０は、第１、第２の視点用コマンドが必要ではない処理（例えば第１、第２の視点画像の生成に使用されないコマンド）については、共通コマンドを生成して、共通コマンドバッファＣＢＭに書き込む。
【００６１】
ここで、共通コマンドとしては、例えば描画処理を行うハードウェアの制御コマンドや、ハードウェアでサポートされる影の生成処理用のコマンドなどを想定できる。
【００６２】
また、異なる内容の第１、第２の視点用コマンドとしては、カメラ依存パラメータ（カメラの視点、視線方向等に依存するパラメータ）の設定コマンドを想定でき、同じ内容の第１、第２の視点用コマンドとしては、カメラ非依存パラメータ（カメラの視点、視線方向等に依存しないパラメータ）の設定コマンドを想定できる。またこれらのカメラ依存パラメータやカメラ非依存パラメータは、例えばシェーダ（ピクセルシェーダや頂点シェーダのプログラム）に対して設定され、シェーダはこれらのパラメータに基づいてピクセルシェーダや頂点シェーダの処理を行う。
【００６３】
コマンド実行部１１８（処理部１００のハードウェア部分）は、コマンド生成部１１０により生成されたコマンドを実行する。具体的には、コマンド生成部１１０により生成されてコマンドバッファＣＢＲ、ＣＢＬ、ＣＢＭに書き込まれたコマンドを実行する。
【００６４】
この場合にコマンド実行部１１８は、コマンドバッファＣＢＲに書き込まれた第１の視点用コマンドを実行した後に、コマンドバッファＣＢＬに書き込まれた第２の視点用コマンドを実行する。そしてその後に、共通コマンドバッファに書き込まれた共通コマンドを実行する。
【００６５】
第１、第２の視点用コマンドの実行後に実行される共通コマンドとしては、例えば、多眼立体視画像の第１の視点画像と第２の視点画像の合成コマンド（描画バッファへの書き戻しコマンド）や、バックバッファとフロントバッファの切り替えコマンドなどを想定できる。
【００６６】
またコマンド実行部１１８は、第１、第２の視点用コマンドの実行前に、コマンドバッファＣＢＭに書き込まれた共通コマンドを実行するようにしてもよい。この場合に、第１、第２の視点用コマンドの実行前に実行されるコマンドとしては、例えば、ハードウェア制御コマンドや、影生成処理用コマンドなどを想定できる。
【００６７】
なおカリング処理部１０５が、多眼立体視の第１の視点と第２の視点とで共通のカリング処理を行う場合に、コマンド生成部１１０は、共通のカリング処理により得られる頂点データ（ポリゴンデータ）の設定コマンドを、同じ内容の第１、第２の視点用コマンドとして生成する。具体的には、共通のカリング処理により得られる頂点データの設定コマンドを、同じ内容の第１、第２の視点用コマンドとして生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む。そしてコマンド実行部１１８は、生成された第１、第２の視点用コマンドを実行する。
【００６８】
コマンド実行部１１８は、描画部１２０（描画プロセッサ）や音生成部１３０（サウンドプロセッサ）を含むことができる。例えばコマンド実行部１１８は、ハードウェアによる専用の処理を行うプロセッサ（メインの処理を行うＣＰＵ以外のプロセッサ）により実現できる。
【００６９】
コマンド実行部１１８が含む描画部１２０（画像生成部）は、処理部１００で行われる種々の処理（ゲーム処理、シミュレーション処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずモデル（オブジェクト）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）が生成され、これらのデータに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００７０】
頂点処理（頂点シェーダ処理）では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。
【００７１】
ピクセル処理（ピクセルシェーダ処理）では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたモデルの描画色を描画バッファＤＢ（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット、フレームバッファ）に出力（描画）する。即ち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。
【００７２】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００７３】
描画部１２０は、ライティング処理部１２２、テクスチャマッピング部１２４を含む。なおこれらの一部を省略する構成としてもよい。
【００７４】
ライティング処理部１２２は、照明モデル等に基づくライティング処理（シェーディング処理）を行う。具体的にはこのライティング処理は、光源情報（光源ベクトル、光源色、明るさ、光源タイプ等）、仮想カメラ（視点）の視線ベクトル、オブジェクト（半透明オブジェクト）の法線ベクトル、オブジェクトのマテリアル（色、材質）などを用いて行われる。なお照明モデルとしては、アンビエント光とディフューズ光だけを考慮したランバードの拡散照明モデルや、アンビエント光、ディフューズ光に加えてスペキュラ光も考慮するフォンの照明モデルやブリン・フォンの照明モデルなどがある。
【００７５】
テクスチャマッピング部１２４は、オブジェクト（ポリゴン）にテクスチャをマッピングする処理を行う。ここでテクスチャマッピング処理は、テクスチャ記憶部ＴＳに記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングする処理である。具体的には、オブジェクト（プリミティブ面）の頂点やピクセルに設定（付与）されるテクスチャ座標等を用いてテクスチャ記憶部ＴＳからテクスチャ（色、α値などの表面プロパティ）を読み出す。そして２次元の画像又はパターンであるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理やバイリニア補間（広義にはテクセル補間）などを行う。
【００７６】
そして本実施形態では描画部１２０は、多眼立体視画像（ｎ眼立体視画像。ｎ≧２）を生成するための描画処理を行う。具体的には描画部１２０は、多眼立体視（２眼立体視）の第１の視点画像（例えば右目用画像）を高さ方向（縦方向）において例えば１／２に圧縮（縮小）して、バッファＴＢの第１の領域ＡＲ１（例えば左半分側の領域）に書き込む。また多眼立体視の第２の視点画像（例えば左目用画像）を高さ方向（縦方向）において例えば１／２に圧縮（縮小）して、バッファＴＢの第２の領域ＡＲ２（例えば右半分側の領域）に書き込む。そしてバッファＴＢから画像（ＡＲ１、ＡＲ２の画像）を読み出すことで、第１の領域ＡＲ１に書き込まれた第１の視点画像のピクセル画像（Ｒ、Ｇ、Ｂ、α）と第２の領域ＡＲ２に書き込まれた第２の視点画像のピクセル画像とが、ライン毎（例えば走査ライン毎、ビットマップライン毎）に交互に表示される多眼立体視画像を生成する。
【００７７】
更に具体的には、第１、第２の領域ＡＲ１、ＡＲ２は、幅がＷピクセル（例えば１９２０ピクセル）であり高さがＨ／２ピクセル（例えば１０８０／２＝５４０ピクセル）の領域になっている。
【００７８】
そして画像の書き込み時には、バッファＴＢのメモリピッチを２Ｎバイト（例えば２×４バイト×２０４８ピクセル＝１６３８４バイト）に設定する。ここでメモリピッチ（ピッチサイズ）は、ビットマップラインの先頭を表すアドレスと、次のラインの先頭を表すアドレスとのバイト単位の距離である。描画部１２０は、このように設定されたバッファＴＢにおいて、幅がＷピクセルであり高さがＨピクセルである第１の視点画像を、第１の領域ＡＲ１に書き込む。また幅がＷピクセルであり高さがＨピクセルである第２の視点画像を、第２の領域ＡＲ２に書き込む。例えば第１の視点画像を描画バッファＤＢ（ＤＢ１又はＤＢ２）に描画し、描画された第１の視点画像を高さ方向において圧縮してバッファＴＢの第１の領域ＡＲ１にコピーする。また第２の視点画像を描画バッファＤＢ（ＤＢ１又はＤＢ２）に描画し、描画された第２の視点画像を高さ方向において圧縮してバッファＴＢの第２の領域ＡＲ２にコピーする。この場合のコピー処理は、第１、第２の領域ＡＲ１、ＡＲ２のサイズのポリゴン（画面に表示されない仮想的なポリゴン）に対して、第１又は第２の視点画像をテクスチャとしてマッピングし、当該ポリゴンを第１又は第２の領域ＡＲ１、ＡＲ２に描画することで実現できる。
【００７９】
一方、画像の読み出し時には、バッファＴＢのメモリピッチをＮバイトに設定する。描画部１２０は、このように設定されたバッファＴＢから画像を読み出すことで、多眼立体視画像を生成する。例えば第１、第２の視点画像が第１、第２の領域ＡＲ１、ＡＲ２にコピーされた後に、バッファＴＢの画像を描画バッファＤＢ（ＤＢ１又はＤＢ２）に書き戻す（ライトバックする）。この場合の書き戻し処理は、バッファＴＢの画像を、描画バッファＤＢ（ＤＢ１又はＤＢ２）のサイズのポリゴンにテクスチャマッピングし、当該ポリゴンを描画バッファＤＢに描画することなどで実現できる。
【００８０】
コマンド実行部１１８が含む音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００８１】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて分散処理により生成してもよい。
【００８２】
２．本実施形態の手法
２．１  立体視方式
まず、図２、図３を用いて、本実施形態において採用される立体視方式の一例について説明する。
【００８３】
図２の画像生成システム３００（例えばゲーム装置）により生成された多眼立体視画像は、表示装置３１０（例えばハイビジョン対応テレビ）の表示画面に表示される。表示画面には、右目用偏光フィルタと左目用偏光フィルタが走査ライン毎に交互に配列されたフィルム３１２が貼られている。プレーヤは、これらの偏光フィルタに対応する偏光眼鏡３２０を掛けて表示画面を見ることで、立体視映像を鑑賞する。
【００８４】
具体的には表示装置３１０の表示画面には、走査ライン毎に右目用画像と左目用画像とが交互に表示される。プレーヤは、偏光眼鏡３２０の右目部分３２２に設けられた偏光フィルタを介して、フィルム３１２の右目用偏光フィルタにより偏光された各走査ラインの右目用画像を見る。また偏光眼鏡３２０の左目部分３２４を介して、フィルム３１２の左目用偏光フィルタにより偏光された各走査ラインの左目用画像を見る。
【００８５】
図２の立体視方式によれば、プレーヤは、右目用画像及び左目用画像を偏光眼鏡３２０の右目部分３２２及び左目部分３２４を介して同時に見ることができる。従って、右目用画像と左目用画像がフレーム毎に交互に表示される従来の立体視方式に比べて、チラツキが少なく疲れにくい理想的な立体視表示を実現できる。特に３次元ゲーム映像のように、動きの速い映像では、従来の立体視方式では立体感が失われたり、眼の疲労が大きくなるなどの欠点があるが、図２の立体視方式によれば、このような欠点を解消できる。
【００８６】
図３に右目用画像ＩＲ、左目用画像ＩＲ、多眼立体視画像ＩＳを概念的に示す。図３の多眼立体視画像ＩＳでは、奇数番目の走査ラインには右目用画像ＩＲのピクセル画像が表示され、偶数番目の走査ラインには左目用画像ＩＬのピクセル画像が表示される。プレーヤは、奇数番目の走査ラインのピクセル画像を偏光眼鏡３２０の右目部分３２２を介して見ると共に、偶数番目の走査ラインのピクセル画像を左目部分３２４を介して見ることで、立体感のある映像を楽しむことができる。
【００８７】
図４（Ａ）、図４（Ｂ）、図５に、本実施形態の画像生成システムにより生成される右目用画像ＩＲ、左目用画像ＩＬ、多眼立体視画像ＩＳの一例を示す。これらは３次元レースゲームに本実施形態の手法を適用した場合の画像例である。
【００８８】
図４（Ａ）、図４（Ｂ）では、全ての走査ラインについて右目用画像ＩＲ、左目用画像ＩＬのピクセル画像が生成されている。例えばフルハイビジョン対応の場合には、１０８０本の全ての走査ラインについてピクセル画像が生成される。そして図５の多眼立体視画像ＩＳは、これらのフルハイビジョン対応の右目用画像ＩＲ、左目用画像ＩＬを合成することで生成される。従って、フルハイビジョンの解像度で立体視ゲーム映像を表示できるため、プレーヤの仮想現実感を飛躍的に向上できる。即ち従来の立体視方式では、立体視画像にすることで、解像度が落ちたり、フレームレートが低下するため、画像品質が低下してしまうという問題があったが、図４（Ａ）〜図５の手法によればこのような問題を解消できる。
【００８９】
２．２  コマンド生成・実行
次に本実施形態のコマンド生成・実行手法について説明する。なお本実施形態のコマンド生成・実行手法を適用できる立体視方式は図２、図３の方式に限定されるものではなく、例えば右目用画像と左目用画像をフレーム毎に交互に表示する立体視方式であっても、本実施形態の手法は適用できる。また以下では、第１の視点画像が右目用画像であり、第２の視点画像が左目用画像である場合を例にとり説明するが、本実施形態はこれに限定されない。例えば第１の視点画像が左目用画像等であり、第２の視点画像が右目用画像等であってもよい。また、以下では、２眼立体視を例にとり説明するが、本実施形態はこれに限定されない。例えばｎ≧３となるｎ眼立体視にも本実施形態の手法は適用できる。
【００９０】
図６に示すように本実施形態では、右目用のコマンドバッファＣＢＲ、左目用のコマンドバッファＣＢＬ、共通のコマンドバッファＣＢＭが別個独立に用意されている。即ち、これまでの画像生成システムに用意されていたメインのコマンドバッファＣＢＭに加えて、コマンドバッファＣＢＲ、ＣＢＬが追加されている。
【００９１】
コマンド生成部１１０は、コマンド実行部１１８に実行させる各処理のうち、右目用、左目用の処理として別個に必要な処理については、右目用のコマンドＣＲ、左目用のコマンドＣＬを生成（作成）して、コマンドバッファＣＢＲ、ＣＢＬに書き込む。この場合、コマンド生成にあたって、右目用、左目用に共通に必要な処理（例えばモデル単位でのカリング処理、モーション用行列の計算）については、右目用、左目用の共通な処理として１回だけ行うようにする。これにより、これらの処理を重複して行わなくても済むようになるため、処理負荷を大幅に軽減できる。また右目と左目で内容が同じ処理については、同じコマンドを生成して、コマンドＣＲ、ＣＬとしてコマンドバッファＣＢＲ、ＣＢＬに書き込む。これにより、コマンドの生成処理や書き込み処理を重複して行わなくても済むようになるため、処理負荷を軽減できる。
【００９２】
またコマンド生成部１１０は、コマンド実行部１１８に実行させる各処理のうち、右目用、左目用として別個な処理が必要ではない処理については、共通コマンドＣＭを生成して、共通のコマンドバッファＣＢＭに書き込む。例えばハードウェア制御コマンドや影生成処理用コマンドなど、右目や左目の視点情報が無くても実行可能なコマンドについては、共通のコマンドバッファＣＢＭに書き込む。これにより、重複したコマンドの作成が不要になるため、処理負荷を軽減できる。
【００９３】
次に図７を用いて、右目用コマンドＣＲ、左目用コマンドＣＬ、共通コマンドＣＭの具体的な生成、書き込み処理について説明する。
【００９４】
図７では、まずコマンド生成部１１０は、シェーダ設定コマンドＣＳＳＴを生成して、コマンドバッファＣＢＲ、ＣＢＬの両方に書き込む。なお図７等において、コマンドバッファＣＢＲ、ＣＢＬ、ＣＢＭはＦＩＦＯ構成のバッファになっている。
【００９５】
ここでシェーダ設定コマンドＣＳＳＴは、例えばピクセルシェーダや頂点シェーダのプログラムを特定するためのＩＤ情報（アドレス情報）を含む。即ち、ハードウェアであるコマンド実行部１１８（描画プロセッサ）に対して、右目用画像、左目用画像の生成に使用するシェーダ（シェーダプログラム）を指定するための情報を含む。
【００９６】
この場合にシェーダの設定処理は、右目と左目（広義には第１、第２の視点）で同じシェーダを使用するため、右目と左目で内容が同じ処理になる。従ってコマンド生成部１１０は、同じ内容のシェーダ設定コマンドＣＳＳＴを生成して、右目用、左目用のコマンドＣＲ、ＣＬとしてコマンドバッファＣＢＲ、ＣＢＬに対して例えば同じタイミングで書き込む。
【００９７】
次にコマンド生成部１１０は、カメラ依存パラメータ（右目用パラメータ）の設定コマンドＣＣＤＲを生成して、右目用のコマンドバッファＣＢＲに書き込む。またカメラ依存パラメータ（左目用パラメータ）の設定コマンドＣＣＤＬを生成して、左目用のコマンドバッファＣＢＬに書き込む。
【００９８】
ここでカメラ依存パラメータ設定コマンドＣＣＤＲ、ＣＣＤＬは、右目用、左目用の仮想カメラの視点位置、視線方向等に依存するパラメータを設定するためのコマンドである。具体的には、例えば前述のシェーダ設定コマンドＣＳＳＴで指定されるシェーダに対して、その処理に必要なカメラ依存パラメータを設定するためのコマンドである。
【００９９】
この場合にカメラ依存パラメータ設定処理は、右目と左目（第１、第２の視点）でパラメータの値が異なるため、右目と左目で内容が異なる処理になる。従ってコマンド生成部１１０は、異なる内容のカメラ依存パラメータの設定コマンドＣＣＤＲ、ＣＣＤＬを生成して、右目用、左目用のコマンドＣＲ、ＣＬとしてコマンドバッファＣＢＲ、ＣＢＬに書き込む。
【０１００】
次にコマンド生成部１１０は、カメラ非依存パラメータの設定コマンドＣＣＮＤを生成して、右目用、左目用のコマンドバッファＣＢＲ、ＣＢＬの両方に書き込む。
【０１０１】
ここでカメラ非依存パラメータ設定コマンドＣＣＮＤは、右目用、左目用の仮想カメラの視点位置、視線方向等に依存しないパラメータを、シェーダ設定コマンドＣＳＳＴで指定されるシェーダに対して設定するコマンドである。
【０１０２】
この場合にカメラ非依存パラメータ設定処理は、右目と左目でパラメータの値が同じになるため、右目と左目で内容が同じ処理になる。従ってコマンド生成部１１０は、同じ内容のカメラ依存パラメータ設定コマンドＣＣＮＤを生成して、右目用、左目用のコマンドＣＲ、ＣＬとしてコマンドバッファＣＢＲ、ＣＢＬに例えば同じタイミングで書き込む。
【０１０３】
次にコマンド生成部１１０は、シェーダ実行コマンドＣＳＥＸを生成して、右目用、左目用のコマンドバッファＣＢＲ、ＣＢＬの両方に書き込む。
【０１０４】
ここでシェーダ実行コマンドＣＳＥＸは、シェーダ設定コマンドＣＳＳＴで指定されるシェーダに対して、シェーダ処理の実行を指示するコマンドである。
【０１０５】
この場合にシェーダの実行を指示する処理は、右目と左目で内容が同じ処理になる。従ってコマンド生成部１１０は、同じ内容のシェーダ実行コマンドＣＳＥＸを生成して、右目用、左目用のコマンドＣＲ、ＣＬとしてコマンドバッファＣＢＲ、ＣＢＬに例えば同じタイミングで書き込む。
【０１０６】
次にコマンド生成部１１０は、右目用画像と左目用画像の合成コマンドＣＳＹＮを生成して、共通のコマンドバッファＣＢＭに書き込む。
【０１０７】
ここで合成コマンドＣＳＹＮは、右目用画像と左目用画像を合成するためのコマンドであり、例えば後述するように、バッファＴＢから描画バッファＤＢ（ＤＢ１又はＤＢ２）への画像の書き戻しコマンドなどである。
【０１０８】
次にコマンド生成部１１０は、バックバッファとフロントバッファの切り替えコマンドＣＳＷを生成して、共通のコマンドバッファＣＢＭに書き込む。
【０１０９】
ここで切り替えコマンドＣＳＷは、例えば第１、第２の描画バッファＤＢ１、ＤＢ２の一方のバッファをバックバッファからフロントバッファに切り替え、他方のバッファをフロントバッファからバックバッファに切り替えるためのコマンドである。この切り替え処理は、右目用画像、左目用画像の生成には無関係であり、右目用、左目用コマンドは不要な処理であるため、切り替えコマンドＣＳＷは、共通のコマンドバッファＣＢＭに書き込まれる。
【０１１０】
例えば本実施形態の比較例の手法として、右目用、左目用のコマンドバッファＣＢＲ、ＣＢＬを用意せずに、共通（メイン）のコマンドバッファＣＢＭのみを用いる手法が考えられる。この手法では、まず右目用画像を生成するためのコマンドを生成して、コマンドバッファＣＢＭに書き込む。次に、左目用画像を生成するためのコマンドを生成して、コマンドバッファＣＢＭに書き込む。その後、合成コマンドや切り替えコマンドを生成して、コマンドバッファＣＢＭに書き込む。
【０１１１】
しかしながら、この比較例の手法では、例えばカメラ非依存パラメータ設定コマンド等の生成や書き込みが、異なるタイミングで行われる。従って、パラメータの生成処理（例えばモーション用行列のパラメータの生成処理）が、本来は１回だけの処理で済むのに、重複して行われてしまい、処理に無駄が生じる。このため、例えば１フレーム期間内に行う必要がある他の処理を圧迫してしまい、処理が間に合わなくなってしまうという問題が生じる。特に、立体視画像の生成では、右目用画像の描画処理と左目用画像の描画処理を１フレーム期間内に行う必要があり、処理時間に余裕がないため、この問題は深刻となる。
【０１１２】
この点、図６、図７の本実施形態の手法によれば、右目用、左目用のコマンドＣＲ、ＣＬの生成処理や書き込み処理が、同じタイミングで行われる。従って、パラメータ（例えばモーション用行列）の生成処理等が重複して行われてしまう事態を防止でき、処理を大幅に効率化できる。従って、１フレーム期間内に行う必要がある処理が間に合わなくなってしまうという問題を解消でき、立体視画像の生成に好適なコマンド生成・書き込み手法を提供できる。
【０１１３】
２．３  共通コマンド、カメラ依存パラメータ、カメラ非依存パラメータ
次に図７の共通コマンド、カメラ依存パラメータ、カメラ非依存パラメータの具体例について図８（Ａ）〜図８（Ｃ）を用いて説明する。
【０１１４】
図８（Ａ）は共通コマンドの例である。影生成処理用コマンドは、例えば影生成処理がハードウェアによりサポートされている場合に、影生成処理用のシェーダやパラメータを設定するためのコマンドである。
【０１１５】
このような影生成処理としては、例えばシャドウマップによる影生成処理がある。例えばシャドウマップによる影生成処理では、影生成のシェーダ（シェーダプログラム）の設定コマンドや、影生成のための光源位置や影の色などの影生成処理用のパラメータの設定コマンドが、影生成処理用コマンドになる。そして、このような影生成処理用コマンドは、右目、左目の視点位置に無関係であるため、共通コマンドＣＭとして共通コマンドバッファＣＢＭに書き込まれる。
【０１１６】
図８（Ａ）のハードウェア制御コマンドは、ハードウェアの制御のために共通に使用されるコマンドである。このようなハードウェア制御コマンドとしては、例えばシェーディング方法、カリング（ハードウエア・カリング）方法、αブレンディング、デプステスト、ステンシルテスト等の設定コマンドや、バックバッファとフロントバッファの切り替えコマンドや、描画バッファのクリアコマンドなどがある。
【０１１７】
例えばシェーディング方法の設定コマンドでは、グーローシェーディングやフラットシェーディングの指定を行う。カリング方法の設定コマンドでは、ハードウェア（描画プロセッサ）によるカリング（クリッピング）のオン・オフの指定や裏面・表面のカリングの指定などを行う。αブレンディングの設定コマンドでは、αブレンディングのオン・オフの指定やαブレンディングの方法（式）の指定などを行う。デプステストやステンシルテストの設定コマンドでは、デプステスト、ステンシルテストのオン・オフの指定やその設定を行う。バックバッファとフロントバッファの切り替えコマンドは、図７で説明した切り替えコマンドＣＳＷである。描画バッファＤＢのクリアコマンドは、描画バッファＤＢに画像を描画する前などに、描画バッファＤＢの画像をクリアするためのコマンドである。
【０１１８】
これらのハードウェア制御コマンドは、右目、左目の視点位置に無関係に、共通の制御コマンドとして使用されるものであるため、共通コマンドＣＭとして共通コマンドバッファＣＢＭに書き込まれる。
【０１１９】
図８（Ｂ）のカメラ依存パラメータとしては、ワールドビュー行列のパラメータ、ワールドビュープロジェクション行列のパラメータ、或いはカメラの位置ベクトルなどを想定できる。
【０１２０】
ここでワールドビュー行列は、ワールド座標系からカメラ座標系（視点座標系）への変換行列であり、ワールドビュープロジェクション行列はワールド座標系から射影座標系への変換行列である。右目用の仮想カメラと左目用の仮想カメラとでは、その視点位置や視線方向が異なるため、ワールドビュー行列やワールドビュープロジェクション行列のパラメータ（行列要素）も異なる。従って、これらの行列のパラメータを設定するコマンドは、カメラ依存パラメータ設定コマンドとして、右目用と左目用で異なる内容のコマンドが生成されてコマンドバッファＣＢＲ、ＣＢＬに書き込まれる。
【０１２１】
カメラの位置ベクトルは、例えばオブジェクトのサーフェスの鏡面反射処理などを行う場合に使用される。即ちフォンの照明モデル等では、反射ベクトルは、オブジェクトの法線ベクトルとカメラの位置ベクトルにより決定され、この反射ベクトルと光源ベクトルと鏡面反射指数（ハイライト係数）により、スペキュラ光の輝度が求められる。従って、このような処理を行うためにはカメラの位置ベクトルが必要であり、この位置ベクトルは右目用の仮想カメラと左目用の仮想カメラで異なる。従って、このカメラの位置ベクトルの設定コマンドは、カメラ依存パラメータ設定コマンドとして、右目用と左目用で異なる内容のコマンドが生成されてコマンドバッファＣＢＲ、ＣＢＬに書き込まれる。
【０１２２】
図８（Ｃ）のカメラ非依存パラメータとしては、ワールド行列のパラメータ、モーション用行列のパラメータ、ライトの位置ベクトル、環境色、スペキュラ色、フォグ色、頂点データ、或いはテクスチャデータなどを想定できる。
【０１２３】
ここでワールド行列はローカル座標系（モデル座標系）からワールド座標系（絶対座標系）への変換行列である。このワールド行列は、右目用、左目用の仮想カメラの視点位置や視線方向に無関係である。従って、ワールド行列のパラメータの設定コマンドは、カメラ非依存パラメータ設定コマンドとして、右目用と左目用で同じ内容のコマンドが生成されてコマンドバッファＣＢＲ、ＣＢＬに書き込まれる。
【０１２４】
モーション用行列のパラメータは、例えば、モデルオブジェクトのスケルトンを構成する骨の位置又は回転角度（親の骨に対する子の骨の相対的な方向）等を含むモーションデータに基づいて各フレーム毎に計算される。このモーション用行列のパラメータは、右目、左目の視点に依存しないパラメータであり、このパラメータの生成処理が重複して行われると、処理が無駄になる。この点、本実施形態の手法によれば、モーション用行列のパラメータの計算は、各フレーム毎に１回だけ実行され、それにより得られたパラメータの設定コマンドが、カメラ非依存パラメータ設定コマンドとして、右目用と左目用で同じ内容のコマンドが生成されてコマンドバッファＣＢＲ、ＣＢＬに書き込まれる。従って、処理負荷を大幅に軽減できる。
【０１２５】
ライトの位置ベクトル、環境色、スペキュラ色は、照明モデルを用いたライティング処理に用いられるパラメータである。またフォグ色はフォグの生成処理に用いられるパラメータである。これらのパラメータは、右目用、左目用の仮想カメラの視点位置や視線方向に無関係であるため、カメラ非依存パラメータ設定コマンドとして、右目用と左目用で同じ内容のコマンドが生成されてコマンドバッファＣＢＲ、ＣＢＬに書き込まれる。
【０１２６】
頂点データは、例えば法線、接線、頂点色、テクスチャ座標、頂点座標などである。テクスチャデータは、デカールテクスチャ、法線マップなどである。この頂点データ、テクスチャデータは、右目、左目の視点位置等に無関係であるため、カメラ非依存パラメータ設定コマンドとして、右目用と左目用で同じ内容のコマンドが生成されてコマンドバッファＣＢＲ、ＣＢＬに書き込まれる。
【０１２７】
２．４  コマンドの実行
次に図９（Ａ）、図９（Ｂ）、図１０を用いて、コマンド実行部１１８の動作について説明する。
【０１２８】
図９（Ａ）に示すようにコマンド実行部１１８は、右目用のコマンドバッファＣＢＲに書き込まれた右目用のコマンドＣＳＳＴ、ＣＣＤＲ、ＣＣＮＤ、ＣＳＥＸ等を、順次読み出して実行する。即ち図７等の手法でコマンド生成部１１０が生成してコマンドバッファＣＢＲに書き込んだコマンドを実行する。具体的には、コマンドＣＳＳＴにより、使用するシェーダを設定し、コマンドＣＣＤＲにより右目用のカメラ依存パラメータをシェーダに設定し、コマンドＣＣＮＤによりカメラ非依存パラメータをシェーダに設定する。そしてコマンドＣＳＥＸによりシェーダの実行を開始する。このようなコマンドＣＳＳＴ、ＣＣＤＲ、ＣＣＮＤ、ＣＳＥＸの実行により、図４（Ａ）に例示されるような右目用画像ＩＲが生成される。
【０１２９】
次に図９（Ｂ）に示すようにコマンド実行部１１８は、左目用のコマンドバッファＣＢＬに書き込まれた左目用のコマンドＣＳＳＴ、ＣＣＤＬ、ＣＣＮＤ、ＣＳＥＸ等を、順次読み出して実行する。即ち図７等の手法でコマンド生成部１１０が生成してコマンドバッファＣＢＬに書き込んだコマンドを実行する。具体的には、コマンドＣＳＳＴにより、使用するシェーダを設定し、コマンドＣＣＤＬにより左目用のカメラ依存パラメータをシェーダに設定し、コマンドＣＣＮＤによりカメラ非依存パラメータをシェーダに設定する。そしてコマンドＣＳＥＸによりシェーダの実行を開始する。このようなコマンドＣＳＳＴ、ＣＣＤＬ、ＣＣＮＤ、ＣＳＥＸの実行により、図４（Ｂ）に例示されるような左目用画像ＩＬが生成される。
【０１３０】
このような右目用コマンド、左目用コマンドの実行後に、図１０に示すようにコマンド実行部１１８は、共通のコマンドバッファＣＢＭに書き込まれた共通コマンドＣＳＹＮ、ＣＳＷ等を実行する。即ち図７等の手法でコマンド生成部１１０が生成してコマンドバッファＣＢＭに書き込んだコマンドを実行する。具体的には、図９（Ａ）、図９（Ｂ）で生成された右目用画像ＩＲ、左目用画像ＩＬを、コマンドＣＳＹＮにより合成して、多眼立体視画像ＩＳを生成して、例えば第１の描画バッファＤＢ１（第１、第２の描画バッファの一方のバッファ）に書き込む。そしてコマンドＣＳＷにより、第１の描画バッファＤＢ１をバックバッファからフロントバッファに切り替える。また第２の描画バッファＤＢ２（第１、第２の描画バッファの他方のバッファ）をフロントバッファからバックバッファに切り替える。これにより、表示装置の画面上に、図５に例示されるような多眼立体視画像ＩＳが表示されるようになる。
【０１３１】
なおコマンド実行部１１８は、右目用、左目用コマンドの実行前に、共通のコマンドバッファＣＢＭに書き込まれた共通コマンドを実行するようにしてもよい。この場合に実行される共通コマンドとしては、図８（Ａ）に例示したようなハードウェア制御コマンドや影生成処理用コマンドなどを想定できる。
【０１３２】
図９（Ａ）〜図１０に示すようなシーケンスでコマンドを実行すれば、コマンド生成部１１０により同じタイミング（ほぼ同じタイミング）で書き込まれた右目用、左目用のコマンドを、別のタイミングで実行して、右目用画像ＩＲ、左目用画像ＩＬを生成することが可能になる。また右目用、左目用コマンドの実行後に、必要なハードウェア制御等を適正に実行できるようになる。
【０１３３】
２．５  ジャンプ処理
本実施形態では図９（Ａ）〜図１０に示すようなシーケンスのコマンド実行を実現するために、ジャンプコマンドを用意して、コマンドバッファＣＢＲ、ＣＢＬ等に書き込んでいる。
【０１３４】
例えば図１１に示すようにコマンド生成部１１０は、右目用（第１の視点用）のコマンドバッファＣＢＲから左目用（第２の視点用）のコマンドバッファＣＢＬに対して、コマンド実行部１１８の処理をジャンプさせるためのコマンドＪＰＲＬを、コマンドバッファＣＢＲに書き込む。具体的には、右目用画像の生成に必要なコマンドＣＳＳＴ、ＣＣＤＲ、ＣＣＮＤ、ＣＳＥＸ等を書き込んだ後、最後にジャンプコマンドＪＰＲＬをコマンドバッファＣＢＲに書き込む。
【０１３５】
またコマンド生成部１１０は、左目用のコマンドバッファＣＢＬから共通のコマンドバッファＣＢＭに対して、コマンド実行部１１８の処理をジャンプさせるためのコマンドＪＰＬＭを、コマンドバッファＣＢＬに書き込む。具体的には、左目用画像の生成に必要なコマンドＣＳＳＴ、ＣＣＤＬ、ＣＣＮＤ、ＣＳＥＸ等を書き込んだ後、最後にジャンプコマンドＪＰＬＭをコマンドバッファＣＢＬに書き込む。
【０１３６】
図１２のようにすれば、コマンド実行部１１８は、右目用のコマンドＣＳＳＴ、ＣＣＤＲ、ＣＣＮＤ、ＣＳＥＸ等をコマンドバッファＣＢＲから読み出して実行した後に、ジャンプコマンドＪＰＲＬを実行することで、コマンドバッファＣＢＬの例えば先頭アドレスにジャンプする。そしてコマンドバッファＣＢＬのコマンドの読み出しを開始する。
【０１３７】
次にコマンド実行部１１８は、左目用のコマンドＣＳＳＴ、ＣＣＤＬ、ＣＣＮＤ、ＣＳＥＸ等をコマンドバッファＣＢＬから読み出して実行した後に、ジャンプコマンドＪＰＬＭを実行することで、コマンドバッファＣＢＭの例えば先頭アドレスにジャンプする。そして、コマンドバッファＣＢＭのコマンドの読み出しを開始する。次に、コマンド実行部１１８は、コマンドバッファＣＢＭのコマンドＣＳＹＮ、ＣＳＷを実行する。
【０１３８】
図１１の本実施形態のジャンプ手法によれば、コマンド生成部１１０がジャンプコマンドＪＰＲＬ、ＪＰＬＭを生成してコマンドバッファＣＢＲ、ＣＢＬに書き込むだけで、図９（Ａ）〜図１０で説明したようなシーケンスのコマンド実行を実現できるため、処理の簡素化、効率化を図れる。
【０１３９】
なお図１２に示すようにコマンド生成部１１０は、共通のコマンドバッファＣＢＭから右目用のコマンドバッファＣＢＲに対して、コマンド実行部１１８の処理をジャンプさせるためのコマンドＪＰＭＲを、共通コマンドバッファＣＢＭに書き込むようにしてもよい。具体的には、右目用画像、左目画像の生成前に実行する必要がある共通コマンドＣＨＣＮ、ＣＳＨＡをコマンドバッファＣＢＭに書き込んだ後に、ジャンプコマンドＪＰＭＲをコマンドバッファＣＢＭに書き込む。
【０１４０】
このようにすれば、コマンド実行部１１８は、共通コマンドＣＨＣＮ、ＣＳＨＡをコマンドバッファＣＢＭから読み出して実行した後に、ジャンプコマンドＪＰＭＲを実行することで、コマンドバッファＣＢＲの例えば先頭アドレスにジャンプする。そしてコマンドバッファＣＢＲのコマンドの読み出しを開始して、コマンドＣＳＳＴ、ＣＣＤＲ、ＣＣＮＤ、ＣＳＥＸ等を実行する。
【０１４１】
図１２の手法によれば、ジャンプコマンドＪＰＭＲを生成してコマンドバッファＣＢＭに書き込むだけで、右目用画像、左目用画像の生成前に、ハードウェア制御コマンドなどのコマンドを実行できるようになり、効率的なコマンド実行のシーケンス制御を簡素な処理で実現できる。
【０１４２】
２．６  カリング処理
本実施形態では、多眼立体視の右目（第１の視点）と左目（第２の視点）とで共通のカリング処理を行うようにしている。このカリング処理は、いわゆるハードウェアによる裏面ポリゴン等のカリング処理ではなく、その前段階に行うソフトウェアによるオブジェクト（モデルオブジェクト）のカリング処理（削除処理、クリッピング処理）である。
【０１４３】
例えば図１３において、右目用仮想カメラＶＣＲのビューボリュームＶＶＲ内に存在しないオブジェクトは、右目用画像の生成に不要なオブジェクトである。また左目用仮想カメラＶＣＬのビューボリュームＶＶＬ内に存在しないオブジェクトは、左目用画像の生成に不要なオブジェクトである。
【０１４４】
この場合に比較例の手法として、例えば右目用画像の生成処理の際に、右目用のビューボリュームＶＶＲ内に存在し得ないオブジェクトをオブジェクトデータのオブジェクトリストから削除すると共に、左目用画像の生成処理の際に、左目用のビューボリュームＶＶＬ内に存在し得ないオブジェクトをオブジェクトリストから削除する手法も考えられる。
【０１４５】
しかしながら、この比較例の手法では、ソフトウェアによるオブジェクトのカリング処理を、２回行う必要があり、処理に無駄があった。特に、オブジェクト空間内に配置されるオブジェクトの数が多い場合には、この２回のカリング処理の負荷は非常に重い。従って、比較例の手法を採用すると、１フレームに行う必要がある他の処理を圧迫してしまう。
【０１４６】
この点、図１３のカリング手法では、多眼立体視の右目と左目とで共通のカリング処理を行っている。具体的には、右目用、左目用に共通のカリング処理用ボリュームＡＲＣＬ（非カリング範囲）を設定する。このカリング処理用ボリュームＡＲＣＬは、右目用のビューボリュームＶＶＲ及び左目用のビューボリュームＶＶＬを内包するものである。そして、共通のカリング処理の際には、このカリング処理用ボリュームＡＲＣＬ内に存在し得ないオブジェクトを削除する。
【０１４７】
そしてコマンド生成部１１０は、このような共通のカリング処理を行うことで取得される頂点データの設定コマンドを、同じ内容の右目用、左目用コマンドとして生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む。具体的には、カリング処理用ボリュームＡＲＣＬ内に存在し得ないオブジェクトを削除したオブジェクトリストに基づいて、頂点データを生成する。そして、生成された頂点データを設定するためのコマンドであるカメラ非依存パラメータ設定コマンドＣＣＮＤを、図７に示すようにコマンドバッファＣＢＲ、ＣＢＬに書き込む。
【０１４８】
このようにすれば、図１３のカリング処理を、右目用、左目用に重複して行う必要がなくなり、１回で済むようになるため、処理負荷を軽減できる。特に、オブジェクト空間に設定されるオブジェクトの数が多い場合には、比較例の手法に比べて大幅に処理負荷を軽減できる。
【０１４９】
なお図１１のカリング処理用ボリュームＡＲＣＬとして、例えば右目用、左目用ではない元の仮想カメラのカリング処理用ボリュームを使用してもよい。例えば立体視ではない既存のゲームプログラムが存在する場合には、そのゲームプログラムで使用される元の仮想カメラの視点位置や視線方向等のカメラ情報に基づいて、右目用、左目用の仮想カメラＶＣＲ、ＶＣＬのカメラ情報を設定する。このようにすれば、これまでのゲームプログラムの資産を有効活用して、立体視のゲームを開発できるため、開発期間を短縮できる。そして、この場合に元のゲームプログラムで使用されていた仮想カメラのカリング処理用ボリュームが、十分に広い範囲をカバーしており、右目用、左目用のビューボリュームＶＶＲ、ＶＶＬを内包するものである場合には、その元のカリング処理用ボリュームを、右目用、左目用の共通のカリング処理用ボリュームＡＲＣＬとして使用すればよい。
【０１５０】
なお図１３のように共通のカリング処理を行う手法では、図６〜図１２等で説明したコマンドバッファＣＢＲ、ＣＢＬ、ＣＢＭを使用せずにコマンドの生成、実行処理を行うようにしてもよい。
【０１５１】
２．７  立体視画像の生成手法
次に、本実施形態の立体視画像の生成手法の一例について説明する。但し、本実施形態の立体視画像の生成手法は以下に説明する手法に限定されるものではない。
【０１５２】
図１４では、バッファＴＢに第１、第２の領域ＡＲ１、ＡＲ２を確保している。そして図４（Ａ）に例示されるような右目用画像ＩＲ（広義には第１の視点画像）を生成し、この右目用画像ＩＲを高さ方向（縦方向）において圧縮（縮小）して、バッファＴＢの第１の領域ＡＲ１に書き込む。また図４（Ｂ）に例示されるような左目用画像ＩＬ（広義には第２の視点画像）を生成し、この左目用画像ＩＬを高さ方向において圧縮して、バッファＴＢの第２の領域ＡＲ２に書き込む。
【０１５３】
そして、このバッファＴＢから画像を読み出すことで、図５に例示されるような多眼立体視画像ＩＳを生成（合成）する。即ち領域ＡＲ１の右目用のピクセル画像と領域ＡＲ２の左目用のピクセル画像とが、ライン毎（走査ライン毎、ビットマップライン毎）に交互に表示される多眼立体視画像ＩＳを生成する。
【０１５４】
具体的には右目用画像ＩＲ、左目用画像ＩＬは、幅がＷピクセル、高さがＨピクセルの画像になっている。フルハイビジョン対応の場合には例えばＷ＝１９２０、Ｈ＝１０８０になる。一方、領域ＡＲ１、ＡＲ２は、幅がＷピクセル、高さがＨ／２ピクセルの領域になっている。
【０１５５】
バッファＴＢへの画像の書き込み時においては、バッファＴＢのメモリピッチ（ラインの先頭アドレスから次のラインの先頭アドレスまでのバイト単位の距離）は２Ｎバイトに設定される。例えば１ピクセル（Ｒ、Ｇ、Ｂ、α）が４バイトである場合には、フルハイビジョン対応では例えば２Ｎバイト＝２×４×２０４８バイトになる。そして図１４では、幅がＷピクセル、高さがＨピクセルである右目用画像ＩＲが、高さ方向において１／２に圧縮されて、領域ＡＲ１に書き込まれ、幅がＷピクセルであり高さがＨピクセルである左目用画像ＩＬが、高さ方向において１／２に圧縮されて、領域ＡＲ２に書き込まれる。
【０１５６】
一方、バッファＴＢからの画像の読み出し時においては、バッファＴＢのメモリピッチはＮバイトに設定される。そしてこのように設定されたバッファＴＢから右目用画像ＩＲ、左目用画像ＩＬを読み出すことで、図５に例示されるような多眼立体視画像ＩＳが合成される。
【０１５７】
具体的には、書き込み時に２Ｎバイトに設定されたメモリピッチ（ピッチサイズ）を、読み出し時にＮバイトに設定することで、領域ＡＲ１の第１のラインの右目用ピクセル画像が、多眼立体視画像ＩＳの第１のラインに表示され、領域ＡＲ２の第１のラインの左目用ピクセル画像が、多眼立体視画像ＩＳの第２のラインに表示されるようになる。また領域ＡＲ１の第２のラインの右目用ピクセル画像が、多眼立体視画像ＩＳの第３のラインに表示され、領域ＡＲ２の第２のラインの左目用ピクセル画像が、多眼立体視画像ＩＳの第４のラインに表示されるようになる。即ち右目用ピクセル画像と左目用ピクセル画像がライン毎に交互に表示されるようになる。
【０１５８】
２．８  描画バッファの利用
レンダリングにより生成された右目用画像ＩＲ、左目用画像ＩＬは、直接にバッファＴＢの領域ＡＲ１、ＡＲ２に描画してもよいが、図１５（Ａ）、図１５（Ｂ）に示すように、描画バッファＤＢに描画した後に、領域ＡＲ１、ＡＲ２にコピーするようにしてもよい。
【０１５９】
即ち図１５（Ａ）では、右目用画像ＩＲを描画バッファＤＢに描画し、描画された右目用画像ＩＲを高さ方向において圧縮して、テンポラリバッファ（ワークバッファ）として機能するバッファＴＢの領域ＡＲ１にコピーする。また図１５（Ｂ）では、左目用画像ＩＬを描画バッファＤＢに描画し、描画された左目用画像ＩＬを高さ方向において圧縮して、バッファＴＢの領域ＡＲ２にコピーする。
【０１６０】
このようにすれば、高さ方向での画像の圧縮（平均化、間引き、縮小）は、描画バッファＤＢから領域ＡＲ１、ＡＲ２へのコピー処理の際に行えばよく、画像圧縮と右目用・左目用画像の生成を同時に行わなくても済むため、処理の簡素化、効率化を図れる。
【０１６１】
この場合に図１５（Ａ）、図１５（Ｂ）のコピー処理は、例えばテクスチャマッピングを利用して実現できる。
【０１６２】
具体的には図１６（Ａ）に示すように、描画バッファＤＢに描画された右目用画像ＩＲを、領域ＡＲ１のサイズのポリゴンＰＬ（画面に表示されない仮想的なプリミティブ面）にテクスチャマッピングする。この場合に、テクスチャマッピングは、ポイントサンプリング方式ではなく例えばテクセル補間方式（狭義にはバイリニアフィルタモード）に設定する。そしてこのように右目用画像ＩＲがテクスチャとしてマッピングされたポリゴンＰＬを領域ＡＲ１に描画することで、図１５（Ａ）のコピー処理を実現する。
【０１６３】
また図１６（Ｂ）に示すように、描画バッファＤＢに描画された左目用画像ＩＬを、領域ＡＲ２のサイズのポリゴンＰＬにテクスチャマッピングする。この場合に、テクスチャマッピングはテクセル補間方式に設定する。また高さ方向にテクスチャ座標（ＵＶ空間の例えばＶ座標）を例えば１テクセル分だけシフトしてテクスチャマッピングを行う。そしてこのように左目用画像ＩＬがテクスチャとしてマッピングされたポリゴンＰＬを領域ＡＲ２に描画することで、図１５（Ｂ）のコピー処理を実現する。
【０１６４】
図１６（Ａ）、図１６（Ｂ）のようにテクスチャマッピングによりコピー処理を実現すれば、ポリゴンＰＬのサイズの設定だけで高さ方向の画像圧縮を実現できるため、処理の簡素化、効率化を図れる。また、後述するような隣り合うラインのピクセル画像の平均化処理を、テクスチャマッピングのテクセル補間方式（バイリニアフィルタ）を利用して実現できるため、更に処理を効率化できる。
【０１６５】
なお図１５（Ａ）、図１５（Ｂ）のように右目用画像ＩＲ、左目用画像ＩＬが領域ＡＲ１、ＡＲ２にコピーされた後に、バッファＴＢの画像は描画バッファＤＢに書き戻される。具体的にはバッファＴＢのメモリピッチを２ＮバイトからＮバイトに変更して、バッファＴＢの画像を描画バッファＤＢに書き戻し、図５に例示されるような多眼立体視画像ＩＳを生成する。
【０１６６】
このようにすれば、描画バッファＤＢを利用した既存の描画アルゴリズムに対して、テンポラリバッファであるバッファＴＢやコピー・書き戻しアルゴリズム等を追加するだけで、右目用画像ＩＲ、左目用画像ＩＬのテンポラリバッファＴＢへのコピー処理を実現して、多眼立体視画像ＩＳを生成できるようになる。
【０１６７】
なお描画バッファＤＢへの画像の書き戻し（ライトバック）は、図１６（Ａ）、図１６（Ｂ）と同様にテクスチャマッピングを利用した手法により実現できる。具体的には、バッファＴＢのピッチサイズを２ＮバイトからＮバイトに変更する。そしてバッファＴＢの画像（ＴＢの全体の画像）を、描画バッファＤＢ（ＤＢ１又はＤＢ２）のサイズのポリゴンにテクスチャマッピングする。そして、バッファＴＢの画像がテクスチャマッピングされたポリゴンを描画バッファＤＢに描画することで、バッファＴＢの画像を描画バッファＤＢに書き戻す。
【０１６８】
２．９  ダブルバッファ方式
描画バッファＤＢとしてダブルバッファ方式（或いはトリプルバッファ等の複数バッファ方式）を採用する場合には、図１７（Ａ）、図１７（Ｂ）に示す手法を採用することが望ましい。
【０１６９】
例えば図１７（Ａ）では、描画バッファＤＢとして、第１、第２の描画バッファＤＢ１、ＤＢ２が用意（確保）されている。また図１７（Ａ）の期間では、第１の描画バッファＤＢ１がバックバッファ（描画用バッファ）に設定され、第２の描画バッファＤＢ２がフロントバッファ（表示用バッファ）に設定されている。なおトリプルバッファ等の複数バッファ方式では、第１、第２の描画バッファＤＢ１、ＤＢ２を含む３個以上の描画バッファを用意（確保）すればよい。
【０１７０】
そして図１７（Ａ）では、描画バッファＤＢ１（広義には、第１、第２の描画バッファの一方の描画バッファ）からバッファＴＢに対して、図１５（Ａ）、図１５（Ｂ）で説明した画像のコピー処理が行われる。またバッファＴＢから描画バッファＤＢ１への画像の書き戻し処理が行われる。これにより、描画バッファＤＢ１には、次のフレームに表示すべき多眼立体視画像ＩＳが生成される。
【０１７１】
このように多眼立体視画像ＩＳが描画バッファＤＢ１に生成された後に、図１７（Ｂ）に示すように、描画バッファＤＢ１をバックバッファからフロントバッファに切り替える（フリップする）。これにより、描画バッファＤＢ１の多眼立体視画像ＩＳが表示装置の画面に表示される。またこの時に、描画バッファＤＢ２（広義には、一方とは異なる他方の描画バッファ）は、フロントバッファからバックバッファに切り替えられる。
【０１７２】
そして図１７（Ｂ）では、描画バッファＤＢ２からバッファＴＢに対して、図１５（Ａ）、図１５（Ｂ）で説明した画像のコピー処理が行われる。またバッファＴＢから描画バッファＤＢ２への画像の書き戻し処理が行われる。これにより、描画バッファＤＢ２には、次のフレームに表示すべき多眼立体視画像ＩＳが生成される。
【０１７３】
以上の図１７（Ａ）、図１７（Ｂ）の手法によれば、ダブルバッファ方式の既存の描画アルゴリズムに対して、テンポラリバッファであるバッファＴＢやコピー・書き戻しアルゴリズム等を追加するだけで、ダブルバッファ方式と本実施形態による多眼立体視画像ＩＳの生成手法を両立できるようになる。
【０１７４】
なお図１４に示すように高さ方向（走査ラインの並ぶ方向）での圧縮処理を行う場合には、隣り合うラインのピクセル画像の平均化処理（補間処理）を行うことが望ましい。
【０１７５】
具体的には、右目用画像ＩＲ（第１の視点画像）を高さ方向において圧縮して領域ＡＲ１に書き込む際に、右目用画像の第ｉ（ｉは自然数）のラインのピクセル画像と次の第ｉ＋１のラインのピクセル画像の平均化処理を行う。同様に、左目用画像ＩＬ（第２の視点画像）を高さ方向において圧縮して領域ＡＲ２に書き込む際に、左目用画像の第ｉのラインのピクセル画像と次の第ｉ＋１のラインのピクセル画像の平均化処理を行う。
【０１７６】
例えば、右目用画像ＩＲの第１、第２、第３、第４のラインのピクセル画像（ライン中の特定ピクセルのＲＧＢ画像）をＲ１、Ｒ２、Ｒ３、Ｒ４とする。この場合には、領域ＡＲ１の第１のラインのピクセル画像は、Ｒ１とＲ２の平均化処理により（Ｒ１＋Ｒ２）／２になり、第２のラインのピクセル画像は、Ｒ３とＲ４の平均化処理により（Ｒ３＋Ｒ４）／２になる。右目用画像ＩＲの他のラインや、左目用画像ＩＬについても同様である。
【０１７７】
このような平均化処理を行えば、多眼立体視画像において右目用ピクセル画像と左目用ピクセル画像がライン毎に交互に表示される場合にも、例えばハイビジョン等に対応した高精細な解像度を維持した立体視画像の表示が可能になる。また、ジャギーやエイリアシングの発生を低減でき、高品位な立体視画像を生成できる。
【０１７８】
なおこのような平均化処理は、図１６（Ａ）、図１６（Ｂ）で説明したように、テクスチャのマッピングモードをテクセル補間方式（バイリニアフィルタモード）に設定して、高さ方向にテクスチャを圧縮したテクスチャマッピングを行うことで、自動的に実行できる。具体的には、右目用画像ＩＲ、左目用画像ＩＬを、領域ＡＲ１、ＡＲ２のサイズのポリゴンにテクセル補間方式でテクスチャマッピングして領域ＡＲ１、ＡＲ２に描画することで、第ｉのラインのピクセル画像と第ｉ＋１のラインのピクセル画像の平均化処理を実現する。
【０１７９】
なお平均化処理を行う場合には、多眼立体視画像ＩＳの第ｍ（ｍは自然数）のラインについては、右目用画像ＩＲ（第１の視点画像）の第ｊ（ｊは自然数）のラインのピクセル画像と次の第ｊ＋１のラインのピクセル画像の平均化を行うことが望ましい。また多眼立体視画像ＩＳの第ｍ＋１のラインについては、左目用画像ＩＬ（第２の視点画像）の第ｊ＋１のラインのピクセル画像と次の第ｊ＋２のラインのピクセル画像の平均化を行うことが望ましい。これは図１６（Ｂ）で説明したテクスチャ座標の１テクセル分のシフトにより実現できる。
【０１８０】
このような手法を採用すれば、多眼立体視画像ＩＳにおいて適正な位置に適正な右目用ピクセル画像又は左目用ピクセル画像が表示されるようになるため、ジャギーやアンチエイリアシングを効果的に低減できる。
【０１８１】
２．１０  詳細な処理例
次に本実施形態の詳細な処理例を図１８〜図２０のフローチャートを用いて説明する。
【０１８２】
まず、右目用（第１の視点用）のコマンドバッファＣＢＲ、左目用（第２の視点用）のコマンドバッファＣＢＬ、共通のコマンドバッファＣＢＭを記憶部１７０に確保する（ステップＳ２１）。
【０１８３】
次に、各種設定のためのハードウェア制御コマンド（図８（Ａ）参照）を生成して、コマンドバッファＣＢＭに書き込む（ステップＳ２２）。また、必要であれば、影生成処理用コマンドを生成して、コマンドバッファＣＢＭに書き込む（ステップＳ２３）。そして図１２で説明したように、コマンドバッファＣＢＲへのジャンプコマンドＪＰＭＲを生成して、コマンドバッファＣＢＭに書き込む（ステップＳ２４）。
【０１８４】
次に、背景の描画処理を行う（ステップＳ２５）。具体的には、図７で説明したように背景を描画するためのシェーダの設定コマンドＣＳＳＴを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む（ステップＳ２６）。次に、図８（Ｂ）に示すようなカメラ依存（右目用仮想カメラ）の背景用パラメータをシェーダに設定するコマンドＣＣＤＲを生成して、コマンドバッファＣＢＲに書き込む（ステップＳ２７）。また、カメラ依存（左目用仮想カメラ）の背景用パラメータをシェーダに設定するコマンドＣＣＤＬを生成して、コマンドバッファＣＢＬに書き込む（ステップＳ２８）。
【０１８５】
次に、図８（Ｃ）に示すようなカメラ非依存の背景用パラメータをシェーダに設定するコマンドＣＣＮＤを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む（ステップＳ２９）。最後に、シェーダを実行するためのコマンドＣＳＥＸを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む（ステップＳ３０）。
【０１８６】
次に、車（モデルオブジェクト）の描画処理を行う（ステップＳ３１）。具体的には、車を描画するためのシェーダの設定コマンドＣＳＳＴを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む（ステップＳ３２）。次に、カメラ依存（右目用仮想カメラ）の車用パラメータをシェーダに設定するコマンドＣＣＤＲを生成して、コマンドバッファＣＢＲに書き込む（ステップＳ３３）。またカメラ依存（左目用仮想カメラ）の車用パラメータをシェーダに設定するコマンドＣＣＤＬを生成して、コマンドバッファＣＢＬに書き込む（ステップＳ３４）。
【０１８７】
次に、カメラ非依存の車用パラメータをシェーダに設定するコマンドＣＣＮＤを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む（ステップＳ３５）。最後に、シェーダを実行するためのコマンドＣＳＥＸを生成して、コマンドバッファＣＢＲ、ＣＢＬに書き込む（ステップＳ３６）。
【０１８８】
次に、必要であれば、その他の表示物（ＺＤパネル等）の描画処理を行う（ステップＳ３７）。
【０１８９】
次に、図１５（Ａ）で説明したように、描画バッファＤＢ（ＤＢ１又はＤＢ２）からバッファＴＢの第１の領域ＡＲ１に右目用画像ＩＲをコピーするコマンドを生成して、コマンドバッファＣＢＲに書き込む（ステップＳ３８）。また図１５（Ｂ）で説明したように、描画バッファＤＢ（ＤＢ１又はＤＢ２）からバッファＴＢの第２の領域ＡＲ２に左目用画像ＩＬをコピーするコマンドを生成して、コマンドバッファＣＢＬに書き込む（ステップＳ３９）。
【０１９０】
次に、図１１で説明したように、コマンドバッファＣＢＬへのジャンプコマンドＪＰＲＬを生成して、コマンドバッファＣＢＲに書き込む（ステップＳ４０）。またコマンドバッファＣＢＭへのジャンプコマンドＪＰＬＭを生成して、コマンドバッファＣＢＬに書き込む（ステップＳ４１）。
【０１９１】
次に、図１７（Ａ）、図１７（Ｂ）で説明したように、バッファＴＢから描画バッファＤＢ（ＤＢ１又はＤＢ２）に画像を書き戻すコマンドを生成して、コマンドバッファＣＢＭに書き込む（ステップＳ４２）。そして、ＶＳＹＮＣ（フレーム更新タイミング）をウエイトするコマンドを生成して、コマンドバッファＣＢＭに書き込む（ステップＳ４３）。更に、バックバッファとフロントバッファの切り替えコマンドを生成して、コマンドバッファＣＢＭに書き込む（ステップＳ４４）。最後に、バッファ切り替えをウエイトするコマンドを生成して、コマンドバッファＣＢＭに書き込む（ステップＳ４５）。
【０１９２】
３．ハードウェア構成
図２１（Ａ）に本実施形態を実現できるハードウェアの構成例を示す。
【０１９３】
ＣＰＵ９００（メインプロセッサ）は、複数のＣＰＵコア１、ＣＰＵコア２、ＣＰＵコア３を含むマルチコアプロセッサである。またＣＰＵ９００は図示しないキャッシュメモリを含む。ＣＰＵコア１、２、３の各々にはベクタ演算器等が設けられている。そしてＣＰＵコア１、２、３の各々は、例えば２つのＨ／Ｗスレッド処理をコンテクストスイッチをすることなしに並列実行でき、マルチスレッド機能がハードウェアでサポートされている。そして３つのＣＰＵコア１、２、３の合計で、６つのＨ／Ｗスレッド処理を並列実行できる。
【０１９４】
ＧＰＵ９１０（描画プロセッサ）は、頂点処理やピクセル処理を行って、描画（レンダリング）処理を実現する。具体的には、シェーダプログラムに従って、頂点データの作成・変更やピクセル（フラグメント）の描画色の決定を行う。１フレーム分の画像がＶＲＡＭ９２０（フレームバッファ）に書き込まれると、その画像はビデオ出力を介してＴＶなどのディスプレイに表示される。なおメインメモリ９３０はＣＰＵ９００やＧＰＵ９１０のワークメモリとして機能する。またＧＰＵ９１０では、複数の頂点スレッド、複数のピクセルスレッドが並列実行され、描画処理のマルチスレッド機能がハードウェアでサポートされている。またＧＰＵ９１０にはハードウェアのテッセレータも備えられている。またＧＰＵ９１０は、頂点シェーダとピクセルシェーダとがハードウェア的に区別されていないユニファイド・シェーダ・タイプとなっている。
【０１９５】
ブリッジ回路９４０（サウスブリッジ）は、システム内部の情報流通を制御する回路であり、ＵＳＢコントローラ（シリアルインターフェース）、ネットワークの通信コントローラ、ＩＤＥコントローラ、或いはＤＭＡコントローラなどのコントローラを内蔵する。そしてこのブリッジ回路９４０により、ゲームコントローラ９４２、メモリーカード９４４、ＨＤＤ９４６、ＤＶＤドライブ９４８との間のインターフェース機能が実現される。
【０１９６】
なお本実施形態を実現できるハードウェア構成は図２１（Ａ）に限定されず、例えば図２１（Ｂ）のような構成であってもよい。
【０１９７】
図２１（Ｂ）ではＣＰＵ９０２が、プロセッサエレメントＰＰと８つのプロセッサエレメントＰＥ１〜ＰＥ８を含む。プロセッサエレメントＰＰは汎用的なプロセッサコアであり、プロセッサエレメントＰＥ１〜ＰＥ８は比較的シンプルな構成のプロセッサコアである。そしてプロセッサエレメントＰＰとプロセッサエレメントＰＥ１〜ＰＥ８のアーキテクチャは異なっており、プロセッサエレメントＰＥ１〜ＰＥ８は、複数のデータに対して１命令で同じ処理を同時にできるＳＩＭＤ型のプロセッサコアとなっている。これによりストリーミング処理などのマルチメディア処理を効率的に実行できる。プロセッサエレメントＰＰは、２つのＨ／Ｗスレッド処理を並列実行でき、プロセッサエレメントＰＥ１〜ＰＥ８の各々は、１つのＨ／Ｗスレッド処理を実行できる。従って、ＣＰＵ９０２では、合計で１０個のＨ／Ｗスレッド処理の並列実行が可能になる。
【０１９８】
図２１（Ｂ）では、ＧＰＵ９１２とＣＰＵ９０２の連携が密になっており、ＧＰＵ９１２は、ＣＰＵ９０２側のメインメモリ９３０に直接にレンダリング処理を行うことができる。また例えばＣＰＵ９０２がジオメトリ処理を行って、頂点データを転送したり、ＧＰＵ９１２からＣＰＵ９０２にデータを戻すことも容易にできる。またＣＰＵ９０２が、レンダリングのプリプロセッシング処理やポストプロセッシング処理を行うことも容易であり、テッセレーション（平面分割）やドットフィルをＣＰＵ９０２が実行できる。例えば抽象度の高い処理はＣＰＵ９０２が行い、抽象度が低い細かな処理はＧＰＵ９１２が行うというような役割分担が可能である。
【０１９９】
なお本実施形態の各部の処理をハードウェアとプログラムにより実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアであるプロセッサ（ＣＰＵ、ＧＰＵ）に処理を指示すると共に、必要であればデータを渡す。そして、プロセッサは、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０２００】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（第１の視点画像、第２の視点画像、第１の視点、第２の視点等）と共に記載された用語（右目用画像、左目用画像、右目、左目等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【０２０１】
また、コマンドの生成・書き込み処理、コマンドの実行処理、第１、第２の視点画像の描画処理等も、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【０２０２】
【図１】本実施形態の画像生成システムのブロック図の例。
【図２】本実施形態が採用する立体視方式の一例を説明する図。
【図３】本実施形態が採用する立体視方式の一例を説明する図。
【図４】図４（Ａ）、図４（Ｂ）は本実施形態により生成された右目用画像、左目用画像の例。
【図５】本実施形態により生成された多眼立体視画像の例。
【図６】本実施形態のコマンドの生成・実行手法の説明図。
【図７】コマンドの生成、書き込み処理の説明図。
【図８】図８（Ａ）〜図８（Ｃ）は共通コマンド、カメラ依存パラメータ、カメラ非依存パラメータの具体例。
【図９】図９（Ａ）、図９（Ｂ）はコマンドの実行処理の説明図。
【図１０】コマンドの実行処理の説明図。
【図１１】ジャンプコマンドを用いる手法の説明図。
【図１２】ジャンプコマンドを用いる手法の説明図。
【図１３】右目用、左目用に共通に行うカリング処理の説明図。
【図１４】多眼立体視画像生成手法の一例の説明図。
【図１５】図１５（Ａ）、図１５（Ｂ）は右目用画像、左目用画像のコピー処理の説明図。
【図１６】図１６（Ａ）、図１６（Ｂ）はテクスチャマッピングを利用したコピー処理の説明図。
【図１７】図１７（Ａ）、図１７（Ｂ）はダブルバッファ方式を採用した場合の本実施形態の手法の説明図。
【図１８】本実施形態の詳細な処理を説明するフローチャート。
【図１９】本実施形態の詳細な処理を説明するフローチャート。
【図２０】本実施形態の詳細な処理を説明するフローチャート。
【図２１】図２１（Ａ）、図２１（Ｂ）はハードウェア構成例。
【符号の説明】
【０２０３】
ＣＢＲ  第１の視点用のコマンドバッファ、ＣＢＬ  第２の視点用のコマンドバッファ、
ＣＢＭ  共通コマンドバッファ、
ＤＢ  描画バッファ、ＤＢ１、ＤＢ２  第１、第２の描画バッファ、
ＴＢ  バッファ、ＡＲ１、ＡＲ２  第１、第２の領域、ＭＳ  モデルデータ記憶部、
ＴＳ  テクスチャ記憶部、ＭＴＳ  モーションデータ記憶部、
１００  処理部、１０２  ゲーム演算部、１０４  オブジェクト空間設定部、
１０５  カリング処理部、１０６  移動体演算部、１０８  仮想カメラ制御部、
１１０  コマンド生成部、１１８  コマンド実行部、１２０  描画部、
１２２  ライティング処理部、１２４  テクスチャマッピング部、
１３０  音生成部、１６０  操作部、１７０  記憶部、１８０  情報記憶媒体、
１９０  表示部、１９２  音出力部、１９４  補助記憶装置、１９６  通信部
【図１】
0004982862.tif 000002
【図２】
0004982862.tif 000003
【図３】
0004982862.tif 000004
【図４】
0004982862.tif 000005
【図５】
0004982862.tif 000006
【図６】
0004982862.tif 000007
【図７】
0004982862.tif 000008
【図８】
0004982862.tif 000009
【図９】
0004982862.tif 000010
【図１０】
0004982862.tif 000011
【図１１】
0004982862.tif 000012
【図１２】
0004982862.tif 000013
【図１３】
0004982862.tif 000014
【図１４】
0004982862.tif 000015
【図１５】
0004982862.tif 000016
【図１６】
0004982862.tif 000017
【図１７】
0004982862.tif 000018
【図１８】
0004982862.tif 000019
【図１９】
0004982862.tif 000020
【図２０】
0004982862.tif 000021
【図２１】
0004982862.tif 000022