(57)【要約】      （修正有）【課題】中間バッファ内に異なるマテリアル情報が付加されたピクセルデータが混在する場合に、異なるマテリアル間での処理の切り替えコストを低減する。【解決手段】ピクセル処理部が、スクリーン座標に描画することを決定したピクセルデータを出力する。中間バッファには、ピクセル処理部から出力されたピクセルデータが格納される。中間バッファは、同一のマテリアル情報を有するピクセルデータに対しては、同じＩＤ情報を付与して記憶する。ソート処理部は、中間バッファを解析し、ピクセルデータの処理順番を同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える。シェーディング処理部は、ソート処理部を介して中間バッファを読み込み、同一のＩＤ情報が付与されたピクセルデータごとにシェーディング処理を行う。【選択図】図２
2015032099.tif 000002
【特許請求の範囲】
【請求項１】
スクリーン座標に描画することを決定したピクセルデータを出力するピクセル処理部と，
前記ピクセル処理部から出力された前記ピクセルデータが格納される中間バッファであって，同一のマテリアル情報を有するピクセルデータに対しては，同じＩＤ情報を付与して記憶する中間バッファと，
前記中間バッファを解析し，前記ピクセルデータの処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替えるソート処理部と，
前記ソート処理部を介して前記中間バッファを読み込み，同一のＩＤ情報が付与されたピクセルデータごとにシェーディング処理を行うシェーディング処理部と，を備える
画像処理装置。
【請求項２】
前記マテリアル情報は，ピクセルのカラー値を含む
請求項１に記載の画像処理装置。
【請求項３】
前記ソート処理部は，
前記中間バッファを解析し，スクリーン座標において隣接する複数のピクセルデータを一つのピクセル群として，複数のピクセル群を形成する処理と，
前記ピクセル群の処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える処理と，を行い，
前記シェーディング処理部は，
前記ソート処理部を介して前記中間バッファを読み込み，同一のＩＤ情報が付与されたピクセル群ごとに，シェーディング処理を行う
請求項１に記載の画像処理装置。
【請求項４】
前記ソート処理部は，
前記中間バッファを解析し，スクリーン座標において隣接する複数のピクセルデータを一つのピクセル群として，複数のピクセル群を形成する処理と，
前記複数のピクセル群を，ピクセルデータに付与されたＩＤ情報が全て共通している第１タイプと，異なるＩＤ情報を有するピクセルデータが混在している第２タイプとに分類する処理と，
前記第１タイプに属するピクセル群の処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える処理と，を行い，
前記シェーディング処理部は，
前記ソート処理部を介して前記中間バッファを読み込み，まず前記第１タイプのピクセル群についてシェーディング処理を行い，その後に前記第２タイプのピクセル群についてシェーディング処理を行うものであって，
前記第１タイプのピクセル群については，同一のＩＤ情報が付与されたピクセル群ごとに，シェーディング処理を行う
請求項１に記載の画像処理装置。
【請求項５】
ピクセル処理部が，スクリーン座標に描画することを決定したピクセルデータを出力する工程と，
前記ピクセル処理部により出力された前記ピクセルデータを，同一のマテリアル情報を有するピクセルデータに同じＩＤ情報を付与して中間バッファに記憶する工程と，
ソート処理部が，前記中間バッファを解析し，前記ピクセルデータの処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える工程と，
シェーディング処理部が，前記ソート処理部を介して前記中間バッファを読み込み，同一のＩＤ情報が付与されたピクセルデータごとに，シェーディング処理を行う工程と，を含む
画像処理方法。
【請求項６】
請求項１に記載の画像処理装置を具備するコンピュータ。
【請求項７】
請求項１に記載の画像処理装置を具備するゲーム機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，三次元グラフィック描画処理用の画像処理装置及び画像処理方法に関する。具体的に説明すると，本発明の画像処理装置は，各ピクセルについてシェーディング処理を行う前に，その処理順番を適切に並べ替える（ソートする）処理を行う。これにより，本発明は，同じマテリアル情報を持つ複数のピクセルデータをまとめて処理できるため，シェーディング処理の効率性を高めることができる。
【背景技術】
【０００２】
従来から，ゲーム機やカーナビゲーション装置などの分野においては，３次元コンピュータグラフィックスをリアルタイムに描画する３次元画像処理装置が普及している。３次元コンピュータグラフィックスでは，一般的に，３次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理においては，光源，視点位置，視線方向，物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディング処理が行われる。また，写実性の高い画像を生成するために，ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングも行われる。
【０００３】
例えば特許文献１には，３次元グラフィックの描画処理の一例が示されている。３次元グラフィックを描画する一連の処理手順は，例えば，ジオメトリ処理とレンダリング処理の２つに大別される。
【０００４】
ジオメトリ処理は，３次元シーンを構成するポリゴンの各頂点に幾何学処理を施し，２次元画面（スクリーン座標）の描画に使用する頂点データを求める処理である。ジオメトリ処理には，例えば，座標変換処理，クリッピング処理，及びライティング処理が含まれる。まず，座標変換処理では，ポリゴンを定義する各頂点の座標を，視点の位置や方向に合わせて２次元のスクリーン座標系へ変換する。また，ライティング処理では，各頂点と光源の距離や，各頂点と光源の角度に基づいて，その頂点の輝度を計算する。また，クリッピング処理では，表示画面の外に位置するポリゴンを取り除く処理を行う。
【０００５】
上記ジオメトリ処理の後には，レンダリング処理が行われる。レンダリング処理は，ジオメトリ処理で求めたポリゴンの頂点データから画素データを生成して，フレームバッファに書き込む処理である。レンダリング処理には，例えば，セットアップ処理，ラスタライズ処理，テクスチャマッピング処理，ピクセルテスト処理，ピクセルブレンディング処理，ライティング処理，及びシェーディング処理が含まれる。まず，セットアップ処理では，頂点データからラスタライズ処理に必要な増分値等のパラメータを算出する。また，ラスタライズ処理では，セットアップ処理で求められたパラメータに従って所定の補間を行い，ベクタ表現で表されているポリゴンを，ラスタ表現で表されているピクセルへと変換（ラスタ化）する。また，テクスチャマッピング処理では，各ピクセルに対してテクスチャイメージのピクセルデータを貼り付ける処理を行う。ピクセルテスト処理では，各ピクセルデータの奥行きを表すＺ値の大小比較する深度テストや，アルファ値（透過度）を比較するアルファテスト等を行い，そのピクセルデータをスクリーン座標に描画するか否か，すなわちフレームバッファへ書き込むか否かを判定する。ピクセルブレンディング処理では，ピクセルテスト処理においてフレームバッファへ書き込む決定を下したピクセルのカラー値を，既にフレームバッファに書き込まれているカラー値とブレンディングしてフレームバッファへ書き込む。また，ライティング処理では，３次元シーンから２次元スクリーン空間への光反射強度や光反射率を計算する。さらに，シェーディング処理では，光の角度と光源からの距離を考慮して，オブジェクトを構成する各ピクセルのカラー値（色調や階調）を変化させ，実写のような効果を得る。
【０００６】
ところで，描画する３次元グラフィックスによっては，上記レンダリング処理のうちのシェーディング処理が，非常に複雑な処理（重い処理）となることがある。このような場合に，実際に描画結果として表示されないピクセルに対してまで複雑なシェーディング処理を行なってしまうと，必要のない処理を無駄に行うこととなり，描画効率が低下する。このため，従来から一般的に，複雑なシェーディング処理を行う際に，実際に描画結果として表示されないピクセルに対しては，シェーディング処理を行わないようにしている。つまり，まず，シェーディング処理を省いたレンダリング処理を行い，ピクセルのＺ値，法線，テクスチャのＵＶ座標などの情報を出力し，中間バッファに格納する。そして，その後，中間バッファに格納されているデータをテクスチャとして読み出し，中間バッファに格納されているピクセル（実際に表示させるためのピクセル）についてのみ，シェーディング処理を行う。これにより，実際に表示されないピクセルに対しては，シェーディング処理を行わなくて済むようになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−２７１９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら，上記のように中間バッファを形成する場合，この中間バッファには，複数の異なるマテリアル情報が付加されたピクセルデータが混在することとなる。マテリアル情報の例は，ピクセルによって現されるオブジェクトの物体特性を示す情報である。例えば，物体特性の情報には，例えば，オブジェクトのカラー情報（色調や階調）や，双方向反射率分布関数（ＢＲＤＦ）によって定義される情報が含まれている。このように，中間バッファ内に異なるマテリアル情報が付加されたピクセルデータが混在していると，中間バッファからピクセルデータを読み出してシェーディング処理を行う際に，各マテリアルに対応する機能の切り替え処理が頻繁に発生する。例えば，中間バッファ内に格納されている順番に従ってシェーディング処理を行うと，「赤」，「青」，「緑」，「青」，「赤」，「緑」のような順番で，マテリアル情報が付与されたピクセルのシェーディング処理を行う必要があるとする。ここで「赤」，「青」，「緑」のマテリアル情報を持つピクセルは，それぞれ，ハードウェア的若しくはソフトウェア的に異なる機能で処理する必要がある。このため，「赤」のマテリアル情報を持つピクセルデータの次に「青」のマテリアル情報を持つピクセルデータを処理するときには，「赤」のマテリアルから「青」のマテリアルに対応する機能への切り替え処理が必要となっていた。
【０００９】
従って，中間バッファ内に異なるマテリアル情報が付加されたピクセルデータが混在していると，中間バッファからピクセルデータを読み出してシェーディング処理を行う際に，異なるマテリアルに対する機能への切り替え処理が頻繁に発生する。そうすると，３次元グラフィックスを描画するにあたり，画像処理装置全体の処理速度が低下するという問題があった。
【００１０】
そこで，現在では，中間バッファ内に異なるマテリアル情報が付加されたピクセルデータが混在する場合であっても，異なるマテリアル間での処理の切り替えコストを低減することができ，描画処理の効率化を図ることのできる技術が求められている。
【課題を解決するための手段】
【００１１】
そこで，本発明の発明者らは，上記の従来発明の問題点を解決する手段について鋭意検討した結果，中間バッファ内に格納されているピクセルデータを読み出すにあたり，同じマテリアル情報を持つピクセルデータをまとめて処理できるように，中間バッファ内のデータを並べ替える（ソートする）ことにより，異なるマテリアル間での切り替えコストを低減できるという知見を得た。そして，本発明者らは，上記知見に基づけば，従来技術の課題を解決できることに想到し，本発明を完成させた。
具体的に説明すると，本発明は以下の構成を有する。
【００１２】
本発明の第１の側面は，画像処理装置に関する。
本発明の画像処理装置は，ピクセル処理部と，中間バッファと，ソート処理部と，シェーディング処理部と，を備える。
ピクセル処理部は，スクリーン座標に描画することを決定したピクセルデータを中間バッファに出力する。
中間バッファには，ピクセル処理部から出力されたピクセルデータが格納される。また，中間バッファは，同一のマテリアル情報を有するピクセルデータに対しては，同じＩＤ情報を付与して記憶している。
ソート処理部は，中間バッファを解析し，ピクセルデータの処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える。すなわち，ソート処理部は，ピクセルデータの処理順番を，ＩＤ情報に基づいてソートする。
シェーディング処理部は，ソート処理部を介して中間バッファを読み込み，同一のＩＤ情報が付与されたピクセルデータごとにシェーディング処理を行う。
【００１３】
上記構成のように，本発明では，ソート処理部が，同一のＩＤ情報が付与されたピクセルデータを一括してシェーディングできるように，中間バッファに格納されているピクセルデータの処理順番をソートしておく。これにより，中間バッファ内に異なるマテリアル情報が付加されたピクセルデータが混在している場合であっても，異なるマテリアル間での切り替え処理を，必要最小限に抑えることができる。
【００１４】
本発明の画像処理装置において，マテリアル情報はピクセルのカラー値を含むことが好ましい。
【００１５】
上記のように，中間バッファ内に格納されているピクセルデータを，カラー値を基準にしてソートすることにより，シェーディング処理の効率化を図ることができる。
【００１６】
本発明の画像処理装置において，ソート処理部は，以下の処理を行うことが好ましい。
すなわち，ソート処理部は，まず，中間バッファを解析し，スクリーン座標において隣接する複数のピクセルデータを一つのピクセル群として，複数のピクセル群を形成する処理を行う。その後，ソート処理部は，ピクセル群の処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える処理を行う。
この場合に，シェーディング処理部は，ソート処理部を介して中間バッファを読み込み，同一のＩＤ情報が付与されたピクセル群ごとに，シェーディング処理を行うことが好ましい。
【００１７】
上記のように，複数のピクセルデータを含むピクセル群ごとにソート処理を行うことで，ピクセルデータを一つ一つソートする場合と比較して，ソート処理を高速に行うことが可能となる。また，ピクセル群ごとにソート処理をすることで，ソート処理に必要となるメモリ容量を節約することができ，回路規模を低減することが可能になる。
【００１８】
本発明の画像処理装置において，ソート処理部は，以下の処理を行うことが好ましい。
前記ソート処理部は，
すなわち，ソート処理部は，まず，中間バッファを解析し，スクリーン座標において隣接する複数のピクセルデータを一つのピクセル群として，複数のピクセル群を形成する処理を行う。その後，ソート処理部は，複数のピクセル群を，ピクセルデータに付与されたＩＤ情報が全て共通している第１タイプと，異なるＩＤ情報を有するピクセルデータが混在している第２タイプとに分類する処理を行う。また，ソート処理部は，第１タイプに属するピクセル群の処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える処理を行う。
この場合に，シェーディング処理部は，ソート処理部を介して中間バッファを読み込み，まず第１タイプのピクセル群についてシェーディング処理を行い，その後に第２タイプのピクセル群についてシェーディング処理を行うものであることが好ましい。このとき，シェーディング処理部は，第１タイプのピクセル群については，同一のＩＤ情報が付与されたピクセル群ごとに，シェーディング処理を行う。
【００１９】
上記のように，複数のピクセルデータをまとめたピクセル群を複数形成する場合，その複数のピクセル群の中には，ＩＤ情報が統一された第１タイプと，ＩＤ情報が混在している第２タイプが存在する。このような場合には，ＩＤ情報が統一された第１タイプについては，先にシェーディング処理を行い，その後にＩＤ情報が混在している第２タイプのシェーディング処理を行うことで，異なるマテリアル間での処理の切り替えを，必要最小限に抑えることが可能となる。
【００２０】
本発明の第２の側面は，画像処理方法に関する。
本発明に係る画像処理方法は，
ピクセル処理部が，スクリーン座標に描画することを決定したピクセルデータを出力する工程と，
ピクセル処理部により出力されたピクセルデータを，同一のマテリアル情報を有するピクセルデータに同じＩＤ情報を付与して中間バッファに記憶する工程と，
ソート処理部が，中間バッファを解析し，ピクセルデータの処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替える工程と，
シェーディング処理部が，ソート処理部を介して中間バッファを読み込み，同一のＩＤ情報が付与されたピクセルデータごとに，シェーディング処理を行う工程と，を含む。
【００２１】
本発明の他の側面は，上記第１の側面に係る画像処理装置を具備するコンピュータである。
【００２２】
本発明の他の側面は，上記第１の側面に係る画像処理装置を具備するゲーム機である。
【発明の効果】
【００２３】
本発明によれば，中間バッファ内に異なるマテリアル情報が付加されたピクセルデータが混在する場合であっても，異なるマテリアル間での処理の切り替えコストを低減することができ，描画処理の効率化を図ることができる。
【図面の簡単な説明】
【００２４】
【図１】図１は，画像処理装置のブロック図であり，前段処理を行うときのフローを示している。
【図２】図２は，画像処理装置のブロック図であり，後段処理を行うときのフローを示している。
【図３】図３は，ソート処理を行わないで，中間バッファからピクセルデータを読み出したときの状態を概念的に示している。
【図４】図４は，ソート処理を行わないで，中間バッファからピクセルデータを読み出したときの状態を概念的に示している。
【図５】図５は，ソート処理におけるデータの構造例を示している。
【図６】図６は，本発明の他の実施形態に係るコンピュータを示すブロック図である。
【図７】図７は，本発明の他の実施形態に係るゲーム機を示すブロック図である。
【発明を実施するための形態】
【００２５】
以下，図面を用いて本発明を実施するための形態について説明する。本発明は，以下に説明する形態に限定されるものではなく，以下の形態から当業者が自明な範囲で適宜修正したものも含む。
【００２６】
図１及び図２は，本発明に係る画像処理装置１の構成例を示すブロック図である。図１は，画像処理装置１により実行される画像処理方法の前段処理の流れを示している。図１に示される前段処理は，中間バッファにピクセルデータを出力するまでの処理である。また，図２は，画像処理装置１により実行される画像処理方法の後段処理の流れを示している。図２に示される後段処理は，中間バッファにピクセルデータを出力した後の処理である。
【００２７】
まず，図１を参照して，画像処理方法の前段処理の流れについて説明する。
図１に示されるように，コマンドプロセッサ１０は，頂点バッファ１１から頂点データを読み出すと共に，コマンドバッファ１２からコマンドデータを読み出す。
頂点バッファ１１には，色やテクスチャマッピング座標といった属性を示す頂点データが，各頂点の座標に関連付けて記憶される。また，コマンドバッファ１２には，ポリゴンを構成する頂点データの配列が描画コマンドとして記録され，頂点の並び順に沿って各頂点のアドレス情報が記録されている。
【００２８】
頂点バッファ１１においては，例えば，Ｖ０〜ＶＮのＮ個の頂点データが記録されている。他方，コマンドバッファ１２においては，ポリゴンの頂点データが三角形や，四角形（矩形），その他の多角形を一単位とした配列として記録されている。また，コマンドバッファ１２においては，２つの隣接する三角形のポリゴンを四角形（矩形）のポリゴンとして記録するものであってもよい。また，コマンドバッフ１２における記録の仕方として，プリミティブの配列情報は，隣接する三角形のうち共通する２点の頂点についてはコマンドバッファに記録せずに，異なる頂点データへの参照値のみが記録されるものであってもよい。この場合，コマンドバッファ１２の記録容量を抑制することができる。
【００２９】
コマンドプロセッサ１０は，頂点バッファ１１及びコマンドバッファ１２から読み出した頂点データ及びコマンドデータを，シェーダプロセッサ１３（「シェーディング処理部」に相当）に入力する。シェーダプロセッサ１３は，コマンドプロセッサ１０から入力された各頂点データに対して，頂点処理を行う。頂点処理では，頂点の移動処理や，座標変換（ワールド座標変換，カメラ座標変換，スクリーン座標変換），ライティング処理，クリッピング処理，透視変換，及び光源処理等のジオメトリ処理が行われる。座標変換処理では，ポリゴンを定義する各頂点の座標を，視点の位置や方向に合わせて２次元のスクリーン座標系へ変換する。また，ライティング処理では，各頂点と光源の距離や，各頂点と光源の角度に基づいて，その頂点の輝度を計算する。また，クリッピング処理では，表示画面の外に位置するポリゴンを取り除く処理を行う。シェーダプロセッサ１３は，それらの頂点処理の結果に基づいて，オブジェクトを構成する頂点群について与えられた頂点データを変更（更新，調整）する。
【００３０】
頂点処理における座標変換ついて具体的に説明する。シェーダプロセッサ１３は，まず，オブジェクトのローカル座標を含む頂点データを取得し，取得した頂点データのローカル座標を，ワールド座標に変換する。この第１の座標変換は，１つのワールド座標系の所定の位置に，オブジェクトを配置するために行うものであり，ローカル座標系からワールド座標系への座標変換が実行される。なお，第１の座標変換において，オブジェクトの向き指定する回転角，位置を指定する並進ベクトル，大きさを指定するスケール比等のパラメータがメモリから読み出される。次に，シェーダプロセッサ１３は，ワールド座標系におけるオブジェクトの座標を，カメラ位置を原点としてカメラから見たカメラ座標系での座標へと変換する。この第２の座標変換を行なって，視点をカメラ位置に決定し，カメラの方向やズームレベルを指定することにより，オブジェクトを投影するスクリーンが決定される。また，シェーダプロセッサ１３は，特定の光源位置から照射される光をオブジェクトに当てたときの各頂点における照度の計算を行う。また，シェーダプロセッサ１３は，特定の光源位置から照射される光をオブジェクトに当てたときの各頂点の色などの他の物体特性についても，同様に計算する。最後に，シェーダプロセッサ１３は，ディスプレイの解像度等を含んだディスプレイ情報を読み出し，３次元のワールド座標をスクリーンに投影する座標変換を行う。この第３の座標変換によって，３次元の仮想空間上にある頂点の座標は，２次元のスクリーン座標に変換される。このように，シェーダプロセッサ１３は，頂点処理を行なって，ローカル座標系で定義されたオブジェクトの頂点データを，スクリーン平面上の２次元座標と照度等の頂点の特性を示す情報を含んだ頂点データに変換にする。
【００３１】
上記頂点処理完了後，シェーダプロセッサ１３は，頂点処理済みの頂点データと，コマンドバッファ１２から取得したコマンドデータを参照し，複数の頂点を組み合わせたポリゴン（三角形）を形成する。シェーダプロセッサ１３は，このポリゴンデータを，ラスタライザ１４に入力する。ここで，ラスタライザ１４は，三角形で定義されたポリゴンに対してサンプリングを行う。つまり，ラスタライザ１４は，入力されたポリゴンに対しラスタライズ処理を行い，ピクセルに変換する。このように，ラスタライザ１４は，３次元空間上のポリゴンを，描画平面上（スクリーン座標系）のフラグメントに変換するビュー変換を行う。さらに，ラスタライザ１４は，描画平面上のフラグメントを描画平面の水平方向に沿ってスキャンしながら，ラスタライン毎に量子化されたピクセルに変換していく。ラスタライザ１４は，上記のラスタライズ処理によって生成したピクセルデータを，シェーダプロセッサ１３に出力する。
【００３２】
ここで，シェーダプロセッサ１３は，ラスタライザ１４から受け取ったピクセルデータを用いて，シェーディング処理を省いた３Ｄ描画処理を行う。例えば，シェーダプロセッサ１３では，フラグメント処理が行われる。フラグメント処理では，画像を構成するピクセル（表示画面を構成するフラグメント）が描画される。例えば，シェーダプロセッサ１３は，必要に応じてテクスチャ処理部１５からテクスチャ情報を読み込み，テクスチャ処理を行う。テクスチャ処理は，三次元オブジェクトの表面に質感を与えるためのテクスチャ画像を貼り付ける処理である。テクスチャ処理により，テクスチャ画像に対応したテクスチャ座標（ｕ，ｖ）がピクセルデータに付与される。また，シェーダプロセッサ１３は，３Ｄ描画処理を行うにあたり，ライティング処理やブレンディング処理などの典型的な処理に関わる回路を備える固定機能パイプライン１６にアクセスすることとしてもよい。これらライティング処理やブレンディング処理などの典型的な処理を，固定機能パイプライン１６に実行させることで，処理の高速化・効率化を図ることができる。
【００３３】
上記のようなシェーディング処理を省いた３Ｄ描画処理（フラグメント処理）の後，シェーダプロセッサ１３は，処理済みのピクセルデータを，ピクセル処理部１７へと出力する。ピクセル処理部１７は，深度テストやアルファテストを含むピクセルテストを行い，各ピクセルデータを実際にスクリーン座標上に描画するか否かを判定する。深度テストは，各ピクセルデータの奥行きを表すＺ値の大小比較し，そのピクセルが描かれる予定の２Ｄ座標上に，よりカメラに近い他のピクセルがあるかどうかで描画の有無を判定するテストである。また，アルファテストは，各ピクセルデータの透明度を表すアルファ値を比較し，そのピクセルを描画するかしないかを決定するテストである。ピクセル処理部１７は，これらのピクセルテストに合格したピクセルのデータを，中間バッファ１８へと出力する。このため，中間バッファ１８には，スクリーン座標上に描画することが決定されたピクセルデータのみが格納されることとなる。
【００３４】
続いて，図２を参照して，画像処理方法の後段処理の流れについて説明する。
図２に示されるように，まず，コマンドプロセッサ１０は，コマンドバッファ１２から必要なコマンドデータを再度読み出して，シェーダプロセッサ１３に入力する。
【００３５】
その後，シェーダプロセッサ１３は，コマンドプロセッサ１０から入力されたコマンドデータに基づいて，ラスタライザ１４に対して，矩形プリミティブの情報（４頂点の座標上）を入力する。ここで，ラスタライザ１４は，矩形プリミティブに対してサンプリングを行う。つまり，ラスタライザ１４は，この矩形を塗りつぶすようなピクセルデータを，例えば左上から水平方向に生成しながら右下まで生成するとともに，各頂点座標に負荷されているパラメータの補完を行う。ラスタライザ１４は，矩形を塗りつぶすようなピクセルデータを，フラグメント処理向けにシェーダプロセッサに対して出力する。
【００３６】
その後，シェーダプロセッサ１３は，ラスタライザ１４から入力されたピクセルデータを用いて，テクスチャ処理部１５及びソート処理部１９を経由して，中間バッファ１８の読み込みを行う。すなわち，シェーダプロセッサ１３は，テクスチャ処理部１５に対し，中間バッファ１８に格納されているピクセルデータにテクスチャ処理を実行するように指示する。このような指示を受けたテクスチャ処理部１５は，ソート処理部１９を経由して，中間バッファ１８からピクセルデータを読み出す。このソート処理部１９は，中間バッファ１０内に格納されているピクセルデータ（実際に表示させることが決定しているピクセル）を，処理しやすい順番に並べ替えて読み出し，テクスチャ処理部１５へと受け渡す。このため，テクスチャ処理部１５は，ソート処理部１９によって効率的にソートされた順番に従って，ピクセルデータを処理できるようになる。
【００３７】
ここで，図３は，中間バッファ１８に格納されているピクセルデータの例を示している。図３（ａ）では，中間バッファ１８内に格納されているピクセルデータが，スクリーン座標上の位置に従って，配置されている状態を概念的に示している。なお，ここにいうスクリーン座標とは，モデリングされたオブジェクトをディスプレイ上に表示する際に使用する座標系である。スクリーン座標系において，通常，原点は画面の左上になる。なお，図３（ａ）では，各ピクセルに対し，ディスプレイ等のスキャンラインに従った順番の番号（０〜３１）を付している。
【００３８】
中間バッファ１８に格納されているピクセルデータは，それぞれマテリアル情報を有している。マテリアル情報の例は，ピクセルによって現されるオブジェクトの物体特性の情報である。例えば，物体特性の情報には，例えば，オブジェクトのカラー情報（色調や階調）や，双方向反射率分布関数（ＢＲＤＦ）によって定義される情報が含まれている。中間バッファ１８に格納刺されている複数のピクセルデータには，同じマテリアル情報を持つものも存在するし，異なるマテリアル情報を持つものの存在している。ここで，図３（ａ）では，概念的に，同じマテリアル情報を持つピクセルデータには，同じ模様（ハッチング）を付与して分類している。図３（ａ）等では，例示的に，４種類のマテリアル情報が設定されている。さらに，図３（ａ）に示されるように，同一のマテリアル情報を有するピクセルデータに対しては，同じＩＤ情報（Ｌｉｇｈｔ  ＩＤ）が付与される。つまり，このＩＤ情報（Ｌｉｇｈｔ  ＩＤ）は，ピクセルデータが持つマテリアル情報を識別するための情報である。例えば，図３（ａ）に示した例では，Ｎｏ．０のピクセルデータに対し「０」のＩＤ情報が付与され，Ｎｏ．５のピクセルデータに対し「１」のＩＤ情報が付与され，Ｎｏ．１１のピクセルデータに対し「２」のＩＤ情報が付与され，Ｎｏ．３０のピクセルデータに対し「３」のＩＤ情報が付与されている。このようにすることで，同じＩＤ情報を持つピクセルデータは同じマテリアル情報をもつものであり，異なるＩＤ情報を持つピクセルデータは異なるマテリアル情報をもつものであることがわかるようになる。ただし，これらのＩＤ情報の割り当ては，一例であり，例えばピクセルデータのカラー値などに応じて０〜２５５等のＩＤ情報の割り当てを行うこともできる。
【００３９】
さらに，図３（ａ）に示された例では，スクリーン座標において横方向及び縦方向（Ｘ方向Ｙ方向）に隣接する２×２の４つのピクセルを，一つのピクセル群としている。このように，本例では，中間バッファ１８内のピクセルデータを処理する際に，２×２のピクセル単位でのフラグメント処理を想定している。例えば，本例では，Ｎｏ．０−１−８−９のピクセル群や，Ｎｏ．２−３−１０−１１のピクセル群といった単位で，処理が行われる。ただし，本例では，２×２の粒度で処理を行うこととしているが，ピクセルの粒度は実装に応じて１×１のような小さい粒度であってもよいし，４×４のような大きい粒度であってもよいし，１×２や２×１のような正方形以外の粒度であってもよい。
【００４０】
続いて，図３（ｂ）は，中間バッファ１８内のピクセルデータを，ソートせずに読み出した場合の処理手順を示している。中間バッファ１０からピクセルデータをソートせずに読み出した場合，図３（ｂ）に示されるように，基本的には，スキャンラインに沿った順番で読み出されることとなる。例えば，図３（ｂ）に示されるように，通常は，Ｎｏ．０−１−８−９のピクセル群の後に，Ｎｏ．２−３−１０−１１のピクセル群が処理され，さらにその後，Ｎｏ．４−５−１２−１３のピクセル群が処理されるといった順番となる。
【００４１】
しかしながら，図３（ｂ）に示されるように，中間バッファ１８内に異なるマテリアル情報が付加されたピクセルデータが混在している場合に，通常通り中間バッファ１８からピクセルデータを読みすと，その後の処理において，マテリアルに対応する機能への切り替え処理が頻繁に発生する。例えば，中間バッファ１８から読みだした後の処理において，
「０」のＩＤ情報が付与されたピクセルデータと，「１」のＩＤ情報が付与されたピクセルデータとでは，異なる処理を行う必要がある。このため，「０」のＩＤ情報が付与されたピクセルデータの後に，「１」のＩＤ情報が付与されたピクセルデータを処理する際には，処理機能を切り替えるための処理が必要となる。図３（ｂ）に示された読み出し順序では，処理機能を切り替えるためのコストが考慮されておらず，機能の切り替え処理が頻発するといえる。
【００４２】
そこで，本発明では，ソート処理部１９によって，中間バッファ１８からピクセルデータを読み出す順番を適切なものに並べ替える。ソート処理部１９によるソート処理の一例は，図４に示されている。ソート処理部１９は，図４（ａ）に示された順番で中間バッファ１８に記憶されているピクセルデータを，図４（ｂ）に示された順番となるように並べ替えて読み出す。すなわち，ソート処理部１９は，図４（ｂ）に示されるように，各ピクセルデータに付与されたＩＤ情報（Ｌｉｇｈｔ  ＩＤ）に基づいて，ソートを行う。ソート処理部１９は，中間バッファ１８を解析し，ピクセルデータの処理順番を，同一のＩＤ情報が付与されたピクセルデータをまとめて処理できるように並べ替えるものである。図４（ｂ）に示されるように，ソート後のピクセルデータは，ＩＤ情報が「０」，「１」，「２」，「３」，「その他」の順に読み出されるようになっている。
【００４３】
また，図４に示された例では，図３と同様に，２×２のピクセル群の単位で処理を行うこととしている。このため，中間バッファ１８内のピクセル群には，ピクセルデータに付与されたＩＤ情報が全て共通しているタイプ（第１タイプ：ＴｙｐｅＡ）と，異なるＩＤ情報を有するピクセルデータが混在しているタイプ（第２タイプ：ＴｙｐｅＢ）が存在する。このため，ソート処理部１９は，ソート処理を行うにあたり，まず，中間バッファ１８内のピクセル群を第１タイプ（ＴｙｐｅＡ）と第２タイプ（ＴｙｐｅＢ）に分ける。そして，ソート処理部１９は，第１タイプ（ＴｙｐｅＡ）のピクセル群について，ＩＤ情報（Ｌｉｇｈｔ  ＩＤ）に基づいたソートを行う。さらに，ソート処理部１９は，第１タイプ（ＴｙｐｅＡ）が先に処理され，第２タイプ（ＴｙｐｅＢ）が後に処理されるように，ピクセル軍を中間バッファ１８から読み出すようにする。
【００４４】
また，図５には，ソート処理におけるデータの構造例が示されている。まず，図５（ａ）に示されるように，中間バッファ１８内に格納されているピクセルデータにＩＤ情報（Ｌｉｇｈｔ  ＩＤ）を付与して，分類を行う。このとき，異なるＩＤ情報を有するピクセルデータが混在しているタイプ（第２タイプ：ＴｙｐｅＢ）については，専用のＩＤ情報（例：２５５）を付与する。その後，図５（ｂ）に示すような一覧表を作成する。一覧表には，各ＩＤ情報を持つピクセルデータが中間バッファ１８内にいくつ存在するかの情報が記録される。さらに，図３（ｃ）に示されるように，ソート処理後のデータは，バッファ内に記録されている。このようなソート処理後のデータを格納するためのソートバッファは，中間バッファ１８内に構築されたものであってもよいし，他の記憶装置に構築されたものであってもよい。ソートバッファにデータを記憶するにあたり，ピクセルデータの個数がオフセット値として記憶されている。このオフセット値は，図３（ｂ）の一覧表に記録された各ピクセルデータの個数を加算することによって求めることができる。
【００４５】
図２に戻って説明を行うと，ソート処理部１９は，中間バッファ１８からピクセルデータを読み出す順番をソートする。そして，ソート処理部１９は，ソート後の順番で，中間バッファ１８から読み出したピクセルデータを，テクスチャ処理部１５に入力する。このため，テクスチャ処理部１５は，ソート処理部１９によって効率的にソートされた順番に従って，ピクセルデータを処理できるようになる。
【００４６】
また，シェーダプロセッサ１３は，ソート処理部１９を介して中間バッファ１８を読み込む。このとき，ソート処理部１９は，上述した処理に従って，中間バッファ１８からピクセルデータを読み出す順番をソートして，ピクセルデータの処理の順番を，処理機能の切り替えコストが低いものに並べ替える。すなわち，ソート処理部１９は，ピクセルデータの処理順番を，同一のＩＤ情報（Ｌｉｇｈｔ  ＩＤ）が付与されたピクセルデータをまとめて処理できるように並べ替えた上で，シェーダプロセッサ１３に入力する。
【００４７】
シェーダプロセッサ１３は，ソート処理部１９からピクセルデータを受け取ると，このソートされた順番に従って，図１に示した前段処理において省略されていたシェーディング処理を実行する。シェーディング処理では，光の角度と光源からの距離を考慮して，オブジェクトを構成する各ピクセルのカラー値（色調や階調）を変化させる。例えば，シェーダプロセッサ１３は，ジオメトリ処理において光源計算を行い，シェーディング処理用の光源の情報や，照明モデルや，オブジェクトの各頂点の法線ベクトルなどに基づいて，オブジェクトの各頂点のカラー値（ＲＧＢ）を求める。また，シェーダプロセッサ１３は，この各頂点のカラー値に基づいて，ポリゴンに対応する各ピクセルのカラー値を，例えば，ホンシェーディングや，グーローシェーディングなどにより求める。
【００４８】
このように，同一のＩＤ情報が付与されたピクセルデータを一括してシェーディングできるように，ソート処理部１９が，中間バッファ１８に格納されているピクセルデータの処理順番をソートしておく。これにより，中間バッファ１８内に異なるマテリアル情報が付加されたピクセルデータが混在している場合であっても，異なるマテリアル間での切り替え処理を，必要最小限に抑えることができる。
【００４９】
また，シェーダプロセッサ１３は，ソート処理部１９からの出力を，ライティングやブレンディングに係る機能を持つ固定機能パイプライン１６に入力させることもできる。この場合，シェーダプロセッサ１３には，固定機能パイプライン１６において処理されたピクセルデータが入力されるようになる。このようにすれば，ライティング処理やブレンディング処理などの典型的な処理を，効率的に実行できる。また，固定機能パイプライン１６側においても，マテリアル情報（Ｌｉｇｈｔ  ＩＤ）に応じた切り替え処理時間を，最適化することが可能となる。なお，ここにいうシェーディング処理には，フラグメントシェーダ処理や，テクスチャ処理，ライティング処理，及びブレンディング処理が含まれていてもよい。
【００５０】
上記したシェーディング処理後，シェーダプロセッサ１３は，処理済みのピクセルデータをピクセル処理部１７へと出力する。ピクセル処理部１９は，アルファテストなど行い，描画結果をカラーバッファ２０に出力する。カラーバッファ２０は，ピクセルのカラー値をスクリーン座標に対応付けて格納するバッファである。カラーバッファ２０に格納されたピクセルのカラー値は，ディスプレイ装置に画像を表示する際に参照される。カラーバッファ２０は，フレームバッファの一部として構築されたものであってもよい。
【００５１】
図６は，本発明の他の実施態様に係るコンピュータを示すブロック図である。この実施態様は，上記した画像処理装置１を備えたコンピュータグラフィックス処理用のコンピュータに関する。図６に示されるとおり，このコンピュータは，中央演算装置（ＣＰＵ）１０２，ジオメトリ演算回路１０３などのジオメトリ演算部，レンダラー１０４などの描画部，テクスチャ生成回路１０５などのテクスチャ生成部，照明処理回路１０７などの照光処理部，表示回路１０８などの表示情報作成部，フレームバッファ１０９，及びモニター１１０を具備する。これらの要素は，バスなどにより接続され，相互にデータを伝達できる。そのほか，図示しないメインメモリや，各種テーブル，ワーク領域となるワークメモリ１１１，テクスチャを格納するテクスチャメモリ１１２などを具備する記憶部などを有してもよい。各部を構成するハードウェアは，例えばバスなどを介して連結されている。なお，記憶部は，ＶＲＡＭなどのＲＡＭや，ＣＲ−ＲＯＭ，ＤＶＤ，ハードディスクなどにより構成されても良い。本発明に係る画像処理装置１は，このようなコンピュータグラフィックス用のコンピュータに具備されて，実装されたものであってもよい。
【００５２】
図７は，本発明の他の実施形態に係るゲーム機のブロック図である。このブロック図で表される実施形態は，特に携帯用，家庭用又は業務用のゲーム機として好適に利用されうる。そこで，以下では，ゲーム機として説明する。なお，同図に示されるゲーム機は，少なくとも処理部２００を含むものであればよい。また，ゲーム機は，処理部２００と，記憶部２７０と，情報記憶媒体２８０を含んでいてもよい。それ以外のブロック，例えば，操作部２６０，表示部２９０，音出力部２９２，携帯型情報記憶装置２９４，及び通信部２９６については，任意の構成要素とすることができる。本発明に係る画像処理装置１は，このようなゲーム機に具備されて，実装されたものであってもよい。
【００５３】
処理部２００は，ゲーム処理部２２０，画像処理部２３０，及び音処理部２５０を含むものがあげられる。具体的には，メインプロセッサ，コプロセッサ，ジオメトリプロセッサ，描画プロセッサ，データ処理プロセッサ，四則演算回路又は汎用演算回路などがあげられる。これらは適宜バスなどにより連結され，信号の授受が可能とされる。また，圧縮された情報を伸張するためのデータ伸張プロセッサを備えても良い。
【００５４】
ここでゲーム処理部２２０は，コイン（代価）の受け付け処理，各種モードの設定処理，ゲームの進行処理，選択画面の設定処理，オブジェクトの位置や回転角度（Ｘ，Ｙ又はＺ軸回り回転角度）を求める処理，オブジェクトを動作させる処理（モーション処理），視点の位置（仮想カメラの位置）や視線角度（仮想カメラの回転角度）を求める処理，マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置する処理，ヒットチェック処理，ゲーム結果（成果，成績）を演算する処理，複数のプレーヤが共通のゲーム空間でプレイするための処理，又はゲームオーバー処理などの種々のゲーム処理を，操作部２６０からの操作データや，携帯型情報記憶装置２９４からの個人データ，保存データや，ゲームプログラムなどに基づいて行う。
【００５５】
画像処理部２３０は，ゲーム処理部２２０からの指示等にしたがって，各種の画像処理を行うものである。また，音処理部２５０は，ゲーム処理部２２０からの指示等にしたがって，各種の音処理を行う。画像処理部２３０は，ジオメトリ演算部２３２（３次元座標演算部），描画部２４０（レンダリング部）を含むものがあげられる。
【００５６】
ジオメトリ演算部２３２は，ジオメトリ演算部２３２は，座標変換，クリッピング処理，透視変換，又は光源計算などの種々のジオメトリ演算（３次元座標演算）を行う。そして，ジオメトリ処理後（透視変換後）のオブジェクトデータ（オブジェクトの頂点座標，頂点テクスチャ座標，又は輝度データ等）は，例えば，記憶部２７０のメインメモリ２７２に格納されて，保存される。ジオメトリ演算部２３２は，法線ベクトル処理部２３４を含むものがあげられる。法線ベクトル処理部２３４は，オブジェクトの各頂点の法線ベクトル（広義にはオブジェクトの面の法線ベクトル）を，ローカル座標系からワールド座標系への回転マトリクスで回転させる処理を行ってもよい。
【００５７】
描画部２４０は，ジオメトリ演算後（透視変換後）のオブジェクトデータと，テクスチャ記憶部２７６に記憶されるテクスチャなどに基づいて，オブジェクトをフレームバッファ２７４に描画する。描画部２４０は，例えば，テクスチャマッピング部２４２，シェーディング処理部２４４を含むものがあげられる。具体的には，描画プロセッサにより実装できる。描画プロセッサは，テクスチャ記憶部，各種テーブル，フレームバッファ，ＶＲＡＭなどとバスなどを介して接続され，更にディスプレイと接続される。テクスチャマッピング部２４２は，環境テクスチャをテクスチャ記憶部２７６から読み出し，読み出された環境テクスチャを，オブジェクトに対してマッピングする。シェーディング処理部２４４は，オブジェクトに対するシェーディング処理を行う。例えば，ジオメトリ処理部２３２が光源計算を行い，シェーディング処理用の光源の情報や，照明モデルや，オブジェクトの各頂点の法線ベクトルなどに基づいて，オブジェクトの各頂点の輝度（ＲＧＢ）を求める。シェーディング処理部２４４は，この各頂点の輝度に基づいて，プリミティブ面（ポリゴン，曲面）の各ドットの輝度を例えば，ホンシェーディングや，グーローシェーディングなどにより求める。
【００５８】
なお，ゲーム機における構成を適宜利用すれば，スロットマシーンやパチンコ遊技機などにおける画像表示装置としても機能しうるものを得ることができる。
【００５９】
以上，本願明細書では，本発明の内容を表現するために，図面を参照しながら本発明の実施形態の説明を行った。ただし，本発明は，上記実施形態に限定されるものではなく，本願明細書に記載された事項に基づいて当業者が自明な変更形態や改良形態を包含するものである。
【産業上の利用可能性】
【００６０】
本発明は，空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法等に関する。従って，本発明はコンピュータ産業において好適に利用されうる。
【符号の説明】
【００６１】
１…画像処理装置      １０…コマンドプロセッサ  １１…コマンドバッファ
１２…頂点データ      １３…シェーダプロセッサ（シェーダ処理部）
１４…ラスタライザ    １５…テクスチャ回路      １６…固定機能パイプライン
１７…ピクセル処理部  １８…中間バッファ        １９…ソート処理手段
２０…カラーバッファ
【図１】
2015032099.tif 000003
【図２】
2015032099.tif 000004
【図３】
2015032099.tif 000005
【図４】
2015032099.tif 000006
【図５】
2015032099.tif 000007
【図６】
2015032099.tif 000008
【図７】
2015032099.tif 000009