(57)【要約】      （修正有）【課題】空間分割描画を行うにあたり効率的かつ高速にグラフィックスを処理する画像処理装置及び画像処理方法を提供する。【解決手段】コンパイラ処理部は、シェーダプログラムを、カラー・奥行き値の生成に必要な機能を抽出した前段処理用シェーダとそれ以外の後段処理用シェーダに分割して出力する。空間インデックス追加部は、頂点処理後に、空間インデックスを生成して空間インデックス付き頂点バッファを作成する。前段処理部は、空間インデックスにより定義される空間ごとに、ラスタライズ処理を行なってピクセルを取得し、前段処理用シェーダに基づきカラー値及び奥行き値を生成する。後段処理部は、出力カラーバッファに書き込むことが決定されたピクセルについて、後段処理用シェーダに基づいたテクスチャ・シェーディング処理を行う。ピクセル出力部は、前段処理部及び後段処理部により得られたピクセルのカラー値を出力カラーバッファに出力する。【選択図】図１
2014219739.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータグラフィックス処理用の画像処理装置であって，
グラフィックスアプリケーション内のシェーダプログラムを読み込み，カラー・奥行き値の生成に必要な機能を抽出した前段処理用シェーダと，当該前段処理用シェーダに含まれていないテクスチャ・シェーディング処理を含む後段処理用シェーダとを，出力するコンパイラ処理部（１０）と，
グラフィックスアプリケーション内のポリゴンを構成する頂点データを読み込んで，座標変換を含む頂点処理を行い，処理済み頂点データを得ると共に，変換後の座標系における空間インデックスを生成し，当該ポリゴンの構成情報，当該処理済み頂点データ，及び当該空間インデックスを関連付けて記憶した空間インデックス付き頂点バッファ（２１）を作成する空間インデックス追加部（２０）と，
前記空間インデックス付き頂点バッファ（２１）を読み込んでポリゴンを構築し，前記空間インデックスにより定義される空間ごとに，当該ポリゴンにラスタライズ処理を行なってピクセルに変換し，前記前段処理用シェーダに基づいて，ラスタライズ処理済みのピクセルのカラー値及び奥行き値を生成する前段処理部（３０）と，
前記ラスタライズ処理済みのピクセルの奥行き値を参照して出力カラーバッファ（５１）に書き込むことが決定されたピクセルについて，前記後段処理用シェーダに基づいたテクスチャ・シェーディング処理を行い，テクスチャ・シェーディング処理済みのピクセルのカラー値を生成する後段処理部（４０）と，
前記前段処理部（３０）及び前記後段処理部（４０）により得られたピクセルのカラー値を出力カラーバッファ（５１）に出力するピクセル出力部（５０）と，を備える
画像処理装置。
【請求項２】
前記前段処理部（３０）は，前記ラスタライズ処理を行う前段プロセッサコア（３１）を有し，
前記後段処理部（４０）は，前記テクスチャ・シェーディング処理を行う後段プロセッサコア（４１）を有し，
前記前段プロセッサコア（３１）と後段プロセッサコア（４１）は，異なるハードウェアである
請求項１に記載の画像処理装置。
【請求項３】
前記空間インデックス追加部（２０）は，ユーザによって任意に与えられた空間情報に基づいて空間分割を行い，前記空間インデックスを生成する
請求項１又は請求項２に記載の画像処理装置。
【請求項４】
前記コンパイラ処理部（１０）は，
前記シェーダプログラムに対してフロントエンド処理を行い，中間表現へと変換するフロントエンド処理部（１１）と，
前記中間表現と，事前に用意されたカラー・奥行き値の生成に関する処理パターンとのターンマッチ処理を行うことにより，当該中間表現から，カラー・奥行き値の生成に必要な機能を抽出する機能抽出部（１２）と，
前記中間表現に対してバックエンド処理を行い，前記機能抽出部（１２）が抽出した前記カラー・奥行き値の生成に必要な機能を前段処理用シェーダとして出力すると共に，前記シェーダプログラムのうちの前記カラー・奥行き値の生成に必要な機能以外の機能を後段処理用シェーダとして出力するバックエンド処理部（１３）と，を有する。
請求項１から請求項３のいずれかに記載の画像処理装置。
【請求項５】
コンピュータグラフィックス処理用の画像処理装置により実行される画像処理方法であって，
前記画像処理装置が，
グラフィックスアプリケーション内のシェーダプログラムを読み込み，カラー・奥行き値の生成に必要な機能を抽出した前段処理用シェーダと，当該前段処理用シェーダに含まれていないテクスチャ・シェーディング処理を含む後段処理用シェーダとを，出力するコンパイラ処理工程と，
グラフィックスアプリケーション内のポリゴンを構成する頂点データを読み込んで，座標変換を含む頂点処理を行い，処理済み頂点データを得ると共に，変換後の座標系における空間インデックスを生成し，当該ポリゴンの構成情報，当該処理済み頂点データ，及び当該空間インデックスを関連付けて記憶した空間インデックス付き頂点バッファ（２１）を作成する空間インデックス追加工程と，
前記空間インデックス付き頂点バッファ（２１）を読み込んでポリゴンを構築し，前記空間インデックスにより定義される空間ごとに，当該ポリゴンにラスタライズ処理を行なってピクセルに変換し，前記前段処理用シェーダに基づいて，ラスタライズ処理を行ったピクセルのカラー値及び奥行き値を生成する前段処理工程と，
前記ラスタライズ処理済みのピクセルの奥行き値を参照して出力カラーバッファ（５１）に書き込むことが決定されたピクセルについて，前記後段処理用シェーダに基づいたテクスチャ・シェーディング処理を行い，テクスチャ・シェーディング処理を行ったピクセルのカラー値を生成する後段処理工程と，
前記前段処理工程及び前記後段処理工程により得られたピクセルのカラー値を出力カラーバッファ（５１）に出力するピクセル出力工程と，を行う
画像処理方法。
【請求項６】
請求項１に記載の画像処理装置を具備するコンピュータ。
【請求項７】
請求項１に記載の画像処理装置を具備するゲーム機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，空間を分割した上でグラフィックスの描画処理を行うことのできる画像処理装置及び画像処理方法に関するものである。具体的に説明すると，本発明は，空間を分割してグラフィックスの描画を行うことで，ユーザの画面操作等により描画の更新が必要となったような場合に，その描画の更新が必要な空間のみについてポリゴンの描画更新を実行することができる。これにより，本発明の画像処理装置等は，描画処理を高速化し，描画遅延を最小に抑える。
【背景技術】
【０００２】
従来から，ゲーム機やカーナビゲーション装置などの分野においては，３次元コンピュータグラフィックスをリアルタイムに描画する３次元画像表示装置が普及している。３次元コンピュータグラフィックスでは，一般的に３次元空間のオブジェクトを多数のポリゴンにより表現するポリゴンモデルが利用される。ポリゴンモデルの描画処理においては，光源，視点位置，視線方向，物体表面の反射率などを考慮してポリゴン表面に陰影をつけるシェーディングが行われる。また，写実性の高い画像を生成するために，ポリゴンモデルの表面にテクスチャ画像を貼り付けるテクスチャマッピングが行われる。
【０００３】
また，３次元画像表示装置は，例えばグラフィック処理チップなどにより実現されている。このグラフィックス処理チップには，プロセッサが搭載されており，このプロセッサは，プログラマが画像生成アルゴリズムを定義するシェーダが組み込まれることによって画像処理に特化した機能を有するものとなっている。シェーダは，主として，ライティング（光源計算），シェーディング（陰影処理），及びレンダリング（ピクセル化）等を実行するためにグラフィックリソースに対して使用するソフトウェア命令の組み合わせである。グラフィック処理チップで３次元の画像表示を行う方法としては，ＣＰＵ側で処理を行うほか，グラフィック処理チップにおいて実装されたシェーダをプログラム可能に構成し，各シェーダを通じて最終的にレンダリングされるオブジェクトに対して処理を行うようにすることもできる。
【０００４】
また，近年では，タイルベースでグラフィックス処理を行うシステムも開発されている（特許文献１等）。タイルベースのグラフィックスシステムは，各フレームを表示するために，フレームをタイルと呼ばれる複数領域に分割する。また，このシステムは，フレーム内に各グラフィックスプリミティブ（点，線，又は三角形等）を表示するためのビニング部を有している。ビニング部は，多様なタイルのうち，グラフィックスプリミティブが交差するものを決定するためのビニング動作を行うために用いられる。すなわち，ビニング部は，基本的に，複数のビン（例えば，各タイルにつき１つのビン）を指定し，グラフィックスプリミティブ用の座標データに基づいて，そのグラフィックスプリミティブが交差するタイル（単数または複数）を決定し，各交差するタイルについて，関連ビン内のグラフィックスプリミティブの識別子を記録するという処理を行う。そして，このグラフィックスシステムでは，ビニング動作の終了後，各タイルについてグラフィックスデータが生成される。すなわち，ビニング動作が終了した段階で，グラフィックスシステムのラスタライゼーション部に特定のタイルが割り当てられ，そのタイルに適用可能なタイルリストに応じ，割り当てられたタイルについてのグラフィックスデータが生成される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１６８９５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで，従来のタイルベースのグラフィックスシステムは，各フレームを，画一的に，タイルと呼ばれる複数の領域に分割するものである。例えば，特許文献１に示されたシステムでは，各フレームを２５６個のタイルに分割し，各タイルは２５６×２５６個の画素の解像度を有するものと定められている。しかしながら，描画を更新するグラフィックスの性質等に応じて処理の高速化が必要な空間領域は異なるものである。例えば，フレームの空間によってはプリミティブが密集する領域や，プリミティブが散在している領域がある。これに対し，従来のシステムのように，各フレームを画一的に分割して処理することとすると，処理の高速化が必要な空間領域についても，特に高速化の必要のない領域についても平等にタイルが振り分けられることとなるため，特に処理の高速化が必要な空間領域について重点的にグラフィックス処理を進めることができず，効率的でないという問題があった。また，従来のタイルベースのグラフィックスシステムのように，タイルベースでグラフィックス処理を行う場合，複数のタイルに跨ったプリミティブが多く存在すると処理の遅延に繋がるものであるが，従来のシステムでは，各タイルの大きさは全て等しいものであり，タイルそれぞれの大きさを変更することはできなくなっている。従って，従来のシステムでは，プリミティブの大きさ等に応じて，分割する大きさを変更するなどの柔軟な対応を行うことができず，この点においてもグラフィックスの効率性が低下するという問題があった。このように，従来の技術は，アプリケーションの重い部分の処理を負荷分散するために，空間領域分割を明示的に行うことが難しかった。さらに，任意の画面の一部分に対し更新処理を行う場合に，従来の技術では，その任意の一部の空間だけを分割して処理を実行することが出来なかった。
【０００７】
このため，現在では，空間分割描画を行うにあたり，効率的かつ高速にグラフィックスを処理することが可能な画像処理装置等が求められている。
【課題を解決するための手段】
【０００８】
そこで，本発明の発明者は，上記の従来発明の問題点を解決する手段について鋭意検討した結果，ポリゴンを構成する頂点データに対し頂点処理（座標変換や照度計算）を行った後，ユーザから与えられた任意の空間情報等に基づいて空間インデックスを生成し，ポリゴンの構成情報，処理済み頂点データ，及び空間インデックスを関連付けて記憶した空間インデックス付き頂点バッファを作成して，このインデックス付き頂点バッファを利用したグラフィックス処理を行うようにすることで，グラフィックスの性質等に応じて分割する空間の位置，大きさ，範囲を柔軟に決定することができ，効率的かつ高速なグラフィックスの描画処理を実現することができるという知見を得た。そして，本発明者は，上記知見に基づけば，従来技術の課題を解決できることに想到し，本発明を完成させた。
具体的に説明すると，本発明は以下の構成を有する。
【０００９】
本発明の第１の側面は，コンピュータグラフィックス処理用の画像処理装置に関する。
本発明の画像処理装置は，コンパイラ処理部１０と，空間インデックス追加部２０と，前段処理部３０と，後段処理部４０と，ピクセル出力部５０と，を備えている。
コンパイラ処理部１０は，グラフィックスアプリケーション内のシェーダプログラムを読み込み，カラー・奥行き値の生成に必要な機能を抽出した前段処理用シェーダと，当該前段処理用シェーダに含まれていないテクスチャ・シェーディング処理を含む後段処理用シェーダとを，出力する。
空間インデックス追加部２０は，グラフィックスアプリケーション内のポリゴンを構成する頂点データを読み込んで，座標変換を含む頂点処理を行い，処理済み頂点データを得ると共に，変換後の座標系における空間インデックスを生成し，当該ポリゴンの構成情報，当該処理済み頂点データ，及び当該空間インデックスを関連付けて記憶した空間インデックス付き頂点バッファ２１を作成する。
前段処理部３０は，空間インデックス付き頂点バッファ２１を読み込んでポリゴンを構築し，空間インデックスにより定義される空間ごとに，当該ポリゴンにラスタライズ処理を行なってピクセルに変換し，前段処理用シェーダに基づいて，ラスタライズ処理済みのピクセルのカラー値及び奥行き値を生成する。
後段処理部４０は，ラスタライズ処理済みのピクセルの奥行き値を参照して出力カラーバッファ５１に書き込むことが決定されたピクセルについて，後段処理用シェーダに基づいたテクスチャ・シェーディング処理を行い，テクスチャ・シェーディング処理済みのピクセルのカラー値を生成する。
ピクセル出力部５０は，前段処理部３０及び後段処理部４０により得られたピクセルのカラー値を出力カラーバッファ５１に出力する。
【００１０】
ここで，本発明の画像処理装置において，前段処理部３０は，ラスタライズ処理を行う前段プロセッサコア３１を有し，後段処理部４０は，テクスチャ・シェーディング処理を行う後段プロセッサコア４１を有することが好ましい。そして，これらの前段プロセッサコア３１と後段プロセッサコア４１は，互いに異なるハードウェアであることが好ましい。
【００１１】
また，本発明の画像処理装置において，空間インデックス追加部２０は，ユーザによって任意に与えられた空間情報に基づいて空間分割を行い，空間インデックスを生成することが好ましい。
【００１２】
また，本発明の画像処理装置において，コンパイラ処理部１０は，フロントエンド処理部１１と，機能抽出部１２と，バックエンド処理部１３と，を有することが好ましい。
フロントエンド処理部１１は，前記シェーダプログラムに対してフロントエンド処理を行い，中間表現へと変換する。
機能抽出部１２は，中間表現と，事前に用意されたカラー・奥行き値の生成に関する処理パターンとのターンマッチ処理を行うことにより，当該中間表現から，カラー・奥行き値の生成に必要な機能を抽出する。
バックエンド処理部１３は，中間表現に対してバックエンド処理を行い，機能抽出部１２が抽出したカラー・奥行き値の生成に必要な機能を前段処理用シェーダとして出力すると共に，シェーダプログラムのうちのカラー・奥行き値の生成に必要な機能以外の機能を後段処理用シェーダとして出力する。
【００１３】
本発明の第２の側面は，コンピュータグラフィックス処理用の画像処理装置により実行される画像処理方法に関する。
本発明の画像処理方法では，画像処理装置が，コンパイラ処理工程と，空間インデックス追加工程と，前段処理工程と，後段処理工程と，ピクセル出力工程と，を行う。
コンパイラ処理部１０は，グラフィックスアプリケーション内のシェーダプログラムを読み込み，カラー・奥行き値の生成に必要な機能を抽出した前段処理用シェーダと，当該前段処理用シェーダに含まれていないテクスチャ・シェーディング処理を含む後段処理用シェーダとを，出力する。
空間インデックス追加工程では，グラフィックスアプリケーション内のポリゴンを構成する頂点データを読み込んで，座標変換を含む頂点処理を行い，処理済み頂点データを得ると共に，変換後の座標系における空間インデックスを生成し，当該ポリゴンの構成情報，当該処理済み頂点データ，及び当該空間インデックスを関連付けて記憶した空間インデックス付き頂点バッファ２１を作成する。
前段処理部工程では，空間インデックス付き頂点バッファ２１を読み込んでポリゴンを構築し，空間インデックスにより定義される空間ごとに，当該ポリゴンにラスタライズ処理を行なってピクセルに変換し，前段処理用シェーダに基づいて，ラスタライズ処理済みのピクセルのカラー値及び奥行き値を生成する。
後段処理部工程では，ラスタライズ処理済みのピクセルの奥行き値を参照して出力カラーバッファ５１に書き込むことが決定されたピクセルについて，後段処理用シェーダに基づいたテクスチャ・シェーディング処理を行い，テクスチャ・シェーディング処理済みのピクセルのカラー値を生成する。
ピクセル出力部工程では，前段処理工程及び後段処理工程により得られたピクセルのカラー値を出力カラーバッファ５１に出力する。
【００１４】
本発明の他の側面は，第１の側面に係る画像処理装置を具備するコンピュータに関する。
【００１５】
本発明の他の側面は，第１の側面に係る画像処理装置を具備するゲーム機に関する。
【発明の効果】
【００１６】
本発明は，空間インデックスを生成し，この空間インデックスに基づいた空間分割描画を行うことで，ユーザの画面操作等により描画の更新が必要となった場合にも，その描画の更新が必要な空間のみについてポリゴンの描画更新を実行することができるようになる。これにより，本発明は，描画処理を高速化し，描画遅延を最小に抑えることができる。また，本発明における空間分割は，フレームを画一的に複数の領域（タイル）に分割するものではなく，任意に与えられる空間インデックスに基づいて，ラスタライズによる変換後の座標系における空間を複数の領域に分割することが可能であるため，グラフィックスの性質等に応じて柔軟に空間の大きさ等を決定することができる。また，本発明の画像処理装置は，上記機構を有することで，ローカルのバッファ内で描画処理を行うことができるため，外部メモリへのアクセスを低減させることが可能であり，結果として，消費電力やメモリアクセスの際のオーバヘッドが低下し，グラフィックス処理の高速化を達成できる。
【００１７】
さらに，本発明の画像処理装置は，シェーダプログラムを，主としてカラー・奥行き値の生成に必要な機能を持つ前段処理用シェーダと，主としてテクスチャ・シェーディング処理に必要とされる後段処理用シェーダとに分割する。そして，この前段処理用シェーダに基づいて前段処理部でピクセルを処理した後，テクスチャ・シェーディング処理が必要なピクセルのみを後段処理部に入力して後段処理用シェーダに基づいた処理を実行するものである。従って，後段処理部においては不必要なピクセル処理を行う必要がなくなるため，処理時間の低減を図ることができる。また，前段処理部が処理するシェーダは，コンパイラよってカラー・奥行き値の生成に必要な機能に限定して抽出されたものである。従って，前段処理部は，不要な処理が省かれたシェーダを処理すればよいため，前段処理部用のプロセッサコアのサイズを最小限のものとすることができ，結果としてコスト低減に繋がる。
【００１８】
以上の通り，本発明は，空間分割描画を行うにあたり，効率的かつ高速にグラフィックスを処理することが可能な画像処理装置等を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】図１は，本発明に係る画像処理装置の構成の例を示すブロック図である。
【図２】図２は，コンパイラにおける処理の一例を示すフロー図である。
【図３】図３は，空間インデックス追加部における処理の一例を示すフロー図である。
【図４】図４は，空間インデックス付き頂点バッファ内のデータ構造の一例を示している。
【図５】図５は，本発明に係る画像処理装置の変形例を示すブロック図である。
【図６】図６は，グラフィックス処理用のコンピュータの構成の例を示すブロック図である。
【図７】図７は，ゲーム機の構成の例を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下，図面を用いて本発明を実施するための形態について説明する。本発明は，以下に説明する形態に限定されるものではなく，以下の形態から当業者が自明な範囲で適宜修正したものも含む。
【００２１】
［１．画像処理装置，画像処理方法］
図１は，本発明に係る画像処理装置１のブロック図を示している。本発明に係る画像処理装置１は，３次元コンピュータグラフィックス処理用のハードウェアとして利用される。
図１に示されるように，画像処理装置１は，グラフィックスアプリケーション６０を読み込んで，所定のグラフィックス描画処理を行い，描画処理の結果を出力カラーバッファ５１に出力する。画像処理装置１は，図１の上段に示されているコンパイラ処理部１０と，図１の下段に示されているグラフィックスパイプラインを備えている。グラフィックスパイプラインは，空間インデックス追加部２０と，前段処理部３０と，後段処理部４０と，ピクセル出力部５０を含む。コンパイラ処理部１０は，グラフィックスアプリケーション６０からシェーダプログラム６１を読み込んで，このシェーダプログラム６１を前段処理用シェーダ６２と後段処理用シェーダ６３とに分割する。すなわち，コンパイラ処理部１０は，シェーダプログラム６１に記述された指令を，前段処理部３０と後段処理部４０に割り当てる処理を行う。グラフィックスパイプラインでは，空間インデックス追加部２０によって空間インデックス付き頂点バッファ２１を作成する処理を行った後，前段処理部３０が，空間インデックス付き頂点バッファ２１を読み込んで，空間ごとにラスタライズ処理を行うと共に，前処理用シェーダに基づいて，ピクセルのカラー値及び奥行き値を生成する。その後，後段処理部４０は，必要なピクセルに対し，後段処理用シェーダ６３に基づいてテクスチャ処理及びシェーディング処理を行う。ピクセル出力部５０は，前段処理部３０及び後段処理部４０におけるピクセル処理の結果を，出力カラーバッファ５１へと出力する。出力カラーバッファ５１に蓄積されたピクセルのカラー値は，公知のディスプレイ装置によって動画像又は静止画像を表示する際に参照される。
【００２２】
コンパイラ処理部１０には，グラフィックスアプリケーション６０内のシェーダプログラム６１が入力される。コンパイラ処理部１０は，シェーダプログラム６１を解析してコンパイルを行うことにより，コンパイル済のバイナリファイルである前段処理用シェーダ６２と後段処理用シェーダ６３とを出力する。前段処理用シェーダ６２は，ピクセルのカラー値及び奥行き値の生成に必要な機能を抽出したシェーダコードである。前段処理用シェーダ６２には，カラー値と奥行き値の生成に関わる処理として，例えば，奥行きテストや，アルファテスト，ステンシルテストなどが含まれる。また，後段処理用シェーダ６３は，シェーダプログラム６１のうち前段処理用シェーダ６２以外のシェーダコードである。後段処理用シェーダ６３には，少なくとも，テクスチャ処理及びシェーディング処理に必要な機能が含まれる。例えば，後段処理用シェーダ６３には，テクスチャ処理やシェーディング処理の他にも，環境マッピング処理や，光の屈折率の計算処理等が含まれていてもよい。
【００２３】
また，図１に示されるように，コンパイラ処理部１０は，フロントエンド処理部１１と，機能抽出部１２と，バックエンド処理部１３と，を有している。コンパイラ処理部１０では，フロントエンド処理部１１が，プログラミング言語のソースコードを中間表現に変換し，バックエンド処理部１３が，その中間表現をさらに変換して機械語などの出力言語のバイナリコードを生成する。このとき，バックエンド処理部１３は，バックエンドにおいて高速に動作する最適化したコードを生成する。また，コンパイラ処理部１０では，フロントエンド処理部１１とバックエンド処理部１３の間に，機能抽出部１２が設けられている。機能抽出部１２は，シェーダプログラム６１に記述された指令のうち，ピクセルのカラー値及び奥行き値の生成に必要な機能を抽出したシェーダコード（前段処理用シェーダ６２）を抽出し，それ以外の機能を持つシェーダコード（後段処理用シェーダ６３）とは別に出力を行う。
【００２４】
フロントエンド処理部１１は，グラフィックスアプリケーション６０内のシェーダプログラム６１が入力されると，構文解析等の一般的なフロントエンド処理を行い，シェーダ内演算機能を示す中間表現へと変換する。例えば，構文解析では，ソースプログラムの字句解析及び意味解析を行うことにより，ソースプログラムが中間表現（中間プログラム）へと変換される。
【００２５】
フロントエンド処理後の中間表現は，機能抽出部１２において解析される。機能抽出部１２は，ピクセルのカラー値及び奥行き値の生成に必要な機能の処理パターンを予め保持している。この処理パターンは，ユーザによって任意に設定されるものであってもよいし，カラー値及び奥行き値を生成するプロセッサコアの機能に応じたものであってもよい。例えば，機能抽出部１２は，プロセッサコアの処理機能を解析し，当該プロセッサコアにて処理可能な形式に準拠したものを上記処理パターンとして保持していてもよい。ここで，機能抽出部１２は，中間表現と，予め用意されたカラー値及び奥行き値に対する処理パターンとのマッチ処理を行う。そして，機能抽出部１２は，中間表現のうち，上記処理パターンとマッチした部分（機能）を，カラー値及び奥行き値の生成に必要な機能として抽出する。マッチングに必要な処理パターンは，画像処理装置１が具備するプロセッサコアの能力を分析して，そのプロセッサコアにおいて実行可能な処理パターンを，予めグラフィックス処理用のローカルメモリ等に記憶しておけばよい。例えば，マッチングに必要とされる処理パターンとしては，例えば，奥行きテストやアルファテストの条件式等を含む情報を用いることができる。このようにして，機能抽出部１２は，シェーダプログラム６１の中から，カラー値及び奥行き値の生成に必要な機能を抽出することで，フロントエンド処理後の中間表現を，カラー値及び奥行き値の生成に必要な機能のための中間表現と，この機能以外の機能のための中間表現とに分離する。
【００２６】
機能抽出部１２における機能抽出処理の後，バックエンド処理部１３は，バックエンド処理を行なって，前段処理部３０と後段処理部４０のそれぞれに応じたシェーダコードを生成する。すなわち，バックエンド処理部１３は，機能抽出部１２によって抽出されたカラー値及び奥行き値の生成に必要な機能（中間表現）についてバックエンド処理を行うことで，前段処理用シェーダ６２を出力する。同時に，バックエンド処理部１３は，機能抽出部１２によって抽出されなかった機能，例えばテクスチャ処理及びシェーディング処理に必要な機能（中間表現）についてバックエンド処理を行うことで，後段処理用シェーダ６３を出力する。このように，バックエンド処理部１３では，カラー値及び奥行き値の生成に必要な機能のための中間表現と，この機能以外の機能のための中間表現のそれぞれにバックエンド処理を行うことで，前段処理部３０向けの前段処理用シェーダ６２と，後段処理部４０向けの後段処理用シェーダ６３とを出力する。その他，バックエンド処理部１３は，各中間表現を，前段処理部３０に備えられたハードウェア又は後段処理部４０に備えられたハードウェアにおいて，高速に動作する最適化したコードに変換する通常のバックエンド処理を行えばよい。
【００２７】
ここで，図２には，コンパイラ処理部１０による処理工程の一実施形態が示されている。図２に示されるように，コンパイラ処理部１０に入力されたシェーダプログラムは，構文解析などのフロントエンド処理が行われた後，シェーダ内演算機能を示す中間表現への変換処理が行われる。その後，変換された中間表現と，事前に用意されたカラー値及び奥行き値に対する処理パターンとのパターンマッチ処理が行われる。そして，中間表現のうち，カラー値及び奥行き値に対する処理パターンとマッチした部分は，バックエンド処理を経て，前段処理用シェーダ６２としてとして出力処理される。他方，中間表現のうち，カラー値及び奥行き値に対する処理パターンとマッチしなかった部分は，バックエンド処理を経て，後段処理用シェーダ６３として出力処理される。
【００２８】
なお，本実施形態において，上記コンパイラ処理部１０によるコンパイラ処理は，グラフィックスアプリケーション６０の実行時に行われるものであるが，例えば，コンパイラ処理は，アプリケーション実行前に事前に行われるものであってもよい。例えば，グラフィックスアプリケーション６０の実行前に，このグラフィックスアプリケーション６０を解析し，カラー値及び奥行き値に対する処理パターンとマッチングした部分を抽出して予め保持しておくこととしてもよい。
【００２９】
その後，上記コンパイラ処理部１０から出力された前段処理用シェーダ６２と後段処理用シェーダ６３とを含むグラフィックスプログラムを用いて，図１の下段に示したグラフィックスパイプラインにより，実際のグラフィックス描画処理が行われる。
【００３０】
図１に示されるように，グラフィックスパイプラインにおいては，まず，空間インデックス追加部２０に，グラフィックスアプリケーション６０内のポリゴンを構成する頂点データが入力される。空間インデックス追加部２０は，入力された各頂点データについて頂点処理を行うと共に，空間インデックスを生成し，空間インデックス付き頂点バッファ２１を作成する機能を持つ。
【００３１】
図３には，空間インデックス追加部２０によって行われる処理のフローが示されている。図３に示されるように，空間インデックス追加部２０は，まず，グラフィックスアプリケーションから頂点データとポリゴンの構成データを読み込んで，頂点処理を行う。すなわち，グラフィックスアプリケーションには，例えばゲーム空間内のキャラクタや構造物等のオブジェクトに関し，このオブジェクトをポリゴンでモデリングしたときの頂点の座標情報を含む頂点データと，どの頂点を結んでポリゴンが構成されるかを示す情報を含んだ構成情報が含まれている。このため，空間インデックス追加部２０は，グラフィックスアプリケーションから，これらの頂点データとポリゴンの構成情報とを読み込む。そして，空間インデックス追加部２０は，読み込んだ頂点データとポリゴンの構成情報に基づいて，頂点処理を実行する。この頂点処理には，例えば，座標変換処理や照度計算処理などが含まれる。
【００３２】
頂点処理について具体的に説明すると，空間インデックス追加部２０は，まず，グラフィックスアプリケーションから，モデリングされたオブジェクトのローカル座標を含む頂点データを取得し，取得した頂点データのローカル座標を，ワールド座標に変換する。この第１の座標変換は，１つのワールド座標系の所定の位置に，オブジェクトを配置するために行うものであり，ローカル座標系からワールド座標系への座標変換が実行される。なお，第１の座標変換において，オブジェクトの向き指定する回転角，位置を指定する並進ベクトル，大きさを指定するスケール比等のパラメータがメモリから読み出される。次に，空間インデックス追加部２０は，ワールド座標系におけるオブジェクトの座標を，カメラ位置を原点としてカメラから見たカメラ座標系でのワールド座標へと座標変換する。この第２の座標変換を行なって，視点をカメラ位置に決定し，カメラの方向やズームレベルを指定することにより，オブジェクトを投影するスクリーンが決定される。また，空間インデックス追加部２０は，特定の光源位置から照射される光をオブジェクトに当てたときの各頂点における照度の計算を行う。また，空間インデックス追加部２０は，特定の光源位置から照射される光をオブジェクトに当てたときの各頂点の色などの他の特性についても，同様に計算を行う。最後に，空間インデックス追加部２０は，ディスプレイの解像度等を含んだディスプレイ情報を読み出し，３次元のワールド座標をスクリーンに投影する座標変換を行う。この第３の座標変換によって，３次元の仮想空間上にある頂点の座標は，２次元のスクリーン座標に変換される。このように，空間インデックス追加部２０は，頂点処理を行なって，ローカル座標系で定義されたオブジェクトの頂点データを，スクリーン平面上の２次元座標と照度等の頂点の特性を示す情報を含んだ頂点データに変換にする。これにより，空間インデックス追加部２０は，上記頂点処理済みの頂点データを得ることができる。
【００３３】
上記頂点処理後，空間インデックス追加部２０は，ユーザから与えられた空間情報に基づき，頂点処理による変換後の座標系において，空間インデックスを生成する。後述するように，本発明において前段処理部３０は，空間ごとにラスタライズ処理を行うものであるが，ここで作成される空間インデックスは，前段処理部３０がラスタライズ処理を行う空間を定義する参照値となる。すなわち，空間インデックスは，グラフィックス処理が行われる空間の位置，大きさ，及び範囲を定義する情報である。そして，空間インデックス追加部２０は，空間インデックスの生成処理後，ポリゴンの構成情報と，頂点処理済みの頂点データと，生成した空間インデックスを関連付けて記憶した空間インデックス付き頂点バッファ２１を作成する。なお，この空間インデックス付き頂点バッファ２１は，ローカルメモリに設けられることとすればよい。
【００３４】
ここで，図４には，空間インデックス付き頂点バッファ２１内のデータ構造の一例が示されている。図４に示されるように，空間インデックス付き頂点バッファ２１内のデータには，ポリゴンを構成する頂点データを示す情報（ポリゴンの構成データ）と，各頂点データの座標情報と共に，ポリゴンが属する空間を示す情報（空間インデックス）が登録されている。例えば，図４に示された例を参照して説明すると，空間インデックス付き頂点バッファ２１内のデータを見れば，三角形０は，ｖ０，ｖ１，及びｖ２の頂点により構成されることがわかる。また，頂点ｖ０の座標は（ｘ０，ｙ０，ｚ０）であり，頂点ｖ１の座標は（ｘ１，ｙ１，ｚ１）であり，頂点ｖ２の座標は（ｘ２，ｙ２，ｚ２）である。また，各頂点ｖ０〜ｖ２の座標値も，空間インデックス付き頂点バッファ２１内に登録されている。さらに，三角形０は，頂点処理による変換後の座標系において，Ｓｐａｓｅ０として定義されている空間に属していることがわかる。このように，空間インデックス付き頂点バッファ２１は，各ポリゴンが空間インデックスにより定義される空間に属するものであるか否かを示すと共に，ポリゴンが空間内に属するものである場合に，どの空間に属するものであるかを示している。また，空間インデックス付き頂点バッファ２１を参照すると，空間インデックスにより定義される空間は，Ｓｐａｓｅ０とＳｐａｓｅ１とが存在していることがわかる。このように，本発明では，複数の空間に分割される。さらに，空間Ｓｐａｓｅ０と空間Ｓｐａｓｅ１とは，互いに一部が重畳している。このように，本発明では，複数の空間は互いに画一的に区分けされている必要はなく，一部が重畳したものであってもよい。さらに，図４に示された例では，三角形１は，頂点処理による変換後の座標系において，Ｓｐａｓｅ０として定義されている空間，及びＳｐａｓｅ１として定義されている空間の両方に跨って属していることがわかる。このように，本発明では，１つのポリゴン（三角形）が，複数の空間に跨って存在することも考えうる。
【００３５】
上述したように，本発明は，頂点処理による変換後の座標系を複数の空間に分割した上で，その後のグラフィックス描画処理を行う。この各空間を定義する空間インデックスは，ユーザが任意に決定することができる。例えば，ユーザは，空間を区画する空間インデックスとして，各空間を構成する各頂点の座標値や，各空間を構成する複数の頂点を示す空間構成情報を指定すればよい。すなわち，空間インデックスには，各空間を構成する各頂点の座標値や，各空間の構成情報が含まれる。これらの空間を構成する頂点の座標値や構成情報は，空間インデックス付き頂点バッファ２１に記憶されている。また，空間の形状は，円形，三角形，又は四角形であってもよいし，五角形以上の多角形であってもよい。さらに，図４に示されるように，複数の空間は互いに一部が重畳するものであってもよい。
【００３６】
また，空間インデックスを作成するにあたり，この空間インデックスにより定義される空間の中にポリゴン全体やポリゴンを構成する頂点が属するか否かを判定することとしてもよい。例えば，空間の形状が矩形である場合には，
−ｗ≦ｘ≦ｗ，
−ｗ≦ｙ≦ｗ，
−ｗ≦ｚ≦ｗ，
のような判定式を用いればよい。
他方，空間が任意形状の場合，クリッピングインデックスを定義するためには，例えば空間が４辺によって定義される場合を例に挙げて説明すると，
ａ０ｘ＋ｂ０ｙ＋ｃ０＝  ０
ａ１ｘ＋ｂ１ｙ＋ｃ１＝  ０
ａ２ｘ＋ｂ２ｙ＋ｃ２＝  ０
ａ３ｘ＋ｂ３ｙ＋ｃ３＝  ０
のような３つ以上の直線の方程式により空間を定義し，これら式に判定する対象（ポリゴンの頂点）のｘ，ｙ座標を代入することで，計算結果の符号により空間の内外判定を行うことができる。なお，ｚ方向については従来通り−ｗ＜ｚ＜ｗのような判定式で合わせて行うことも出来る。また，空間インデックスを生成する処理は，空間インデックス追加部２０が，グラフィックスアプリケーション内の頂点シェーダプログラムに従って行うものであってもよい。
【００３７】
空間インデックス追加部２０による処理の終了後，前段処理部３０は，空間インデックス付き頂点バッファ２１を読み込み，ポリゴンの構成情報と頂点処理済みの頂点データに基づいて，変換後の座標系におけるポリゴンを再構築する。そして，前段処理部３０は，空間インデックスにより定義される空間ごとに，再構築したポリゴンに対しラスタライズ処理を行い，ピクセルに変換する。すなわち，前段処理部３０は，ラスタライズ処理を行うことにより，３次元空間上のポリゴンを投影変換により描画平面上のフラグメントに変換するビュー変換を行うと共に，さらに，描画平面上のフラグメントを描画平面の水平方向に沿ってスキャンしながら，ラスタライン毎に量子化されたピクセルに変換する。このラスタライズ処理を行うにあたり，前段処理部３０は，空間インデックス付き頂点バッファ２１を参照し，空間インデックスにより定義される空間ごとに，ラスタライズ処理を実行する。このため，前段処理部３０は，ユーザによる画面操作などにより，描画の更新が必要となった空間のみについてラスタライズ処理を行うことができる。例えば，前段処理部３０は，現在描画処理を行なっているフレームと処理済みのフレーム（例えば既に処理を行った１つ前のフレーム）とを比較し，処理済みのフレームに対し変化があったと判定した空間についてのみラスタライズ処理を実行することとすればよい。他方，前段処理部３０は，現在描画処理を行なっているフレームと処理済みのフレームとを比較し，処理済みのフレームに対し変化がないと判定した空間については，当該処理済みのフレームを構成しているピクセル情報を援用することで，ラスタライズ処理を省略することが可能になる。これにより，フレーム全体の描画を更新する必要がなくなり，更新が必要な空間についての処理を高速で行うことができる。
【００３８】
上記のように，本発明の画像処理装置は，空間インデックスを生成し，この空間インデックスに基づいた空間分割描画を行うことで，ユーザの画面操作等により描画の更新が必要となった場合には，その描画の更新が必要な空間のみについてポリゴンの描画更新を実行することができるようになる。これにより，本発明は，描画処理を高速化し，描画遅延を最小に抑えることができる。また，本発明における空間分割は，フレームを画一的に複数の領域（タイル）に分割するものではなく，任意に与えられる空間インデックスに基づいて，カメラ座標系における空間を複数の領域に分割することが可能であるため，グラフィックスの性質等に応じて柔軟に空間の大きさ等を決定することができる。また，ローカルのバッファ内で描画処理を行うことができるため，外部メモリへのアクセスを低減させることが可能であり，結果として，消費電力やメモリアクセスの際のオーバヘッドが低下し，グラフィックス処理の高速化を達成できる。
【００３９】
前段処理部３０は，上記ラスタライズ処理の後，コンパイラ処理部１０から出力された前段処理用シェーダ６２をロードして，この前段処理用シェーダ６２に基づいた処理を実行する。すなわち，前段処理用シェーダ６２には，カラー値及び奥行き値の生成に必要な機能が記述されている。このため，前段処理部３０は，前段処理用シェーダ６２に従い，ラスタライズ処理により得られた各ピクセルについて，少なくとも，ＲＧＢ３原色で表されるカラー値や，奥行きを示す奥行き値（Ｚ値）を算出する。このとき，前段処理用シェーダ６２は，カラーの透明度を示すアルファ値を求めることとしてもよい。ただし，前段処理部３０による前段処理には，ポリゴンの表面にテクスチャ画像を貼り付けるテクスチャ処理や，ポリゴン表面に陰影をつけるシェーディング処理などは行われない。これらの，テクスチャ処理やシェーディング処理が必要である場合，これらの処理は，後述する後段処理部４０によって行われる。
【００４０】
前段処理部３０は，ポリゴンから変換されたフラグメントに対して，ブレンディングや，アルファテスト，奥行きテストを実行し，ピクセルのカラー値及び奥行き値を求め，そのレンダリングの結果をピクセルデータとして，カラー・奥行き値バッファ３２に書き込む。このカラー・奥行き値バッファ３２は，ローカルメモリ内に設けられたものであることが好ましい。
【００４１】
前段処理部３０による処理の後，後段処理部４０は，カラー・奥行き値バッファ３２を読み込み，ラスタライズ処理済みのピクセルの奥行き値を参照して，画面上に表示するために，カラー値を出力カラーバッファ５１に書き込むピクセルを決定する。すなわち，後段処理部４０は，ラスタライズ処理済みのピクセルの奥行き値に基づいて奥行きテストを行い，この奥行きテストに合格したピクセルのカラー値を，出力カラーバッファ５１に書き込むものとして決定すればよい。なお，この出力カラーバッファ５１に書き込むピクセルを決定する処理は，前段処理部３０によって行うこととしてもよい。
【００４２】
その後，後段処理部４０は，コンパイラ処理部１０から出力された後段処理用シェーダ６３をロードし，出力カラーバッファ５１にカラー値を書き込むことを決定したピクセルについて，ロードした後段処理用シェーダ６３に基づいた描画処理を行う。すなわち，後段処理用シェーダ６３には，シェーダプログラムのうちのカラー・奥行き値の生成に必要な機能以外の機能が記述されている。例えば，この後段処理用シェーダ６３には，少なくとも，テクスチャ処理及びシェーディング処理が含まれる。このため，後段処理部４０は，後段処理用シェーダ６３に従い，前段処理部３０により算出されたピクセル情報をもとに，シェーディング処理を行って，シェーディング処理後のピクセルのカラー値を算出する。さらに，後段処理部４０は，テクスチャマッピングを行う場合は，テクスチャ画像のカラー値を合成して最終的なピクセルのカラー値を算出する。
【００４３】
このように，本発明の画像処理装置は，シェーダプログラム６１を，主としてカラー・奥行き値の生成に必要な機能を持つ前段処理用シェーダ６２と，主としてテクスチャ・シェーディング処理に必要とされる後段処理用シェーダ６３とに分割すると共に，この前段処理用シェーダ６２に基づいて前段処理部３０によってピクセルを処理した後，テクスチャ・シェーディング処理が必要なピクセルのみを後段処理部４０に入力して後段処理用シェーダ６３に基づいた処理を実行するものである。従って，後段処理部４０においては不必要なピクセル処理を行う必要がなくなるため，処理時間の低減を図ることができる。
【００４４】
また，図１に示されるように，前段処理部３０は，前段プロセッサコア３１を備え，後段処理部４０は，後段プロセッサコア４１を備える。前段プロセッサコア３１は，前段処理部３０おけるラスタライズ処理を実行するハードウェアであり，後段プロセッサコア４１は，後段処理部４０におけるテクスチャ処理やシェーディング処理を実行するハードウェアである。これらの，前段プロセッサコア３１と後段プロセッサコア４１は，ハードウェア的に互いに異なるものであることが好ましい。本発明において，前段処理部３０の前段プロセッサコア３１が処理するシェーダコード（前段処理用シェーダ６２）は，コンパイラ処理部１０よってカラー値及び奥行き値の生成に必要な機能に限定して抽出されたものである。従って，前段プロセッサコア３１は，不要な処理が省かれたシェーダコードを処理すればよいため，そのサイズを最小限のものとすることができ，結果としてコスト低減に繋がる。また，後段処理部４０に含まれる後段プロセッサコア４１には，カラー・奥行き値バッファ３２に記憶されているピクセルの奥行き値に基づく奥行きテストに合格したピクセルデータのみが入力されることが好ましい。例えば，後段処理部４０は，後段プロセッサコア４１の他に，奥行きテストを実行する別のハードウェアを備えていてもよい。また，奥行きテストを実行して出力カラーバッファ５１にカラー値を書き込むピクセルを決定する処理は，前段処理部３０を構成するハードウェア，例えば前段プロセッサコア３１によって行われるものであってもよい。なお，前段処理部３０と後段処理部４０とを異なるハードウェアで構成する形態は，本発明の好ましい形態であり，他の実施形態においては，前段処理部３０と後段処理部４０とが実質的に同一のハードウェアにより構成されたものであってもよい。
【００４５】
後段処理部４０による処理の後，前段処理部３０及び後段処理部４０によるピクセル処理により得られた最終的なピクセルのカラー値は，ピクセル出力部５０に入力される。ピクセル出力部５０は，後段処理部４０から最終的なピクセルのカラー値を受け取り，出力カラーバッファ５１に出力する。出力カラーバッファ５１は，ピクセルのカラー値をスクリーン座標に対応付けて格納するバッファであり，格納されたピクセルのカラー値は，ディスプレイ装置に画像を表示する際に参照される。
【００４６】
ここで，図５には，本発明の画像処理装置の変形例の構成が示されている。図５に示された変形例では，前段処理部３０と後段処理部４０の間に，スペースクリップ処理部７０が設けられる。スペースクリップ処理部７０は，前段処理部３０によるラスタライズ処理後に，クリッピング処理を行う。クリッピング処理は，オブジェクトのスクーンへの投影像が予め定義されたスペースからはみ出した場合に，そのはみ出した部分について，オブジェクトのピクセルデータをカットする処理である。スクリーンに表示するためのスペースに関する情報は，グラフィックスアプリケーション６０に含まれている。このため，スペースクリップ処理部７０は，グラフィックスアプリケーション６０に含まれる情報に基づいて，上記したクリッピング処理を行うことができる。クリッピング処理後のピクセル情報は，後段処理部４０に入力され，前述したテクスチャ処理やシェーディング処理が施される。スペースからはみ出した部分はディスプレイに描画する必要がないものであるため，上記したクリッピング処理を行うことで，後段処理部４０によって無駄なピクセル処理をしなくて済むようになる。
【００４７】
［２．コンピュータ］
図６は，本発明の一実施態様に係るコンピュータを示すブロック図である。この実施態様は，コンピュータグラフィックスによるコンピュータ（グラフィック用コンピュータなど）に関する。図６に示されるとおり，このコンピュータは，中央演算装置（ＣＰＵ）１０２，ジオメトリ演算回路１０３などのジオメトリ演算部，レンダラー１０４などの描画部，テクスチャ生成回路１０５などのテクスチャ生成部，照明処理回路１０７などの照光処理部，表示回路１０８などの表示情報作成部，フレームバッファ１０９，及びモニター１１０を具備する。これらの要素は，バスなどにより接続され，相互にデータを伝達できる。そのほか，図示しないメインメモリや，各種テーブル，ワーク領域となるワークメモリ１１１，テクスチャを格納するテクスチャメモリ１１２などを具備する記憶部などを有してもよい。各部を構成するハードウェアは，例えばバスなどを介して連結されている。なお，記憶部は，ＶＲＡＭなどのＲＡＭや，ＣＲ−ＲＯＭ，ＤＶＤ，ハードディスクなどにより構成されても良い。本発明に係る画像処理装置は，このようなコンピュータグラフィックス用のコンピュータに具備されて，実装されたものであってもよい。
【００４８】
中央演算装置（ＣＰＵ）１０２は，画像を生成するためのプログラムなどを制御するための装置である。ワークメモリ１１１は，ＣＰＵ１０２で使用するデータ及びディスプレイリストなどを記憶してもよい。そして，ＣＰＵ１０２は，メインメモリに記憶されたプログラムなどを読み出して，所定の処理を行ってもよい。ただし，ハードウェア処理のみにより所定の処理を行っても良い。ＣＰＵ１０２は，たとえばワークメモリ１１１から，ワールド座標の３次元オブジェクトデータとしてのポリゴンデータを読出し，ポリゴンデータをジオメトリ演算回路１０３へ出力する。具体的には，メインプロセッサ，コプロセッサ，データ処理プロセッサ，四則演算回路又は汎用演算回路などを適宜有するものがあげられる。これらはバスなどにより連結され，信号の授受が可能とされる。また，圧縮された情報を伸張するためのデータ伸張プロセッサを備えても良い。
【００４９】
具体的に説明すると，ジオメトリ演算回路１０３は，入力されたポリゴンデータに対して，視点を原点とするカメラ座標系のデータに座標変換などを行うための回路である。ジオメトリ演算回路１０３は，処理したポリゴンデータを，レンダラー１０４へ出力する。具体的なジオメトリ演算回路としては，前記メインプロセッサとバスなどで連結された，ジオメトリプロセッサ，コプロセッサ，データ処理プロセッサ，四則演算回路又は汎用演算回路などがあげられる。
【００５０】
レンダラー１０４は，ポリゴン単位のデータをピクセル単位のデータに変換するための回路又は装置である。レンダラー１０４は，ピクセル単位のデータをテクスチャ生成回路１０５へ出力する。具体的なレンダラー１０４としては，前記メインプロセッサとバスなどで連結されたデータ処理プロセッサ，四則演算回路又は汎用演算回路などがあげられる。
【００５１】
テクスチャ生成回路１０５は，テクスチャメモリ１１２に記憶されるテクスチャデータに基づき，ピクセル単位のテクスチャカラーを生成するための回路である。テクスチャ生成回路１０５は，テクスチャカラー情報を有するピクセル単位のデータを，照明処理回路１０７へ出力する。具体的なテクスチャ生成回路１０５としては，前記メインプロセッサとバスなどで連結されたデータ処理プロセッサ，四則演算回路又は汎用演算回路などがあげられる。
【００５２】
照明処理回路１０７は，テクスチャカラー情報を有するポリゴンに対し，ピクセル単位で法線ベクトル，重心座標などを利用して陰影付けなどを行うための回路である。照明処理回路１０７は，陰影付けした画像データを，表示回路１０８へ出力する。具体的な照明処理回路１０７としては，前記メインプロセッサとバスなどで連結されたデータ処理プロセッサ，四則演算回路又は汎用演算回路などがあげられる。そして，メモリに格納されたテーブルなどから適宜光に関する情報を読み出して陰影付けを行えばよい。
【００５３】
表示回路１０８は，照明処理回路１０７から入力された画像データをフレームバッファ１０９に書き込み，またフレームバッファ１０９に書き込まれた画像データを読み出し，制御して表示画像情報を得るための回路である。表示回路１０８は，表示画像情報をモニター１１０へ出力する。具体的な表示回路としては，前記メインプロセッサとバスなどで連結された描画プロセッサ，データ処理プロセッサ，四則演算回路又は汎用演算回路などがあげられる。
【００５４】
モニター１１０は，入力された表示画像情報にしたがって，コンピュータグラフィックス画像を表示するための装置である。
【００５５】
［３．ゲーム機］
図７は，本発明の他の実施形態に係るゲーム機のブロック図である。このブロック図で表される実施形態は，特に携帯用，家庭用又は業務用のゲーム機として好適に利用されうる。そこで，以下では，ゲーム機として説明する。なお，同図に示されるゲーム機は，少なくとも処理部２００を含めばよく（又は処理部２００と記憶部２７０，又は処理部２００と記憶部２７０と情報記憶媒体２８０を含んでもよく），それ以外のブロック（例えば操作部２６０，表示部２９０，音出力部２９２，携帯型情報記憶装置２９４，通信部２９６）については，任意の構成要素とすることができる。本発明に係る画像処理装置は，このようなゲーム機に具備されて，実装されたものであってもよい。
【００５６】
処理部２００は，システム全体の制御，システム内の各ブロックへの命令の指示，ゲーム処理，画像処理，音処理などの各種の処理を行うものである。処理部２００の機能は，各種プロセッサ（ＣＰＵ，ＤＳＰ等），又はＡＳＩＣ（ゲートアレイ等）などのハードウェアや，所与のプログラム（ゲームプログラム）により実現できる。
【００５７】
操作部２６０は，プレーヤが操作データを入力するためのものである。操作部２６０は，の機能は，例えば，レバー，ボタン，外枠，及びハードウェアを備えたコントローラにより実現できる。なお，特に携帯用ゲーム機の場合は，操作部２６０は，ゲーム機本体と一体として形成されても良い。コントローラからの処理情報は，シリアルインターフェース（Ｉ／Ｆ）やバスを介してメインプロセッサなどに伝えられる。
【００５８】
記憶部２７０は，処理部２００や通信部２９６などのワーク領域となるものである。また，プログラムや各種テーブルなどを格納しても良い。記憶部２７０は，例えば，メインメモリ２７２，フレームバッファ２７４，及びテクスチャ記憶部２７６を含んでもよく，そのほか各種テーブルなどを記憶しても良い。記憶部２７０の機能は，ＲＯＭやＲＡＭなどのハードウェアにより実現できる。ＲＡＭとして，ＶＲＡＭ，ＤＲＡＭ又はＳＲＡＭなどがあげられ，用途に応じて適宜選択すればよい。フレームバッファ２７４を構成するＶＲＡＭなどは，各種プロセッサの作業領域として用いられる。
【００５９】
情報記憶媒体（コンピュータにより使用可能な記憶媒体）２８０は，プログラムやデータなどの情報を格納するものである。情報記憶媒体２８０は，いわゆるゲームソフトなどとして販売されうる。そして，情報記憶媒体２８０の機能は，光ディスク（ＣＤ，ＤＶＤ），光磁気ディスク（ＭＯ），磁気ディスク，ハードディスク，磁気テープ，又はメモリ（ＲＯＭ）などのハードウェアにより実現できる。処理部２００は，この情報記憶媒体２８０に格納される情報に基づいて種々の処理を行う。情報記憶媒体２８０には，本発明（本実施形態）の手段（特に処理部２００に含まれるブロック）を実行するための情報（プログラム又はプログラム及びデータ）が格納される。
【００６０】
表示部２９０は，本実施形態により生成された画像を出力するものであり，その機能は，ＣＲＴ（ブラウン管），ＬＣＤ（液晶），ＯＥＬ（有機電界発光素子），ＰＤＰ（プラズマディスプレイパネル）又はＨＭＤ（ヘッドマウントディスプレイ）などのハードウェアにより実現できる。
【００６１】
音出力部２９２は，音を出力するものである。音出力部２９２の機能は，スピーカなどのハードウェアにより実現できる。音出力は，例えばバスを介してメインプロセッサなどと接続されたサウンドプロセッサにより，音処理が施され，スピーカなどの音出力部から出力される。
【００６２】
携帯型情報記憶装置２９４は，プレーヤの個人データやセーブデータなどが記憶されるものである。この携帯型情報記憶装置２９４としては，メモリカードや携帯型ゲーム装置などがあげられる。携帯型情報記憶装置２９４の機能は，メモリカード，フラッシュメモリ，ハードディスク，ＵＳＢメモリなど公知の記憶手段により達成できる。
【００６３】
通信部２９６は，外部（例えばホスト装置や他の画像生成システム）との間で通信を行うための各種の制御を行う任意のものである。通信部２９６の機能は，各種プロセッサ，又は通信用ＡＳＩＣなどのハードウェアや，プログラムなどにより実現できる。
【００６４】
ゲーム機を実行するためのプログラム又はデータは，ホスト装置（サーバー）が有する情報記憶媒体からネットワーク及び通信部２９６を介して情報記憶媒体２８０に配信するようにしてもよい。
【００６５】
処理部２００は，ゲーム処理部２２０，画像処理部２３０，及び音処理部２５０を含むものがあげられる。具体的には，メインプロセッサ，コプロセッサ，ジオメトリプロセッサ，描画プロセッサ，データ処理プロセッサ，四則演算回路又は汎用演算回路などがあげられる。これらは適宜バスなどにより連結され，信号の授受が可能とされる。また，圧縮された情報を伸張するためのデータ伸張プロセッサを備えても良い。
【００６６】
ここでゲーム処理部２２０は，コイン（代価）の受け付け処理，各種モードの設定処理，ゲームの進行処理，選択画面の設定処理，オブジェクトの位置や回転角度（Ｘ，Ｙ又はＺ軸回り回転角度）を求める処理，オブジェクトを動作させる処理（モーション処理），視点の位置（仮想カメラの位置）や視線角度（仮想カメラの回転角度）を求める処理，マップオブジェクトなどのオブジェクトをオブジェクト空間へ配置する処理，ヒットチェック処理，ゲーム結果（成果，成績）を演算する処理，複数のプレーヤが共通のゲーム空間でプレイするための処理，又はゲームオーバー処理などの種々のゲーム処理を，操作部２６０からの操作データや，携帯型情報記憶装置２９４からの個人データ，保存データや，ゲームプログラムなどに基づいて行う。
【００６７】
画像処理部２３０は，ゲーム処理部２２０からの指示等にしたがって，各種の画像処理を行うものである。また，音処理部２５０は，ゲーム処理部２２０からの指示等にしたがって，各種の音処理を行う。
【００６８】
ゲーム処理部２２０，画像処理部２３０，音処理部２５０の機能は，その全てをハードウェアにより実現してもよいし，その全てをプログラムにより実現してもよい。又は，ハードウェアとプログラムの両方により実現してもよい。画像処理部２３０は，ジオメトリ演算部２３２（３次元座標演算部），描画部２４０（レンダリング部）を含むものがあげられる。
【００６９】
ジオメトリ演算部２３２は，座標変換，クリッピング処理，透視変換，又は光源計算などの種々のジオメトリ演算（３次元座標演算）を行う。そして，ジオメトリ処理後（透視変換後）のオブジェクトデータ（オブジェクトの頂点座標，頂点テクスチャ座標，又は輝度データ等）は，例えば，記憶部２７０のメインメモリ２７２に格納されて，保存される。
【００７０】
描画部２４０は，ジオメトリ演算後（透視変換後）のオブジェクトデータと，テクスチャ記憶部２７６に記憶されるテクスチャなどに基づいて，オブジェクトをフレームバッファ２７４に描画する。
【００７１】
描画部２４０は，例えば，テクスチャマッピング部２４２，シェーディング処理部２４４を含むものがあげられる。具体的には，描画プロセッサにより実装できる。描画プロセッサは，テクスチャ記憶部，各種テーブル，フレームバッファ，ＶＲＡＭなどとバスなどを介して接続され，更にディスプレイと接続される。
【００７２】
テクスチャマッピング部２４２は，環境テクスチャをテクスチャ記憶部２７６から読み出し，読み出された環境テクスチャを，オブジェクトに対してマッピングする。
【００７３】
シェーディング処理部２４４は，オブジェクトに対するシェーディング処理を行う。例えば，ジオメトリ処理部２３２が光源計算を行い，シェーディング処理用の光源の情報や，照明モデルや，オブジェクトの各頂点の法線ベクトルなどに基づいて，オブジェクトの各頂点の輝度（ＲＧＢ）を求める。シェーディング処理部２４４は，この各頂点の輝度に基づいて，プリミティブ面（ポリゴン，曲面）の各ドットの輝度を例えば，ホンシェーディングや，グーローシェーディングなどにより求める。
【００７４】
ジオメトリ演算部２３２は，法線ベクトル処理部２３４を含むものがあげられる。法線ベクトル処理部２３４は，オブジェクトの各頂点の法線ベクトル（広義にはオブジェクトの面の法線ベクトル）を，ローカル座標系からワールド座標系への回転マトリクスで回転させる処理を行ってもよい。
【００７５】
なお，ゲーム機における構成を適宜利用すれば，スロットマシーンやパチンコ遊技機などにおける画像表示装置としても機能しうるものを得ることができる。
【産業上の利用可能性】
【００７６】
本発明は，空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法等に関する。従って，本発明はコンピュータ産業において好適に利用されうる。
【符号の説明】
【００７７】
１…画像処理装置
１０…コンパイラ処理部
１１…フロントエンド処理部
１２…機能抽出部
１３…バックエンド処理部
２０…空間インデックス追加部
２１…空間インデックス付き頂点バッファ
３０…前段処理部
３１…前段プロセッサコア
３２…カラー・奥行き値バッファ
４０…後段処理部
４１…後段プロセッサコア
５０…ピクセル出力部
５１…出力カラーバッファ
６０…グラフィックスアプリケーション
６１…シェーダプログラム
６２…前段処理用シェーダ
６３…後段処理用シェーダ
７０…スペースクリップ処理部
【図１】
2014219739.tif 000003
【図２】
2014219739.tif 000004
【図３】
2014219739.tif 000005
【図４】
2014219739.tif 000006
【図５】
2014219739.tif 000007
【図６】
2014219739.tif 000008
【図７】
2014219739.tif 000009