[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP3548648B2 - Drawing apparatus and drawing method - Google Patents

Drawing apparatus and drawing method Download PDF

Info

Publication number
JP3548648B2
JP3548648B2 JP2033496A JP2033496A JP3548648B2 JP 3548648 B2 JP3548648 B2 JP 3548648B2 JP 2033496 A JP2033496 A JP 2033496A JP 2033496 A JP2033496 A JP 2033496A JP 3548648 B2 JP3548648 B2 JP 3548648B2
Authority
JP
Japan
Prior art keywords
unit
pixel data
pixels
divided
graphic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2033496A
Other languages
Japanese (ja)
Other versions
JPH09212654A (en
Inventor
禎治 豊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2033496A priority Critical patent/JP3548648B2/en
Publication of JPH09212654A publication Critical patent/JPH09212654A/en
Application granted granted Critical
Publication of JP3548648B2 publication Critical patent/JP3548648B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータを用いた映像機器であるグラフィックコンピュータ、特殊効果装置、ビデオゲーム機等に用いられる描画装置及び描画方法に関する。
【0002】
【従来の技術】
従来、家庭用TVゲーム機やパーソナルコンピュータあるいはグラフィックコンピュータなどにおいて、テレビジョン受像機やモニタ受像機あるいは陰極線管(CRT:Cathode Ray Tube)ディスプレイ装置などに出力して表示する画像のデータすなわち表示出力画像データを生成する画像生成装置では、央演算処理装置(CPU: Central Processing Unit)とフレームバッファの間に専用の描画装置を設けることにより、高速処理を可能にしている。
【0003】
すなわち、上記画像生成装置において、CPU側では、画像を生成する際に、直接フレームバッファをアクセスするのではなく、座標変換やクリッピング、光源計算等のジオメトリ処理を行い、3角形や4角形などの基本的な単位図形(ポリゴン)の組み合わせとして3次元モデルを定義して3次元画像を描画するための描画命令を作成し、その描画命令を描画装置に送る。例えば、3次元のオブジェクトを表示する場合は、オブジェクトを複数のポリゴンに分解して、各ポリゴン対応する描画命令をCPUから描画装置に転送する。そして、描画装置は、CPUから送られてきた描画命令を解釈して、頂点の色データと奥行きを示すZ値から、ポリゴンを構成する全ての画素の色とZ値を考慮して、画素データをフレームバッファに書き込むレンダリング処理を行い、フレームバッファに図形を描画する。なお、上記Z値は、視点からの奥行き方向の距離を示す情報である。
【0004】
例えば、上記画像生成装置において、3次元のオブジェクトを表示する場合は、オブジェクトを複数のポリゴンに分解して、各ポリゴンに対応する描画命令をCPUから描画装置に転送する。この際に、オブジェクトをより実際に近く表現するするために、テクスチャマッピングやミップマッピングと呼ばれる手法が採用されている。さらに、色変換データを記憶したカラールックアップテーブル(CLUT: Cclor Lock Up Table)を介して画像の色データを変換することにより、表示色を変化させる手法も広く知られている。
【0005】
ここで、テクスチャマッピングとは、テクスチャソース画像として別に用意された2次元画像(絵柄)すなわちテクスチャパターンを物体を構成するポリゴンの表面に張り付ける技術である。また、ミップマッピングは、3次元モデルに近づいたり、そから遠ざかった場合に、ポリゴンの張り付ける絵柄が不自然にならないように画素データを補間するようにしたテクスチャマッピングの手法の1つである。
【0006】
【発明が解決しようとする課題】
ところで、画像の描画速度は、描画エンジンにおける各ポリゴンに対するテクスチャマッピングやミップマッピング等の処理速度に依存する。また、画像の描画速度は、描画エンジンからフレームバッファへの書き込み速度に影響され、フレームバッファのアクセス速度が遅いと描画速度が低下することになる。従って、描画速度を高めるために高価な高速メモリを大容量のフレームバッファに用いることはシステムの価格の高騰につながり、安価なダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)等のメモリを用いるとシステムの描画速度が遅くなる、という欠点がある。
【0007】
そこで、本発明は、上述したような実情に鑑みてなされたものであり、次のような目的を有する。
【0008】
すなわち、本発明の目的は、安価なDRAM等のメモリをフレームバッファとして用いても、描画速度を高速に維持できるような描画装置及び描画方法を提供することにある。
【0009】
また、本発明に他の目的は、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを効率よく生成して、画像メモリに描画することができる描画装置及び描画方法を提供することにある。
【0010】
また、本発明に他の目的は、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、テクスチャキャッシュ内のテクスチャデータに基づいてテクスチャマッピグ処理を確実且つ効率よく行うことができる描画装置及び描画方法を提供することにある。
【0011】
また、本発明に他の目的は、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により処理するポリゴンの大きさすなわち画素数を均等化することができる描画装置及び描画方法を提供することにある。
【0012】
また、本発明に他の目的は、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、テクスチャキャッシュ内のテクスチャデータに基づいてテクスチャの歪みの少ない状態でテクスチャマッピグ処理を行うことができる描画装置及び描画方法を提供することにある。
【0013】
また、本発明に他の目的は、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、ミップマップテクスチャデータに基づいてミップマッピング処理を効率よく行うことができる描画装置及び描画方法を提供することにある。
【0014】
また、本発明に他の目的は、前処理手段と描画手段とをパイプラインで構成して、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、上記描画手段により、効率よく高速描画処理を行うことができる描画装置及び描画方法を提供することにある。
【0015】
さらに、本発明に他の目的は、描画命令に基づくポリゴンをピクセルインターリーブ処理に適した形状の複数の新たなポリゴンに分割して、描画手段いより、フレームバッファを効率よくアクセスして高速の描画処理を行うことができる描画装置及び描画方法を提供することにある。
【0016】
【課題を解決するための手段】
本発明は、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置及び描画方法であって、前処理手段によりを単位図形を複数に分割することを特徴とする。
【0017】
本発明に係る描画装置及び描画方法では、例えば、単位図形が上記描画手段におけるテクスチャキャ シュ内に収まるか否かを判定する判定手段による判定結果に基づいて、分割した新たな単位図形が上記テクスチャキャ シュ内に収まるように上記描画命令に基づく単位図形を複数に分割する。
【0018】
また、本発明に係る描画装置及び描画方法では、例えば、単位図形内の画素数が規定値以下であるか否かを判定する判定手段による判定結果に基づいて、分割した新たな単位図形内の画素数が上記規定値以下となるように上記描画命令に基づく単位図形を2次元空間で複数に分割する。
【0019】
また、本発明に係る描画装置及び描画方法では、例えば、上記描画命令に基づく単位図形を3次元空間で複数に分割する。
【0020】
また、本発明に係る描画装置及び描画方法では、例えば、単位図形が参照するミップマップテクスチャの参照範囲を判定する判定手段による判定結果に基づい、分割した新たな単位図形が参照するミップマップテクスチャの参照範囲が所定範囲となるように上記描画命令に基づく単位図形を3次元空間で複数に分割する。
【0021】
また、本発明に係る描画装置及び描画方法では、例えば、単位図形内の画素数が規定値以下であるか否かを判定する判定手段による判定結果に基づいて、分割した新たな単位図形内の画素数が上記規定値以下となるように上記描画命令に基づく単位図形を上記判定手段による判定結果に基づいて3次元空間で複数に分割する。
【0022】
また、本発明に係る描画装置及び描画方法では、例えば、単位図形に対する上記描画手段による描画処理時間を予測して判定する判定手段による判定結果に基づいて、当該前処理手段による前処理時間と上記描画手段による描画処理時間がバランスするように上記描画命令に基づく単位図形を複数に分割する。
【0023】
さらに、本発明に係る描画装置及び描画方法では、例えば、単位図形の形状を判定する判定手段による判定結果に基づいて、分割した新たな単位図形が所定形状に近ずくように上記描画命令に基づく単位図形を複数に分割する。
【0024】
【発明の実施の形態】
以下、本発明の好ましい実施の形態について、図面を参照しながら説明する。
【0025】
本発明に係る描画装置は、例えば図1に示すような構成のビデオゲーム装置に適用される。本発明に係る描画方法は、このビデオゲーム装置において実施される。
【0026】
このビデオゲーム装置は、例えば光学ディスク等の補助記憶装置に記憶されているゲームプログラムを読み出して実行することにより、使用者からの指示に応じてゲームを行うものであって、図1に示すような構成を有している。
【0027】
すなわち、このビデオゲーム装置は、2種類のバスすなわち、メインバス1とサブバス2を備える。
【0028】
上記メインバス1とサブバス2は、バスコントローラ10を介して接続されている。
【0029】
そして、上記メインバス1には、マイクロプロセッサなどからなる主中央演算処理装置(メインCPU:Central Processing Unit)11、ランダムアクセスメモリ(RAM:Random Access Memory)からなる主記憶装置(メインメモリ)12、主ダイナミックメモリアクセスメモリコントローラ(メインDMAC: Dinamic Memory Access Controller)13、MPEGデコーダ(MDEC:MPEG Decorder)14及び画像処理装置(GPU: Graphic Processing Unit)15が接続されている。また、上記サブバス2には、マイクロプロセッサなどからなる副中央演算処理装置(サブCPU: Central Processing Unit)21、ランダムアクセスメモリ(RAM: Random Access Memory)からなる副記憶装置(サブメモリ)22、副ダイナミックメモリアクセスメモリコントローラ(サブDMAC:Dinamic Memory Access Controller)23、オペレーティングシステム等のプログラムが格納されたリードオンリーメモリ(ROM: Read Only Memory)24、音声処理装置(SPU: Sound Processing Unit)25、通信制御部(ATM: Asynchronous Transimission mode)26、補助記憶装置27及び入力デバイス28が接続されている。
【0030】
上記バスコントローラ10は、メインバス1とサブバス2との間のスイッチングを行う上記メインバス1上のデバイスであって、初期状態ではオープンになっている。
【0031】
また、上記メインCPU11は、上記メインメモリ12上のプログラムで動作する上記メインバス1上のデバイスである。このメインCPU11は、起動時には上記バスコントローラ10がオープンになっていることにより、上記サブバス2上のROM24からブートプログラムを読み込んで実行し、補助記憶装置27からアプリケーションプログラム及び必要なデータを上記メインメモリ12や上記サブバス2上のデバイスにロードする。このメインCPU11には、座標変換等の処理を行うジオミトリトランスファエンジン(GTE: Geometry TransferEngine )17が搭載されている。上記GTE17は、例えば複数の演算を並列に実行する並列演算機構を備え、上記メインCPU11からの演算要求に応じて座標変換,光源計算,行列あるいはベクトルなどの演算を高速に行う。そして、上記メインCPU11は、上記GTE17による演算結果に基づいて3角形や4角形などの基本的な単位図形(ポリゴン)の組み合わせとして3次元モデルを定義して3次元画像を描画するための各ポリゴンに対応する描画命令を作成し、この描画命令をパケット化してコマンドパケットとして上記GPU15に送る。
【0032】
また、上記メインDMAC13は、メインバス1上のデバイスを対象とするDMA転送の制御等を行う上記メインバス1上のデバイスである。このメインDMAC13は、、上記バスコントローラ10がオープンになっているときにはサブバス2上のデバイスも対象とする。
【0033】
また、上記GPU15は、レンダリングプロセッサとして機能する上記メインバス1上のデバイスである。このGPU15は、メインCPU11又はメインDMAC13からコマンドパケットとして送られてきた描画命令を解釈して、頂点の色データと奥行きを示すZ値から、ポリゴンを構成する全ての画素の色とZ値を考慮して、画素データをフレームバッファ18すなわち画像メモリに書き込むレンダリング処理を行う。
【0034】
また、上記MDEC14は、CPUと並列に動作可能なI/O接続デバイスであって、画像伸張エンジンとして機能する上記メインバス1上のデバイスである。このMDEC14は、離散コサイン変換などの直行変換により圧縮されて符号化された画像データを復号化する。
【0035】
また、上記サブCPU21は、上記サブメモリ22上のプログラムで動作する上記サブバス2上のデバイスである。
【0036】
また、上記サブDMAC23は、サブバス2上のデバイスを対象とするDMA転送の制御等を行う上記サブバス2上のデバイスである。このサブDMAC23は、上記バスコントローラ10がクローズなっているときにのみバス権利を獲得することができる。
【0037】
また、上記SPU25は、サウンドロセッサとして機能する上記サブバス2上のデバイスである。このSPU25は、上記サブCPU21又はサブDMAC23からコマンドパケットとして送られてくるサウンドコマンドに応じて、サウンドメモリ29から音声データ読み出して出力する。
【0038】
また、上記ATM26は、サブバス2上の通信用デバイスである。
【0039】
また、上記補助記憶装置27は、サブバス2上のデータ入力デバイスであって、ディスクドライブなどからなる。
【0040】
さらに、上記入力デバイス28は、サブバス2上のコントロールパッド、マウスなどのマンマシンインターフェースや、画像入力、音声入力などの他の機器からの入力用デバイスである。
【0041】
すなわち、このビデオゲーム装置では、座標変換やクリッピング、光源計算等のジオメトリ処理を行い、3角形や4角形などの基本的な単位図形(ポリゴン)の組み合わせとして3次元モデルを定義して3次元画像を描画するための描画命令を作成し、各ポリゴンに対応する描画命令をコマンドパケットとしてメインバス1に送出するジオメトリ処理系が上記メインバス1上のメインCPU11及びGTU17などにより構成され、上記ジオメトリ処理系からの描画命令に基づいて各ポリゴンの画素データを生成してフレームバッファ18に書き込むレンダリング処理を行い、フレームバッファ18に図形を描画するレンダリング処理系が上記GPU15により構成されている。
【0042】
以下、上述したGPU15について具体的に説明する。
【0043】
上記GPU15は、その具体的な構成を図2に示してあるように、上記メインバス1に接続されたパケットエンジン31を備え、上記メインCPU11又はメインDMAC13から上記メインバス1を介して上記パケットエンジン31にコマンドパケットとして送られてくる描画命令に従って、プリプロセッサ32と描画エンジン33により各ポリゴンの画素データを上記フレームバッファ18に書き込むレンダリング処理を行い、上記フレームバッファ18に描画された画像の画素データを読み出して表示制御部(CRTC: CRT Controler)34を介してビデオ信号として図示しないテレビジョン受像機やモニタ受像機に供給するようになっている。
【0044】
上記パケットエンジン31は、上記メインCPU11又はメインDMAC13から上記メインバス1を介して送られてくるコマンドパケットを上記パケットエンジン31により図示しないレジスタ上に展開する。
【0045】
また、上記プリプロセッサ32は、上記パケットエンジン31にコマンドパケットとして送られてきた描画命令に従ってポリゴンデータを生成して後述するポリゴンの分割処理などの所定の前処理をポリゴンデータに施し、上記描画エンジン33が必要とする各ポリゴンの頂点座標情報、テクスチャやミップマップテクスチャのアドレス情報、ピクセルインターリーブの制御情報などの各種データを生成する。
【0046】
さらに、上記描画エンジン33は、上記プリプロセッサ32に接続されたN個のポリゴンエンジン33A1,33A2・・・33ANと、各ポリゴンエンジン33A1,33A2・・・33ANに接続されたN個のテクスチャエンジン33B1,33B2・・・33BNと、各テクスチャエンジン33B1,33B2・・・33BNに接続された第1のバススイッチャ33Cと、この第1のバススイッチャ33Cに接続されたM個のピクセルエンジン33D1,33D2・・・33DMと、各ピクセルエンジン33D1,33D2・・・33DMに接続された第2のバススイッチャ33Eと、この第2のバススイッチャ33Eに接続されたテクスチャキャッシュ33Fと、このテクスチャキャッシュ33Fに接続されたCLUTキャッシュ33Gを備える。
【0047】
この描画エンジン33において、上記N個のポリゴンエンジン33A1,33A2・・・33ANは、上記プリプロセッサ32により前処理が施されたポリゴンデータに基づいて、上記N個のポリゴンエンジン33A1,33A2・・・33ANは、描画命令に応じたポリゴンを順次生成してポリゴン毎にシェーディング処理などを並列処理により行う。
【0048】
また、上記N個のテクスチャエンジン33B1,33B2・・・33BNは、上記ポリゴンエンジン33A1,33A2・・・33ANにより生成されたポリゴン毎に、上記テクスチャキャッシュ33Fからカラールックアップテーブル(CLUT:Color Lock Up Table)キャッシュ33Gを介して与えられるテクスチャデータに基づいて、テクスチャマッピング処理やミップマップ処理を並列処理により行う。
【0049】
ここで、上記テクスチャキャッシュ33Fには、上記N個のテクスチャエンジン33B1,33B2・・・33BNが処理するポリゴンに張り付けるテクスチャやミップマップテクスチャのアドレス情報が上記プリプロセッサ32から事前に与えられ、上記アドレス情報に基づいて上記フレームバッファ18上のテクスチャ領域からテクスチャマッピング処理に必要なテクスチャデータが転送されるとともに、該当するテクスチャデータからミップマッピング処理に必要となる解像度のデータのみが選択されてミップマップテクスチャデータとして転送される。さらに、上記CLUTキャッシュ33Gには、上記ポリゴンの描画を行なう際に参照すべきCLUTデータが上記フレームバッファ18上のCLUT領域から転送される。
【0050】
上記N個のテクスチャエンジン33B1,33B2・・・33BNによりテクスチャマッピング処理やミップマップ処理が施されたポリゴンデータは、上記第1のバススイッチャ33Cを介してM個のピクセルエンジン33D1,33D2・・・33DMに転送される。
【0051】
上記M個のピクセルエンジン33D1,33D2・・・33DMは、Zバッファ処理やアンチエリアシング処理等の各種画像処理を並列処理により行い、M個の画素データを生成する。
【0052】
そして、上記M個のピクセルエンジン33D1,33D2・・・33DMで生成されたM個の画素データは、この第2のバススイッチャ33Eを介して上記フレームバッファ18に書き込まれる。
【0053】
ここで、上記第2のバススイッチャ33Eは、上記プリプロセッサ32からピクセルインターリーブの制御情報が供給されており、上記M個のピクセルエンジン33D1,33D2・・・33DMで生成されたM個の画素データのうちのL個の画素データを上記制御情報に基づいて選択することにより、上記フレームバッファ18上に描画するポリゴンの形状に応じたM個の記憶場所をアクセス単位として画素データをM個づつ書き込むピクセルインターリーブ処理を行う機能を有している。
【0054】
上記描画エンジン33は、上記プリプロセッサ32により前処理が施されたポリゴンデータに基づいて、各ポリゴンの全ての画素データを生成して上記フレームバッファ18に書き込むことにより、上記描画命令によりポリゴンの組合せとして定義された画像を上記フレームバッファ18上に描画する。そして、上記フレームバッファ18に描画された画像の画素データを読み出してCRTC34を介してビデオ信号として図示しないテレビジョン受像機やモニタ受像機に供給する。
【0055】
このような構成のGPU15において、上記プリプロセッサ32は、例えば、ポリゴンの頂点座標[(X0,Y0),(X1,Y1),(X2,Y2)]やテクスチャ座標[(U0,V0),(U1,V1),(U2,V2)]に基づいて、上記N個のテクスチャエンジン33B1,33B2・・・33BNが処理するポリゴンに張り付けるテクスチャの先読みを行うためのアドレス情報を生成し、また、ポリゴンの辺の傾き[(X1−X0)/(Y1−Y0),(X2−X0)/(Y2−Y0),(X1−X2)/(Y1−Y2)]、テクスチャアドレスの傾き[(U1−U0)/(Y1−Y0),(U2−U0)/(Y2−Y0),(U1−U2)/(Y1−Y2)],[(V1−V0)/(Y1−Y0),(V2−V0)/(Y2−Y0),(V1−V2)/(Y1−Y2)]・・・やポリゴンの面積などからミップマップの選択情報を再生して、これらの情報をテクスチャキャッシュ33Fに供給する。また、ポリゴンの頂点座標[(X0,Y0),(X1,Y1),(X2,Y2)]を左エッジの頂点順(X0,Y0)→(X1,Y1)→(X2,Y2)又は右エッジの頂点順(X2,Y2)→(X1,Y1)→(X0,Y0)でソーティングしたり、両端点のスキャンやテクスチャアドレスのスキャンを行う。
【0056】
そして、上記プリプロセッサ32は、ポリゴンデータを前処理した情報を図示しないワークメモリに蓄えておき、描画エンジン33が次のポリゴンを処理できるようにになった段階で、1ポリゴンを処理できる情報をワークメモリから上記N個のポリゴンエンジン33A1,33A2・・・33ANに転送する。これにより、上記描画エンジン33は、新たなポリゴンの描画処理を開始する。
【0057】
すなわち、このGPU15では、その基本的な構成を図3に示すように、上記プリプロセッサ32と描画エンジン33でパイプラインにより描画処理を行い、描画命令によりポリゴンの組合せとして定義された画像を上記フレームバッファ18上に描画する。
【0058】
このパイプライン処理による描画処理を再度説明する。
【0059】
上記プリプロセッサ32は、上述のようにポリゴンデータに所定前処理を施し、上記描画エンジン33が必要とする各ポリゴンの頂点座標情報、テクスチャやミップマップテクスチャのアドレス情報、ピクセルインターリーブの制御情報などの各種データを上記描画エンジン33に供給する。
【0060】
上記描画エンジン33は、上記プリプロセッサ32からデータを受け取り、必要とするテキスチャデータをテキスチャキャッシュ33Dから読み出し、画素データを生成して上記フレームバッファ18に書き込む。上記テキスチャキャッシュ33Dは、上記プリプロセッサ32における前処理により算出された必要とするテクスチャアドレスに対応するテクスチャ領域のテキスチャデータを上記フレームバッファ18から読み出す。テキスチャデータの読み出しは、描画エンジン33が実際に必要とする前に完了するように行われる。また、ミップマッッピング処理で必要とする解像度に対応するテクスチャデータのみを上記テクスチャ領域から読み込むことにより、上記テクスチャ領域のアクセス回数を減らすことができる。
【0061】
なお、上記テキスチャキャッシュ33F内のデータ構造は、その一例を図4に示してあるように、テクスチャアドレスからなるタグ部TAG、必要となるテクスチャデータが格納されておいる格納部DATA、未だテクスチャデータが使用されていないことを示すフラグLを有する。そして、上記テキスチャキャッシュ33は、フラグLがリセットされたエントリを使用すべく、上記フレームバッファ18のテクスチャ領域からテクスチャデータを読み込み、そのフラグLをセットする。描画エンジン33は、フラグLがセットされているエントリから該当するテクスチャデータを読み出して描画処理を行い、描画を終了してそのテクスチャデータをもはや必要としなくなった段階でそのエントリのフラグlをリセットする。
【0062】
このようにテクスチャマッピング処理を行う描画装置において、プリプロセッサ32と描画エンジン33をパイプラインで構成し、テクスチャメモリすなわち上記フレームバッファ18上のテキスチャ領域から上記描画エンジン33が必要とするテキスチャデータを上記プリプロセッサ32による前処理の段階でキャッシュメモリ33Fに転送することによって、上記描画エンジン33を停止させることなく描画処理を行うことができる。また、ミップマッッピング処理で必要とする解像度に対応するテクスチャデータのみを上記テクスチャ領域から読み込むことにより、上記テクスチャ領域のアクセス回数及びアクセス時間を減らすことができ、全体の描画速度を上げることができる。
【0063】
なお、上記プリプロセッサ32におけるポリゴンの分割処理は、例えば図5のに示すフローチャートに従って行われる。
【0064】
すなわち、ポリゴンの分割処理は、ポリゴンの数を示すポリゴンカウントCを1に初期設定して開始される。
【0065】
そして、第1の処理ステップS1では、ポリゴンを分割する必要があるか否かの判定処理を行う。この処理ステップS1における判定処理では、例えば、描画エンジン33においてこれから処理するポリゴンがテクスチャキャッシュ33F内に収まる否かを判定する。この判定処理は、例えばポリゴンの頂点のテクスチャ座標[(U0,V0),(U1,V1),(U2,V2)]を算出して、全てが1テクスチャページ内に収まっているか否かを判定すればよい。
【0066】
そして、上記処理ステップS1における判定結果が「NO」すなわちポリゴンを分割する必要がある場合には、次の処理ステップS2に進んで、ポリゴンのN分割処理を行う。この処理ステップS2におけるポリゴンのN分割処理は、例えば次に示すように、ポリゴンの全ての辺を中点で分割することにより行われる。
【0067】
X0’=(X0+X1)/2
Y0’=(Y0+Y1)/2
Z0’=(Z0+Z1)/2
X1’=(X1+X2)/2
Y1’=(Y1+Y2)/2
Z1’=(Z1+Z2)/2
X2’=(X2+X0)/2
Y2’=(Y2+Y0)/2
Z2’=(Z2+Z0)/2
U0’=(U0+U1)/2
V0’=(V0+V1)/2
Z0’=(Z0+Z1)/2
U1’=(U1+U2)/2
V1’=(V1+V2)/2
Z1’=(Z1+Z2)/2
U2’=(U2+U0)/2
V2’=(V2+V0)/2
Z2’=(Z2+Z0)/2
R0’=(R0+R1)/2
G0’=(G0+G1)/2
B0’=(B0+B1)/2
R1’=(R1+R2)/2
G1’=(G1+G2)/2
B1’=(B1+B2)/2
R2’=(R2+R0)/2
G2’=(G2+G0)/2
B2’=(B2+B0)/2
すなわち、この処理ステップS2におけるポリゴンのN分割処理では、ポリゴンの全ての辺を中点で分割することにより、例えば三角形のポリゴンはN=4個の新たなポリゴンに分割される。
【0068】
次の処理ステップS2では、ポリゴンカウントCをC=C+N−1としてポリゴンの数を変更する。そして、最初の処理ステップS1に戻り、分割された新たなポリゴンをさらに分割する必要があるか否かの判定処理を行い、分割した新たなポリゴンが上記テクスチャキャ シュ内に収まるようになるまで、上記各処理ステップS1〜S3を繰り返し行う。
【0069】
また、上記処理ステップS1における判定結果が「YES」すなわちポリゴンを分割する必要がない場合には次の処理ステップS4に進む。
【0070】
この処理ステップS4では、ポリゴンエンジン33A1,33A2・・・33ANPに1ポリゴン分の前処理情報を渡して、レンダリング処理を開始させ、レンダリング処理の終了を待つことなく次の処理ステップS5に進む。
【0071】
この処理ステップS5では、ポリゴンカウントCをデクリメントする。
【0072】
次の処理ステップS6では、ポリゴンカウントCが「0」になったか否かの判定処理を行う。そして、この処理ステップS6における判定結果が「NO」すなわちC≠0で処理すべきポリゴンがある場合には最初の処理ステップS1に戻って、次のポリゴンの処理に入る。また、この処理ステップS6における判定結果が「YES」すなわち全てのポリゴンをレンダリングして分割すべきポリゴンが無くなれば、処理を終了する。
【0073】
すなわち、上記プリプロセッサ32では、描画エンジン33においてこれから処理するポリゴンがテクスチャキャッシュ33F内に収まる否か(以下、判定条件1という)を判定し、その判定結果に基づいて分割処理を行うことによって、分割した新たなポリゴンが上記テクスチャキャ シュ33F内に収まるように上記描画命令に基づくポリゴンを複数に分割する。これにより、上記描画エンジン33において、テクスチャキャッシュ33FからCLUTャッシュ33Gを介して読み出されるテクスチャデータに基づいてテクスチャマッピグ処理を確実且つ効率よく行うことができる。
【0074】
ここで、上記プリプロセッサ32におけるポリゴンの分割処理では、上述の最初の処理ステップS1においてポリゴン内の画素数が規定値以下であるか否か(以下、判定条件2という)によりポリゴンを分割する必要があるか否かを判定し、その判定結果に基づいて、分割した新たなポリゴン内の画素数が上記規定値以下となるように処理ステップS2で上記描画命令に基づくポリゴンを2次元空間で複数に分割しても良い。これにより、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化することができる。なお、上記ポリゴン内の画素数は、例えば、そのポリゴンの頂点の外積値として面積を求め、その値が適正な値よりも小さいか否かにより判定することができる。
【0075】
また、上記プリプロセッサ32におけるポリゴンの分割処理では、上述の処理ステップS2において上記描画命令に基づくポリゴンを3次元空間で複数に分割するようにしても良い。
【0076】
この場合、上述の処理ステップS1において、ポリゴンの頂点のZ値の最小値と最大値との差が適正な範囲内に収まっているか否か(以下、判定条件3という)により、ポリゴンを分割する必要があるか否かを判定し、その判定結果に基づいて、分割した新たなポリゴン内の画素数が上記規定範囲内に収まるように上記処理ステップS2で上記描画命令に基づくポリゴンを3次元空間で複数に分割して、1ポリゴンの大きさを制限することによって、テクスチャキャッシュ33FからCLUTチャッシュ33Gを介して読み出されるテクスチャデータに基づいてテクスチャの歪みの少ない状態でテクスチャマッピグ処理を行うことができる。
【0077】
また、この場合、上述の処理ステップS1において、ポリゴンの頂点のZ値の最小値と最大値で参照するミップマップテキスチャを跨いでいるか否か(以下、判定条件4という)によりポリゴンを分割する必要があるか否かを判定し、その判定結果に基づいて、分割した新たなポリゴンがミップマップテキスチャを跨がないように、上記処理ステップS2で上記描画命令に基づくポリゴンを3次元空間で複数に分割して、1ポリゴンの参照するミップマップテキスチャの参照範囲を制限を制限することによって、テクスチャキャッシュ33FからCLUTチャッシュ33Gを介して読み出されるミップマップテクスチャデータに基づいてミップマッピング処理を効率よく行うことができる。
【0078】
さらに、この場合、上述の処理ステップS1において、ポリゴン内の画素数が規定値以下であるか否かにより、ポリゴンを分割する必要があるか否かを判定し、その判定結果に基づいて、分割した新たなポリゴン内の画素数が上記規定値以下となるように上記描画命令に基づくポリゴンを上記処理ステップS2により3次元空間で複数に分割するようにしても良い。
【0079】
また、上述の処理ステップS1において、ポリゴンに対する描画エンジン33に描画処理時間を例えばポリゴン内の画素数に基づいて予測し、当該プリプロセッサ32による前処理時間と上記描画エンジン33による描画処理時間がバランスいるか否か(以下、判定条件5という)により、ポリゴンを分割する必要があるか否かを判定し、その判定結果に基づいて、当該プリプロセッサ32による前処理時間と上記描画エンジン33による描画処理時間がバランスするように上記描画命令に基づくポリゴンを上記処理ステップS2で複数に分割するようにしても良い。これにより、上記プリプロセッサ32と描画エンジン33の各処理時間のバランスを保ち、上記プリプロセッサ32と描画エンジン33とパイプラインで構成して効率よく高速描画処理を行うことができる。
【0080】
また、上述の処理ステップS1において、描画エンジン33で処理するポリゴンがピクセルインターリーブ処理に適した形状であるか否か(以下、判定条件6という)により、ポリゴンを分割する必要があるか否かを判定し、その判定結果に基づいて、上記処理ステップS2により上記描画命令に基づくポリゴンをピクセルインターリーブ処理に適した形状の複数の新たなポリゴンに分割するようにしても良い。これにより、描画エンジン33でフレームバッファ18を効率よくアクセスして高速の描画処理を行うことができる。
【0081】
さらに、上述の処理ステップS1において、上述の各種判定条件を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが各種判定条件を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割するようにしても良い。
【0082】
上述の各種判定条件を組み合わせとしては、例えば、描画エンジン33においてテキスチャマッピングを行う場合には、上記判定条件1と他の判定条件2〜判定条件6との組み合わせが採用される。
【0083】
すなわち、上述の処理ステップS1において、上記判定条件1と判定条件2を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが上記判定条件1と判定条件2を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割することにより、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化し、上記テクスチャキャッシュ33FからCLUTチャッシュ33Gを介して読み出されるテクスチャデータに基づいてテクスチャマッピグ処理を確実且つ効率よく行うことができる。
【0084】
また、上述の処理ステップS1において、上記判定条件1と判定条件3を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが上記判定条件1と判定条件3を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割することにより、上記テクスチャキャッシュ33FからCLUTチャッシュ33Gを介して読み出されるテクスチャデータに基づいてテクスチャの歪みの少ない状態でテクスチャマッピグ処理を確実且つ効率よく行うことができる。さらに、上記判定条件2を組み合わせるようにすれば、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化して、テクスチャマッピグ処理を行うことができる。
【0085】
また、上述の処理ステップS1において、上記判定条件1と判定条件4を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが上記判定条件1と判定条件4を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割することにより、上記テクスチャキャッシュ33FからCLUTチャッシュ33Gを介して読み出されるテクスチャデータに基づいて、ミップマッピング処理を確実且つ効率よく行うことができる。さらに、上記判定条件2や判定条件3を組み合わせて、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化したり、テクスチャの歪みを軽減するようにしても良い。
【0086】
また、上述の処理ステップS1において、上記判定条件1と判定条件5を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが上記判定条件1と判定条件5を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割することにより、上記プリプロセッサ32と描画エンジン33の各処理時間のバランスを保ちパイプラインで効率よく高速のテクスチャマッピグ処理を行うことができる。さらに、上記判定条件2や判定条件3を組み合わせて、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化したり、テクスチャの歪みを軽減するようにしても良い。上記判定条件4を組み合わせて、ミップマッピング処理を行うようにしても良い。
【0087】
さらに、上述の処理ステップS1において、上記判定条件1と判定条件6を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが上記判定条件1と判定条件6を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割することにより、描画エンジン33でテクスチャマッピグ処理を確実且つ効率よく行UTOともに、フレームバッファ18を効率よくアクセスして高速の描画処理を行うことができる。さらに、上記判定条件2や判定条件3を組み合わせて、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化したり、テクスチャの歪みを軽減するようにしても良い。上記判定条件4を組み合わせてミップマッピング処理を行うようにしたり、上記判定条件5を組み合わせてパイプラインによる高速化を図るようにしても良い。
【0088】
また、描画エンジン33においてテキスチャマッピングを行わない場合には、上記判定条件2、判定条件5、判定条件6の組み合わせが上述の各種判定条件を組み合わせとして採用される。
【0089】
すなわち、上述の処理ステップS1において、上記判定条件2と判定条件5を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが上記判定条件2と判定条件5を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割することにより、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化して、上記プリプロセッサ32と描画エンジン33の各処理時間のバランスを保ちパイプラインで効率よく高速の描画処理を行うことができる。
【0090】
また、上述の処理ステップS1において、上記判定条件2と判定条件6を組み合わせてポリゴンを分割する必要があるか否かを判定して、その判定結果に基づいて、分割した新たなポリゴンが上記判定条件2と判定条件6を満たすように上記描画命令に基づくポリゴンを上記処理ステップS2により複数に分割することにより、上記描画エンジン33において処理するポリゴンの大きさすなわち画素数を均等化し、フレームバッファ18を効率よくアクセスして高速の描画処理を行うことができる。さらに、上記判定条件5を組み合わせてパイプラインによる高速化を図るようにしても良い。
【0091】
さらに、上述した第2のバススイッチャ33Eにおけるピクセルインターリーブ処理は、次のようにして行われる。
【0092】
すなわち、第2のバススイッチャ33Eは、図6に示すように、上記図2に示したプリプロセッサ32の出力が供給される制御回路101と、制御回路101の出力が供給されるセレクタ102と、セレクタ102の出力が各々供給される複数のマルチプレクサ/デマルチプレクサ(MUX: Multiplexer/DMUX:Demultiplexer)103a,103b,103c,103d,・・・とを備えている。
【0093】
そして、MUX/DMUX103a,103b,103c,103d,・・・は、各々、上記図2に示したフレームバッファ18と描画エンジン33に接続されている。
【0094】
ここで、フレームバッファ18は、複数のメモリバンク[1],[2],・・・,[X],・・・,[L]からなり、複数のメモリバンク[1],[2],・・・,[X],・・・,[L]は、各々、16個のアドレスで現される短形(以下、インターリーブパターンと言う。)の各アドレスを同時にアクセスすることができるようになされている。
【0095】
したがって、フレームバッファ18の、例えば、メモリバンク[X]は、アドレスA 〜A15をアクセスするための16個の入出力ポートP 〜P15を備えており、複数のMUX/DMUX103a,103b,103c,103d,・・・のうちの4個のMUX/DMUX103a,103b,103c,103dは、各々、16個の入出力ポートP〜P15と接続されている。
【0096】
また、4個のMUX/DMUX103a,103b,103c,103dは、描画エンジン33の4個のピクセルエンジン33DX1,33DX2,33DX3,33DX4と対応して接続されている。
【0097】
なお、メモリバンク[X]以外の他の各メモリバンクは、上述したメモリバンク[X]と同様の構成をしているため、その詳細な説明は省略する。また、第2のバススイッチャ33Eが行う上記他の各メモリバンクに対するアクセス処理についても、後述する第2のバススイッチャ33Eが行うメモリバンク[X]に対するアクセス処理と同様であるため、以下の説明では、第2のバススイッチャ33Eが行うメモリバンク[X]に対するアクセス処理についてのみ説明する。
【0098】
まず、第2のバススイッチャ33Eの一連の動作について説明する。
【0099】
例えば、メモリバンク[X]上に描画するポリゴンの形状が図7に示すような三角形TABC (第1のポリゴンの形状)であった場合、先ず、プリプロセッサ32から制御回路101には、ピクセルインターリーブの制御情報が供給される。
【0100】
制御回路101は、プリプロセッサ32からのピクセルインターリーブの制御情報に基いて、三角形TABC 内部をアクセスする際に用いるインターリーブパターンを、例えば、(4×4)のインターリーブパターンPに切り換える。
【0101】
なお、制御回路101におけるインターリーブパターンの切換方法についての詳細は後述する。
【0102】
そして、制御回路101は、(4×4)のインターリーブパターンPを用いて、メモリバンク[X]上に形成される複数のインターリーブパターンのうち、アクセスすべきインターリーブパターン、すなわち三角形TABC 内部を全てアクセスすることができるようなインターリーブパターンを検出する。
【0103】
したがって、三角形TABC では、メモリバンク[X]上の各インターリーブパターンをP(x方向のパターンインデックス,y方向のパターンインデックス)で示した場合、図8に示すように、

Figure 0003548648
で示される合計20個のインターリーブパターンが検出される。
【0104】
そして、制御回路101は、上述のようにして検出した20個のインターリーブパターンを示すパターン情報をインターリーブパターン単位でセレクタ102に供給する。また、1アドレス単位でメモリアクセスを行う場合には、制御回路101は、三角形TABC の形状に基いたマスク情報をセレクタ102に供給する。
【0105】
セレクタ102は、制御回路101からインターリーブパターン単位で供給されたパターン情報に基いて、アクセスすべき(4×4)のインターリーブパターンPに対応したアドレスをMUX/DMUX103a,103b,103c,103dに指定する。
【0106】
また、セレクタ102は、制御回路101からマスク情報が供給された場合には、そのマスク情報に基いて、図9に示すように、(4×4)のインターリーブパターンPのなかでマスクを行った結果得られるアクセスすべきアドレスをMUX/DMUX103a,103b,103c,103dに指定する。したがって、例えば、図10に示すように、上記図9に示したP(4,1)で示されるインターリーブパターン内のアドレスA 〜A15において、マスクを行った結果得られるアクセスすべきアドレスは、A4,A5,A6,A8,A9,A10,A13,A14,A15(斜線部分)となる。
【0107】
MUX/DMUX103a,103b,103c,103dは、各々、メモリバンク[X]のアドレスA 〜A15のうち、セレクタ102により指定されたアドレスをアクセスする。
【0108】
ここで、上述したように、ピクセルエンジン33DX1,33DX2,33DX3,33DX4からMUX/DMUX103a,103b,103c,103dには、各々、画素データが供給されるようになされている。
【0109】
そこで、例えば、MUX/DMUX103aは、セレクタ102により指定されたアドレスをアクセスすることにより、入出力ポートP 〜P15のうち上記アドレスに対応した入出力ポートを介して、ピクセルエンジンXaからの画素データをメモリバンク[X]の上記アドレスにより示される領域に書き込む。
【0110】
また、MUX/DMUX103aは、セレクタ102により指定されたアドレスをアクセスすることにより、入出力ポートP 〜P15のうち上記アドレスに対応した入出力ポートを介して、メモリバンク[X]の上記アドレスにより示される領域に書き込まれているデータを読み出す。そして、MUX/DMUX103aは、メモリバンク[X]から読み出したデータに対して所定の処理を行う。
【0111】
なお、MUX/DMUX103b〜103dの動作については、上述したMUX/DMUX103aの動作と同様であるため、その詳細な説明は省略する。
【0112】
つぎに、上述した制御回路101におけるインターリーブパターンの切換方法について具体的に説明する。
【0113】
まず、メモリバンク[X]上に描画するポリゴンの形状が、例えば、図11に示すようにな横長の三角形TDEF (第2のポリゴンの形状)であり、三角形TDEF を(4×4)のインターリーブパターンPでアクセスする場合のアクセス回数について説明する。
【0114】
この場合、アクセスすべきインターリーブパターンの個数は、図12に示すように、
Figure 0003548648
の合計17個となる。
【0115】
すなわち、(4×4)のインターリーブパターンPで三角形TDEF をアクセスする場合、三角形TDEF 内部を全てアクセスするためのアクセス回数は、17回となる。
【0116】
また、1アドレス単位でアクセスする場合には、上述した三角形TABC のアクセス時と同様に、図13に示すように、(4×4)のインターリーブパターンPのなかでマスクを行うことにより、必要なメモリアドレスのみをアクセスすることとなる。
【0117】
つぎに、図14に示すように、三角形TDEF を(8×2)のインターリーブパターンP でアクセスする場合、アクセスすべきインターリーブパターンの個数は、図15に示すように、
Figure 0003548648
の合計15個となる。
【0118】
すなわち、(8×2)のインターリーブパターンP で三角形TDEF をアクセスする場合、三角形TDEF 内部を全てアクセスするためのアクセス回数は、15回となる。
【0119】
また、1アドレス単位でアクセスする場合には、上述した三角形TABC のアクセス時と同様に、図16に示すように、(8×2)のインターリーブパターンP のなかでマスクを行うことにより、必要なメモリアドレスのみをアクセスすることとなる。
【0120】
つぎに、図17に示すように、三角形TDEF を(16×1)のインターリーブパターンP でアクセスする場合、アクセスすべきインターリーブパターンの個数は、図18に示すように、
Figure 0003548648
の合計18個となる。
【0121】
すなわち、(16×1)のインターリーブパターンP で三角形TDEF をアクセスする場合、三角形TDEF 内部を全てアクセスするためのアクセス回数は、18回となる。
【0122】
また、1アドレス単位でアクセスする場合には、上述した三角形TABC のアクセス時と同様に、図19に示すように、(8×2)のインターリーブパターンP のなかでマスクを行うことにより、必要なメモリアドレスのみをアクセスすることとなる。
【0123】
上述のように、(4×4)のインターリーブパターンPで三角形TDEF をアクセスする場合のアクセス回数は17回、(8×2)のインターリーブパターンPで三角形TDEF をアクセスする場合のアクセス回数は15回、(16×1)のインターリーブパターンP で三角形TDEF をアクセスする場合のアクセス回数は18回となり、この結果、(8×2)のインターリーブパターンP で三角形TDEF をアクセスする場合のアクセス回数が最少のアクセス回数となる。したがって、三角形TDEF に対する適切なインターリーブパターンは、(8×2)のインターリーブパターンPということがわかる。
【0124】
そこで、制御回路101は、メモリバンク[X]をアクセスする際に用いるインターリーブパターンを、アクセスするポリゴンの形状に応じた適切なインターリーブパターンに切り換えるために、以下のような処理を行う。
【0125】
例えば、メモリバンク[X]上に描画するポリゴンの形状が図20に示すような三角形THIJ であった場合、先ず、制御回路101には、上述したように、プリプロセッサ32からピクセルインターリーブの制御情報が供給される。このピクセルインターリーブの制御情報は、例えば、三角形THIJのの3つの頂点H,I,Jのxy座標H(Xh,Yh),I(Xi,Yi),J(Xj,Yj)等の情報である。
【0126】
次に、制御回路101は、上記図20に示すように、プリプロセッサ32からのピクセルインターリーブの制御情報を用いて、三角形THIJ の縦横比Rを、X方向の最大値MAXx及び最少値MINx、Y方向の最大値MAXy及び最少値MINyを持って、
Figure 0003548648
なる演算により求める。
【0127】
なお、三角形THIJ では、
MAXx=Xj
MINx=Xi
MAXy=Yh
MINy=Yi
となる。
【0128】
そして、制御回路101は、上述のようにして求めた縦横比Rに応じて、図21に示すような、(1×16)、(2×8)、(4×4)、(8×2)、(16×1)の5種類のインターリーブパターンPa〜Peのうち適切なインターリーブパターンを選出し、三角形THIJ をアクセスする際に用いるインターリーブパターンを、選出したインターリーブパターンに切り換える。
【0129】
ここで、制御回路101は、表1に示すような、縦横比Rとインターリーブパターンと対応表からなるテーブルを有している。このテーブルには、縦横比Rに応じた適切なインターリーブパターン、すなわちアクセス回数が最小となるようなインターリーブパターンが予め設定されている。したがって、制御回路101は、上記テーブルを用いることにより、上述のようにして得られた縦横比Rに基いた適切なインターリーブパターンを選出することとなる。
【0130】
【表1】
Figure 0003548648
【0131】
上述のように、第2のバススイッチャ33Eでは、メモリバンク[X]上に描画するポリゴンの形状に応じて、上記図21に示したような5種類のインターリーブパターンPa〜Peから適切なインターリーブパターンを選出し、選出したインターリーブパターンでメモリバンク[X]をアクセスするため、最小のアクセス回数でメモリバンク[X]上に上記ポリゴンを描画することができる。したがって、第2のバススイッチャ33Eは、メモリアクセスを効率良く行うことができる。
【0132】
また、GPU15は、上述のような、メモリアクセスの効率化を図った第2のバススイッチャ33Eにより、フレームバッファ18をアクセスしてデータ処理を行うため、そのデータ処理を効率良く行うことができる。
【0133】
【発明の効果】
以上のように、本発明に係る描画装置及び描画方法では、単位図形を複数に分割する前処理手段を備えるので、描画手段により処理するのに適した状態に単位図形を分割することができ、単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、上記描画手段により、単位図形の全ての画素の画素データを効率よく生成して、画像メモリに描画することができる。
【0134】
また、本発明に係る描画装置及び描画方法では、単位図形が描画手段におけるテクスチャキャ シュ内に収まるか否かを判定する判定手段による判定結果に基づいて、前処理手段により、分割した新たな単位図形が上記テクスチャキャ シュ内に収まるように描画命令に基づく単位図形を複数に分割するので、描画手段において、テクスチャキャッシュのテクスチャデータに基づいてテクスチャマッピグ処理を確実且つ効率よく行うことができる。
【0135】
また、本発明に係る描画装置及び描画方法では、単位図形内の画素数が規定値以下であるか否かを判定する判定手段による判定結果に基づいて、前処理手段により、分割した新たな単位図形内の画素数が上記規定値以下となるように上記描画命令に基づく単位図形を2次元空間で複数に分割するので、描画手段において処理するポリゴンの大きさすなわち画素数を均等化することができる。
【0136】
また、本発明に係る描画装置及び描画方法では、単位図形内の画素数が規定値以下であるか否かを判定する判定手段による判定結果に基づいて、前処理手段により、分割した新たな単位図形内の画素数が上記規定値以下となるように上記描画命令に基づく単位図形を3次元空間で複数に分割するので、例えばテクスチャキャッシュ内のテクスチャデータに基づいてテクスチャの歪みの少ない状態でテクスチャマッピグ処理を行うことができる。
【0137】
また、本発明に係る描画装置及び描画方法では、単位図形が参照するミップマップテクスチャの参照範囲を判定する判定手段による判定結果に基づいて、前処理手段により、分割した新たな単位図形が参照するミップマップテクスチャの参照範囲が所定範囲となるように描画命令に基づく単位図形を3次元空間で複数に分割するので、ミップマップテクスチャデータに基づいてミップマッピング処理を効率よく行うことができる。
【0138】
また、本発明に係る描画装置及び描画方法では、単位図形に対する描画手段による描画処理時間を予測して判定する判定手段による判定結果に基づいて、前処理手段による前処理時間と上記描画手段による描画処理時間がバランスするように描画命令に基づく単位図形を複数に分割するので、上記前処理手段と描画手段の各処理時間のバランスを保つことができ、上記前処理手段と描画手段とをパイプラインで構成して効率よく高速描画処理を行うことができる。
【0139】
さらに、本発明に係る描画装置及び描画方法では、単位図形の形状を判定する判定手段判定結果に基づいて、前処理手段により、分割した新たな単位図形が所定形状に近ずくように描画命令に基づく単位図形を複数に分割するので、上記描画命令に基づくポリゴンをピクセルインターリーブ処理に適した形状の複数の新たなポリゴンに分割することができる。これにより、描画手段で、フレームバッファを効率よくアクセスして高速の描画処理を行うことができる。
【図面の簡単な説明】
【図1】本発明を適用したビデオゲーム装置の構成を示すブロック図である。
【図2】上記ビデオゲーム装置におけるGPUの具体的な構成を示すブロック図である。
【図3】上記GPUの基本的な構成をブロック図である。
【図4】上記GPUにおけるテキスチャキャッシュ内のデータ構造の一例を示す図である。
【図5】上記GPUにおけるプリプロセッサによるポリゴンの分割処理を示すフローチャートである。
【図6】上記ビデオゲーム装置における第2のバススイッチャの構成を示すブロック図である。
【図7】上記ビデオゲーム装置におけるフレームバッファのメモリバンク上に描画する第1のポリゴンの形状内部をアクセスする場合について説明するための図である。
【図8】上記第1のポリゴンの形状内部をアクセスする際のアクセスすべきインターリーブパターンを説明するための図である。
【図9】上記第1のポリゴンの形状内部をアクセスする際に、1アドレス単位でアクセスする場合のマスク処理について説明するための図である。
【図10】上記マスク処理により得られたアクセスアドレスを説明するための図である。
【図11】上記フレームバッファのメモリバンク上に描画する第2のポリゴンの形状内部を(4×4)のインターリーブパターンでアクセスする場合について説明するための図である。
【図12】上記第2のポリゴンの形状内部を(4×4)のインターリーブパターンでアクセスする場合のアクセスすべきインターリーブパターンを説明するための図である。
【図13】上記第2のポリゴンの形状内部を(4×4)のインターリーブパターン内で1アドレス単位でアクセスする場合のマスク処理について説明するための図である。
【図14】上記第2のポリゴンの形状内部を(8×2)のインターリーブパターンでアクセスする場合について説明するための図である。
【図15】上記第2のポリゴンの形状内部を(8×2)のインターリーブパターンでアクセスする場合のアクセスすべきインターリーブパターンを説明するための図である。
【図16】上記第2のポリゴンの形状内部を(8×2)のインターリーブパターン内で1アドレス単位でアクセスする場合のマスク処理について説明するための図である。
【図17】上記第2のポリゴンの形状内部を(16×1)のインターリーブパターンでアクセスする場合について説明するための図である。
【図18】上記第2のポリゴンの形状内部を(16×1)のインターリーブパターンでアクセスする場合のアクセスすべきインターリーブパターンを説明するための図である。
【図19】上記第2のポリゴンの形状内部を(16×1)のインターリーブパターン内で1アドレス単位でアクセスする場合のマスク処理について説明するための図である。
【図20】上記フレームバッファのメモリバンク上に描画するポリゴンの形状の縦横比を算出する処理を説明するための図である。
【図21】16アドレスを有する5種類のインターリーブパターンを示したパターン図である。
【符号の説明】
1 メインバス、11 メインCPU、12 メインメモリ、13 メインDMAC、 15 GPU、17 GTE、18 フレームバッファ、31 パケットエンジン、32 プリプロセッサ、33 描画エンジン、33A1,33A2・・・33AN ポリゴンエンジン、33B1,33B2・・・33BN テクスチャエンジン、33C 第1のバススイッチャ、33D1,33D2・・・33DM、33E 第2のバススイッチャ、33F テクスチャキャッシュ[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a drawing device and a drawing method used for a graphic computer as a video device using a computer, a special effect device, a video game machine, and the like.
[0002]
[Prior art]
2. Description of the Related Art Conventionally, in a home TV game machine, a personal computer, a graphic computer, or the like, data of an image to be output and displayed on a television receiver, a monitor receiver, a cathode ray tube (CRT) display device, or the like, that is, a display output image. In an image generation device that generates data, high-speed processing is enabled by providing a dedicated rendering device between a central processing unit (CPU) and a frame buffer.
[0003]
That is, in the image generation device, when generating an image, the CPU does not directly access the frame buffer, but performs geometry processing such as coordinate conversion, clipping, and light source calculation, and performs processing such as triangle and quadrangle. A drawing command for drawing a three-dimensional image is created by defining a three-dimensional model as a combination of basic unit figures (polygons), and the drawing command is sent to the drawing device. For example, when displaying a three-dimensional object, the object is decomposed into a plurality of polygons, and a drawing command corresponding to each polygon is transferred from the CPU to the drawing device. Then, the drawing device interprets the drawing command sent from the CPU and, based on the color data of the vertices and the Z value indicating the depth, considers the colors and Z values of all the pixels constituting the polygon, Is performed in the frame buffer, and a graphic is drawn in the frame buffer. The Z value is information indicating a distance from the viewpoint in the depth direction.
[0004]
For example, when displaying a three-dimensional object in the image generation device, the object is decomposed into a plurality of polygons, and a drawing command corresponding to each polygon is transferred from the CPU to the drawing device. At this time, a method called texture mapping or mip mapping is employed to represent the object more practically. Furthermore, a method of changing a display color by converting color data of an image via a color lookup table (CLUT: Clock Lock Up Table) storing color conversion data is widely known.
[0005]
Here, the texture mapping is a technique for attaching a two-dimensional image (picture) separately prepared as a texture source image, that is, a texture pattern, to the surface of a polygon constituting an object. Mip mapping is one of texture mapping techniques that interpolates pixel data so that a picture to be pasted with a polygon does not become unnatural when approaching or moving away from a three-dimensional model.
[0006]
[Problems to be solved by the invention]
The drawing speed of an image depends on the processing speed of texture mapping, mip mapping, and the like for each polygon in the drawing engine. The drawing speed of an image is affected by the writing speed from the drawing engine to the frame buffer. If the access speed of the frame buffer is low, the drawing speed is reduced. Therefore, the use of an expensive high-speed memory for a large-capacity frame buffer in order to increase the drawing speed leads to an increase in the price of the system, and the use of an inexpensive memory such as a dynamic random access memory (DRAM: Dynamic Random Access Memory). There is a disadvantage that the drawing speed of the system is reduced.
[0007]
Therefore, the present invention has been made in view of the above-described circumstances, and has the following objects.
[0008]
That is, an object of the present invention is to provide a drawing apparatus and a drawing method that can maintain a high drawing speed even when an inexpensive memory such as a DRAM is used as a frame buffer.
[0009]
Another object of the present invention is to efficiently generate pixel data of all pixels of a unit graphic by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit graphics. It is an object of the present invention to provide a drawing apparatus and a drawing method that can draw on an image memory.
[0010]
Another object of the present invention is to provide a drawing unit for drawing an image model defined by a combination of unit figures, and a texture mapping process based on texture data in a texture cache by a drawing unit. Another object of the present invention is to provide a drawing apparatus and a drawing method that can be performed efficiently.
[0011]
Another object of the present invention is to equalize the size of the polygon to be processed by the drawing means, that is, the number of pixels, based on a drawing command for drawing an image model defined by a combination of unit figures. An object of the present invention is to provide a drawing apparatus and a drawing method.
[0012]
Another object of the present invention is to provide a drawing method for drawing an image model defined by a combination of unit figures, a drawing unit, and a state in which texture distortion is small based on texture data in a texture cache. It is an object of the present invention to provide a drawing apparatus and a drawing method that can perform texture mapping processing by using a method.
[0013]
Another object of the present invention is to efficiently perform mip mapping processing based on mip map texture data by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures. It is an object of the present invention to provide a drawing apparatus and a drawing method that can perform the above-mentioned steps.
[0014]
Further, another object of the present invention is to form a pre-processing unit and a drawing unit by a pipeline, and to execute the drawing unit based on a drawing instruction for drawing an image model defined by a combination of unit figures. Another object of the present invention is to provide a drawing apparatus and a drawing method capable of efficiently performing high-speed drawing processing.
[0015]
Further, another object of the present invention is to divide a polygon based on a drawing command into a plurality of new polygons having a shape suitable for pixel interleaving processing, and efficiently access a frame buffer from a drawing unit to perform high-speed drawing. An object of the present invention is to provide a drawing apparatus and a drawing method capable of performing processing.
[0016]
[Means for Solving the Problems]
The present invention is directed to a drawing apparatus that generates pixel data of all pixels of a unit graphic by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit graphics, and draws the pixel data in an image memory. And a drawing method, wherein the unit graphic is divided into a plurality of pieces by the preprocessing means.
[0017]
In the drawing apparatus and the drawing method according to the present invention, for example, the unit figureCap T ShBased on the result of the determination by the determining means for determining whether or not theCap T ShThe unit figure based on the drawing command is divided into a plurality of pieces so as to fit within the range.
[0018]
Further, in the drawing apparatus and the drawing method according to the present invention, for example, based on a determination result by a determination unit that determines whether or not the number of pixels in a unit graphic is equal to or less than a specified value, a new divided unit graphic The unit figure based on the drawing command is divided into a plurality of units in a two-dimensional space so that the number of pixels is equal to or less than the specified value.
[0019]
In the drawing apparatus and the drawing method according to the present invention, for example, a unit graphic based on the drawing command is divided into a plurality of pieces in a three-dimensional space.
[0020]
In the drawing apparatus and the drawing method according to the present invention, for example, based on a determination result by a determination unit that determines a reference range of a mipmap texture referred to by a unit graphic, a mipmap texture referred to by a new divided unit graphic is determined. The unit figure based on the drawing command is divided into a plurality of pieces in a three-dimensional space so that the reference range becomes a predetermined range.
[0021]
Further, in the drawing apparatus and the drawing method according to the present invention, for example, based on a determination result by a determination unit that determines whether or not the number of pixels in a unit graphic is equal to or less than a specified value, a new divided unit graphic The unit figure based on the drawing command is divided into a plurality of pieces in a three-dimensional space based on the result of the determination by the determining means so that the number of pixels is equal to or less than the specified value.
[0022]
Further, in the drawing apparatus and the drawing method according to the present invention, for example, the preprocessing time of the preprocessing means and the preprocessing time of the The unit figure based on the drawing command is divided into a plurality of figures so that the drawing processing time by the drawing means is balanced.
[0023]
Further, in the drawing apparatus and the drawing method according to the present invention, for example, based on the determination result by the determination means for determining the shape of the unit graphic, the drawing unit may perform the above-described drawing command so that the new divided unit graphic approaches a predetermined shape. Divide the unit figure into multiple.
[0024]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, preferred embodiments of the present invention will be described with reference to the drawings.
[0025]
The drawing apparatus according to the present invention is applied to, for example, a video game apparatus having a configuration as shown in FIG. The drawing method according to the present invention is implemented in the video game device.
[0026]
This video game device reads out and executes a game program stored in an auxiliary storage device such as an optical disk, thereby playing a game in accordance with an instruction from a user, as shown in FIG. It has a simple configuration.
[0027]
That is, the video game apparatus includes two types of buses, namely, a main bus 1 and a sub bus 2.
[0028]
The main bus 1 and the sub bus 2 are connected via a bus controller 10.
[0029]
The main bus 1 includes a main central processing unit (main CPU) 11 including a microprocessor and the like, a main storage device (main memory) 12 including a random access memory (RAM), A main dynamic memory access memory controller (main DMAC: Dynamic Memory Access Controller) 13, an MPEG decoder (MDEC: MPEG decoder) 14, and an image processing apparatus (GPU: Graphic Processing Unit) 15 are connected. The sub-bus 2 includes a sub-central processing unit (sub-CPU) 21 including a microprocessor, a sub-storage device (sub-memory) 22 including a random access memory (RAM), a sub-memory 22 Dynamic memory access memory controller (sub DMAC: Dynamic Memory Access Controller) 23, read only memory (ROM: Read Only Memory) 24 storing programs such as an operating system, sound processing unit (SPU: Sound Processing Unit) 25, communication Control unit (ATM: Asynchronous Transmission mode) 26 An auxiliary storage device 27 and input device 28 is connected.
[0030]
The bus controller 10 is a device on the main bus 1 that performs switching between the main bus 1 and the sub bus 2, and is open in an initial state.
[0031]
The main CPU 11 is a device on the main bus 1 that operates by a program on the main memory 12. The main CPU 11 reads and executes a boot program from the ROM 24 on the sub-bus 2 because the bus controller 10 is open at the time of startup, and stores the application program and necessary data from the auxiliary storage device 27 into the main memory. 12 or a device on the sub-bus 2. The main CPU 11 is equipped with a geometry transfer engine (GTE) 17 for performing processing such as coordinate conversion. The GTE 17 includes, for example, a parallel operation mechanism that executes a plurality of operations in parallel, and performs high-speed operations such as coordinate conversion, light source calculation, matrix or vector, in response to an operation request from the main CPU 11. The main CPU 11 defines a three-dimensional model as a combination of basic unit figures (polygons) such as a triangle and a quadrangle based on the calculation result by the GTE 17, and defines each polygon for drawing a three-dimensional image. Is created, and the rendering command is packetized and sent to the GPU 15 as a command packet.
[0032]
The main DMAC 13 is a device on the main bus 1 that controls DMA transfer for devices on the main bus 1 and the like. The main DMAC 13 also targets devices on the sub-bus 2 when the bus controller 10 is open.
[0033]
The GPU 15 is a device on the main bus 1 that functions as a rendering processor. The GPU 15 interprets the drawing command sent as a command packet from the main CPU 11 or the main DMAC 13 and considers the colors and Z values of all pixels constituting the polygon from the color data of the vertices and the Z value indicating the depth. Then, a rendering process of writing pixel data to the frame buffer 18, that is, the image memory, is performed.
[0034]
The MDEC 14 is an I / O connection device that can operate in parallel with the CPU, and is a device on the main bus 1 that functions as an image expansion engine. The MDEC 14 decodes image data compressed and encoded by orthogonal transform such as discrete cosine transform.
[0035]
The sub CPU 21 is a device on the sub bus 2 that operates by a program on the sub memory 22.
[0036]
The sub-DMAC 23 is a device on the sub-bus 2 that controls DMA transfer for devices on the sub-bus 2. The sub DMAC 23 can acquire the bus right only when the bus controller 10 is closed.
[0037]
The SPU 25 is a device on the sub bus 2 that functions as a sound processor. The SPU 25 reads and outputs audio data from the sound memory 29 in response to a sound command sent as a command packet from the sub CPU 21 or the sub DMAC 23.
[0038]
The ATM 26 is a communication device on the sub-bus 2.
[0039]
The auxiliary storage device 27 is a data input device on the sub bus 2, and is composed of a disk drive or the like.
[0040]
Further, the input device 28 is a device for input from other devices such as a man-machine interface such as a control pad and a mouse on the sub-bus 2 and an image input and a voice input.
[0041]
In other words, in this video game apparatus, geometry processing such as coordinate conversion, clipping, and light source calculation is performed, and a three-dimensional model is defined as a combination of basic unit figures (polygons) such as a triangle and a quadrangle. A geometry processing system that creates a drawing command for drawing a polygon and sends the drawing command corresponding to each polygon to the main bus 1 as a command packet is configured by the main CPU 11 and the GTU 17 on the main bus 1 and the like. The rendering processing system for generating pixel data of each polygon based on a rendering command from the system and performing a rendering process of writing the pixel data in the frame buffer 18 and rendering a graphic in the frame buffer 18 is configured by the GPU 15.
[0042]
Hereinafter, the above-described GPU 15 will be specifically described.
[0043]
As shown in FIG. 2, the GPU 15 includes a packet engine 31 connected to the main bus 1, and receives the packet engine 31 from the main CPU 11 or the main DMAC 13 via the main bus 1. In accordance with a drawing command sent as a command packet to 31, a rendering process of writing pixel data of each polygon to the frame buffer 18 by the preprocessor 32 and the drawing engine 33 is performed, and pixel data of an image drawn in the frame buffer 18 is written. The data is read out and supplied as a video signal to a television receiver or a monitor receiver (not shown) via a display controller (CRTC: CRT Controller) 34.
[0044]
The packet engine 31 expands a command packet sent from the main CPU 11 or the main DMAC 13 via the main bus 1 to a register (not shown) by the packet engine 31.
[0045]
The preprocessor 32 generates polygon data in accordance with a drawing command sent as a command packet to the packet engine 31 and performs predetermined preprocessing such as polygon division processing described later on the polygon data. Generates various data such as vertex coordinate information of each polygon, address information of textures and mipmap textures, and control information of pixel interleaving.
[0046]
Further, the drawing engine 33 includes N polygon engines 33A1, 33A2... 33AN connected to the preprocessor 32, and N texture engines 33B1 and 33N1 connected to each polygon engine 33A1, 33A2. 33B, a first bus switcher 33C connected to each of the texture engines 33B1, 33B2... 33BN, and M pixel engines 33D1, 33D2... Connected to the first bus switcher 33C. 33DM, a second bus switcher 33E connected to each pixel engine 33D1, 33D2,... 33DM, a texture cache 33F connected to the second bus switcher 33E, and a texture cache 33F connected to the texture cache 33F. CLUT cache 3 Equipped with a G.
[0047]
In the drawing engine 33, the N polygon engines 33A1, 33A2,... 33AN are based on the polygon data preprocessed by the preprocessor 32, and the N polygon engines 33A1, 33A2,. Generates polygons in accordance with a drawing command sequentially, and performs shading processing and the like for each polygon by parallel processing.
[0048]
Also, the N texture engines 33B1, 33B2,... 33BN are provided with a color lookup table (CLUT: Color Lock Up) from the texture cache 33F for each polygon generated by the polygon engines 33A1, 33A2,. (Table) Based on the texture data provided via the cache 33G, texture mapping processing and mipmap processing are performed by parallel processing.
[0049]
Here, the texture cache 33F is given in advance from the preprocessor 32 address information of a texture or a mipmap texture to be attached to a polygon to be processed by the N texture engines 33B1, 33B2,. Based on the information, the texture data necessary for the texture mapping process is transferred from the texture area on the frame buffer 18, and only the data of the resolution required for the mip mapping process is selected from the corresponding texture data to obtain the mipmap texture. Transferred as data. Further, CLUT data to be referred to when rendering the polygon is transferred from the CLUT area on the frame buffer 18 to the CLUT cache 33G.
[0050]
The polygon data subjected to the texture mapping process and the mipmap process by the N texture engines 33B1, 33B2,... 33BN are transmitted to the M pixel engines 33D1, 33D2,. 33DM.
[0051]
The DM engines 33D1, 33D2,... 33DM perform various image processes such as a Z-buffer process and an anti-aliasing process by parallel processing to generate M pixel data.
[0052]
Then, the M pixel data generated by the M pixel engines 33D1, 33D2,... 33DM are written to the frame buffer 18 via the second bus switcher 33E.
[0053]
Here, the second bus switcher 33E is supplied with pixel interleave control information from the preprocessor 32, and outputs the M pixel data of the M pixel engines 33D1, 33D2,... 33DM. By selecting L of the pixel data based on the control information, a pixel to be written with M pixel data by using M storage locations corresponding to the shape of the polygon to be drawn on the frame buffer 18 as an access unit. It has a function of performing interleave processing.
[0054]
The rendering engine 33 generates all pixel data of each polygon based on the polygon data pre-processed by the preprocessor 32 and writes the pixel data to the frame buffer 18, thereby forming a polygon combination by the rendering command. The defined image is drawn on the frame buffer 18. Then, the pixel data of the image drawn in the frame buffer 18 is read and supplied as a video signal to a television receiver or a monitor receiver (not shown) via the CRTC 34.
[0055]
In the GPU 15 having such a configuration, the preprocessor 32, for example, vertex coordinates [(X0, Y0), (X1, Y1), (X2, Y2)] and texture coordinates [(U0, V0), (U1) , V1), (U2, V2)], and generates address information for prefetching a texture to be attached to a polygon to be processed by the N texture engines 33B1, 33B2,. [(X1-X0) / (Y1-Y0), (X2-X0) / (Y2-Y0), (X1-X2) / (Y1-Y2)], and the slope of the texture address [(U1- (U0) / (Y1-Y0), (U2-U0) / (Y2-Y0), (U1-U2) / (Y1-Y2)], [(V1-V0) / (Y1-Y0), (V2- V0) / (Y2-Y ), (V1-V2) / (Y1-Y2)], such as playing the selected information mipmap from the area of ... or polygon, and supplies the information to the texture cache 33F. Also, the vertex coordinates [(X0, Y0), (X1, Y1), (X2, Y2)] of the polygon are changed to the vertex order of the left edge (X0, Y0) → (X1, Y1) → (X2, Y2) or right. Sorting is performed in the order of the vertices of the edge (X2, Y2) → (X1, Y1) → (X0, Y0), and scanning of both end points and scanning of texture addresses are performed.
[0056]
The preprocessor 32 stores the information obtained by preprocessing the polygon data in a work memory (not shown), and stores the information capable of processing one polygon when the drawing engine 33 can process the next polygon. The data is transferred from the memory to the N polygon engines 33A1, 33A2,... 33AN. As a result, the drawing engine 33 starts a new polygon drawing process.
[0057]
That is, in the GPU 15, as shown in FIG. 3, the basic configuration is such that the preprocessor 32 and the drawing engine 33 perform drawing processing by a pipeline, and an image defined as a combination of polygons by a drawing command is stored in the frame buffer. 18 is drawn.
[0058]
The drawing processing by the pipeline processing will be described again.
[0059]
The preprocessor 32 performs predetermined preprocessing on the polygon data as described above, and performs various kinds of processing such as vertex coordinate information of each polygon required by the drawing engine 33, address information of textures and mipmap textures, and control information of pixel interleaving. The data is supplied to the drawing engine 33.
[0060]
The drawing engine 33 receives data from the preprocessor 32, reads necessary texture data from the texture cache 33D, generates pixel data, and writes the pixel data to the frame buffer 18. The texture cache 33D reads from the frame buffer 18 the texture data of the texture area corresponding to the required texture address calculated by the preprocessing in the preprocessor 32. The reading of the texture data is performed so as to be completed before the drawing engine 33 actually needs it. Further, by reading only the texture data corresponding to the resolution required in the mip-mapping process from the texture area, the number of accesses to the texture area can be reduced.
[0061]
As an example of the data structure in the texture cache 33F, as shown in FIG. 4, a tag section TAG including a texture address, a storage section DATA in which necessary texture data is stored, and a texture data Has a flag L indicating that is not used. Then, the texture cache 33 reads the texture data from the texture area of the frame buffer 18 to use the entry with the flag L reset, and sets the flag L. The drawing engine 33 reads out the corresponding texture data from the entry in which the flag L is set, performs a drawing process, and resets the flag l of the entry when drawing is completed and the texture data is no longer needed. .
[0062]
In the drawing apparatus that performs the texture mapping process, the preprocessor 32 and the drawing engine 33 are configured by a pipeline, and texture data required by the drawing engine 33 is stored in the texture memory, that is, the texture area on the frame buffer 18 by the preprocessor. By transferring the data to the cache memory 33F at the stage of the pre-processing by 32, the drawing processing can be performed without stopping the drawing engine 33. Also, by reading only the texture data corresponding to the resolution required in the mip-mapping process from the texture area, the number of accesses and the access time of the texture area can be reduced, and the overall drawing speed can be increased. it can.
[0063]
The polygon dividing process in the preprocessor 32 is performed according to, for example, a flowchart shown in FIG.
[0064]
That is, the polygon division processing is started by initially setting a polygon count C indicating the number of polygons to one.
[0065]
Then, in a first processing step S1, a determination processing is performed as to whether or not it is necessary to divide the polygon. In the determination processing in this processing step S1, for example, it is determined whether or not the polygon to be processed in the drawing engine 33 fits in the texture cache 33F. In this determination processing, for example, the texture coordinates [(U0, V0), (U1, V1), (U2, V2)] of the vertices of the polygon are calculated, and it is determined whether or not all are within one texture page. do it.
[0066]
If the result of the determination in the above processing step S1 is "NO", that is, if it is necessary to divide the polygon, the process proceeds to the next processing step S2, where the polygon is divided into N parts. The N dividing process of the polygon in the processing step S2 is performed by dividing all sides of the polygon at the midpoint, for example, as shown below.
[0067]
X0 '= (X0 + X1) / 2
Y0 '= (Y0 + Y1) / 2
Z0 '= (Z0 + Z1) / 2
X1 '= (X1 + X2) / 2
Y1 '= (Y1 + Y2) / 2
Z1 '= (Z1 + Z2) / 2
X2 '= (X2 + X0) / 2
Y2 '= (Y2 + Y0) / 2
Z2 '= (Z2 + Z0) / 2
U0 '= (U0 + U1) / 2
V0 '= (V0 + V1) / 2
Z0 '= (Z0 + Z1) / 2
U1 '= (U1 + U2) / 2
V1 '= (V1 + V2) / 2
Z1 '= (Z1 + Z2) / 2
U2 '= (U2 + U0) / 2
V2 '= (V2 + V0) / 2
Z2 '= (Z2 + Z0) / 2
R0 '= (R0 + R1) / 2
G0 '= (G0 + G1) / 2
B0 '= (B0 + B1) / 2
R1 '= (R1 + R2) / 2
G1 '= (G1 + G2) / 2
B1 '= (B1 + B2) / 2
R2 '= (R2 + R0) / 2
G2 '= (G2 + G0) / 2
B2 '= (B2 + B0) / 2
In other words, in the polygon dividing process in step S2, all sides of the polygon are divided at midpoints, so that, for example, a triangular polygon is divided into N = 4 new polygons.
[0068]
In the next processing step S2, the polygon count C is set to C = C + N-1, and the number of polygons is changed. Then, the process returns to the first processing step S1, where it is determined whether or not it is necessary to further divide the new divided polygon.Texture cap T ShThe above-described processing steps S1 to S3 are repeatedly performed until the values fall within the range.
[0069]
If the determination in step S1 is "YES", that is, if there is no need to divide the polygon, the process proceeds to the next step S4.
[0070]
In this processing step S4, the preprocessing information for one polygon is passed to the polygon engines 33A1, 33A2,... 33ANP to start the rendering processing, and the flow advances to the next processing step S5 without waiting for the rendering processing to end.
[0071]
In this processing step S5, the polygon count C is decremented.
[0072]
In the next processing step S6, determination processing is performed to determine whether or not the polygon count C has become "0". If the determination result in this processing step S6 is "NO", that is, if there is a polygon to be processed with C ≠ 0, the process returns to the first processing step S1 to start the processing of the next polygon. If the result of the determination in step S6 is "YES", that is, if all polygons are rendered and there are no more polygons to be divided, the process ends.
[0073]
That is, the preprocessor 32 determines whether or not the polygon to be processed in the drawing engine 33 is within the texture cache 33F (hereinafter, referred to as determination condition 1), and performs the division process based on the determination result. The new polygon isTexture cap T ShThe polygon based on the drawing command is divided into a plurality of pieces so as to fit within 33F. As a result, in the drawing engine 33, the CLUT from the texture cache 33F is performed.KiThe texture mapping process can be reliably and efficiently performed based on the texture data read via the cache 33G.
[0074]
Here, in the polygon division processing by the preprocessor 32, it is necessary to divide the polygon in the above-described first processing step S1 based on whether or not the number of pixels in the polygon is equal to or less than a specified value (hereinafter, referred to as determination condition 2). It is determined whether or not there is, and based on the determination result, polygons based on the drawing command are divided into a plurality in a two-dimensional space in processing step S2 such that the number of pixels in the new divided polygon is equal to or less than the specified value. It may be divided. This makes it possible to equalize the size of the polygon processed by the drawing engine 33, that is, the number of pixels. The number of pixels in the polygon can be determined, for example, by determining an area as a cross product value of vertices of the polygon and determining whether the value is smaller than an appropriate value.
[0075]
Further, in the polygon dividing process in the preprocessor 32, the polygon based on the drawing command may be divided into a plurality of polygons in the three-dimensional space in the above-described processing step S2.
[0076]
In this case, in the above-described processing step S1, the polygon is divided based on whether or not the difference between the minimum value and the maximum value of the Z value of the vertex of the polygon is within an appropriate range (hereinafter, referred to as a determination condition 3). It is determined whether or not it is necessary. Based on the determination result, the polygon based on the drawing command is converted into a three-dimensional space in the processing step S2 so that the number of pixels in the new divided polygon falls within the specified range. And limiting the size of one polygon, it is possible to perform the texture mapping process with less texture distortion based on the texture data read from the texture cache 33F via the CLUT cache 33G. it can.
[0077]
In this case, in the above-described processing step S1, it is necessary to divide the polygon based on whether or not it is straddling the mipmap texture referred to by the minimum and maximum Z values of the vertices of the polygon (hereinafter referred to as determination condition 4). It is determined whether or not there is a polygon, and based on the determination result, the polygon based on the drawing command is divided into a plurality of polygons in the three-dimensional space in the processing step S2 so that the new divided polygon does not straddle the mipmap texture. Efficiently perform mipmapping processing based on mipmap texture data read out from the texture cache 33F via the CLUT cache 33G by dividing and limiting the reference range of the mipmap texture referred to by one polygon. Can be.
[0078]
Further, in this case, in the above-described processing step S1, it is determined whether or not the polygon needs to be divided based on whether or not the number of pixels in the polygon is equal to or less than a specified value. The polygon based on the drawing command may be divided into a plurality of parts in the three-dimensional space by the processing step S2 so that the number of pixels in the new polygon becomes equal to or less than the specified value.
[0079]
In the above-described processing step S1, the rendering processing time for the polygon is predicted by the rendering engine 33 based on, for example, the number of pixels in the polygon, and whether the preprocessing time by the preprocessor 32 and the rendering processing time by the rendering engine 33 are balanced is determined. It is determined whether or not it is necessary to divide the polygon based on whether or not (hereinafter, referred to as determination condition 5). Based on the determination result, the preprocessing time by the preprocessor 32 and the rendering processing time by the rendering engine 33 are determined. The polygon based on the drawing command may be divided into a plurality of pieces in the processing step S2 so as to be balanced. Thus, the processing time of the preprocessor 32 and the drawing engine 33 can be maintained in balance, and the preprocessor 32, the drawing engine 33, and the pipeline can efficiently perform high-speed drawing processing.
[0080]
In the above-described processing step S1, it is determined whether or not the polygon needs to be divided based on whether or not the polygon processed by the drawing engine 33 has a shape suitable for the pixel interleave processing (hereinafter referred to as determination condition 6). A determination may be made, and based on the determination result, the polygon based on the drawing command may be divided into a plurality of new polygons having a shape suitable for the pixel interleaving process in the processing step S2. Thus, the drawing engine 33 can efficiently access the frame buffer 18 and perform high-speed drawing processing.
[0081]
Further, in the above-described processing step S1, it is determined whether or not it is necessary to divide the polygon by combining the above-described various determination conditions, and based on the determination result, the new divided polygon satisfies the various determination conditions. As described above, the polygon based on the drawing command may be divided into a plurality of polygons in the processing step S2.
[0082]
As a combination of the above-described various determination conditions, for example, when performing texture mapping in the drawing engine 33, a combination of the above-described determination condition 1 and other determination conditions 2 to 6 is employed.
[0083]
That is, in the above-described processing step S1, it is determined whether or not it is necessary to divide a polygon by combining the above-described determination conditions 1 and 2, and based on the determination result, a new polygon that has been divided is determined by the above-described determination. By dividing the polygon based on the drawing command into a plurality of pieces in the processing step S2 so as to satisfy the condition 1 and the determination condition 2, the size of the polygon to be processed in the drawing engine 33, that is, the number of pixels, is equalized. The texture mapping process can be performed reliably and efficiently based on the texture data read from the 33F via the CLUT cache 33G.
[0084]
Also, in the above-described processing step S1, it is determined whether or not it is necessary to divide the polygon by combining the above-described determination conditions 1 and 3, and based on the determination result, the new divided polygon is determined by the above-described determination. By dividing the polygon based on the drawing command into a plurality of pieces in the processing step S2 so as to satisfy the condition 1 and the determination condition 3, the distortion of the texture based on the texture data read from the texture cache 33F via the CLUT cache 33G. Texture mapping processing can be performed reliably and efficiently in a state where the number of textures is small. Furthermore, if the above determination condition 2 is combined, the texture mapping process can be performed by equalizing the size of the polygon to be processed in the drawing engine 33, that is, the number of pixels.
[0085]
Further, in the above-described processing step S1, it is determined whether or not it is necessary to divide the polygon by combining the above-mentioned determination condition 1 and the determination condition 4, and based on the determination result, the new polygon which has been divided is determined by the above-described determination. By dividing the polygon based on the rendering command into a plurality of pieces in the processing step S2 so as to satisfy the condition 1 and the determination condition 4, the mip mapping is performed based on the texture data read from the texture cache 33F via the CLUT cache 33G. Processing can be performed reliably and efficiently. Furthermore, the determination condition 2 and the determination condition 3 may be combined to equalize the size of the polygon to be processed in the drawing engine 33, that is, the number of pixels, or to reduce texture distortion.
[0086]
Further, in the above-described processing step S1, it is determined whether or not it is necessary to divide the polygon by combining the above-described determination condition 1 and the determination condition 5, and based on the determination result, the new divided polygon is determined by the above-described determination. By dividing the polygon based on the drawing command into a plurality of pieces in the processing step S2 so as to satisfy the condition 1 and the determination condition 5, the processing time of the preprocessor 32 and the drawing engine 33 is balanced, and the pipeline is efficiently and quickly processed. Can be texture mapped. Furthermore, the determination condition 2 and the determination condition 3 may be combined to equalize the size of the polygon to be processed in the drawing engine 33, that is, the number of pixels, or to reduce texture distortion. The mip mapping process may be performed by combining the above determination conditions 4.
[0087]
Further, in the above-described processing step S1, it is determined whether or not it is necessary to divide the polygon by combining the above-described determination conditions 1 and 6, and based on the determination result, the new polygon which has been divided is determined by the above-described determination. By dividing the polygon based on the rendering command into a plurality of pieces in the processing step S2 so as to satisfy the condition 1 and the determination condition 6, the texture mapping process is performed reliably and efficiently by the rendering engine 33 in both the row UTO and the frame buffer 18. High-speed drawing processing can be performed with efficient access. Furthermore, the determination condition 2 and the determination condition 3 may be combined to equalize the size of the polygon to be processed in the drawing engine 33, that is, the number of pixels, or to reduce texture distortion. The mip mapping process may be performed by combining the above-described determination conditions 4, or the pipeline may be speeded up by combining the above-described determination conditions 5.
[0088]
When the texture mapping is not performed in the drawing engine 33, a combination of the above-described determination conditions 2, 5, and 6 is employed as a combination of the above-described various determination conditions.
[0089]
That is, in the above-described processing step S1, it is determined whether or not it is necessary to divide a polygon by combining the above-described determination condition 2 and the determination condition 5, and based on the determination result, a new polygon that has been divided is determined by the above-described determination. By dividing the polygon based on the drawing command into a plurality of pieces in the processing step S2 so as to satisfy the condition 2 and the determination condition 5, the size of the polygon to be processed in the drawing engine 33, that is, the number of pixels, is equalized. The high-speed drawing process can be efficiently performed in the pipeline while maintaining the balance between the processing times of the drawing engine 32 and the drawing engine 33.
[0090]
Further, in the above-described processing step S1, it is determined whether or not it is necessary to divide the polygon by combining the above-described determination condition 2 and the determination condition 6, and based on the determination result, the new divided polygon is determined by the above-described determination. By dividing the polygon based on the drawing command into a plurality of pieces in the processing step S2 so as to satisfy the condition 2 and the determination condition 6, the size of the polygon to be processed in the drawing engine 33, that is, the number of pixels, is equalized. Can be accessed efficiently to perform high-speed drawing processing. Further, the above-described determination condition 5 may be combined to increase the speed by the pipeline.
[0091]
Further, the pixel interleaving process in the second bus switcher 33E described above is performed as follows.
[0092]
That is, as shown in FIG. 6, the second bus switcher 33E includes a control circuit 101 to which the output of the preprocessor 32 shown in FIG. 2 is supplied, a selector 102 to which the output of the control circuit 101 is supplied, A plurality of multiplexers / demultiplexers (MUX: Multiplexer / DMUX: Demultiplexer) 103a, 103b, 103c, 103d,.
[0093]
Each of the MUX / DMUXs 103a, 103b, 103c, 103d,... Is connected to the frame buffer 18 and the drawing engine 33 shown in FIG.
[0094]
Here, the frame buffer 18 includes a plurality of memory banks [1], [2], ..., [X], ..., [L], and a plurality of memory banks [1], [2], , [X],..., [L] are such that each address of a short form (hereinafter referred to as an interleave pattern) represented by 16 addresses can be simultaneously accessed. Has been done.
[0095]
Therefore, for example, the memory bank [X] of the frame buffer 18 has the address A0  ~ AFifteen16 input / output ports P for accessing0  ~ PFifteen, And four MUX / DMUXs 103a, 103b, 103c, 103d among the plurality of MUX / DMUXs 103a, 103b, 103c, 103d,.0~ PFifteenIs connected to
[0096]
Also, the four MUX / DMUXs 103a, 103b, 103c, and 103d correspond to the four pixel engines 33D of the drawing engine 33.X1, 33DX2, 33DX3, 33DX4And are connected correspondingly.
[0097]
Note that each of the memory banks other than the memory bank [X] has the same configuration as the above-described memory bank [X], and a detailed description thereof will be omitted. Further, the access processing to the other memory banks performed by the second bus switcher 33E is the same as the access processing to the memory bank [X] performed by the second bus switcher 33E described later. Only the access processing to the memory bank [X] performed by the second bus switcher 33E will be described.
[0098]
First, a series of operations of the second bus switcher 33E will be described.
[0099]
For example, a polygon to be drawn on the memory bank [X] has a triangle T as shown in FIG.ABC  In the case of (the shape of the first polygon), first, control information of pixel interleaving is supplied from the preprocessor 32 to the control circuit 101.
[0100]
The control circuit 101 controls the triangle T based on the pixel interleave control information from the preprocessor 32.ABC  The interleave pattern used when accessing the inside is switched to, for example, a (4 × 4) interleave pattern P.
[0101]
The details of a method of switching the interleave pattern in the control circuit 101 will be described later.
[0102]
Then, the control circuit 101 uses the (4 × 4) interleave pattern P, and among the plurality of interleave patterns formed on the memory bank [X], the interleave pattern to be accessed, that is, the triangle TABC  An interleave pattern that can access all inside is detected.
[0103]
Therefore, the triangle TABC  In the case where each interleave pattern on the memory bank [X] is represented by P (pattern index in the x direction, pattern index in the y direction), as shown in FIG.
Figure 0003548648
Are detected in total of 20 interleave patterns.
[0104]
Then, the control circuit 101 supplies pattern information indicating the 20 interleave patterns detected as described above to the selector 102 in interleave pattern units. When performing memory access in units of one address, the control circuit 101ABC  Is supplied to the selector 102.
[0105]
The selector 102 specifies an address corresponding to the (4 × 4) interleave pattern P to be accessed to the MUX / DMUXs 103a, 103b, 103c, 103d based on the pattern information supplied from the control circuit 101 in interleave pattern units. .
[0106]
Further, when the mask information is supplied from the control circuit 101, the selector 102 performs masking in the (4 × 4) interleave pattern P based on the mask information as shown in FIG. The resulting address to be accessed is specified in the MUX / DMUX 103a, 103b, 103c, 103d. Therefore, for example, as shown in FIG. 10, the address A in the interleave pattern indicated by P (4,1) shown in FIG.0  ~ AFifteen, The addresses to be obtained as a result of the masking are A4, A5, A6, A8, A9, A10, A13, A14, and A15 (hatched portions).
[0107]
Each of the MUX / DMUXs 103a, 103b, 103c, and 103d has an address A of the memory bank [X].0  ~ AFifteenOf these, the address specified by the selector 102 is accessed.
[0108]
Here, as described above, the pixel engine 33DX1, 33DX2, 33DX3, 33DX4Thus, the MUX / DMUXs 103a, 103b, 103c, and 103d are each supplied with pixel data.
[0109]
Thus, for example, the MUX / DMUX 103a accesses the input / output port P by accessing the address specified by the selector 102.0  ~ PFifteenThe pixel data from the pixel engine Xa is written to an area of the memory bank [X] indicated by the address via the input / output port corresponding to the address.
[0110]
The MUX / DMUX 103a accesses the input / output port P by accessing the address specified by the selector 102.0  ~ PFifteenOf the memory bank [X] is read out via the input / output port corresponding to the address. Then, the MUX / DMUX 103a performs a predetermined process on the data read from the memory bank [X].
[0111]
Note that the operation of the MUX / DMUXs 103b to 103d is the same as the operation of the above-described MUX / DMUX 103a, and a detailed description thereof will be omitted.
[0112]
Next, a method of switching the interleave pattern in the control circuit 101 will be specifically described.
[0113]
First, the shape of a polygon to be drawn on the memory bank [X] is, for example, a horizontally long triangle T as shown in FIG.DEF  (The shape of the second polygon) and the triangle TDEF  Will be described with reference to the number of accesses when (4) is accessed using the (4 × 4) interleave pattern P.
[0114]
In this case, the number of interleave patterns to be accessed is, as shown in FIG.
Figure 0003548648
17 in total.
[0115]
That is, the triangular T with the (4 × 4) interleave pattern PDEF  Is accessed, the triangle TDEF  The number of accesses for accessing all the inside is 17 times.
[0116]
In addition, when accessing in units of one address, the triangle TABC  As shown in FIG. 13, by masking in the (4 × 4) interleave pattern P, only necessary memory addresses are accessed.
[0117]
Next, as shown in FIG.DEF  To the (8 × 2) interleave pattern P1  , The number of interleave patterns to be accessed is, as shown in FIG.
Figure 0003548648
The total number is 15.
[0118]
That is, the (8 × 2) interleave pattern P1  And the triangle TDEF  Is accessed, the triangle TDEF  The number of times of access for accessing all inside is 15 times.
[0119]
In addition, when accessing in units of one address, the triangle TABC  As shown in FIG. 16, the (8 × 2) interleave pattern P1  By performing a mask in the above, only necessary memory addresses are accessed.
[0120]
Next, as shown in FIG.DEF  To the (16 × 1) interleaved pattern P2  , The number of interleave patterns to be accessed is, as shown in FIG.
Figure 0003548648
Is 18 in total.
[0121]
That is, the (16 × 1) interleave pattern P2  And the triangle TDEF  Is accessed, the triangle TDEF  The number of accesses for accessing all the inside is 18 times.
[0122]
In addition, when accessing in units of one address, the triangle TABC  19, as shown in FIG. 19, the (8 × 2) interleave pattern P2  By performing a mask in the above, only necessary memory addresses are accessed.
[0123]
As described above, the triangle TDEF  Are accessed 17 times, and the (8 × 2) interleave pattern P1And the triangle TDEF  Are accessed 15 times, and the (16 × 1) interleave pattern P2  And the triangle TDEF  Is accessed 18 times, and as a result, the (8 × 2) interleave pattern P1  And the triangle TDEF  Is the minimum number of accesses. Therefore, the triangle TDEF  Is an (8 × 2) interleave pattern P1It turns out that.
[0124]
Therefore, the control circuit 101 performs the following processing to switch the interleave pattern used when accessing the memory bank [X] to an appropriate interleave pattern according to the shape of the polygon to be accessed.
[0125]
For example, the shape of a polygon to be drawn on the memory bank [X] is a triangle T as shown in FIG.HIJ  In this case, first, as described above, the control information of the pixel interleaving is supplied from the preprocessor 32 to the control circuit 101. The control information of this pixel interleave is, for example, a triangle THIJXy coordinates H (Xh, Yh), I (Xi, Yi), J (Xj, Yj), etc. of the three vertices H, I, J.
[0126]
Next, as shown in FIG. 20, the control circuit 101 uses the pixel interleave control information from the preprocessor 32 to generate a triangle THIJ  Having the maximum value MAXx and the minimum value MINx in the X direction, the maximum value MAXy and the minimum value MINy in the Y direction,
Figure 0003548648
It is obtained by the following calculation.
[0127]
Note that the triangle THIJ  Then
MAXx = Xj
MINx = Xi
MAXy = Yh
MINy = Yi
It becomes.
[0128]
Then, the control circuit 101 determines (1 × 16), (2 × 8), (4 × 4), (8 × 2) as shown in FIG. 21 according to the aspect ratio R obtained as described above. ), (16 × 1), an appropriate interleave pattern is selected from among five interleave patterns Pa to Pe, and a triangle THIJ  Is switched to the selected interleave pattern.
[0129]
Here, the control circuit 101 has a table including an aspect ratio R, an interleave pattern, and a correspondence table as shown in Table 1. In this table, an appropriate interleave pattern according to the aspect ratio R, that is, an interleave pattern that minimizes the number of accesses is set in advance. Therefore, the control circuit 101 uses the table to select an appropriate interleave pattern based on the aspect ratio R obtained as described above.
[0130]
[Table 1]
Figure 0003548648
[0131]
As described above, in the second bus switcher 33E, an appropriate interleave pattern from the five types of interleave patterns Pa to Pe as shown in FIG. Is selected and the memory bank [X] is accessed with the selected interleave pattern. Therefore, the polygon can be drawn on the memory bank [X] with the minimum number of accesses. Therefore, the second bus switcher 33E can perform memory access efficiently.
[0132]
In addition, the GPU 15 accesses the frame buffer 18 and performs data processing by the second bus switcher 33E for improving the efficiency of memory access as described above, so that the data processing can be performed efficiently.
[0133]
【The invention's effect】
As described above, the drawing apparatus and the drawing method according to the present invention include the pre-processing unit that divides the unit figure into a plurality of units, so that the unit figure can be divided into a state suitable for processing by the drawing unit. Based on a drawing command for drawing an image model defined by a combination of unit figures, the drawing means can efficiently generate pixel data of all pixels of the unit figure and draw the pixel data in the image memory. .
[0134]
Further, in the drawing apparatus and the drawing method according to the present invention, the unit graphic isTexture cap T ShBased on the result of the determination by the determining means for determining whether or not theTexture cap T ShSince the unit figure based on the drawing command is divided into a plurality of pieces so that it fits within theNThis enables reliable and efficient processing.
[0135]
Further, in the drawing apparatus and the drawing method according to the present invention, a new unit divided by the preprocessing unit based on a determination result by the determination unit that determines whether the number of pixels in the unit graphic is equal to or less than a specified value. Since the unit figure based on the drawing command is divided into a plurality of parts in a two-dimensional space so that the number of pixels in the figure is equal to or less than the specified value, it is possible to equalize the size of the polygon to be processed by the drawing means, that is, the number of pixels. it can.
[0136]
Further, in the drawing apparatus and the drawing method according to the present invention, a new unit divided by the preprocessing unit based on a determination result by the determination unit that determines whether the number of pixels in the unit graphic is equal to or less than a specified value. Since the unit figure based on the drawing command is divided into a plurality of pieces in a three-dimensional space so that the number of pixels in the figure is equal to or less than the specified value, for example, the texture is reduced based on the texture data in the texture cache with little distortion of the texture. A mapping process can be performed.
[0137]
In the drawing apparatus and the drawing method according to the present invention, a new divided unit figure is referred to by the preprocessing unit based on the determination result of the determination unit that determines the reference range of the mipmap texture referred to by the unit figure. Since the unit figure based on the drawing command is divided into a plurality of units in the three-dimensional space so that the reference range of the mipmap texture is a predetermined range, the mipmapping process can be efficiently performed based on the mipmap texture data.
[0138]
Further, in the drawing apparatus and the drawing method according to the present invention, the preprocessing time of the preprocessing unit and the drawing by the drawing unit are determined based on the determination result of the determination unit that predicts the drawing processing time of the unit figure by the drawing unit. Since the unit figure based on the drawing command is divided into a plurality of pieces so that the processing time is balanced, the balance between the respective processing times of the pre-processing means and the drawing means can be maintained. And high-speed drawing processing can be performed efficiently.
[0139]
Further, in the drawing apparatus and the drawing method according to the present invention, based on the determination result of the determination unit that determines the shape of the unit graphic, the preprocessing unit sends the drawing command to the new unit graphic so as to approach the predetermined shape. Since the unit figure based on the drawing command is divided into a plurality of pieces, the polygon based on the drawing command can be divided into a plurality of new polygons having a shape suitable for the pixel interleaving process. Thus, the drawing unit can efficiently access the frame buffer and perform high-speed drawing processing.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a video game device to which the present invention has been applied.
FIG. 2 is a block diagram showing a specific configuration of a GPU in the video game device.
FIG. 3 is a block diagram showing a basic configuration of the GPU.
FIG. 4 is a diagram showing an example of a data structure in a texture cache in the GPU.
FIG. 5 is a flowchart showing polygon division processing by a preprocessor in the GPU.
FIG. 6 is a block diagram showing a configuration of a second bus switcher in the video game device.
FIG. 7 is a diagram for explaining a case of accessing the inside of the shape of a first polygon to be drawn on a memory bank of a frame buffer in the video game device.
FIG. 8 is a diagram for explaining an interleave pattern to be accessed when accessing the inside of the shape of the first polygon.
FIG. 9 is a diagram for explaining a mask process when accessing the inside of the shape of the first polygon in units of one address.
FIG. 10 is a diagram for explaining an access address obtained by the mask processing.
FIG. 11 is a diagram for explaining a case in which the inside of the shape of a second polygon to be drawn on a memory bank of the frame buffer is accessed by a (4 × 4) interleave pattern.
FIG. 12 is a diagram for explaining an interleave pattern to be accessed when the inside of the shape of the second polygon is accessed by a (4 × 4) interleave pattern.
FIG. 13 is a diagram for describing a mask process when the inside of the shape of the second polygon is accessed in units of one address in a (4 × 4) interleave pattern.
FIG. 14 is a diagram for describing a case in which the inside of the shape of the second polygon is accessed using an (8 × 2) interleave pattern.
FIG. 15 is a diagram for explaining an interleave pattern to be accessed when the inside of the shape of the second polygon is accessed by an (8 × 2) interleave pattern.
FIG. 16 is a diagram for explaining a mask process when the inside of the shape of the second polygon is accessed in units of one address in an (8 × 2) interleave pattern.
FIG. 17 is a diagram for describing a case in which the inside of the shape of the second polygon is accessed using a (16 × 1) interleave pattern.
FIG. 18 is a diagram for explaining an interleave pattern to be accessed when the inside of the shape of the second polygon is accessed by a (16 × 1) interleave pattern.
FIG. 19 is a diagram for describing mask processing when the inside of the shape of the second polygon is accessed in units of one address in a (16 × 1) interleave pattern.
FIG. 20 is a diagram illustrating a process of calculating an aspect ratio of a polygon shape to be drawn on a memory bank of the frame buffer.
FIG. 21 is a pattern diagram showing five types of interleave patterns having 16 addresses.
[Explanation of symbols]
1 main bus, 11 main CPU, 12 main memory, 13 main DMAC, 15 GPU, 17 GTE, 18 frame buffer, 31 packet engine, 32 preprocessor, 33 drawing engine, 33A1, 33A2 ... 33AN polygon engine, 33B1, 33B2 ... 33BN texture engine, 33C first bus switcher, 33D1, 33D2 ... 33DM, 33E second bus switcher, 33F texture cache

Claims (17)

単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置であって、
単位図形を複数に分割する前処理手段を備え、
上記前処理手段は、
単位図形が上記描画手段におけるテクスチャキャッシュ内に収まるか否かを判定する判定手段を備え、
分割した新たな単位図形が上記テクスチャキャッシュ内に収まるように上記描画命令に基づく単位図形を上記判定手段による判定結果に基づいて複数に分割すること
を特徴とする描画装置。
A drawing apparatus for generating pixel data of all pixels of the unit figure by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures, and drawing the pixel data in an image memory,
Pre-processing means for dividing the unit figure into a plurality
The pre-processing means,
Determining means for determining whether the unit graphic fits in the texture cache in the drawing means,
A drawing apparatus, wherein a unit figure based on the drawing command is divided into a plurality of pieces based on a result of the determination by the determining means so that the new divided unit figure fits in the texture cache.
上記前処理手段は、
単位図形内の画素数が規定値以下であるか否かを判定する判定手段を備え、分割した新たな単位図形内の画素数が上記規定値以下となるように、上記描画命令に基づく単位図形を上記判定手段による判定結果に基づいて2次元空間で複数に分割すること
を特徴とする請求項1記載の描画装置。
The pre-processing means,
A determination unit for determining whether the number of pixels in the unit graphic is equal to or less than a specified value; 2. The drawing apparatus according to claim 1, wherein the image is divided into a plurality of pieces in a two-dimensional space based on a result of the determination by the determination means.
上記前処理手段は、
上記描画命令に基づく単位図形を3次元空間で複数に分割すること
を特徴とする請求項1記載の描画装置。
The pre-processing means,
2. The drawing apparatus according to claim 1, wherein the unit figure based on the drawing command is divided into a plurality of pieces in a three-dimensional space.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置であって、
上記描画命令に基づく単位図形を3次元空間で複数に分割する前処理手段を備え、
上記前処理手段は、
単位図形が参照するミップマップテクスチャの参照範囲を判定する判定手段を備え、
分割した新たな単位図形が参照するミップマップテクスチャの参照範囲が所定範囲となるように上記描画命令に基づく単位図形を上記判定手段による判定結果に基づいて3次元空間で複数に分割すること
を特徴とする描画装置。
A drawing apparatus for generating pixel data of all pixels of the unit figure by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures, and drawing the pixel data in an image memory,
Preprocessing means for dividing a unit figure based on the drawing command into a plurality of pieces in a three-dimensional space,
The pre-processing means,
Determining means for determining a reference range of the mipmap texture referred to by the unit graphic,
The unit figure based on the drawing command is divided into a plurality of pieces in a three-dimensional space based on the determination result by the determination means so that the reference range of the mipmap texture referred to by the new divided unit figure becomes a predetermined range. Drawing apparatus.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置であって、
上記描画命令に基づく単位図形を3次元空間で複数に分割する前処理手段を備え、
上記前処理手段は、
単位図形内の画素数が規定値以下であるか否かを判定する判定手段と、
単位図形の頂点の色データおよび奥行きを示すZ値の最小値と最大値との差が所定の範囲内に収まっているか否かにより、上記単位図形の分割を行うか否かを判定する手段と、を備え、
上記分割を行なう判定をした場合、分割した新たな単位図形内の画素数が上記規定値以下となるように、上記描画命令に基づく単位図形を上記判定手段による判定結果に基づいて3次元空間で複数に分割すること
を特徴とする描画装置。
A drawing apparatus for generating pixel data of all pixels of the unit figure by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures, and drawing the pixel data in an image memory,
Preprocessing means for dividing a unit figure based on the drawing command into a plurality of pieces in a three-dimensional space,
The pre-processing means,
Determining means for determining whether the number of pixels in the unit graphic is equal to or less than a specified value,
Means for determining whether or not to divide the unit graphic, based on whether or not the difference between the minimum value and the maximum value of the Z value indicating the color data and the depth of the vertex of the unit graphic is within a predetermined range. ,
When it is determined that the division is to be performed, the unit graphic based on the drawing command is determined in the three-dimensional space based on the determination result by the determination unit so that the number of pixels in the new divided unit graphic is equal to or less than the specified value. A drawing apparatus, wherein the drawing apparatus is divided into a plurality.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置であって、
単位図形を複数に分割する前処理手段を備え、
上記前処理手段は、
単位図形に対する上記描画手段による描画処理時間を予測して判定する判定手段を備え、
上記前処理手段による前処理時間と上記描画手段による描画処理時間がバランスするように上記描画命令に基づく単位図形を上記判定手段による判定結果に基づいて複数に分割すること
を特徴とする描画装置。
A drawing apparatus for generating pixel data of all pixels of the unit figure by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures, and drawing the pixel data in an image memory,
Pre-processing means for dividing the unit figure into a plurality
The pre-processing means,
A determination unit that predicts and determines a rendering processing time of the unit graphic by the rendering unit,
A drawing apparatus, wherein a unit figure based on the drawing command is divided into a plurality of pieces based on a determination result by the determining means so that a preprocessing time by the preprocessing means and a drawing processing time by the drawing means are balanced.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置であって、
単位図形を複数に分割する前処理手段を備え、
上記前処理手段は、
単位図形の形状が予め定めた形状であるか否かにより、該単位図形の分割を行うか否かを判定する判定手段を備え、
前記判定手段が分割を行う判定をした場合には、
前記単位図形を前記予め定めた形状の複数の新たな単位図形に分割することを特徴とする描画装置。
A drawing apparatus for generating pixel data of all pixels of the unit figure by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures, and drawing the pixel data in an image memory,
Pre-processing means for dividing the unit figure into a plurality
The pre-processing means,
A determination unit configured to determine whether to divide the unit graphic according to whether the shape of the unit graphic is a predetermined shape,
When the determination unit determines to perform division,
A drawing apparatus, wherein the unit figure is divided into a plurality of new unit figures having the predetermined shape.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置であって、
単位図形を複数に分割する前処理手段を備え、
上記前処理手段は、
単位図形内の画素数が規定値以下であるか否かを判定する判定手段を備え、分割した新たな単位図形内の画素数が上記規定値以下となるように上記描画命令に基づく単位図形を上記判定手段による判定結果に基づいて2次元空間で複数に分割し、さらに、
単位図形の形状が予め定めた形状であるか否かにより、該単位図形の分割を行うか否かを判定する判定手段を備え、
前記判定手段が分割を行う判定をした場合には、
前記単位図形を前記予め定めた形状の複数の新たな単位図形に分割すること
を特徴とする描画装置。
A drawing apparatus that generates pixel data of all pixels of the unit figure by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures, and draws the pixel data in an image memory,
Pre-processing means for dividing the unit figure into a plurality
The pre-processing means,
A determination unit for determining whether the number of pixels in the unit figure is equal to or less than a specified value; and Based on the result of the determination by the determination means, the image is divided into a plurality of parts in a two-dimensional space
Depending on whether the shape of the unit figures are predetermined shape, e Bei determination means for determining whether to perform the division of the unit figure,
When the determination unit determines to perform division,
Portrayal unit shall be the dividing means divides the unit figure into a plurality of new unit figures of the predetermined shape.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画方法であって、
単位図形が描画手段におけるテクスチャキャッシュ内に収まるか否かを判定し、
その判定結果に基づいて、新たな単位図形が上記テクスチャキャッシュ内に収まるように上記描画命令に基づく単位図形を複数に分割してから、前記描画する処理を行うこと
を特徴とする描画方法。
A drawing method for generating pixel data of all pixels of the unit figure based on a drawing command for drawing an image model defined by a combination of unit figures and drawing the pixel data in an image memory,
Determine whether the unit figure fits in the texture cache in the drawing means,
A drawing method, based on the determination result, dividing the unit figure based on the drawing command into a plurality of pieces so that a new unit figure fits in the texture cache, and performing the drawing.
単位図形内の画素数が規定値以下であるか否かを判定し、
その判定結果に基づいて、分割した新たな単位図形内の画素数が上記規定値以下となるように、上記描画命令に基づく単位図形を2次元空間で複数に分割すること
を特徴とする請求項記載の描画方法。
Determine whether the number of pixels in the unit figure is less than or equal to the specified value,
The unit graphic based on the drawing command is divided into a plurality of units in a two-dimensional space based on the determination result such that the number of pixels in the new divided unit graphic is equal to or smaller than the specified value. 9. The drawing method according to item 9 .
前記描画命令に基づく単位図形を3次元空間で複数に分割すること
を特徴とする請求項記載の描画方法。
10. The drawing method according to claim 9, wherein a unit graphic based on the drawing command is divided into a plurality of pieces in a three-dimensional space.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画方法であって、
単位図形が参照するミップマップテクスチャの参照範囲を判定し、
その判定結果に基づいて、分割した新たな単位図形が参照するミップマップテクスチャの参照範囲が所定範囲となるように上記描画命令に基づく単位図形を3次元空間で複数に分割してから、前記描画する処理を行うこと
を特徴とする描画方法。
A drawing method for generating pixel data of all pixels of the unit figure based on a drawing command for drawing an image model defined by a combination of unit figures and drawing the pixel data in an image memory,
Determine the reference range of the mipmap texture referenced by the unit figure,
Based on the determination result, the unit figure based on the drawing command is divided into a plurality of pieces in a three-dimensional space so that the reference range of the mipmap texture referred to by the new divided unit figure is within a predetermined range. A drawing method, characterized by performing a process of
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画方法であって、
単位図形の頂点の色データおよび奥行きを示すZ値の最小値と最大値との差が所定の範囲内に収まっているか否かにより、上記単位図形の分割を行うか否かを判定し、
上記分割を行なう判定をした場合、さらに、単位図形内の画素数が規定値以下であるか否かを判定し、その判定結果に基づいて、分割した新たな単位図形内の画素数が上記規定値以下となるように上記描画命令に基づく単位図形を3次元空間で複数に分割してから、前記描画する処理を行うこと
を特徴とする描画方法。
A drawing method for generating pixel data of all pixels of the unit figure based on a drawing command for drawing an image model defined by a combination of unit figures and drawing the pixel data in an image memory,
It is determined whether or not to divide the unit graphic according to whether the difference between the minimum value and the maximum value of the Z value indicating the color data and the depth of the vertex of the unit graphic is within a predetermined range,
When the above-mentioned division is determined, it is further determined whether or not the number of pixels in the unit graphic is equal to or less than a specified value. A drawing method, wherein a unit graphic based on the drawing command is divided into a plurality of pieces in a three-dimensional space so as to be equal to or less than a value, and then the drawing process is performed.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画方法であって、
単位図形に対する描画処理時間を判定し、
その判定結果に基づいて、前処理時間と描画処理時間がバランスするように上記描画命令に基づく単位図形を複数に分割してから、前記描画する処理を行うこと
を特徴とする描画方法。
A drawing method for generating pixel data of all pixels of the unit figure based on a drawing command for drawing an image model defined by a combination of unit figures and drawing the pixel data in an image memory,
Judge the drawing processing time for the unit figure,
A drawing method, comprising: dividing a unit figure based on the drawing command into a plurality of pieces so that the pre-processing time and the drawing processing time are balanced based on the determination result, and then performing the drawing processing.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画方法であって、
単位図形の形状が予め定めた形状であるか否かにより、該単位図形の分割を行うか否かの判定処理を実行し、
前記判定処理が前記単位図形の分割を行う判定をした場合には、
前記単位図形を前記予め定めた形状の複数の新たな単位図形に分割してから、前記描画する処理を行うこと
を特徴とする描画方法。
A drawing method for generating pixel data of all pixels of the unit figure based on a drawing command for drawing an image model defined by a combination of unit figures and drawing the pixel data in an image memory,
Based on whether or not the shape of the unit graphic is a predetermined shape, a determination process of whether to divide the unit graphic is performed,
When the determination process determines to divide the unit graphic,
A drawing method, characterized in that the drawing process is performed after the unit graphic is divided into a plurality of new unit graphics having the predetermined shape.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、描画手段により、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画装置であって、
単位図形の頂点の色データおよび奥行きを示すZ値の最小値と最大値との差が所定の範囲内に収まっているか否かにより、上記単位図形の分割を行うか否かを判定し、
上記分割を行なう判定をした場合、上記描画命令に基づく単位図形を3次元空間で複数に分割すること
を特徴とする描画装置。
A drawing apparatus for generating pixel data of all pixels of the unit figure by a drawing unit based on a drawing command for drawing an image model defined by a combination of unit figures, and drawing the pixel data in an image memory,
It is determined whether or not to divide the unit graphic according to whether the difference between the minimum value and the maximum value of the Z value indicating the color data and the depth of the vertex of the unit graphic is within a predetermined range,
A drawing apparatus characterized in that when it is determined to perform the division, the unit graphic based on the drawing command is divided into a plurality of pieces in a three-dimensional space.
単位図形の組合せにより定義された画像モデルを描画するための描画命令に基づいて、単位図形の全ての画素の画素データを生成して、画像メモリに描画する描画方法であって、
単位図形の頂点の色データおよび奥行きを示すZ値の最小値と最大値との差が所定の範囲内に収まっているか否かにより、上記単位図形の分割を行うか否かを判定し、
上記分割を行なう判定をした場合、上記描画命令に基づく単位図形を3次元空間で複数に分割してから、前記描画する処理を行うこと
を特徴とする描画方法。
A drawing method for generating pixel data of all pixels of the unit figure based on a drawing command for drawing an image model defined by a combination of unit figures and drawing the pixel data in an image memory,
It is determined whether or not to divide the unit graphic according to whether the difference between the minimum value and the maximum value of the Z value indicating the color data and the depth of the vertex of the unit graphic is within a predetermined range,
A drawing method, wherein, when it is determined that the division is performed, the unit graphic based on the drawing command is divided into a plurality of pieces in a three-dimensional space, and then the drawing process is performed.
JP2033496A 1996-02-06 1996-02-06 Drawing apparatus and drawing method Expired - Fee Related JP3548648B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2033496A JP3548648B2 (en) 1996-02-06 1996-02-06 Drawing apparatus and drawing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2033496A JP3548648B2 (en) 1996-02-06 1996-02-06 Drawing apparatus and drawing method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2004027663A Division JP3934111B2 (en) 2004-02-04 2004-02-04 Drawing apparatus and drawing method

Publications (2)

Publication Number Publication Date
JPH09212654A JPH09212654A (en) 1997-08-15
JP3548648B2 true JP3548648B2 (en) 2004-07-28

Family

ID=12024246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2033496A Expired - Fee Related JP3548648B2 (en) 1996-02-06 1996-02-06 Drawing apparatus and drawing method

Country Status (1)

Country Link
JP (1) JP3548648B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134752A (en) 1999-11-05 2001-05-18 Mitsubishi Electric Corp Graphic processor and data processing method for the same
JP3638568B2 (en) * 2001-06-08 2005-04-13 株式会社ソニー・コンピュータエンタテインメント Image processing program, recording medium storing image processing program, image processing apparatus and method
US20050237329A1 (en) * 2004-04-27 2005-10-27 Nvidia Corporation GPU rendering to system memory
US8593466B2 (en) * 2010-06-08 2013-11-26 Intel Corporation Tile rendering for image processing

Also Published As

Publication number Publication date
JPH09212654A (en) 1997-08-15

Similar Documents

Publication Publication Date Title
JP3645024B2 (en) Drawing apparatus and drawing method
US5990912A (en) Virtual address access to tiled surfaces
US9406149B2 (en) Selecting and representing multiple compression methods
US20080150951A1 (en) 3-d rendering engine with embedded memory
KR20020012561A (en) Image producing device
US7170512B2 (en) Index processor
JP4061697B2 (en) Image display method and image display apparatus for executing the same
EP1312047B1 (en) Apparatus and method for rendering antialiased image
JPH09212146A (en) Address generation device and picture display device
KR100471905B1 (en) Memory access method and data processing device
EP0676720B1 (en) Image generation apparatus
US6992673B2 (en) Memory access device, semiconductor device, memory access method, computer program and recording medium
JP3548648B2 (en) Drawing apparatus and drawing method
US7372461B2 (en) Image processing apparatus and method of same
JP3971448B2 (en) Drawing apparatus and drawing method
US11379944B2 (en) Techniques for performing accelerated point sampling in a texture processing pipeline
JP3934111B2 (en) Drawing apparatus and drawing method
JP3468985B2 (en) Graphic drawing apparatus and graphic drawing method
JP2003296748A (en) Image processor and method thereof
JPH09212663A (en) Picture generator
JP2003022696A (en) Test circuit and image processor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040419

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120423

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140423

Year of fee payment: 10

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees