(57)【要約】【課題】パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することが可能なプログラム、情報記憶媒体及び画像生成システムを提供すること。【解決手段】所与のパーティクルをオブジェクト空間の所与の位置に生成し、仮想カメラとパーティクルとの仮想カメラの視線方向の距離情報を算出し、パーティクルの位置に応じたぼかし量を計算し、距離情報に基づいてパーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、ぼかし対象範囲内にある場合はぼかし量に応じたパーティクルのぼかし画像を生成する。【選択図】図７
2011209865.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
所与のパーティクルを前記オブジェクト空間の所与の位置に発生させるパーティクル発生部と、
前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離情報を算出する距離情報算出部と、
前記パーティクルの位置に応じたぼかし量を計算するぼかし量計算部と、
前記距離情報に基づいて前記パーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、前記ぼかし対象範囲内にある場合は前記ぼかし量に応じた前記パーティクルのぼかし画像を生成するぼかし画像生成部としてコンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
前記ぼかし量に応じて前記パーティクルを拡大又は縮小するパーティクルサイズ変更部としてさらにコンピュータを機能させ、
前記ぼかし画像生成部は、
拡大又は縮小した後の前記パーティクルに対して、前記ぼかし量に応じた前記ぼかし画像を生成することを特徴とするプログラム。
【請求項３】
請求項１又は２において、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離に応じたぼかし量を計算することを特徴とするプログラム。
【請求項４】
請求項１又は２において、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの直線距離に応じたぼかし量を計算することを特徴とするプログラム。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記コンピュータがメインプロセッサと描画プロセッサを含み、
前記距離情報算出部、前記ぼかし画像生成部及び前記パーティクルサイズ変更部の各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するぼかし処理割り当て制御部としてさらにコンピュータを機能させることを特徴とするプログラム。
【請求項６】
請求項５において、
前記ぼかし処理割り当て制御部は、
前記各処理の現在の割り当て状況と、前記メインプロセッサと前記描画プロセッサのそれぞれの現在の処理負荷と、に基づいて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御することを特徴とするプログラム。
【請求項７】
請求項５において、
前記ぼかし処理割り当て制御部は、
描画対象となる前記パーティクルの数又は総面積に応じて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御することを特徴とするプログラム。
【請求項８】
コンピュータにより読み取り可能な情報記憶媒体であって、請求項１乃至７のいずれかに記載のプログラムを記憶していることを特徴とする情報記憶媒体。
【請求項９】
オブジェクト空間において仮想カメラから見える画像を生成するための画像生成システムであって、
所与のパーティクルを前記オブジェクト空間の所与の位置に発生させるパーティクル発生部と、
前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離情報を算出する距離情報算出部と、
前記パーティクルの位置に応じたぼかし量を計算するぼかし量計算部と、
前記距離情報に基づいて前記パーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、前記ぼかし対象範囲内にある場合は前記ぼかし量に応じた前記パーティクルのぼかし画像を生成するぼかし画像生成部と、を含むことを特徴とする画像生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【０００２】
従来より、キャラクタなどのオブジェクトが配置設定されるオブジェクト空間内（仮想的な３次元空間）において仮想カメラ（所与の視点）から見える画像を生成する画像生成システム（ゲームシステム）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【０００３】
このような画像生成システム（ゲームシステム）では、視覚的に高い効果を狙って、カメラの被写界深度によるぼかしを再現した画像を生成する場合がある。よく使用される被写界深度の表現手法として、全画面に対するポストエフェクト処理が挙げられる。この手法は、３Ｄモデルをカラーバッファに描画する際に同時にデプスバッファ（Ｚバッファ）に書き込む奥行き情報を利用し、被写界深度から外れるピクセルに対してぼかし量を決定して全画面に対するぼかし画像を生成するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−５１０２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、花びら、雪、雨、煙、炎などを描画する際、比較的軽い処理負荷でリアルな画像を実現するために、これらを半透明のパーティクルで表現する場合がある。これらのパーティクルを含む画像を生成する際には、描画処理が複雑にならないようにパーティクルの各ピクセルについてはデプスバッファ（Ｚバッファ）に奥行き情報を書き込まない場合が多い。そのため、パーティクルを含む画像に対して被写界深度によるぼかしを再現する場合、従来の手法をそのまま適用すると、パーティクルについてはその後ろにあるオブジェクトの奥行き情報を参照してぼかしがかけられる。例えば、図１２に示す画像では、中央の建物が仮想カメラの被写界深度にあるため、建物の手前にある花びらＰ（パーティクル）は、建物と重ねっている左上部分はぼけていないが背景と重なる右下部分は背景とともにぼけており、違和感のある画像になっている。
【０００６】
パーティクルについても奥行き情報を書き込んで、従来手法を用いて被写界深度によるぼかしを再現することも不可能ではないかもしれないが、例えば、全画面ではなくパーティクルに対してのみ被写界深度によるぼかしを再現したい場合であっても、全画面と同じサイズのデプスバッファを参照する必要があるため描画負荷が高くなるという問題がある。
【０００７】
本発明は、以上のような課題に鑑みてなされたものであり、本発明のいくつかの態様によれば、パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することが可能なプログラム、情報記憶媒体及び画像生成システムを提供することができる。
【課題を解決するための手段】
【０００８】
（１）本発明は、
オブジェクト空間において仮想カメラから見える画像を生成するためのプログラムであって、
所与のパーティクルを前記オブジェクト空間の所与の位置に発生させるパーティクル発生部と、
前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離情報を算出する距離情報算出部と、
前記パーティクルの位置に応じたぼかし量を計算するぼかし量計算部と、
前記距離情報に基づいて前記パーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、前記ぼかし対象範囲内にある場合は前記ぼかし量に応じた前記パーティクルのぼかし画像を生成するぼかし画像生成部としてコンピュータを機能させることを特徴とする。
【０００９】
また、本発明は、コンピュータに読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶している情報記憶媒体に関する。また、本発明は、上記各部を含む画像生成システムに関する。
【００１０】
本発明では、仮想カメラとパーティクルとの仮想カメラの視線方向の距離情報を算出し、当該距離情報に基づいてパーティクルのぼかし画像を生成するので、パーティクルに対してデプスバッファ（Ｚバッファ）に奥行き情報を書き込む必要がない。従って、本発明によれば、パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することができる。
【００１１】
（２）また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし量に応じて前記パーティクルを拡大又は縮小するパーティクルサイズ変更部としてさらにコンピュータを機能させ（パーティクルサイズ変更部をさらに含み）、
前記ぼかし画像生成部は、
拡大又は縮小した後の前記パーティクルに対して、前記ぼかし量に応じた前記ぼかし画像を生成するようにしてもよい。
【００１２】
本発明によれば、パーティクルのサイズをぼかし量に応じて適切に調整することで、ぼかし画像の描画領域を包含するなるべく小さいサイズのパーティクルに対して描画処理を行うようにすることが可能である。これにより、ぼかし画像の描画負荷を低減することができる。
【００１３】
（３）また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの前記仮想カメラの視線方向の距離に応じたぼかし量を計算するようにしてもよい。
【００１４】
（４）また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし量計算部は、
前記ぼかし量として、前記仮想カメラと前記パーティクルとの直線距離に応じたぼかし量を計算するようにしてもよい。
【００１５】
（５）また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記コンピュータがメインプロセッサと描画プロセッサを含み、
前記距離情報算出部、前記ぼかし画像生成部及び前記パーティクルサイズ変更部の各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するぼかし処理割り当て制御部としてさらにコンピュータを機能させる（ぼかし処理割り当て制御部をさらに含む）ようにしてもよい。
【００１６】
（６）また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし処理割り当て制御部は、
前記各処理の現在の割り当て状況と、前記メインプロセッサと前記描画プロセッサのそれぞれの現在の処理負荷と、に基づいて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。
【００１７】
本発明によれば、メインプロセッサの処理負荷と描画プロセッサの処理負荷に応じて、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理の割り当てを動的に変更することができるので、効率的にぼかし処理を行うことができる。
【００１８】
（７）また、本発明に係るプログラム、情報記憶媒体及び画像生成システムでは、
前記ぼかし処理割り当て制御部は、
描画対象となる前記パーティクルの数又は総面積に応じて、前記各処理を前記メインプロセッサと前記描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。
【００１９】
本発明によれば、パーティクルの数や総面積に応じてメインプロセッサと描画プロセッサの処理負荷を変更することができるので、効率的にぼかし処理を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の一例を示す図。
【図２】本実施形態の手法により生成した画像の一例を示す図。
【図３】パーティクルについて説明するための図。
【図４】ぼかし対象範囲及びぼかし量の一例について説明するための図。
【図５】ぼかし対象範囲及びぼかし量の他の一例について説明するための図。
【図６】本実施形態によるパーティクルの画像生成について説明するための図。
【図７】本実施形態のぼかし処理の一例のフローチャート図。
【図８】ぼかし処理の割り当てパターンの一例を示す図。
【図９】ぼかし処理の割り当てパターンを動的に変更する制御の一例のフローチャート図。
【図１０】ぼかし処理の割り当てパターンを動的に変更する制御の他の一例のフローチャート図。
【図１１】本実施形態を実現できるハードウェア構成の例を示す図。
【図１２】従来手法により生成した画像の一例を示す図。
【発明を実施するための形態】
【００２１】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００２２】
１．構成
図１に本実施形態の画像生成システム（ゲームシステム）の機能ブロック図の一例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００２３】
操作部１６０は、プレーヤがオブジェクト（プレーヤキャラクタ、移動体）の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【００２４】
なお、操作部１６０は、加速度センサや撮像部、或いは角速度を検出するジャイロセンサを備えた入力機器によってプレーヤからの入力データ（操作データ）を入力できるものでもよい。例えば、入力装置は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力装置には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける（プレーヤが手に装着する）グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力装置には、入力装置と一体化されているゲーム装置、携帯型ゲーム装置、携帯電話なども含まれる。
【００２５】
例えば、入力機器に備えられた加速度センサは、３軸（Ｘ軸、Ｙ軸、Ｚ軸）の加速度を検出する。すなわち、加速度センサは、上下方向、左右方向、及び、前後方向の加速度を検出することができる。なお、加速度センサは、５ｍｓｅｃ毎に加速度を検出している。また、加速度センサは、１軸、２軸、６軸の加速度を検出するものであってもよい。なお、加速度センサから検出された加速度は、入力機器の通信部によってゲーム装置（本体装置）に送信される。
【００２６】
また、入力機器に備えられた撮像部は、赤外線フィルタ、レンズ、撮像素子（イメージセンサ）、画像処理回路を含む。赤外線フィルタは、入力装置の前方に配置され、表示部１９０に関連付けられて配置されている光源から入射する光から赤外線のみを通過させる。レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。撮像素子は、例えば、ＣＭＯＳセンサやＣＣＤのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報（特定位置）を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を検出する。また、検出した撮像画像上の位置情報は、通信部によって、本体装置に送信される。
【００２７】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。記憶部１７０は、ワーク領域として使用される主記憶部１７２と、最終的な表示画像等が記憶される描画バッファ１７４と、オブジェクトのモデルデータが記憶されるオブジェクトデータ記憶部１７６と、各オブジェクトに対応付けられたテクスチャが記憶されるテクスチャ記憶部１７８と、オブジェクトの生成処理時にＺ値が記憶されるＺバッファ１７９とを含む。なお、これらの一部を省略する構成としてもよい。
【００２８】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）を記憶することができる。
【００２９】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００３０】
通信部１９６は外部（例えば他の画像生成システム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００３１】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体１８０や記憶部１７０に記憶してもよい。このようにプログラムやデータを受信して画像生成システムを機能させる場合も本発明の範囲内に含む。
【００３２】
処理部１００（プロセッサ）は、操作部１６０からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００３３】
この処理部１００は記憶部１７０内の主記憶部１７２をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３４】
特に本実施形態では、処理部１００の機能の一部をメインプロセッサ（ＣＰＵ）と描画プロセッサ（ＧＰＵ）で実現する。
【００３５】
処理部１００は、オブジェクト空間設定部１１０、移動・動作処理部１１２、仮想カメラ制御部１１４、描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００３６】
特に本実施形態では、処理部１００は、ぼかし処理割り当て制御部１１６を含む。ぼかし処理割り当て制御部１１６は、距離情報算出部１２４、ぼかし画像生成部１２９及びパーティクルサイズ変更部１２８の各処理をメインプロセッサと描画プロセッサのいずれに割り当てるかを制御する。例えば、ぼかし処理割り当て制御部１１６は、距離情報算出部１２４、ぼかし画像生成部１２９及びパーティクルサイズ変更部１２８の各処理の現在の割り当て状況と、メインプロセッサと描画プロセッサのそれぞれの現在の処理負荷と、に基づいて、当該各処理をメインプロセッサと描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。また、例えば、ぼかし処理割り当て制御部１１６は、描画対象となるパーティクルの数又は総面積に応じて、距離情報算出部１２４、ぼかし画像生成部１２９及びパーティクルサイズ変更部１２８の各処理をメインプロセッサと描画プロセッサのいずれに割り当てるかを制御するようにしてもよい。
【００３７】
オブジェクト空間設定部１１０は、雪、雨、キャラクタ、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ライン（線）、ラインポリゴン、ポリゴン、多角形、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義であり、例えば、ワールド座標系でのＸ、Ｙ、Ｚ軸の各軸の正方向からみて時計回りに回る場合における回転角度）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００３８】
移動・動作処理部１１２は、オブジェクト（キャラクタ、移動体等）の移動・動作演算（移動・動作シミュレーション）を行う。すなわち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）、物理法則などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させたりする処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００３９】
仮想カメラ制御部１１４は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（例えば、Ｘ、Ｙ、Ｚ軸の各軸の正方向からみて時計回りに回る場合における回転角度）を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。例えば、仮想カメラ制御部１１４は、仮想カメラを移動体オブジェクトの移動に追従させる制御を行うようにしてもよい。すなわち、仮想カメラによりオブジェクト（例えばキャラクタ、移動体）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部１１２で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００４０】
描画部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずオブジェクト（モデル）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）を含むオブジェクトデータ（モデルデータ）が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００４１】
頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換（カメラ座標変換）、クリッピング処理、射影変換（視点を基準とした透視変換、投影変換）、ビューポート変換（スクリーン座標変換）、光源計算等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。ジオメトリ処理後のオブジェクトデータ（オブジェクトの頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、オブジェクトデータ記憶部１７６に保存される。
【００４２】
そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、プリミティブ（ポリゴン）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７４（フレームバッファや中間バッファ（ワークバッファ）などのピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。すなわち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【００４３】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、プリミティブ（ポリゴン）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００４４】
そして描画部１２０は、オブジェクトを描画する際に、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【００４５】
テクスチャマッピングは、記憶部１７０のテクスチャ記憶部１７８に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０のテクスチャ記憶部１７８からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【００４６】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が格納されるＺバッファ１７９（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファ１７９に格納されるＺ値を参照する。そして参照されたＺバッファ１７９のＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファ１７９のＺ値を新たなＺ値に更新する。
【００４７】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。
【００４８】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして使用できる。
【００４９】
特に本実施形態では、描画部１２０は、パーティクル発生部１２２、距離情報算出部１２４、ぼかし量計算部１２６、パーティクルサイズ変更部１２８、ぼかし画像生成部１２９を含む。
【００５０】
パーティクル発生部１２２は、所与のパーティクルをオブジェクト空間の所与の位置に発生させる。
【００５１】
距離情報算出部１２４は、仮想カメラとパーティクルとの仮想カメラの視線方向の距離情報を算出する。
【００５２】
ぼかし量計算部１２６は、パーティクルの位置に応じたぼかし量を計算する。例えば、ぼかし量計算部１２６は、パーティクルの位置に応じたぼかし量として、仮想カメラとパーティクルとの仮想カメラの視線方向の距離に応じたぼかし量を計算するようにしてもよい。また、例えば、ぼかし量計算部１２６は、パーティクルの位置に応じたぼかし量として、仮想カメラとパーティクルとの直線距離に応じたぼかし量を計算するようにしてもよい。
【００５３】
パーティクルサイズ変更部１２８は、ぼかし量計算部１２６が計算したぼかし量に応じてパーティクルを拡大又は縮小する。
【００５４】
ぼかし画像生成部１２９は、距離情報算出部１２４が算出した距離情報に基づいてパーティクルの位置が所与のぼかし対象範囲内にあるか否かを判定し、ぼかし対象範囲内にある場合は、ぼかし量計算部１２６が計算したぼかし量に応じたパーティクルのぼかし画像を生成する。例えば、ぼかし画像生成部１２９は、パーティクルサイズ変更部１２８が拡大又は縮小した後のパーティクルに対して、ぼかし量計算部１２６が計算したぼかし量に応じたぼかし画像を生成するようにしてもよい。
【００５５】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００５６】
なお、本実施形態の画像生成システムは、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて分散処理により生成してもよい。
【００５７】
２．本実施形態の手法
（１）概要
本実施形態は、花びら、雪、雨、煙、炎等のパーティクルに擬似的な被写界深度に応じてぼかしをかけた画像をリアルタイムに生成する処理を行うものである。例えば、図２に示すように、１枚の花びらを１つのパーティクルで実現し、各パーティクルの原点を、重力、風力などの物理的な運動法則に基づき移動させるシミュレーション処理を行い、パーティクルに花びらテクスチャ（花びら模様テクスチャ）をマッピングして画像を生成する。その際、被写界深度に応じてぼかし対象範囲にないパーティクル（例えば、Ｐｄ，Ｐｅ）に対してはピントの合った花びらの画像を生成している。一方、ぼかし対象範囲にあるパーティクル（例えば、Ｐａ，Ｐｂ，Ｐｃ，Ｐｆ）に対しては花びらのぼかし画像を生成している。特に、ピントが合っているキャラクタＣと一部重なる位置で手前にあるパーティクルＰｃに対しても、全体にぼけた花びらの画像を生成している。以下、本実施形態の手法について説明する。
【００５８】
（２）パーティクルのぼかし処理
本実施形態では、図３に示すように、ワールド座標系において、シミュレーション処理に基づく位置に仮想カメラＣＭの視線方向に正対して各パーティクルＰ０，Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５，・・・を発生させる。このパーティクルの各々の４つの頂点に対して、ワールド座標系からカメラ座標系（視点を原点とし、視線の方向がｚ軸の負の方向になるように設定される座標系）への座標変換処理、つまり視野変換処理を行うと、各パーティクルの４つの頂点のカメラ座標系におけるｚ座標はすべて同じ値になる。そして、各パーティクルについて、４つの頂点のｚ座標値の絶対値を仮想カメラＣＭに対する相対的な距離情報として、各パーティクルの位置がぼかし対象範囲にあるか否かを判定する。
【００５９】
図４に被写界深度に応じたぼかし対象範囲の一例を示す。図４は、カメラ座標系のｙ軸の正方向から視た図である。カメラ座標のｘｙ平面に対するｚ軸の負の方向の距離がｄｍｉｎ以上ｄｍａｘ以下の範囲（空間）が被写界深度２００になる。また、カメラ座標のｘｙ平面に対するｚ軸の負の方向の距離が、ｄｍｉｎよりも小さい範囲（空間）とｄｍａｘよりも大きい範囲（空間）がそれぞれ手前ぼかし範囲２１０と奥ぼかし範囲２２０になる。そして、パーティクルＰｎがカメラ座標系の座標（ｘｎ，ｙｎ，ｚｎ）にある場合、パーティクルＰｎの中心からｘｙ平面に下ろした垂線の長さｄｎ（ｚｎの絶対値に等しい）が、パーティクルＰｎと仮想カメラＣＭのｚ方向の距離になる。すなわち、距離ｄｎがｄｍｉｎ以上ｄｍａｘ以下であるパーティクルＰｎは被写界深度２００に存在し、距離ｄｎがｄｍｉｎよりも小さいパーティクルＰｎは手前ぼかし範囲２１０に存在し、距離ｄｎがｄｍｉｎよりも大きいパーティクルＰｎは奥ぼかし範囲２２０に存在することになる。図４の例では、パーティクルＰ２，Ｐ３が被写界深度２００に存在し、パーティクルＰ０，Ｐ１が手前ぼかし範囲２１０に存在し、パーティクルＰ２，Ｐ３が奥ぼかし範囲２２０に存在している。
【００６０】
本実施形態では、この手前ぼかし範囲２１０と奥ぼかし範囲２２０がぼかし対象範囲になる。そして、パーティクルＰｎが手前ぼかし範囲２１０又は奥ぼかし範囲２２０に存在する場合はパーティクルのぼかし画像を生成し、パーティクルＰｎが手前ぼかし範囲２１０又は奥ぼかし範囲２２０に存在しない場合（言い換えると被写界深度２００に存在する場合）はパーティクルの通常画像（ぼかしのない画像）を生成する。
【００６１】
また、本実施形態では、ぼかし画像を生成する場合は、パーティクルＰｎの距離ｄｎに応じてぼかし量を変更する。具体的には、パーティクルＰｎが被写界深度２００から離れるほどぼかし量を大きくする。すなわち、パーティクルＰｎが手前ぼかし範囲２１０に存在する場合は距離ｄｎが小さいほどぼかし量を大きくし、パーティクルＰｎが奥ぼかし範囲２２０に存在する場合は距離ｄｎが大きいほどぼかし量を大きくする。図４の例では、パーティクルＰ０とＰ１が手前ぼかし範囲２１０に存在し、ｄ０＜ｄ１なので、パーティクルＰ０に対するぼかし量をパーティクルＰ１に対するぼかし量よりも大きくする。また、パーティクルＰ４とＰ５が奥ぼかし範囲２２０に存在し、ｄ４＝ｄ５なので、パーティクルＰ４に対するぼかし量とパーティクルＰ５に対するぼかし量を同じにする。
【００６２】
あるいは、図５に示すように、パーティクルＰｎがぼかし対象範囲に存在する場合は、パーティクルＰｎとカメラ座標系の原点との直線距離ｒｎ（ｒｎは原点を中心とするパーティクルＰｎを含む球面の半径に等しい）に応じてぼかし量を変更するようにしてもよい。具体的には、パーティクルＰｎが手前ぼかし範囲２１０に存在する場合は直線距離ｒｎが小さいほどぼかし量を大きくし、パーティクルＰｎが奥ぼかし範囲２２０に存在する場合は直線距離ｒｎが大きいほどぼかし量を大きくする。図４の例では、パーティクルＰ０とＰ１が手前ぼかし範囲２１０に存在し、ｒ１＞ｒ０なので、パーティクルＰ１に対するぼかし量をパーティクルＰ０に対するぼかし量よりも大きくする。また、パーティクルＰ４とＰ５が奥ぼかし範囲２２０に存在し、ｒ４＞ｒ５なので、パーティクルＰ４に対するぼかし量をパーティクルＰ５に対するぼかし量よりも大きくする。
【００６３】
次に、図６（Ａ）及び図６（Ｂ）を用いて、本実施形態によるパーティクルの画像生成について説明する。
【００６４】
パーティクルＰｎがぼかし対象範囲（手前ぼかし範囲２１０と奥ぼかし範囲２２０）に存在しない場合（言い換えると被写界深度２００に存在する場合）は、図６（Ａ）に示すように、まず、パーティクルＰｎの各頂点をスクリーン座標系に変換したパーティクル３００を生成する。そしてこのパーティクル３００にテクスチャ４００をマッピングしてぼかさずに描画し、パーティクルの通常画像５００を生成する。
【００６５】
一方、パーティクルＰｎがぼかし対象範囲（手前ぼかし範囲２１０又は奥ぼかし範囲２２０）に存在する場合は、図６（Ｂ）に示すように、まず、距離情報から計算されるぼかし量に応じてパーティクルＰｎを拡大又は縮小したパーティクル３１０を生成する。例えば、パーティクル３１０の中心（重心）をパーティクルＰｎの中心（重心）と一致させたまま各頂点の位置を変更することにより拡大又は縮小する。そして、パーティクル３１０の各頂点をスクリーン座標系に変換したパーティクル３２０を生成する。このパーティクル３２０にテクスチャ４００をぼかし量に応じてぼかして描画し、パーティクルのぼかし画像５１０を生成する。例えば、パーティクル３２０にテクスチャ４００をずらしながらぼかし量に応じた回数や色（薄さ）でマッピングすることによりぼかし画像５１０を生成することができる。
【００６６】
パーティクルＰｎのサイズが小さい場合、そのままスクリーン座標系に変換してテクスチャ４００を描画すると、ぼかし量によってはパーティクルの内部に描画しきれずに一部が欠けたようなぼかし画像が生成される可能性がある。そこで、本実施形態では、ぼかし量に応じてパーティクルＰｎをあらかじめ拡大してからスクリーン座標系のパーティクル３２０に変換することで、確実にパーティクル３２０の内部にぼかし画像が描画されるようにしている。
【００６７】
逆に、パーティクルＰｎのサイズが大きい場合は、そのままスクリーン座標系のパーティクルに変換してテクスチャ４００を描画してもよいが、パーティクルが小さいほど描画負荷をより軽くすることができる。そこで、本実施形態では、ぼかし量に応じてパーティクルをあらかじめ縮小してからスクリーン座標系のパーティクル３２０に変換することで、ぼかし画像の描画負荷を低減させるようにしている。
【００６８】
なお、パーティクル３２０が小さいほど描画負荷を軽くすることができるので、パーティクル３２０がぼかし画像の描画領域よりもわずかに大きくなるように、パーティクルＰｎを拡大又は縮小するのが望ましい。
【００６９】
３．本実施形態の処理
（１）ぼかし処理
次に、本実施形態のぼかし処理について図７のフローチャートを用いて説明する。
【００７０】
まず、ワールド座標系において、パーティクルＰｎを所与の位置に発生させて仮想カメラＣＭに正対させて配置する（ステップＳ１０）。
【００７１】
次に、ステップＳ１０でワールド座標系に配置したパーティクルＰｎの座標をカメラ座標系に変換する（ステップＳ２０）。
【００７２】
次に、カメラ座標系において、パーティクルＰｎと原点（仮想カメラの位置）の間の視線方向（ｚ軸の負の方向）の距離情報を算出する（ステップＳ３０）。
【００７３】
次に、ステップＳ３０で算出した距離情報からパーティクルＰｎがぼかし対象範囲にあるか否かを判定する（ステップＳ４０）。
【００７４】
パーティクルＰｎがぼかし対象範囲にある場合（ステップＳ５０でＹの場合）、ステップＳ３０で算出した距離情報に応じてぼかし量を計算し、当該ぼかし量に応じてパーティクルＰｎを拡大又は縮小してパーティクル３１０を生成する（ステップＳ６０）。
【００７５】
次に、ステップＳ６０で生成したパーティクル３１０をスクリーン座標系のパーティクル３２０に変換する（ステップＳ７０）。
【００７６】
次に、ステップＳ７０で生成したパーティクル３２０に対してラスタライズを行い、ピクセルデータを生成する（ステップＳ８０）。
【００７７】
次に、ステップＳ８０で生成したピクセルデータに対して、描画位置をずらしながらテクスチャ４００をぼかし量に応じた回数及び色で複数回マッピングし、パーティクルのぼかし画像５１０を生成する（ステップＳ９０）。
【００７８】
一方、パーティクルＰｎがぼかし対象範囲にない場合（ステップＳ５０でＮの場合）、パーティクルＰｎをスクリーン座標系のパーティクル３００に変換する（ステップＳ７２）。
【００７９】
次に、ステップＳ７２で生成したパーティクル３００に対してラスタライズを行い、ピクセルデータを生成する（ステップＳ８２）。
【００８０】
次に、ステップＳ８２で生成したピクセルデータに対してテクスチャ４００をマッピングし、パーティクルの通常画像５００を生成する（ステップＳ９２）。
【００８１】
そして、ステップＳ９０又はＳ９２の処理が終了した後、描画するパーティクルＰｎが他にもあれば（ステップＳ１００でＹの場合）ステップＳ２０以降の処理を同様に行い、描画するパーティクルＰｎが他になければ（ステップＳ１００でＮの場合）ぼかし処理を終了する。
【００８２】
このように、本実施形態では、仮想カメラＣＭとパーティクルＰｎとの仮想カメラＣＭの視線方向（ｚ軸の負の方向）の距離情報を算出し、当該距離情報に基づいてパーティクルのぼかし画像を生成するので、パーティクルに対してＺバッファ１７９に奥行き情報を書き込む必要がない。従って、本実施形態によれば、パーティクルに対して比較的軽い描画負荷で被写界深度によるぼかしを再現することができる。
【００８３】
また、本実施形態によれば、パーティクルＰｎのサイズをぼかし量に応じて適切に調整することで、ぼかし画像の描画領域を包含するなるべく小さいサイズのパーティクルに対して描画処理を行うようにすることが可能である。これにより、ぼかし画像の描画負荷を低減することができる。
【００８４】
（２）ぼかし処理の割り当て制御
本実施形態では、図７のステップＳ３０における距離情報の算出（距離情報算出処理）、ステップＳ６０におけるパーティクルの拡大又は縮小（パーティクルサイズ変更処理）及びステップＳ９０におけるぼかし画像の生成（ぼかし画像生成処理）をメインプロセッサ（ＣＰＵ）、描画プロセッサ（ＧＰＵ）の頂点シェーダ、描画プロセッサ（ＧＰＵ）のピクセルシェーダのいずれかに割り当てる制御を行う。本実施形態では、図８に示す３通りの割り当てパターンのいずれかを選択する。
【００８５】
パターン１は、距離情報算出処理とパーティクルサイズ変更処理をメインプロセッサ（ＣＰＵ）に割り当て、ぼかし画像生成処理を描画プロセッサ（ＧＰＵ）のピクセルシェーダに割り当てる。このパターン１を選択すれば、メインプロセッサ（ＣＰＵ）の負担が大きくなり、描画プロセッサ（ＧＰＵ）の負担が小さくなる。従って、例えば、相対的に描画プロセッサ（ＧＰＵ）の処理負荷の方が重い状態であればパターン１を選択するようにしてもよい。
【００８６】
パターン２は、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理を、メインプロセッサ（ＣＰＵ）、描画プロセッサ（ＧＰＵ）の頂点シェーダ、描画プロセッサ（ＧＰＵ）のピクセルシェーダにそれぞれ割り当てる。このパターン２を選択すれば、メインプロセッサ（ＣＰＵ）の負担と描画プロセッサ（ＧＰＵ）の負担のバランスがよい。従って、例えば、メインプロセッサ（ＣＰＵ）の処理負荷も描画プロセッサ（ＧＰＵ）の処理負荷もそれほど重くない状態であればパターン２を選択するようにしてもよい。
【００８７】
パターン３は、距離情報算出処理とパーティクルサイズ変更処理を描画プロセッサ（ＧＰＵ）の頂点シェーダに割り当て、ぼかし画像生成処理を描画プロセッサ（ＧＰＵ）のピクセルシェーダに割り当てる。このパターン３を選択すれば、メインプロセッサ（ＣＰＵ）の負担が小さくなり、描画プロセッサ（ＧＰＵ）の負担が大きくなる。従って、例えば、相対的にメインプロセッサ（ＣＰＵ）の処理負荷の方が重い状態であればパターン３を選択するようにしてもよい。
【００８８】
この割り当てパターンの選択は、ぼかし処理の直前やぼかし処理の途中で動的に変更するように制御してもよい。
【００８９】
一例として、図９に、現在選択されている割り当てパターンと、メインプロセッサ（ＣＰＵ）及び描画プロセッサ（ＧＰＵ）のぞれぞれの現在の処理負荷とに基づいて、パターン１、２、３を動的に変更する制御のフローチャートを示す。
【００９０】
まず、例えば、パターン２を選択し、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理を、それぞれメインプロセッサ（ＣＰＵ）、描画プロセッサ（ＧＰＵ）の頂点シェーダ、描画プロセッサ（ＧＰＵ）のピクセルシェーダに割り当てる（ステップＳ２００）。
【００９１】
描画処理が終了でなければ（ステップＳ２１０でＮの場合）、所与のタイミングでメインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷を判定する。そして、メインプロセッサ（ＣＰＵ）の処理負荷が閾値以下であり、かつ、描画プロセッサ（ＧＰＵ）の処理負荷が閾値よりも大きい場合（ステップＳ２２０でＹ、かつ、ステップＳ２３０でＮの場合）、パーティクルサイズ変更処理の割り当てをメインプロセッサ（ＣＰＵ）に変更する（ステップＳ２４０）。すなわち、パターン２からパターン１に変更する。これにより、描画プロセッサ（ＧＰＵ）の処理負荷を軽くすることができる。
【００９２】
また、メインプロセッサ（ＣＰＵ）の処理負荷が閾値よりも大きく、かつ、描画プロセッサ（ＧＰＵ）の処理負荷が閾値以下の場合（ステップＳ２２０でＮ、かつ、ステップＳ２３２でＹの場合）、距離情報算出処理の割り当てを描画プロセッサ（ＧＰＵ）の頂点シェーダに変更する（ステップＳ２４２）。すなわち、パターン２からパターン３に変更する。これにより、メインプロセッサ（ＣＰＵ）の処理負荷を軽くすることができる。
【００９３】
また、メインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷がともに閾値以下の場合（ステップＳ２２０でＹ、かつ、ステップＳ２３０でＹの場合）又は、メインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷がともに閾値よりも大きい場合（ステップＳ２２０でＮ、かつ、ステップＳ２３２でＮの場合）、パターン２のまま変更しない。前者の場合はパターン２が効率的な割り当てであると考えられるためパターン１やパターン３に変更せず、後者の場合はメインプロセッサ（ＣＰＵ）と描画プロセッサ（ＧＰＵ）のいずれかの処理負荷が閾値以下になるのを待ってパターン１又はパターン３に変更する。
【００９４】
ステップＳ２４０でパターン２からパターン１に変更した後、描画処理が終了でなければ（ステップＳ２５０でＮの場合）、所与のタイミングでメインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷を判定する。そして、メインプロセッサ（ＣＰＵ）の処理負荷が閾値よりも大きく、かつ、描画プロセッサ（ＧＰＵ）の処理負荷が閾値以下の場合（ステップＳ２６０でＮ、かつ、ステップＳ２７０でＹの場合）、パーティクルサイズ変更処理の割り当てを描画プロセッサ（ＧＰＵ）の頂点シェーダに変更する（ステップＳ２８０）。すなわち、パターン１からパターン２に変更する。これにより、メインプロセッサ（ＣＰＵ）の処理負荷を軽くすることができる。
【００９５】
また、メインプロセッサ（ＣＰＵ）の処理負荷が閾値以下の場合（ステップＳ２６０でＹの場合）、又は、メインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷がともに閾値よりも大きい場合（ステップＳ２６０でＮ、かつ、ステップＳ２７０でＮの場合）、パターン１のまま変更しない。前者の場合はパターン１が効率的な割り当てであると考えられるためパターン２に変更せず、後者の場合は描画プロセッサ（ＧＰＵ）の処理負荷が閾値以下になるのを待ってパターン２に変更する。
【００９６】
一方、ステップＳ２４２でパターン２からパターン３に変更した後、描画処理が終了でなければ（ステップＳ２５２でＮの場合）、所与のタイミングでメインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷を判定する。そして、描画プロセッサ（ＧＰＵ）の処理負荷が閾値よりも大きく、かつ、メインプロセッサ（ＣＰＵ）の処理負荷が閾値以下の場合（ステップＳ２６２でＮ、かつ、ステップＳ２７２でＹの場合）、距離情報算出処理の割り当てをメインプロセッサ（ＣＰＵ）に変更する（ステップＳ２８２）。すなわち、パターン３からパターン２に変更する。これにより、描画プロセッサ（ＧＰＵ）の処理負荷を軽くすることができる。
【００９７】
また、描画プロセッサ（ＧＰＵ）の処理負荷が閾値以下の場合（ステップＳ２６２でＹの場合）、又は、描画プロセッサ（ＧＰＵ）とメインプロセッサ（ＣＰＵ）の処理負荷の処理負荷がともに閾値よりも大きい場合（ステップＳ２６２でＮ、かつ、ステップＳ２７２でＮの場合）、パターン３のまま変更しない。前者の場合はパターン３が効率的な割り当てであると考えられるためパターン２に変更せず、後者の場合はメインプロセッサ（ＣＰＵ）の処理負荷が閾値以下になるのを待ってパターン２に変更する。
【００９８】
ステップＳ２８０でパターン１からパターン２に変更した後、又は、ステップＳ２８２でパターン３からパターン２に変更した後、描画処理が終了でなければ（ステップＳ２１０でＮの場合）、上述した処理と同様に、メインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷に応じてパターン２からパターン１やパターン３への変更処理を行う。
【００９９】
以上に説明した処理を描画処理が終了するまで繰り返すことにより、メインプロセッサ（ＣＰＵ）の処理負荷と描画プロセッサ（ＧＰＵ）の処理負荷に応じて、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理の割り当てを動的に変更することができる。
【０１００】
他の一例として、図１０に、描画するパーティクルの数（又はパーティクルの総面積）に応じて、パターン１、２、３を動的に変更する制御のフローチャートを示す。
【０１０１】
まず、所与のタイミングで、描画するパーティクルの数（又はパーティクルの総面積）を判定する（ステップＳ３００）。
【０１０２】
パーティクルの数がＮ１未満（又はパーティクルの総面積がＳ１未満）の場合（ステップＳ３１０でＹの場合）、パターン１を選択し、距離情報算出処理とパーティクルサイズ変更処理をメインプロセッサ（ＣＰＵ）に、ぼかし画像生成処理を描画プロセッサ（ＧＰＵ）のピクセルシェーダにそれぞれ割り当てる（ステップＳ３２０）。
【０１０３】
また、パーティクルの数がＮ１以上Ｎ２未満（又はパーティクルの総面積がＳ１以上Ｓ２未満）の場合（ステップＳ３１０でＮ、かつ、ステップＳ３３０でＹの場合）、パターン２を選択し、距離情報算出処理、パーティクルサイズ変更処理、ぼかし画像生成処理をメインプロセッサ（ＣＰＵ）、描画プロセッサ（ＧＰＵ）の頂点シェーダ、描画プロセッサ（ＧＰＵ）のピクセルシェーダにそれぞれ割り当てる（ステップＳ３４０）。
【０１０４】
また、パーティクルの数がＮ２以上（又はパーティクルの総面積がＳ２以上）の場合（ステップＳ３３０でＮの場合）、パターン３を選択し、距離情報算出処理とパーティクルサイズ変更処理を描画プロセッサ（ＧＰＵ）の頂点シェーダに、ぼかし画像生成処理を描画プロセッサ（ＧＰＵ）のピクセルシェーダにそれぞれ割り当てる（ステップＳ３５０）。
【０１０５】
このようにすれば、パーティクルの数が増えても（又はパーティクルの総面積が大きくなっても）、メインプロセッサ（ＣＰＵ）に過剰な処理負荷がかからないようにしてぼかし処理の低速化を抑制することできる。このように、パーティクルの数や総面積に応じてメインプロセッサ（ＣＰＵ）と描画プロセッサ（ＧＰＵ）の処理負荷を変更することで、効率的にぼかし処理を行うことができる。
【０１０６】
４．ハードウェア構成
次に、図１１を用いて本実施形態を実現できるハードウェア構成について説明する。なお、図１１は、本実施形態を実現できるハードウェア構成を示す一例である。
【０１０７】
メインプロセッサ９００は、ＤＶＤ９８２（情報記憶媒体。ＣＤでもよい。）に格納されたプログラム、通信インターフェース９９０を介してダウンロードされたプログラム、或いはＲＯＭ９５０に格納されたプログラムなどに基づき動作し、ゲーム処理、画像処理、音処理などを実行する。
【０１０８】
コプロセッサ９０２は、メインプロセッサ９００の処理を補助するものであり、マトリクス演算（ベクトル演算）を高速に実行する。例えば、オブジェクトを移動させたり動作（モーション）させる物理シミュレーションに、マトリクス演算処理が必要な場合には、メインプロセッサ９００上で動作するプログラムが、その処理をコプロセッサ９０２に指示（依頼）する。
【０１０９】
ジオメトリプロセッサ９０４は、メインプロセッサ９００上で動作するプログラムからの指示に基づいて、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、マトリクス演算を高速に実行する。データ伸張プロセッサ９０６は、圧縮された画像データや音データのデコード処理を行ったり、メインプロセッサ９００のデコード処理をアクセレートする。これにより、オープニング画面やゲーム画面において、ＭＰＥＧ方式等で圧縮された動画像を表示できる。
【０１１０】
描画プロセッサ９１０は、ポリゴンや曲面などのプリミティブ面で構成されるオブジェクトの描画（レンダリング）処理を実行する。オブジェクトの描画の際には、メインプロセッサ９００は、ＤＭＡコントローラ９７０を利用して、描画データを描画プロセッサ９１０に渡すと共に、必要であればテクスチャ記憶部９２４にテクスチャを転送する。すると描画プロセッサ９１０は、描画データやテクスチャに基づいて、Ｚバッファなどを利用した隠面消去を行いながら、オブジェクトをフレームバッファ９２２に描画する。
【０１１１】
また、この描画プロセッサ９１０は、αブレンディング（半透明処理）、デプスキューイング、ミップマッピング、フォグ処理、バイリニア・フィルタリング、トライリニア・フィルタリング、アンチエリアシング、シェーディング処理なども行う。１フレーム分の画像がフレームバッファ９２２に書き込まれるとその画像はディスプレイ９１２に表示される。
【０１１２】
なお、上記各プロセッサの各機能は、ハードウェアとして別々のプロセッサにより実現してもよいし、１つのプロセッサにより実現してもよい。また、プロセッサとしてＣＰＵとＧＰＵを設けた場合でも、いずれのプロセッサによりいかなる機能を実現するかは、任意に設定することができる。
【０１１３】
サウンドプロセッサ９３０は、多チャンネルのＡＤＰＣＭ音源などを内蔵し、ＢＧＭ、効果音、音声などのゲーム音を生成し、スピーカ９３２を介して出力する。ゲームコントローラ９４２やメモリカード９４４からのデータはシリアルインターフェース９４０を介して入力される。
【０１１４】
ＲＯＭ９５０には、システムプログラムなどが格納される。業務用ゲームシステムの場合にはＲＯＭ９５０が情報記憶媒体として機能し、ＲＯＭ９５０に各種プログラムが格納される。なおＲＯＭ９５０の代わりにハードディスクを利用してもよい。
【０１１５】
ＲＡＭ９６０は、各種プロセッサの作業領域となる。ＤＭＡコントローラ９７０は、プロセッサ、メモリ間でのＤＭＡ転送を制御する。ＤＶＤドライブ９８０は、プログラム、画像データ、或いは音データなどが格納されるＤＶＤ９８２にアクセスする。通信インターフェース９９０はネットワーク（通信回線、高速シリアルバス）を介して外部との間でデータ転送を行う。
【０１１６】
なお、本実施形態の各部（各手段）の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【０１１７】
そして、本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア（コンピュータ）を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアである各プロセッサ９０２、９０４、９０６、９１０、９３０に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ９０２、９０４、９０６、９１０、９３０は、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【０１１８】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【０１１９】
本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【符号の説明】
【０１２０】
Ｐ，Ｐａ，Ｐｂ，Ｐｃ，Ｐｄ，Ｐｅ，Ｐｆ  パーティクル、Ｃ  キャラクタ、Ｐ０〜Ｐ５，Ｐｎ  パーティクル、ＣＭ  仮想カメラ、１００  処理部、１１０  オブジェクト空間設定部、１１２  移動・動作処理部、１１４  仮想カメラ制御部、１１６  ぼかし処理割り当て制御部、１２０  描画部、１２２  パーティクル発生部、１２４  距離情報算出部、１２６  ぼかし量計算部、１２８  パーティクルサイズ変更部、１２９  ぼかし画像生成部、１３０  音生成部、１６０  操作部、１７０  記憶部、１７２  主記憶部、１７４  描画バッファ、１７６  オブジェクトデータ記憶部、１７８  テクスチャ記憶部、１７９  Ｚバッファ、１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、１９６  通信部、２００  被写界深度、２１０  手前ぼかし範囲、２２０  奥ぼかし範囲、３００，３１０  パーティクル、４００  テクスチャ、５００  通常画像、５１０  ぼかし画像
【図１】
2011209865.tif 000003
【図３】
2011209865.tif 000004
【図４】
2011209865.tif 000005
【図５】
2011209865.tif 000006
【図６】
2011209865.tif 000007
【図７】
2011209865.tif 000008
【図８】
2011209865.tif 000009
【図９】
2011209865.tif 000010
【図１０】
2011209865.tif 000011
【図１１】
2011209865.tif 000012
【図２】
2011209865.tif 000013
【図１２】
2011209865.tif 000014