(57)【特許請求の範囲】
【請求項１】
共通の処理条件が適用される複数の画素からなる単位図形を組み合わせて表示モデルを表現し、必要に応じてテクスチャデータを用いて前記画素に対応する画素データを生成する画像処理装置において、
前記表示モデルは立体モデルであり、
前記単位図形が三角形であり、
表示データと、同一のパターンについて相互に異なる縮小率に対応した複数のテクスチャデータとを記憶する記憶回路と、
同時に処理を行おうとする複数の画素データに対して共通して用いられる縮小率を算出する縮小率算出回路と、
前記算出された縮小率に対応する前記テクスチャデータを前記記憶回路から読み出す読み出し回路と、
前記読み出されたテクスチャデータを用いて前記複数の画素データの処理を同時に行って表示データを生成する画像処理回路と、
前記生成された表示データを前記記憶回路に書き込む書き込み回路と、
前記同時に処理を行おうとする複数の画素データに対応する画素のうち、処理対象となっている前記単位図形の内側に位置する画素のなかから代表点となる画素を決定する代表点決定回路と
を有し、
前記縮小率算出回路は、下記式に基づいて前記縮小率を示すＬＯＤを実質的に算出するため、
ＬＯＤ＝Ｃｌａｍｐ（（（ｌｏｇ２１／ｑ）＋ｍａｘｅ）
＜＜Ｌ＋Ｋ）
ここで、
ＬＯＤは、整数部と少数部とで構成され、符号なしの縮小率を示す記号であり、
Ｃｌａｍｐは、下記のクランプ回路においてクランプすることを示す記号であり、
ｑは、前記同次項を示す記号であり、
ｍａｘｅは、前記処理対象となっている前記単位図形の頂点の同次座標（ｓ，ｔ）および同次項ｑの最大指数を示す整数部のみからなるデータであり、
＜＜Ｌは、下記のシフト回路においてデータをＬビットシフトすることを示すものであり、
Ｋは、整数部と少数部とで構成され、符号有りで、下記の加算回路において加算に使用するデータであり、
前記同次項データｑを正規化して指数ｑｅおよび仮数ｑｍを生成する正規化回路と、
前記指数ｑｅと前記仮数ｑｍとをビット結合したデータを、前記データＬが示す値だけＭＳＢ(Most Significant Bit)に向けてシフトする第１のシフト回路と、
前記第１のシフト回路の出力を反転する第１の反転回路と、
前記仮数ｑｍを入力して、「ｌｏｇ２（｛１，ｑｍ｝）−ｑｍ」を示すデータμを出力するデータ出力手段と、
前記データｍａｘｅと前記データμとをビット結合したデータを、前記データＬが示す値だけＭＳＢに向けてシフトする第２のシフト回路と、
前記第２のシフト回路の出力を反転する第２の反転回路と、
前記データＫと２進数の「１０」とをビット結合したデータと、前記第１の反転回路の出力と、前記第２の反転回路の出力とを加算する加算回路と、
前記加算回路の出力を所定ビット内にクランプ処理して前記縮小率ＬＯＤを生成するクランプ回路と
を有し、
前記読み出し回路は、前記同時に処理が行われる複数の画素データの各々について、前記決定された縮小率、前記同次座標（ｓ，ｔ）および同次項ｑによって特定されるテクスチャデータを前記記憶回路から読み出す、
画像処理装置。
【請求項２】
前記記憶回路、前記縮小率算出回路、前記読み出し回路、前記画像処理回路、前記書き込み回路および前記代表点決定回路が一つの半導体チップ内に混載されている、
請求項１に記載の画像処理装置。
【請求項３】
前記同時に処理が実行される複数の画素データに対応する画素のうち、処理対象となっている前記単位図形の内側に位置する画素の処理結果のみを有効なものとして用いる
請求項２に記載の画像処理装置。
【請求項４】
前記画像処理回路は、
第１の縮小率の表示パターンを示す第１のテクスチャデータを補間して２次元上の所定位置の画素に対応する第１の画素データを算出し、第２の縮小率の表示パターンを示す第２のテクスチャデータを補間して前記画素に対応する第２の画素データを算出する第１の補間処理を行う第１の画像処理回路と、
前記第１の画素データと前記第２の画素データとを用いて第２の補間処理を行って、前記第１の縮小率と前記第２の縮小率との間の第３の縮小率の表示パターンに応じた前記画素に対応する第３の画素データを算出する第２の画像処理回路と
を有し、
前記第２の画像処理回路は、前記第２の補間処理を前記第１の補間処理に比べて短時間で行える場合に、前記第３の画素データをフィードバックし、当該フィードバックした前記第３の画素データを用いて所定の画像処理を行う
請求項１または２に記載の画像処理装置。
【請求項５】
前記第１の画像処理回路は、前記第１の補間処理を複数回繰り返して行い、
前記第２の画像処理回路は、前記第２の補間処理および前記所定の画像処理を順次複数回繰り返して行う
請求項４に記載の画像処理装置。
【請求項６】
前記第２の画像処理回路は、
前記所定の画像処理として、モジュレート処理、デカル処理、ハイライト処理、フォギング処理およびアルファブレンディング処理のうち少なくとも一の処理を行う
請求項４に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、小規模な構成で高画質な画像を提供できる画像処理装置に関する。
【０００２】
【従来の技術】
種々のＣＡＤ(Computer Aided Design) システムや、アミューズメント装置などにおいて、コンピュータグラフィックスがしばしば用いられている。特に、近年の画像処理技術の進展に伴い、３次元コンピュータグラフィックスを用いたシステムが急速に普及している。
このような３次元コンピュータグラフィックスでは、各画素（ピクセル）に対応する色を決定するときに、各画素の色の値を計算し、この計算した色の値を、当該画素に対応するディスプレイバッファ（フレームバッファ）のアドレスに書き込むレンダリング(Rendering) 処理を行う。
レンダリング処理の手法の一つに、ポリゴン（Polygon)レンダリングがある。この手法では、立体モデルを三角形の単位図形（ポリゴン）の組み合わせとして表現しておき、このポリゴンを単位として描画を行なうことで、表示画面の色を決定する。
【０００３】
ポリゴンレンダリングでは、物理座標系における三角形の各頂点についての、座標（ｘ，ｙ，ｚ）と、色データ（Ｒ，Ｇ，Ｂ）と、張り合わせのイメージパターンを示すテクスチャデータの同次座標（ｓ，ｔ）および同次項ｑの値とを三角形の内部で補間する処理が行われる。
ここで、同次項ｑは、簡単にいうと、拡大縮小率のようなもので、実際のテクスチャバッファのＵＶ座標系における座標、すなわち、テクスチャ座標データ（Ｕ，Ｖ）は、同次座標（ｓ，ｔ）を同次項ｑで除算した（ｓ／ｑ，ｔ／ｑ）＝（ｕ，ｖ）に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥを乗じた乗算結果に応じたものとなる。
【０００４】
このようなポリゴンレンダリングを用いた３次元コンピュータグラフィックシステムでは、描画を行う際に、テクスチャデータをテクスチャバッファから読み出し、この読み出したテクスチャデータを、立体モデルの表面に張り付け、リアリティの高い画像データを得るテクスチャマッピング処理を行う。
なお、立体モデルについてテクスチャマッピングを行なうと、各画素毎に、張り付けを行なうテクスチャデータが示す画像の拡大縮小率が変化する。
【０００５】
ところで、テクスチャマッピングを行なう際に、高画質を得る手法として、ＭＩＰ(Multum In Parvo) ＭＡＰ（複数解像度テクスチャ）フィルタリングがある。
このＭＩＰＭＡＰフィルタリングは、図２２に示すように、複数の異なる縮小率のそれぞれに対応した、複数のフィルタ処理済みのテクスチャデータ２００，２０１，２０２，２０３を予め用意し、各画素の縮小率２０４に対応したテクスチャデータを選択２０５することで、縮小率２０４に応じた最適なテクスチャデータ２０６を使用するものであり、イメージの縮小に伴う情報欠落に起因するエイリアシングの影響を抑制できる。
【０００６】
以下、上述したＭＩＰＭＡＰフィルタリングを採用した従来の３次元コンピュータグラフィックシステムを説明する。
図２３は、従来の３次元コンピュータグラフィックシステムの構成を説明するための図、図２４は図２３に示すテクスチャマッピング装置２１０における処理のフローチャートである。
図２３に示すように、従来の３次元コンピュータグラフィックシステムでは、それぞれ異なる半導体チップ内に組み込まれたテクスチャマッピング装置２１０、テクスチャバッファ２１１およびディスプレイバッファ２１３が、配線を介して相互に接続されている。
【０００７】
以下、テクスチャマッピング装置２１０における処理を説明する。
ステップＳ１：先ず、テクスチャマッピング装置２１０は、三角形の各頂点についての同次座標および同次項を示す（ｓ１，ｔ１，ｑ１），（ｓ２，ｔ２，ｑ２），（ｓ３，ｔ３，ｑ３）データを入力する。
ステップＳ２：次に、テクスチャマッピング装置２１０は、入力した各頂点の（ｓ１，ｔ１，ｑ１），（ｓ２，ｔ２，ｑ２），（ｓ３，ｔ３，ｑ３）データを線形補間して、三角形の内部の各画素の同次座標および同次項を示す（ｓ，ｔ，ｑ）データを求める。
【０００８】
ステップＳ３：テクスチャマッピング装置２１０は、内蔵した縮小率算出装置２１２において、三角形の内部の各画素の（ｓ，ｔ，ｑ）データから、各画素の縮小率ｌｏｄを求める。
ステップＳ４：テクスチャマッピング装置２１０は、各画素の（ｓ，ｔ，ｑ）データについて、ｓデータをｑデータで除算したｕデータと、ｔデータをｑデータで除算したｖデータとを算出し、テクスチャ座標データ（ｕ，ｖ）を求める。
次に、テクスチャマッピング装置２１０は、縮小率算出装置２１２で算出した縮小率ｌｏｄと、テクスチャ座標データ（ｕ，ｖ）とから、テクスチャバッファ２１１における物理アドレスであるテクスチャアドレス（Ｕ，Ｖ）を求める。
【０００９】
ステップＳ５：テクスチャマッピング装置２１０は、テクスチャアドレス（Ｕ，Ｖ）をテクスチャバッファ２１１に出力し、テクスチャデータ（Ｒ，Ｇ，Ｂ）を読み出す。
ステップＳ６：テクスチャマッピング装置２１０は、ステップＳ５で読み出しテクスチャデータに所定の処理を施した画素データＳ２１０をディスプレイバッファ２１３に書き込む。
これにより、テクスチャバッファ２１１に記憶されている、複数の異なる縮小率のそれぞれに対応した複数のテクスチャデータのうち、縮小率ｌｏｄに対応したテクスチャデータについてのアクセスが実現される。
【００１０】
また、高速な描画を実現するために、複数の画素について並行してテクスチャマッピング処理を行い、それらの画素データをディスプレイバッファに同時に書き込む高速テクスチャマッピング装置がある。
このような高速テクスチャマッピング装置では、図２５に示すように、三角形の頂点についての（ｓ１，ｔ１，ｑ１），（ｓ２，ｔ２，ｑ２），（ｓ３，ｔ３，ｑ３）データを、ｎ個のテクスチャマッピング装置２１０1 〜２１０n で並行して処理し、その処理結果である画素データＳ２１０1 〜Ｓ２１０n をディスプレイバッファに同時に書き込む。
すなわち、複数の画素についてのテクスチャマッピング処理が並行して（同時に）行なわれる。
【００１１】
なお、テクスチャマッピング処理は、単位図形である三角形を単位として行なわれ、テクスチャデータの縮小率などの処理条件が三角形を単位として決定され、同時に処理が行なわれる複数の画素のうち、当該三角形の内側に位置する画素についての処理結果のみが有効とされ、当該三角形の外側に位置する画素についての処理結果は無効とされる。
【００１２】
【発明が解決しようとする課題】
しかしながら、上述した従来の３次元コンピュータグラフィックシステムでは、テクスチャマッピング装置２１０と、テクスチャバッファ２１１およびディスプレイバッファ２１３との間のデータ転送速度が、システム全体の処理能力を高める上でのボトルネックになっていた。
【００１３】
また、上述した従来の３次元コンピュータグラフィックシステムでは、テクスチャマッピング装置２１０、テクスチャバッファ２１１およびディスプレイバッファ２１３が異なる半導体チップ内に組み込まれているため、システムが大規模化するという問題がある。
【００１４】
また、縮小率ｌｏｄを求める演算には、多数の乗算および除算が含まれており、膨大な演算量を要する。
従って、図２５に示すように、ｎ個のテクスチャマッピング装置２１０1 〜２１０n の各々に、縮小率算出装置２１２1 〜２１２n を内蔵すると、高速処理は実現できるが、装置が大規模化していまうという問題がある。
このような問題を解決するために、並行して処理を行なう複数のテクスチャマッピング装置のうち、一のテクスチャマッピング装置にのみ縮小率算出装置を内蔵し、当該テクスチャマッピン装置の処理対象となる画素を縮小率を求める上での代表点とし、当該縮小率算出装置で求められた縮小率を、全てのテクスチャマッピング装置で用いる方法が考えられる。
この場合には、同時に処理を行なう複数の画素のうち、代表点となる画素の位置が固定となる。
従って、同時に処理が行なわれる複数の画素のうちに、前述した単位図形である三角形の外側に位置する画素が代表点となる可能性がある。
しかしながら、当該三角形の内側と外側とでは、縮小率が大きく異なることがあり、処理対象となっている三角形の外側に位置する画素が代表点となると、当該三角形の内側に位置する画素について、最適なテクスチャデータを選択できない。その結果、画質が大きく低下するという問題がある。
【００１５】
本発明は上述した従来技術の問題点に鑑みてなされ、小規模な装置構成で、高画質を安定して提供できる画像処理装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
本発明によれば、共通の処理条件が適用される複数の画素からなる単位図形を組み合わせて表示モデルを表現し、必要に応じてテクスチャデータを用いて前記画素に対応する画素データを生成する画像処理装置において、
前記表示モデルは立体モデルであり、
前記単位図形が三角形であり、
表示データと、同一のパターンについて相互に異なる縮小率に対応した複数のテクスチャデータとを記憶する記憶回路と、
同時に処理を行おうとする複数の画素データに対して共通して用いられる縮小率を算出する縮小率算出回路と、
前記算出された縮小率に対応する前記テクスチャデータを前記記憶回路から読み出す読み出し回路と、
前記読み出されたテクスチャデータを用いて前記複数の画素データの処理を同時に行って表示データを生成する画像処理回路と、
前記生成された表示データを前記記憶回路に書き込む書き込み回路と、
前記同時に処理を行おうとする複数の画素データに対応する画素のうち、処理対象となっている前記単位図形の内側に位置する画素のなかから代表点となる画素を決定する代表点決定回路と
を有し、
前記縮小率算出回路は、下記式に基づいて前記縮小率を示すＬＯＤを実質的に算出するため、
ＬＯＤ＝Ｃｌａｍｐ（（（ｌｏｇ２１／ｑ）＋ｍａｘｅ）
＜＜Ｌ＋Ｋ）
ここで、
ＬＯＤは、整数部と少数部とで構成され、符号なしの縮小率を示す記号であり、
Ｃｌａｍｐは、下記のクランプ回路においてクランプすることを示す記号であり、
ｑは、前記同次項を示す記号であり、
ｍａｘｅは、前記処理対象となっている前記単位図形の頂点の同次座標（ｓ，ｔ）および同次項ｑの最大指数を示す整数部のみからなるデータであり、
＜＜Ｌは、下記のシフト回路においてデータをＬビットシフトすることを示すものであり、
Ｋは、整数部と少数部とで構成され、符号有りで、下記の加算回路において加算に使用するデータであり、
前記同次項データｑを正規化して指数ｑｅおよび仮数ｑｍを生成する正規化回路と、
前記指数ｑｅと前記仮数ｑｍとをビット結合したデータを、前記データＬが示す値だけＭＳＢ(Most Significant Bit)に向けてシフトする第１のシフト回路と、
前記第１のシフト回路の出力を反転する第１の反転回路と、
前記仮数ｑｍを入力して、「ｌｏｇ２（｛１，ｑｍ｝）−ｑｍ」を示すデータμを出力するデータ出力手段と、
前記データｍａｘｅと前記データμとをビット結合したデータを、前記データＬが示す値だけＭＳＢに向けてシフトする第２のシフト回路と、
前記第２のシフト回路の出力を反転する第２の反転回路と、
前記データＫと２進数の「１０」とをビット結合したデータと、前記第１の反転回路の出力と、前記第２の反転回路の出力とを加算する加算回路と、
前記加算回路の出力を所定ビット内にクランプ処理して前記縮小率ＬＯＤを生成するクランプ回路と
を有し、
前記読み出し回路は、前記同時に処理が行われる複数の画素データの各々について、前記決定された縮小率、前記同次座標（ｓ，ｔ）および同次項ｑによって特定されるテクスチャデータを前記記憶回路から読み出す、
画像処理装置が提供される。
【００３８】
【発明の実施の形態】
以下、本実施形態においては、家庭用ゲーム機などに適用される、任意の３次元物体モデルに対する所望の３次元画像をＣＲＴ(Cathode Ray Tube)などのディスプレイ上に高速に表示する３次元コンピュータグラフィックシステムに、本発明の画像処理装置を適用した場合について説明する。
図１は、本実施形態の３次元コンピュータグラフィックシステム１のシステム構成図である。
３次元コンピュータグラフィックシステム１は、立体モデルを単位図形である三角形（ポリゴン）の組み合わせとして表現し、このポリゴンを描画することで表示画面の各画素の色を決定し、ディスプレイに表示するポリゴンレンダリング処理を行うシステムである。
また、３次元コンピュータグラフィックシステム１では、平面上の位置を表現する（ｘ，ｙ）座標の他に、奥行きを表すｚ座標を用いて３次元物体を表し、この（ｘ，ｙ，ｚ）の３つの座標で３次元空間の任意の一点を特定する。
【００３９】
図１に示すように、３次元コンピュータグラフィックシステム１は、メインメモリ２、Ｉ／Ｏインタフェース回路３、メインプロセッサ４およびレンダリング回路５が、メインバス６を介して接続されている。
ここで、レンダリング回路５が、本発明の画像処理装置に対応している。
以下、各構成要素の機能について説明する。
メインプロセッサ４は、例えば、ゲームの進行状況などに応じて、メインメモリ２から必要なグラフィックデータを読み出し、このグラフィックデータに対してクリッピング(Clipping)処理、ライティング(Lighting)処理およびジオメトリ(Geometry)処理などを行い、ポリゴンレンダリングデータを生成する。メインプロセッサ４は、ポリゴンレンダリングデータＳ４を、メインバス６を介してレンダリング回路５に出力する。
Ｉ／Ｏインタフェース回路３は、必要に応じて、外部からポリゴンレンダリングデータを入力し、これをメインバス６を介してレンダリング回路５に出力する。
【００４０】
ここで、ポリゴンレンダリングデータは、ポリゴンの各３頂点の（ｘ，ｙ，ｚ，Ｒ，Ｇ，Ｂ，ＣＯＥblend ，ｓ，ｔ，ｑ，ＣＯＥfog ）のデータを含んでいる。
ここで、（ｘ，ｙ，ｚ）データは、ポリゴンの頂点の３次元座標を示し、（Ｒ，Ｇ，Ｂ）データは、それそれ当該３次元座標における赤、緑、青の輝度値を示している。
データＣＯＥblend は、これから描画する画素と、ディスプレイバッファ２１に既に記憶されている画素とのＲ，Ｇ，Ｂデータのブレンド（混合）係数を示している。
（ｓ，ｔ，ｑ）データのうち、（ｓ，ｔ）は、対応するテクスチャの同次座標を示しており、ｑは同次項を示している。ここで、「ｓ／ｑ」および「ｔ／ｑ」に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥを乗じてテクスチャ座標データ（ｕ，ｖ）が得られる。テクスチャバッファ２０に記憶されたテクスチャデータへのアクセスは、テクスチャ座標データ（ｕ，ｖ）を用いて行われる。
データＣＯＥfog は、フォギング処理において用いられる混合係数を示している。
【００４１】
以下、レンダリング回路５について詳細に説明する。
図１に示すように、レンダリング回路５は、ＤＤＡ(Digital Differential Anarizer) セットアップ回路１０、トライアングルＤＤＡ回路１１、テクスチャエンジン回路１２、メモリＩ／Ｆ回路１３、ＣＲＴコントローラ回路１４、ＲＡＭＤＡＣ回路１５、ＤＲＡＭ１６、ＳＲＡＭ１７およびクロック信号生成回路１８を有し、これらが一つの半導体チップ内に混載されている。
ここで、テクスチャエンジン回路１２およびＤＲＡＭ１６によって、本発明の画像処理装置が構成される。ＤＲＡＭ１６が本発明の記憶回路に対応している。レンダリング回路５では、上述したように、各構成要素を一つの半導体チップ内に混載することで、各構成要素間でのデータ伝送の高速化による高性能化、並びに回路規模の縮小化を図れる。
【００４２】
ＤＲＡＭ１６は、テクスチャバッファ２０、ディスプレイバッファ２１、ｚバッファ２２およびテクスチャＣＬＵＴバッファ２３として機能する。
また、クロック信号生成回路１８からのクロック信号Ｓ１８は、レンダリング回路５内の各構成要素を駆動する信号として用いられる。
【００４３】
ＤＲＡＭ１６
ＤＲＡＭ１６は、テクスチャデータを記憶するテクスチャバッファ２０、ＣＲＴに出力してディスプレイに表示する表示データを記憶するディスプレイバッファ２１、ｚデータを記憶するｚバッファ２２およびカラールックアップデータを記憶するテクスチャＣＬＵＴバッファ２３として機能する。
【００４４】
ＤＤＡセットアップ回路１０
ＤＤＡセットアップ回路１０は、後段のトライアングルＤＤＡ回路１１において物理座標系上の三角形の各頂点の値を線形補間して、三角形の内部の各画素の色と深さ情報を求めるに先立ち、ポリゴンレンダリングデータＳ４が示す（ｚ，Ｒ，Ｇ，Ｂ，ＣＯＥblend ，ｓ，ｔ，ｑ，ＣＯＥfog ）データについて、三角形の辺と水平方向の差分などを求めるセットアップ演算を行う。
このセットアップ演算は、具体的には、開始点の値と終点の値と、開始点と終点との距離を用いて、単位長さ移動した場合における、求めようとしている値の変分を算出する。
【００４５】
すなわち、ＤＤＡセットアップ回路１０は、各画素について、（ｓ，ｔ，ｑ）データのｘ方向の変分であるｄｓｄｘ，ｄｔｄｘ，ｄｑｄｘと、ｙ方向の変分であるｄｓｄｙ，ｄｔｄｙ，ｄｑｄｙとを生成する。
ＤＤＡセットアップ回路１０は、算出した変分データＳ１０をトライアングルＤＤＡ回路１１に出力する。
【００４６】
トライアングルＤＤＡ回路１１
トライアングルＤＤＡ回路１１は、ＤＤＡセットアップ回路１０から入力した変分データＳ１０を用いて、三角形内部の各画素における線形補間された（ｚ，Ｒ，Ｇ，Ｂ，ＣＯＥblend ，ｓ，ｔ，ｑ，ＣＯＥfog ）データを算出する。
また、トライアングルＤＤＡ回路１１は、並行して処理を行う８画素について、処理対象となる三角形の内部に位置するか否かを示すそれぞれ１ビットの有効ビットデータＩ1 〜Ｉ8 を生成する。
有効ビットデータＩ1 〜Ｉ8 は、例えば、三角形の内部に位置する画素について「１」とし、三角形の外部に位置する画素について「０」とする。
具体的には、図２に示すように、ｘ，ｙ座標系に位置する三角形２５０について有効ビットデータＩ1 〜Ｉ8 が決定される。
なお、図２において、実線は、同時に処理が行なわれる８（＝２×４）画素が属する矩形領域を示している。
トライアングルＤＤＡ回路１１は、各画素の（ｘ，ｙ）データと、当該（ｘ，ｙ）座標における（ｚ，Ｒ，Ｇ，Ｂ，ＣＯＥblend ，ｓ，ｔ，ｑ，ＣＯＥfog ）データと、有効ビットデータＩ1 〜Ｉ8 と、処理対象となる三角形の頂点のｓ，ｔ，ｑデータの最大指数を示すｍａｘｅデータＳ１１ｃとを、ＤＤＡデータＳ１１としてテクスチャエンジン回路１２に出力する。
ここで、後述する図４に示す（Ｒ，Ｇ，Ｂ）データＳ１１ｂおよび（ｓ，ｔ，ｑ）データＳ１１ａ1 〜Ｓ１１ａ8 が、（ｚ，Ｒ，Ｇ，Ｂ，ＣＯＥblend ，ｓ，ｔ，ｑ，ＣＯＥfog ）データから得られる。
本実施形態では、トライアングルＤＤＡ回路１１は、並行して処理を行う矩形内に位置する８（＝２×４）画素分を単位として、ＤＤＡデータＳ１１をテクスチャエンジン回路１２に出力する。
【００４７】
テクスチャエンジン回路１２
テクスチャエンジン回路１２は、テクスチャデータの縮小率の選択処理、「ｓ／ｑ」および「ｔ／ｑ」の算出処理、テクスチャ座標データ（ｕ，ｖ）の算出処理、テクスチャアドレス（Ｕ，Ｖ）の算出処理、テクスチャバッファ２０からの（Ｒ，Ｇ，Ｂ，ｔα）データの読み出し処理、ＭＩＰＭＡＰ処理、および、テクスチャファンクション処理を順に、例えばパイプライン方式で行う。
なお、テクスチャエンジン回路１２は、所定の矩形領域内に位置する８画素についての処理を同時に並行して行う。
また、テクスチャエンジン回路１２は、処理対象の三角形内に位置する画素については同じパターンのテクスチャデータを用いる。但し、選択するテクスチャデータの縮小率は、同時に処理を行う矩形領域内に位置する８画素を単位として決定する。
【００４８】
テクスチャエンジン回路１２は、ＳＲＡＭ１７あるいはテクスチャバッファ２０から読み出した（Ｒ，Ｇ，Ｂ）データＳ１７を用いて、ＭＩＰＭＡＰ（複数解像度テクスチャ）処理やテクスチャファンクション処理を行う。
【００４９】
ＭＩＰＭＡＰ処理では、（Ｒ，Ｇ，Ｂ）データＳ１７から２次元上の所望の位置の画素の（Ｒ，Ｇ，Ｂ）データを算出する４点近傍補間処理と、縮小率ＬＯＤ(Level Of Detail) のレベルを補間するレベル補間処理とが行われる。
ＳＲＡＭ１７およびテクスチャバッファ２０には、例えば、図３に示すように、ＭＩＰＭＡＰに基づいた複数の縮小率に対応したテクスチャデータ、すなわち、縮小率１．０のレベルのテクスチャデータ１００と、縮小率ＬＯＤが２．０のレベルのテクスチャデータ１０１と、縮小率ＬＯＤが３．０のレベルのテクスチャデータ１０２とが記憶されている。
そして、何れの縮小率ＬＯＤのテクスチャデータを用いるかは、所定のアルゴリズムを用いて前記ポリゴン単位で算出された縮小率ＬＯＤを用いて決定される。
なお、テクスチャデータ１００，１０１，１０２は、既にフィルタリング処理が施され、イメージの縮小などに伴う情報欠落に起因するエイリアシングの影響が抑制された表示パターンを示すデータである。
【００５０】
先ず、テクスチャエンジン回路１２で行われるＭＩＰＭＡＰ処理の４点近傍補間処理について説明する。
４点近傍補間処理では、テクスチャデータを割り当てる画素の座標から、当該座標の４近傍の点の（Ｒ，Ｇ，Ｂ）データを求める。
例えば、縮小率ＬＯＤが１．０の場合には、ＳＲＡＭ１７あるいはテクスチャバッファ２０からテクスチャエンジン回路１２に、図３に示すテクスチャデータ１００の（Ｒ，Ｇ，Ｂ）データＳ１７が読み出される。
そして、図３に示す位置ｐｉｘｅｌ０の（Ｒ，Ｇ，Ｂ）データである４点近傍補間データＣpixel0を、当該位置ｐｉｘｅｌ０の４近傍点Ａ０，Ｂ０，Ｃ０，Ｄ０の（Ｒ，Ｇ，Ｂ）データＣA0，ＣB0，ＣC0，ＣD0を用いて、下記式（３）〜（５）に基づいて求める。
このとき、（Ｒ，Ｇ，Ｂ）データＣA0，ＣB0，ＣC0，ＣD0は、テクスチャデータ１００の（Ｒ，Ｇ，Ｂ）データＳ１７から得られる。
なお、下記式（３）〜（５）において、ａ，ｂは、それぞれ位置ｐｉｘｅｌ０のｕ座標，ｖ座標の小数部を示している。
【００５１】
【数３】
ＣAB0 ＝ＣB0×ａ＋ＣA0×（１−ａ）                  …（３）
【００５２】
【数４】
ＣCD0 ＝ＣD0×ａ＋ＣC0×（１−ａ）                  …（４）
【００５３】
【数５】
Ｃpixel0＝ＣCD0 ×ｂ＋ＣAB0 ×（１−ｂ）          …（５）
【００５４】
次に、縮小率のレベル補間処理について説明する。
ここでは、ｔｒｉ−ｌｉｎｅａｒと呼ばれるレベル補間処理を例示して説明する。
例えば、縮小率ＬＯＤが１．５である場合には、テクスチャエンジン回路１２は、上述したように、縮小率ＬＯＤが１．０のテクスチャデータ１００を用いて位置ｐｉｘｅｌ０の４点近傍補間データＣpixel0を算出すると共に、縮小率ＬＯＤが２．０のテクスチャデータ１０１を用いて、テクスチャデータ１００上の位置ｐｉｘｅｌ０に対応したテクスチャデータ１０１上の位置ｐｉｘｅｌ１の４点近傍補間データＣpixel1を算出する。次に、４点近傍補間データＣpixel0とＣpixel1とを線形補間して、縮小率ＬＯＤが１．５のレベル補間データＣpixel を算出する。
【００５５】
すなわち、前述した４点近傍補間データＣpixel0の算出処理に続いて、ＳＲＡＭ１７あるいはテクスチャバッファ２０からテクスチャエンジン回路１２に、図３に示すテクスチャデータ１０１の（Ｒ，Ｇ，Ｂ）データＳ１７が読み出される。
そして、テクスチャエンジン回路１２は、図３における位置ｐｉｘｅｌ１の（Ｒ，Ｇ，Ｂ）データである４点近傍補間データＣpixel1を、当該位置ｐｉｘｅｌ１の４近傍点Ａ１，Ｂ１，Ｃ１，Ｄ１の（Ｒ，Ｇ，Ｂ）データＣA1，ＣB1，ＣC1，ＣD1を用いて、下記式（６）〜（８）に基づいて求める。
このとき、（Ｒ，Ｇ，Ｂ）データＣA1，ＣB1，ＣC1，ＣD1は、テクスチャデータ１０１の（Ｒ，Ｇ，Ｂ）データＳ１７から得られる。
なお、下記式（６）〜（８）において、ｃ，ｄは、それぞれ位置ｐｉｘｅｌ１のｕ，ｖ座標の小数部を示している。
【００５６】
【数６】
ＣAB1 ＝ＣB1×ｃ＋ＣA1×（１−ｃ）                  …（６）
【００５７】
【数７】
ＣCD1 ＝ＣD1×ｃ＋ＣC1×（１−ｃ）                  …（７）
【００５８】
【数８】
Ｃpixel1＝ＣCD1 ×ｄ＋ＣAB1 ×（１−ｄ）          …（８）
【００５９】
次に、テクスチャエンジン回路１２は、下記式（９）を用いて、テクスチャデータ１００と１０１との間のレベル補間を行い、レベル補間後の対応する位置（画素）の（Ｒ，Ｇ，Ｂ）データであるレベル補間データＣpixel を求める。なお、下記式（９）において、ミップマップ係数ＣＯＥmipmapは縮小率ＬＯＤの小数部０．５を示している。
【００６０】
【数９】
Ｃpixel ＝Ｃpixel1×ＣＯＥmipmap＋Ｃpixel0×（１−ＣＯＥmipmap）
…（９）
【００６１】
次に、テクスチャエンジン回路１２で行われるテクスチャファンクション処理について説明する。
テクスチャエンジン回路１２で行われるテクスチャファンクション処理には、例えば、モジュレート(Modulate)処理、デカル(Decal) 処理、ハイライト(Highlight) 、フォギング(Fogging) 処理、アルファブレンディング (α Blending)処理などがある。
ここで、モジュレート処理は、テクスチャデータが示す色でフラグメントデータが示す色の変調を行う処理である。
なお、本実施形態では、フラグメントデータは、トライアングルＤＤＡ回路１１から入力したＤＤＡデータＳ１１に含まれる（Ｒ，Ｇ，Ｂ）データＳ１１ｂである。
デカル処理は、テクスチャデータが示す色でフラグメントデータが示す色を置き換える処理である。
ハイライト処理は、ハイライト効果を出すために乗算結果に加算データＨｉを加算する処理である。
フォギング処理は、遠くの物体をぼかす効果を出す処理である。
アルファブレンディング処理は、ソースデータが示す色とディスティネーションデータが示す色とを所定の混合比で混合する処理である。
ここで、ソースデータが示す色は図１に示すディスプレイバッファ２１に記憶されているデータが示す色であり、ディスティネーションデータが示す色はディスプレイバッファ２１に描画しようとするデータが示す色である。
【００６２】
これらのテクスチャファンクション処理は、テクスチャデータをＣtex 、フラグメントデータをＣflag、ハイライト処理の加算データをＨｉとし、モジュレート処理後のデータをＣmod 、デカル処理後のデータをＣdcl 、ハイライト処理後のデータをＣhgh とすると、下記式（１０）〜（１２）のように表せる。
なお、式（１２）において、Ｈｉは、ハイライト用の加算データを示している。
【００６３】
【数１０】
Ｃmod ＝Ｃtex ×Ｃflag                              …（１０）
【００６４】
【数１１】
Ｃdcl ＝Ｃtex                                       …（１１）
【００６５】
【数１２】
Ｃhgh ＝Ｃtex ×Ｃflag＋Ｈｉ                        …（１２）
【００６６】
また、フォギング処理およびアルファブレンディング処理は、フラグメントデータをＣflag、フォグデータをＣfog 、フォグ係数データをＣＯＥfog 、ソース（カラー）データをＣsrc 、デスティネーション（カラー）データをＣdst 、ブレンディング係数をＣＯＥblend とし、フォギング処理後のデータをＣfogged、ブレンディング処理後のデータをＣblend とすると、以下式（１３），（１４）で示される。
【００６７】
【数１３】
Ｃfogged＝Ｃflag×ＣＯＥfog ＋Ｃfog ×（１−ＣＯＥfog ）
…（１３）
【００６８】
【数１４】
Ｃblend ＝Ｃsrc ×ＣＯＥblend ＋Ｃdst ×（１−ＣＯＥblend ）
…（１４）
【００６９】
上述したように、式（９）〜（１４）で示されるＭＩＰＭＡＰ処理のレベル補間処理とテクスチャファンクション処理とは、データＡ，Ｂ，ＣＯＥ、ＣおよびＤを用いた下記式（１５）で表現できる。
本実施形態では、このことを利用して、後述するように、ＬＩＰ回路６１をレベル補間処理とテクスチャファンクション処理とで共用する。
【００７０】
【数１５】
Ｄ＝Ａ×ＣＯＥ＋Ｂ（１−ＣＯＥ）                    …（１５）
【００７１】
図４は、テクスチャエンジン回路１２の部分回路図である。
図４に示すように、テクスチャエンジン回路１２は、例えば、縮小率演算回路５０、読み出し回路５１、ＬＩＰ(Linear Inter Polator)回路５２，５３，５４、ＬＩＰ／テクスチャファンクション回路５５を有する。
ここで、縮小率演算回路５０が本発明の縮小率演算回路に対応し、読み出し回路５１が本発明の読み出し回路に対応し、ＬＩＰ回路５２，５３，５４およびＬＩＰ／テクスチャファンクション回路５５が本発明の画像処理回路に対応している。
テクスチャエンジン回路１２内の各構成要素は、図１に示すクロック信号発生回路１８からのクロック信号Ｓ１８に基づいて動作する。
テクスチャエンジン回路１２は、図４に示す構成を用いて、ＭＩＭＡＰ処理、モジュレート処理、デカル処理、ハイライト処理、フォギング処理、テクスチャブレンディング処理およびアルファブレンディング処理などの一部あるいは全てを行う。
【００７２】
以下、図４に示すテクスチャエンジン回路１２の構成要素について詳細に説明する。
〔代表点決定回路３０１〕
代表点決定回路３０１は、トライアングルＤＤＡ回路１１から入力した、ＤＤＡデータＳ１１に含まれる有効ビットデータＩ1 〜Ｉ8 から、代表点となる画素を決定し、当該決定した代表点を示す代表点指示データＳ３０１をｓｔｑ選択回路３０２に出力する。
具体的には、代表点決定回路３０１は、同時に処理される２行×４列の８画素のうち、処理対象となっている三角形の内部に位置するもののなかで、当該８画素が配置される矩形領域の中心に最も近い画素が代表点として決定する。
【００７３】
図５は、代表点決定回路３０１における代表点決定処理のフローチャートである。
ステップＳ１１：先ず、代表点決定回路３０１は、有効ビットデータＩ1 〜Ｉ8 に、「１」を示すものが少なくとも一つ存在するかを判断し、存在すれば、ステップＳ１２の処理を実行する。
ステップＳ１２：代表点決定回路３０１は、有効ビットデータＩ1 〜Ｉ8 のうち、「１」を示すものが一つであるか否かを判断し、一つである場合には、ステップＳ１５に示す処理を実行する。ステップＳ１５では、「１」を示す有効ビットデータに対応する画素を代表点として決定する。
【００７４】
ステップＳ１３：代表点決定回路３０１は、有効ビットデータＩ1 〜Ｉ8 に「１」を示すものが２つ以上ある場合に、「１」を示す有効ビットデータに対応する画素のうち、当該同時に処理が行なわれる画素が配置される矩形領域の中心に最も近い画素を、代表点として決定する。
このとき、当該矩形領域の中心に最も近い画素が複数ある場合には、これらのｘ座標が同じであるか否かが判断され、これらのｘ座標が異なる場合には、ステップＳ１６に示す処理が実行される。ステップＳ１６では、当該矩形領域の中心に最も近い複数の画素のうち、ｘ座標が最も小さいものが、代表点として決定される。
【００７５】
ステップＳ１４：代表点決定回路３０１は、前記矩形領域の中心に最も近い画素が複数あり、しかも、これらのｘ座標が同じ場合には、これら複数の画素のうち、ｙ座標が最も小さいものを代表点として決定する。
【００７６】
以下、代表点決定回路３０１における代表点の決定を具体例を挙げて説明する。
図６は、代表点決定回路３０１における代表点の決定を説明するための図である。
有効ビットデータＩ1 〜Ｉ8 に対応する画素の配置を図６（Ａ）に示すように設定する。ここで、同時に処理が実行される画素の矩形領域の中心はＡである。
例えば、図６（Ｂ）に示すように、有効ビットデータＩ4 のみが「１」の場合には、代表点決定回路３０１は、有効ビットデータＩ4 に対応する画素を代表点として決定する。
【００７７】
また、図６（Ｃ）に示すように、有効ビットデータＩ6 およびＩ7 が「１」であり、これに対応する画素のｘ座標が異なる場合には、ｘ座標が小さい有効ビットデータＩ6 に対応する画素を代表点として決定する。
また、図６（Ｄ）に示すように、有効ビットデータＩ3 およびＩ7 が「１」であり、これに対応する画素のｘ座標が同じ場合には、ｙ座標が小さい有効ビットデータＩ7 に対応する画素を代表点として決定する。
さらに、図６（Ｅ）に示すように、有効ビットデータＩ2 ，Ｉ3 ，Ｉ6 およびＩ7 が「１」である場合には、ｘ座標およびｙ座標が最も小さい、有効ビットデータＩ6 に対応する画素を代表点として決定する。
【００７８】
また、前述した図２に示す三角形２５０については８画素単位に、図５に示すアルゴリズムに基づいて、図７に示すように代表点が決定される。図７では、「１」が丸印で囲まれている画素が代表点になる。
このように、代表点決定回路３０１において、有効ビットデータＩ1 〜Ｉ8 に基づいて、同時に処理を行なう複数画素のうち処理対象となっている三角形の内側に位置する画素のなかから代表点を動的に決定するため、代表点を当該三角形の内側に確実に決定することができる。
その結果、当該三角形の内側に位置する画素について、適切なテクスチャデータを確実に選択でき、高い画質を安定して提供できる。
また、本実施形態で、８画素について同時処理を行なうが、縮小率演算回路３０１を１つ設ければよく、装置が大規模化することはない。
【００７９】
〔ｑデータ選択回路３０２〕
ｑデータ選択回路３０２は、ＤＤＡデータＳ１１に含まれる８画素分の（ｓ，ｔ，ｑ）データＳ１１ａ1 〜Ｓ１１ａ8 を入力し、これらのうち、代表点指示データＳ３０１によって示される画素に対応するｑデータを選択し、これをｑデータＳ３０２として縮小率演算回路３０４に出力する。
【００８０】
〔縮小率演算回路３０４〕
縮小率演算回路３０４は、トライアングルＤＤＡ回路１１からのｍａｘｅデータＳ１１ｃと、ｑ選択回路３０２からのｑデータＳ３０２とに基づいて、テクスチャデータの縮小率ＬＯＤを算出する。
ここで、ｍａｘｅデータＳ１１ｃは、例えば図２に示すような処理対象の三角形の頂点のｓ，ｔ，ｑデータの指数のうち、最大の指数を示している。
このように、縮小率演算回路３０４では、代表点決定回路３０１において代表点として決定された画素のｑデータと、ｍａｘｅデータＳ１１ｃとを用いて縮小率を算出し、これを縮小率ＬＯＤとして読み出し回路５１に出力する。
【００８１】
ここで、縮小率ＬＯＤは、元画像のテクスチャデータを、どの程度縮小したものであるかを示すものであり、元画像の縮小率を１／１とした場合には、１／２，１／４，１／８，・・・となる。
縮小率演算回路３０４における縮小率ＬＯＤの演算処理は、下記式（１６）で示される。
【００８２】
【数１６】
ＬＯＤ＝Ｃｌａｍｐ（（（ｌｏｇ2 １／ｑ）−ｍａｘｅ）＜＜Ｌ＋Ｋ）
…（１６）
【００８３】
上記式（１６）において、
ＬＯＤ：縮小率を示し、整数部３ビット、小数点部４ビット、符号無し(unsigned)のデータ、
ｍａｘｅ：図２に示す三角形の頂点のｓ，ｔ，ｑの最大指数を示し、整数部８ビット、符号無し(unsigned)のデータ、
ｑ：整数部１０ビット、小数部５ビット、符号有り(signed)のデータ、
Ｌ：２ビット、符号無しのデータ、Ｌの最大値は１０進数の「３」
Ｋ：整数部８ビット、小数部４ビット、符号有りのデータ
【００８４】
以下、縮小率演算回路５０について詳細に説明する。
図８は、縮小率演算回路５０の構成図である。
図８に示すように、縮小率演算回路５０は、例えば、プライオリティエンコーダ１０１、シフト回路１０２、シフト回路２０１，２０２、テーブル２０３、インバータ２０４，２０５、加算回路２０６およびクランプ回路１０９を有する。
ここで、プライオリティエンコーダ１０１およびシフト回路１０２が本発明の正規化回路に対応し、シフト回路２０１が本発明の第１のシフト回路に対応し、インバータ２０４が本発明の第１の反転回路に対応し、テーブル２０３が本発明のデータ出力手段に対応し、シフト回路２０２が本発明の第２のシフト回路に対応し、インバータ２０５が本発明の第２の反転回路に対応し、加算回路２０６が本発明の加算回路に対応し、クランプ回路１０９が本発明のクランプ回路に対応している。
縮小率演算回路５０は、前記式（１６）の演算を行い、その演算結果である縮小率ＬＯＤを図４に示す読み出し回路５１に出力する。
【００８５】
プライオリティエンコーダ１０１は、図４に示すｑデータ選択回路３０２から入力したｑデータの対数値「ｌｏｇ2 ｑ」を求め、当該２の対数値「ｌｏｇ2 ｑ」の整数値「ｉｎｔ（ｌｏｇ2 ｑ）」、すなわち指数ｑｅをデータａとしてシフト回路１０２，２０１に出力する。
【００８６】
シフト回路１０２は、図４に示すｑデータ選択回路３０２から入力したデータｑを、プライオリティエンコーダ１０１から入力した指数ｑｅだけ、ＬＳＢに向けてシフト演算した結果の小数部であるデータｑｍを、データｂ２としてシフト回路２０１およびテーブル２０３に出力する。
【００８７】
プライオリティエンコーダ１０１が出力したデータａと、シフト回路１０２が出力したデータｂ２とはビット結合され、その結果であるデータ｛ａ，ｂ２｝がシフト回路２０１に出力される。
【００８８】
シフト回路２０１は、入力したデータ｛ａ，ｂ２｝を、入力したデータＬだけ、ＭＳＢに向けてシフト演算した結果であるデータδ２をインバータ２０４に出力する。
【００８９】
インバータ２０４は、データδ２を反転し、その結果であるデータ￣δ２を加算回路２０６に出力する。
【００９０】
テーブル２０３は、データｑｍと、「ｌｏｇ2 （｛１，ｑｍ｝）−ｑｍ」との対応表を備え、シフト回路１０２から入力したデータｑｍ（＝ｂ２）をキーとして、当該データｑｍに対応する「ｌｏｇ2 （｛１，ｑｍ｝）−ｑｍ」を対応表から得て、これをデータμとしてシフト回路２０２に出力する。
なお、テーブル２０３の代わりに、入力したデータｑｍを用いて、「ｌｏｇ2 （｛１，ｑｍ｝）−ｑｍ」を自動的に生成するプログラムを用いてもよい。
【００９１】
トライアングルＤＤＡ回路１１から入力したｍａｘｅデータＳ１１ｃと、テーブル２０３から出力されたデータμとは、ｍａｘｅデータＳ１１ｃを整数部とし、小数部が７ビットとなるようにデータμの前に（０００）を結合して小数部として結合され、当該ビット結合後のデータ｛ｍａｘｅ，３’ｂ０，μ｝がシフト回路２０２に出力される。ここで、「３’ｂ０」は、Ｖｅｒｉｌｏｇ−ＨＤＬの表記で、３ビットの２進数の０を意味する。
【００９２】
シフト回路２０２は、入力したデータ｛ｍａｘｅ，３’ｂ０，μ｝を、入力したデータＬだけ、ＭＳＢに向けてシフト演算した結果であるγ２をインバータ２０５に出力する。
【００９３】
インバータ２０５は、データγ２を反転し、その結果であるデータ￣γ２を加算回路２０６に出力する。
【００９４】
また、データＫと「１０」とが、小数部が７ビットとなるように「１０」の前に１ビットの「０」を加えて結合され、当該ビット結合後のデータ｛Ｋ，３’ｂ０，１０｝が加算回路２０６に出力される。
【００９５】
加算回路２０６は、データ｛Ｋ，３’ｂ０，１０｝と、データ￣δ２と、データ￣γ２とを加算して、その加算結果であるε２をクランプ回路１０９に出力する。
【００９６】
クランプ回路１０９は、加算回路２０６から入力したデータε２を、整数部３ビット、小数部４ビットのデータにクランプし（丸め込み）、その結果を縮小率ＬＯＤとして図４に示す読み出し回路５１に出力する。
【００９７】
図８に示す縮小率演算回路５０では、入力したデータｑｍに対応するμ（＝「ｌｏｇ2 （｛１，ｑｍ｝）−ｑｍ」）を出力する図８に示すテーブル２０３を用いて、整数部のみからなるｍａｘｅデータＳ１１ｃと、小数部のみからなるデータμとをビット結合することで、ｍａｘｅデータＳ１１ｃに関しての加算処理を削減している。これにより、縮小率演算回路５０によれば、ゲート数の削減および演算処理の高速化を図れる。
また、縮小率演算回路５０では、前記式（１６）における「ｌｏｇ2 （１／ｑ）」の小数部ｂと仮数ｑｍの上位４ビット（＝２-4）とが近似することと、縮小率ＬＯＤの７ビットの小数部のうち下位４ビットの精度を決定付ける「ｌｏｇ2 （１／ｑ）」の７ビットの小数部のうち下位４ビットをテーブル２０３を用いて得ることで、縮小率ＬＯＤの誤差の要因となる前記式（１６）に示す「ｌｏｇ2 （１／ｑ）」の誤差を２-7にでき、データＬが最大値「３」である場合でも、縮小率ＬＯＤの誤差を２-4程度にできる。
【００９８】
図９は、図８に示す縮小率演算回路５０における処理を説明するための図である。
以下、図９を参照しながら、図８に示す縮小率演算回路５０の動作を具体例を用いて説明する。
ここでは、以下に示す値を用いて、前記式（１６）の演算処理を縮小率演算回路５０において行う場合を例示する。
【００９９】
ｑ＝（０００１００１１１０．１０１００）：
ｍａｘｅ＝（０００００００１．０００００００）：
Ｌ＝（０１）：
Ｋ＝（０００１００１１．００００）：
【０１００】
ｑ選択回路３０２が出力したｑデータＳ３０２であるｑ（０００１００１１１０．１０１００）が、図８に示すプライオリティエンコーダ１０１およびシフト回路１０２に入力される。
次に、プライオリティエンコーダ１０１において、ｑ（０００１００１１１０．１０１００）の指数ｑｅ（０００１１０）が求められ、当該指数ｑｅ（０００１１０）のＭＳＢ側に（００）を付加した８ビットのデータであるａ（０００００１１０）が出力される。
【０１０１】
次に、シフト回路１０２において、ａ（０００１００１１１０．１０１００）が、ａ（０００００１１０）だけ、ＭＳＢ側に向けてシフトされ、シフト後の小数部である仮数ｑｍ（００１１１０１）が、データｂ２としてテーブル２０３に出力される。
次に、テーブル２０３において、仮数ｑｍ（００１１１０１）に対応する４ビットのデータμ（「ｌｏｇ2 （｛１，ｑｍ｝）−ｑｍ」）であるμ（１０００）が得られ、μ（１０００）が出力される。
【０１０２】
次に、トライアングルＤＤＡ回路１１から入力したデータｍａｘｅ（０００００００１）とデータμ（１０００）とが、小数部が７ビットとなるようにデータμの前に（０００）を結合して小数部として結合され、当該ビット結合後のデータ｛ｍａｘｅ，３’ｂ０，μ｝＝（０００００００１．０００１０００）がシフト回路２０２に出力される。
【０１０３】
次に、シフト回路２０２において、入力したデータ｛ｍａｘｅ，３’ｂ０，μ｝＝（０００００００１．０００１０００）を、入力したデータＬ＝（０１）だけ、ＭＳＢに向けてシフト演算した結果であるγ２（００００００１０．００１００００）がインバータ２０５に出力される。
次に、インバータ２０５において、データγ２（００００００１０．００１００００）が反転され、その結果であるデータ￣γ２（１１１１１１０１．１１０１１１１）が加算回路２０６に出力される。
【０１０４】
また、プライオリティエンコーダ１０１が出力したデータａ（０００００１１０）と、シフト回路１０２が出力したデータｂ２（００１１１０１）とがビット結合され、その結果であるデータ｛ａ，ｂ２｝＝（０００００１１０．００１１１０１）がシフト回路２０１に出力される。
【０１０５】
次に、シフト回路２０１において、データ｛ａ，ｂ２｝＝（０００００１１０．００１１１０１）が、入力したデータＬ（０１）だけ、ＭＳＢに向けてシフト演算され、その結果であるデータδ２（００００１１００．０１１１０１０）がインバータ２０４に出力される。
【０１０６】
次に、インバータ２０４において、データδ２（００００１１００．０１１１０１０）が反転され、その結果であるデータ￣δ２（１１１１００１１．１０００１０１）が加算回路２０６に出力される。
【０１０７】
また、データＫ（０００１００１１．００００）と「１０」とが、小数部が７ビットとなるように「１０」の前に１ビットの「０」を加えて結合され、当該ビット結合後のデータ｛Ｋ，３’ｂ０，１０｝＝（０００１００１１．０００００１０）が加算回路２０６に出力される。
【０１０８】
次に、加算回路２０６において、データ｛Ｋ，３’ｂ０，１０｝と、データ￣δ２と、データ￣γ２とが加算され、その加算結果であるε２（０００００１００．０１１０１１０）がクランプ回路１０９に出力される。
【０１０９】
次に、クランプ回路１０９において、加算回路２０６から入力したデータε２が、整数部３ビット、小数部４ビットのデータにクランプされ（丸め込まれ）、その結果である（１００．０１１０）が縮小率ＬＯＤとして図４に示す読み出し回路５１に出力される。
【０１１０】
〔読み出し回路５１〕
読み出し回路５１は、ＤＤＡデータＳ１１に含まれる（ｓ，ｔ，ｑ）データと、縮小率ＬＯＤと、所定のテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥとに基づいて算出したアドレス（ｕ，ｖ）を用いて、ＳＲＡＭ１７あるいはテクスチャバッファ２０内のアドレスから（Ｒ，Ｇ，Ｂ）データを読み出し、これをテクスチャデータとしてＬＩＰ回路５２，５３に出力する。
このとき、読み出し回路５１は、縮小率演算回路５０から入力した縮小率ＬＯＤの小数部が０でない場合には、縮小率ＬＯＤの前後の整数部に対応する縮小率を持つ２個のテクスチャデータをそれぞれクロック信号Ｓ１８の１クロックサイクルで順に読み出してＬＩＰ回路５２，５３に出力する。
【０１１１】
〔ＬＩＰ回路５２，５３〕
ＬＩＰ回路５２は、演算対象となっている画素について、前述した式（３）に相当する４点近傍補間処理の演算を１クロックサイクル内に行って補間データＳ５２を生成し、補間データＳ５２をＬＩＰ回路５４に出力する。
続いて、ＬＩＰ回路５２は、演算対象となっている画素について、前述した式（６）に相当する４点近傍補間処理の演算を１クロックサイクル内に行って補間データＳ５２を生成し、補間データＳ５２をＬＩＰ回路５４に出力する。
【０１１２】
ＬＩＰ回路５３は、演算対象となっている画素について、前述した式（４）に相当する４点近傍補間処理の演算を１クロックサイクル内に行って補間データＳ５３を生成し、補間データＳ５３をＬＩＰ回路５４に出力する。
続いて、ＬＩＰ回路５３は、演算対象となっている画素について、前述した式（７）に相当する４点近傍補間処理の演算を１クロックサイクル内に行って補間データＳ５３を生成し、補間データＳ５３をＬＩＰ回路５４に出力する。
ＬＩＰ回路５３の演算は、ＬＩＰ回路５２の演算と並行して行われる。
【０１１３】
〔ＬＩＰ回路５４〕
ＬＩＰ回路５４は、ＬＩＰ回路５２および５３からの補間データＳ５２，Ｓ５３を用いて、前述した式（５）に相当する４点近傍補間処理の演算を１クロックサイクル内に行って４点近傍補間データＣpixel0を生成し、４点近傍補間データＣpixel0をＬＩＰ／テクスチャファンクション回路５５に出力する。
このとき、ＬＩＰ回路５４は、縮小率ＬＯＤの小数部が０でない場合には、補間データＳ５２，Ｓ５３を用いて、レベル補間処理に用いる４点近傍補間データＣpixel0と４点近傍補間データＣpixel1とを順に生成する。
例えば、縮小率ＬＯＤが前述したように１．５である場合には、ＬＩＰ回路５４は、上記式（５）に基づいて４点近傍補間データＣpixel0を１クロックサイクルで生成した後に、上記式（８）に基づいて４点近傍補間データＣpixel1を１クロックサイクルで生成する。
なお、ＬＩＰ回路５２，５３，５４の構成および処理は、後述するＬＩＰ回路６１の構成および処理と基本的に同じである。
【０１１４】
〔ＬＩＰ／テクスチャファンクション回路５５〕
図１０は、ＬＩＰ／テクスチャファンクション回路５５の構成図である。
ＬＩＰ／テクスチャファンクション回路５５は、ＬＩＰ回路５４からの４点近傍補間データＣpixel0（必要に応じて４点近傍補間データＣpixel1）を用いて、ＭＩＭＡＰ処理のレベル補間処理と、モジュレート処理、デカル処理、ハイライト処理、フォギング処理、テクスチャブレンディング処理およびアルファブレンディング処理などのテクスチャファンクション処理の一部あるいは全てを行う。
具体的には、ＬＩＰ／テクスチャファンクション回路５５は、縮小率ＬＯＤの小数部が０である場合には、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel0を用いて、テクスチャファンクション処理のうち必要な処理を行う。
また、ＬＩＰ／テクスチャファンクション回路５５は、縮小率の小数部が０でない場合には、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel0，Ｃpixel1を用いてレベル補間処理を行った後に、テクスチャファンクション処理のうち必要な処理を行う。
【０１１５】
ＬＩＰ／テクスチャファンクション回路５５は、図１０に示すように、前処理回路６０、ＬＩＰ回路６１およびレジスタ６２を有する。
前処理回路６０は、図１０に示すように、モードコントローラ７０、レジスタ７４、マルチプレクサ７５〜７８およびレジスタ８５〜８８を有する。
モードコントローラ７０は、図１０に示すように、デコーダ７１、カウンタ７２およびデコーダ７３を有する。
【０１１６】
デコーダ７１は、カウンタ７２のカウント値を監視し、カウンタ７２のカウント値が「０」になったタイミングで、ＬＩＰ回路６１を共用する処理の数に応じた初期値「０」，「１」または「２」をセットする。
例えば、デコーダ７１は、ＬＩＰ回路６１で一つの処理のみを行う場合には初期値「０」をカウンタ７２にセットし、２個の処理でＬＩＰ回路６１を共用する場合には初期値「１」をセットし、３個の処理でＬＩＰ回路６１を共用する場合にはカウント値「２」をセットする。
なお、本実施形態では、カウント値７２にセットする初期値として「０」，「１」および「２」を用いる場合を例示するが、当該初期値の値は、ＬＩＰ回路６１を共用する処理の数に応じて任意に設定可能である。
デコーダ７１は、例えば図１に示すメインプロセッサ４あるいはテクスチャエンジン回路１２内の図示しない主コントローラからファンクションモードデータＦＭＤを入力する。
ファンクションモードデータＦＭＤは、各クロックサイクル毎に、例えば図１１に示すモード「１」〜「８」を指定し、後述するように、各モードに応じたデータをＬＩＰ回路６１に入力するための制御に用いられる。すなわち、ファンクションモードデータＦＭＤに基づいて、ＬＩＰ回路６１が行う処理の内容が決定される。図１１の内容について、後に詳細に説明する。
デコーダ７１は、例えば、ファンクションモードデータＦＭＤに基づいて、ＬＩＰ回路６１において１個のモードの処理が終了する度に、カウンタ７２のカウント値を１だけ減少させる。
【０１１７】
デコーダ７３は、図１に示すメインプロセッサ４あるいはテクスチャエンジン回路１２内の図示しない主コントローラからファンクションモードデータＦＭＤおよびフォグイネーブルデータＦＥＤを入力する。
また、デコーダ７３は、ＬＩＰ回路５４あるいは読み出し回路５１からミップマップ番号データＭＮＤを入力する。
【０１１８】
ファンクションモードデータＦＭＤは、前述したように、各クロックサイクル毎に、例えば図１１に示すモード「１」〜「８」を指定し、後述するように、各モードに応じたデータをＬＩＰ回路６１に入力するための制御に用いられる。図１１に示す例では、ＬＩＰ回路６１において、ＭＩＰＭＡＰ処理のレベル補間処理、モジュレート処理、ハイライト処理、デカル処理およびフォギング処理を行う行う場合を例示している。
この場合に、図１１に示すように、例えば、モジュール処理およびハイライト処理は、当該処理のみが行われるか、あるいは、ＭＩＰＭＡＰ処理のレベル補間処理に続いて行われるかによって異なるモードが付されている。また、フォギング処理も、当該処理のみが行われるか、あるいは、モジュレート処理に続いて行われるかによって異なるモードが付されている。これは、図１０に示すＬＩＰ回路６１の処理結果をフィードバックしてレジスタ８８に書き込むか否かをデコーダ７３において決定する必要があるためである。
なお、図１１に示すモードは一例であり、その他にも種々のモードを指定することが可能である。
【０１１９】
また、フォグイネーブルデータＦＥＤは、例えば、フォギング処理を行う場合には論理値「１」を示し、フォギング処理を行わない場合には論理値「０」を示している。
【０１２０】
また、ミップマップ番号データＭＮＤは、ＬＩＰ回路６１においてレベル補間処理を行わない場合（縮小率ＬＯＤの小数部が０である場合）の４点近傍補間データＣpixel0を入力するタイミングと、レベル補間処理を行う場合の４点近傍補間データＣpixel1を入力するタイミングとで論理値「１」を示す。
また、ミップマップ番号データＭＮＤは、レベル補間処理を行う場合の４点近傍補間データＣpixel0を入力するタイミングで論理値「０」を示す。
ミップマップ番号データＭＮＤは、後述するように、デコーダ７３によるマルチプレクサ７７，７８の制御に用いられる。
【０１２１】
デコーダ７３は、ファンクションモードデータＦＭＤ、ミップマップ番号データＭＮＤおよびフォグイネーブルデータＦＥＤに基づいて、ファンクションモードデータＦＭＤが指定した処理をＬＩＰ回路６１が行うのに必要なデータをＬＩＰ回路６１に供給するように、マルチプレクサ７５〜７８を制御する。
【０１２２】
具体的には、デコーダ７３は、ミップマップ番号データＭＮＤが論理値「０」を示す間は、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel0をレジスタ８７に出力しないように、マルチプレクサ７７を制御する。このとき、４点近傍補間データＣpixel0は、レジスタ７４に書き込まれる。
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「１」を示しており、ＬＩＰ回路６１がＭＩＰＭＡＰ処理のレベル補間処理を行う場合には、ミップマップ番号データＭＮＤが論理値「１」を示す間に、レジスタ７４から読み出した４点近傍補間データＣpixel0をレジスタ８８に出力し、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel1をレジスタ８７に出力するように、マルチプレクサ７８，７７を制御する。
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「１」を示し、ミップマップ番号データＭＮＤが論理値「１」を示す間に、図４に示す縮小率演算回路５０から入力したミップマップ係数ＣＯＥmipmapを、レジスタ８６に出力するように、マルチプレクサ７６を制御する。それと同時に、デコーダ７３は、論理値「０」をレジスタ８５に出力するように、マルチプレクサ７５を制御する。
これにより、４点近傍補間データＣpixel0，Ｃpixel1およびミップマップ係数ＣＯＥmipmapが、それぞれレジスタ８８，８７，８６に同時に書き込まれ、ＬＩＰ回路６１において、４点近傍補間データＣpixel0，Ｃpixel1を用いたレベル補間処理が行われる。
【０１２３】
図１２は、ＬＩＰ回路５４から図１０に示すモードコントローラ７０への４点近傍補間データＣpixel0，Ｃpixel1の入力タイミングと、ＬＩＰ／テクスチャファンクション回路５５におけるレベル補間処理の実行タイミングとを説明するためのタイミングチャートである。
図１２において、同一の（ａ），（ｂ），（ｃ）が付されたデータは、同じレベル補間処理に係わるデータを示している。
【０１２４】
例えば、図１２（Ａ）に示すクロック信号Ｓ１８に基づいて、図１２（Ｂ）に示すタイミングで、ＬＩＰ回路５４からＬＩＰ／テクスチャファンクション回路５５に入力されたレベル補間の対象となる４点近傍補間データＣpixel0がレジスタ７４に記憶される。
そして、次のクロックサイクルで、レジスタ７４から読み出された４点近傍補間データＣpixel0が、マルチプレクサ７８およびレジスタ８８を介して、ＬＩＰ回路６１のＩＮA 端子に出力されると共に、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel1が、マルチプレクサ７７およびレジスタ８７を介して、ＬＩＰ回路６１のＩＮB 端子に出力される。
そして、次のクロックサイクルで、図１２（Ｃ）に示すように、ＬＩＰ回路６１において、ミップマップデータＣpixel0，Ｃpixel1を用いたレベル補間処理が行われる。
図１２（Ｃ）から分かるように、ＬＩＰ回路５２，５３，５４を用いて行われるＭＩＰＭＡＰ処理の４点近傍補間処理のスループットは２クロックサイクルであるのに対して、ＬＩＰ回路６１ではＭＩＭＡＰ処理のレベル補間処理が１クロックサイクルで行われる。従って、ＬＩＰ回路６１において、レベル補間処理のみを行う場合には、ＬＩＰ回路６１に処理を行わない空き時間が生じる。当該実施形態では、後述するように、当該空き時間を利用して、ＬＩＰ回路６１にテクスチャファンクション処理を行わせる。すなわち、ＭＩＰＭＡＰ処理の４点近傍補間処理と、テクスチャファンクション処理とをインターリーブする。
【０１２５】
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「２」を示しており、ＬＩＰ回路６１がモジュレート処理のみを行う場合には、対応する１クロックサイクルの間、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel0をレジスタ７４を介してレジスタ８８に出力し、トライアングルＤＤＡ回路１１から入力したＤＤＡデータＳ１１に含まれる（Ｒ，Ｇ，Ｂ）データＳ１１ｂ（フラグメントデータＣflag）をレジスタ８６に出力するように、マルチプレクサ７８，７６を制御する。
また、同時に、デコーダ７３は、レジスタ８７に論理値「０」を出力し、レジスタ８５に論理値「０」を出力するように、マルチプレクサ７７，７５を制御する。
【０１２６】
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「３」を示しており、ＬＩＰ回路６１がＭＩＰＭＡＰ処理のレベル補間処理に続いてモジュレート処理を行う場合には、対応する１クロックサイクルの間、ＬＩＰ回路６１のＯＵＴ端子からフィードバックされたレベル補間データをレジスタ８８に出力し、フラグメントデータＣflagをレジスタ８６に出力するように、マルチプレクサ７８，７６を制御する。
また、同時に、デコーダ７３は、レジスタ８７に論理値「０」を出力し、レジスタ８５に論理値「０」を出力するように、マルチプレクサ７７，７５を制御する。
【０１２７】
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「４」を示しており、ＬＩＰ回路６１がハイライト処理のみを行う場合には、対応する１クロックサイクルの間、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel0をレジスタ７８を介してレジスタ８８に出力し、トライアングルＤＤＡ回路１１から入力したＤＤＡデータＳ１１に含まれる（Ｒ，Ｇ，Ｂ）データＳ１１ｂ（フラグメントデータＣflag）をレジスタ８６に出力するように、マルチプレクサ７８，７６を制御する。
また、同時に、デコーダ７３は、レジスタ８７に論理値「０」を出力し、メインプロセッサ４あるいはテクスチャエンジン回路１２内の図示しない主コントローラから入力したハイライト演算の加算データＨｉをレジスタ８５に出力するように、マルチプレクサ７７，７５を制御する。
【０１２８】
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「５」を示しており、ＬＩＰ回路６１がＭＩＰＭＡＰ処理のレベル補間処理に続いてハイライト処理を行う場合には、対応する１クロックサイクルの間、ＬＩＰ回路６１のＯＵＴ端子からフィードバックされたレベル補間データをレジスタ８８に出力し、フラグメントデータＣflagをレジスタ８６に出力するように、マルチプレクサ７８，７６を制御する。
また、同時に、デコーダ７３は、レジスタ８７に論理値「０」を出力し、メインプロセッサ４あるいはテクスチャエンジン回路１２内の図示しない主コントローラから入力したハイライト演算の加算データＨｉをレジスタ８５に出力するように、マルチプレクサ７７，７５を制御する。
【０１２９】
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「６」を示しており、ＬＩＰ回路６１がデカル処理のみを行う場合には、対応する１クロックサイクルの間、ＬＩＰ回路５４から入力した４点近傍補間データＣpixel0をレジスタ７８を介してレジスタ８８に出力し、論理値「０ｘｆｆ（０ｘＦＦと同じ ）」をレジスタ８６に出力するように、マルチプレクサ７８，７６を制御する。
また、同時に、デコーダ７３は、レジスタ８７に論理値「０」を出力し、レジスタ８５に論理値「０」を出力するように、マルチプレクサ７７，７５を制御する。
【０１３０】
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「７」を示しており、ＬＩＰ回路６１がフォギング処理のみを行う場合には、対応する１クロックサイクルの間、トライアングルＤＤＡ回路１１から入力したＤＤＡデータＳ１１に含まれる（Ｒ，Ｇ，Ｂ）データＳ１１ｂ（フラグメントデータＣflag）をレジスタ７４を介してレジスタ８８に出力し、例えば図示しないフォグレジスタに設定されたフォグデータＣfog をレジスタ８７に出力するように、マルチプレクサ７８，７７を制御する。
また、同時に、デコーダ７３は、トライアングルＤＤＡ回路１１から入力したＤＤＡデータＳ１１に含まれるフォギング係数ＣＯＥfog をレジスタ８６に出力するように、マルチプレクサ７６を制御する。
また、同時に、デコーダ７３は、論理値「０」をレジスタ８５に出力するように、マルチプレクサ７５を制御する。
【０１３１】
また、デコーダ７３は、ファンクションモードデータＦＭＤが図１１に示す「８」を示しており、ＬＩＰ回路６１がモジュレート処理に続いてフォギング処理を行う場合には、対応する１クロックサイクルの間、ＬＩＰ回路６１のＯＵＴ端子からフィードバックされたレベル補間データをレジスタ８８に出力し、図示しないフォグレジスタから読み出したフォグデータＣfog をレジスタ８７に出力するように、マルチプレクサ７８，７７を制御する。
また、同時に、デコーダ７３は、トライアングルＤＤＡ回路１１から入力したＤＤＡデータＳ１１に含まれるフォギング係数ＣＯＥfog をレジスタ８６に出力するように、マルチプレクサ７６を制御する。
また、同時に、デコーダ７３は、論理値「０」をレジスタ８５に出力するように、マルチプレクサ７５を制御する。
【０１３２】
また、デコーダ７３は、ＭＩＭＰＡＰ処理のレベル補間処理と、２以上のテクスチャファンクション処理とでＬＩＰ回路６１を共用する場合、すなわち合計３以上の処理でＬＩＰ回路６１を共用する場合には、共用する処理の数に応じたクロックサイクルの間、例えば図４に示す読み出し回路５１および図１に示すトライアングルＤＤＡ回路１１にウェイト（待ち）指示を出力する。
例えば、レベル補間処理と、２個のテクスチャファンクション処理とでＬＩＰ回路６１を共用する場合には、ＬＩＰ回路６１が２番目のテクスチャファンクション処理を処理している１クロックサイクルの間、ウェイト指示を読み出し回路５１およびトライアングルＤＤＡ回路１１に出力する。
【０１３３】
ＬＩＰ回路６１は、前記式（１５）の演算を行う場合に、それぞれ８ビットのデータＡ，Ｂ，ＣＯＥおよびＣを、ＩＮA 端子、ＩＮB 端子、ＩＮcoe 端子およびＩＮC 端子からそれぞれ入力し、８ビットのデータＤをＯＵＴ端子から出力する。
【０１３４】
ＬＩＰ回路６１は、図１３に示すように、補正データＦ、データＣＯＥの対応するビットの論理値に基づいてデータＡまたはＢを選択した部分積ｏｕｔ＿０〜ｏｕｔ＿７、および、積和演算項であるデータＣを、シフトさせて加算することで、前記式（１５）に示す演算を行う。
【０１３５】
補正データＦは、データＣＯＥ＝０ｘＦＦ（ＣＯＥ＝１．０）の場合には、データＡを、それ以外の場合にはデータＢを選択した値を持つ。
補正データＦは、８ビットのうち全ビットが論理値「１」の場合に、「１」と見るシステムにおいて、例えば、下記式（１７）に示す演算を、下記式（１８）となるように補正するために用いられる。すなわち、「Ｘ×１．０＝Ｘ」となるように補正を行う。
【０１３６】
【数１７】
０ｘＦＦ×０ｘＦＦ＝０ｘＦＥ                          …（１７）
【０１３７】
【数１８】
０ｘＦＦ×０ｘＦＦ＝０ｘＦＦ                          …（１８）
【０１３８】
部分積ｏｕｔ＿０〜ｏｕｔ＿７は、それぞれデータＣＯＥのビット０〜７が、論理値「１」であればデータＡを示し、論理値「０」であればデータＢを示している。
ここで、データＣＯＥのＬＳＢをビット０とし、ＭＳＢをビット７とする。
部分積ｏｕｔ＿ｎ（０≦ｎ≦７）は、例えば、図１４に示すように、８個のマルチプレクサ８０0 〜８０7 を用いて生成される。
具体的には、０≦ｍ≦７とした場合に、マルチプレクサ８０m に、データＡのビットｍのビットデータＡ〔ｍ〕と、データＢのビットｍのビットデータＢ〔ｍ〕と、データＣＯＥのｎのビットデータＣＯＥ〔ｎ〕とを入力し、ビットデータＣＯＥ〔ｎ〕が論理値「１」であればビットデータＡ〔ｍ〕を選択して、ビットデータｏｕｔ＿ｎ〔ｍ〕として出力する。
なお、ビットデータｏｕｔ＿ｎ〔０〕〜ｏｕｔ＿ｎ〔７〕によって、部分積ｏｕｔ＿ｎが構成される。
【０１３９】
部分積ｏｕｔ＿ｎは、ＭＳＢに向けて、ｎビットだけシフトされた後に、ｗａｌｌａｃｅ＿ｔｒｅｅ型のアーキテクチャを採用した加算回路８１に出力される。
また、積和演算項であるデータＣは、８ビット×８ビットの乗算結果の上位８ビットに加算されるように、図１３に示すように、ＭＳＢに向けて８ビットシフトされた後に加算回路８１に出力される。
【０１４０】
加算回路８１は、ｗａｌｌａｃｅ＿ｔｒｅｅ型のアーキテクチャを採用しており、入力を３個づつ集めて和と桁上げの２個の出力に絞り込み、最終的に加算回路８２において２入力加算器を用いて加算を行うことを可能にする。
これにより、補正データＦおよび積和演算項Ｃによる部分積が追加されても、回路規模は殆ど増加せず、加算速度も殆ど落とさずにすむ。
【０１４１】
図１５は、ｗａｌｌａｃｅ＿ｔｒｅｅ型のアーキテクチャを採用した加算回路８の部分構成図である。
図１５では、図１３に示す矢印９２，９３，９４に示される図中縦方向のビットデータの加算を行う構成のみを示し、それ以外の加算を行う部分は省略してある。
図１３に示す矢印９１に示される図中縦方向のビットデータの加算は、加算回路８２において行われる。
図１５に示すように、加算回路８１は、加算器１００0 〜１００6 を有する。
加算器１００0 は、矢印９２の加算を行い、補正データＦのビット１と、部分積ｏｕｔ＿０のビット１と、部分積ｏｕｔ＿１のビット０との加算を行い、和Ｓｕｍを加算回路８２に出力し、桁上げＣａｒｒｙを加算器１００1 に出力する。
【０１４２】
加算器１００1 ，１００2 ，１００3 は、矢印９３の部分の加算を行う。
加算器１００1 は、補正データＦのビット２と、部分積ｏｕｔ＿０のビット２との加算を行い、和Ｓｕｍを加算器１００3 に出力し、桁上げＣａｒｒｙを加算器１００4 に出力する。
加算器１００2 は、部分積ｏｕｔ＿１のビット１と、部分積ｏｕｔ＿２のビット０との加算を行い、和Ｓｕｍを加算器１００3 に出力し、桁上げＣａｒｒｙを加算器１００5 に出力する。
加算器１００3 は、加算器１００1 からの桁上げＣａｒｒｙと、加算器１００2 からの桁上げＣａｒｒｙとを加算し、和Ｓｕｍおよび桁上げＣａｒｒｙを加算回路８２に出力する。
【０１４３】
加算器１００4 ，１００5 ，１００6 は、矢印９４の部分の加算を行う。
加算器１００4 は、補正データＦのビット３と、部分積ｏｕｔ＿０のビット３との加算を行い、和Ｓｕｍを加算器１００6 に出力し、桁上げＣａｒｒｙを後段の加算器に出力する。
加算器１００5 は、部分積ｏｕｔ＿１のビット２と、部分積ｏｕｔ＿２のビット１との加算を行い、和Ｓｕｍを加算器１００6 に出力し、桁上げＣａｒｒｙを後段の加算器に出力する。
加算器１００6 は、加算器１００4 からの桁上げＣａｒｒｙと、加算器１００5 からの桁上げＣａｒｒｙとを加算し、和Ｓｕｍおよび桁上げＣａｒｒｙを加算回路８２に出力する。
【０１４４】
加算回路８２は、補正データＦのビット０および部分積ｏｕｔ＿０のビット０、加算回路８１から入力した和Ｓｕｍおよび桁上げＣａｒｒｙを、複数の２入力の加算器を用いて加算して、上記式（１５）の演算結果である１６ビットのデータを算出し、当該１６ビットのデータのうち上位８ビットをデータＤとして出力する。
ＬＩＰ回路６１は、例えば、図１０に示すカウンタ７２がカウント値「０」を示す場合には、当該算出したデータＤを図４に示すＯＵＴ端子からレジスタ６２に出力し、それ以外の場合には、当該算出したデータＤを図４に示すマルチプレクサ７８にフィードバックする。
【０１４５】
以下、図１０に示すテクスチャエンジン回路１２の動作形態について説明する。
第１の動作形態
本動作形態では、ＭＩＰＭＡＰ処理のレベル補間処理と、モジュレート処理とでＬＩＰ回路６１を共用する場合を説明する。
この場合には、図１に示すメインプロセッサ４あるいはテクスチャエンジン回路１２内の図示しない主コントローラから図１０に示すデコーダ７１，７３に、１クロックサイクル毎に、モード「１」および「３」を交互に示すファンクションモードデータＦＭＤが出力される。
また、デコーダ７１は、カウンタ７２のカウント値の初期値として「１」を設定し、カウンタ７２のカウント値が「０」になる度に、カウンタ７２に「１」を設定する。
【０１４６】
具体的には、例えば、第１のクロックサイクルで、図４に示すＬＩＰ回路５４からの４点近傍補間データＣpixel0がレジスタ７４に書き込まれる。
また、カウンタ７２のカウント値に「１」がセットされる。
【０１４７】
次に、第１のクロックサイクルに続く第２のクロックサイクルで、ファンクションモードデータＦＭＤがモード「１」を示し、４点近傍補間データＣpixel0がレジスタ７４から読み出されて、マルチプレクサ７８およびレジスタ８８を介してＬＩＰ回路６１のＩＮA 端子に出力される。それと同時に、図４に示すＬＩＰ回路５４からの４点近傍補間データＣpixel1が、マルチプレクサ７７およびレジスタ８７を介してＬＩＰ回路６１のＩＮB 端子に出力される。
それと同時に、図４に示す縮小率演算回路５０からのデータＣＯＥmipmapが、マルチプレクサ７６およびレジスタ８６を介してＬＩＰ回路６１のＩＮcoeff に出力される。
そして、ＬＩＰ回路５４において、上記式（９）に示す演算が行われ、レベル補間データＣpixel が算出される。
そして、カウンタ７２がカウント値が「１」であるため、レベル補間データＣpixel がマルチプレクサ７８にフィードバックされる。
そして、カウンタ７２のカウント値が減少して「０」になる。
【０１４８】
次に、第３のクロックサイクルで、ファンクションモードデータＦＭＤがモード「３」を示し、図４に示すＬＩＰ回路５４からの次の画素に係わる４点近傍補間データがレジスタ７４に書き込まれる。
それと同時に、第２のクロックサイクルで算出されたレベル補間データＣpixel （＝式（１０）のＣtex に対応）がマルチプレクサ７８およびレジスタ８８を介してＬＩＰ回路６１のＩＮA 端子に出力される。
それと同時に、トライアングルＤＤＡ回路１１からのＤＤＡデータＳ１１に含まれる（Ｒ，Ｇ，Ｂ）データＳ１１ｂ（フラグメントカラー値Ｃflag）が、マルチプレクサ７６およびレジスタ８６を介してＬＩＰ回路６１のＩＮcoeff に出力される。
そして、ＬＩＰ回路５４において、上記式（１０）に示す演算が行われ、モジュレート処理後のカラー値Ｃmod が算出される。
そして、カウンタ７２のカウント値が「０」であるため、ＬＩＰ回路６１のＯＵＴ端子からレジスタ６２にカラー値Ｃmod が出力される。
カラー値Ｃmod は、レジスタ６２から読み出されて画素データＳ１２として後段のメモリＩ／Ｆ回路１３に出力される。
そして、カウンタ７２のカウント値に「１」がセットされる。
以後、上述した第２のクロックサイクルの処理と、第３のクロックサイクルの処理とが交互に繰り返される。
【０１４９】
以上説明したように、本動作形態では、ＭＩＰＭＡＰ処理のレベル補間処理と、モジュレート処理とでＬＩＰ回路６１とでＬＩＰ回路６１を共用できる。そのため、レベル補間処理用の回路とモジュレート処理用の回路とを直列に接続した場合に比べて回路規模を縮小できる。また、本実施形態では、ＭＩＰＭＡＰ処理の４点近傍補間処理は１系統で２クロックサイクルかけて行われ、当該処理に係わる回路規模は従来と同じである。
また、本動作例では、ＬＩＰ回路６１において、レベル補間処理を行わない空き時間に、モジュレート処理を行うため、処理時間が長期化することはない。
【０１５０】
第２の動作形態
本動作形態では、ＭＩＰＭＡＰ処理のレベル補間処理と、モジュレート処理と、フォギング処理とでＬＩＰ回路６１を共用する場合を説明する。
この場合には、図１に示すメインプロセッサ４あるいはテクスチャエンジン回路１２内の図示しない主コントローラから図１０に示すデコーダ７１，７３に、１クロックサイクル毎に、モード「１」、「３」、「８」を順に繰り返して示すファンクションモードデータＦＭＤが出力される。
また、デコーダ７１は、カウンタ７２のカウント値の初期値として「２」をセットし、カウンタ７２のカウント値が「０」になる度に、カウンタ７２に「２」をセットする。
【０１５１】
具体的には、例えば、第１のクロックサイクルで、図４に示すＬＩＰ回路５４からの４点近傍補間データＣpixel0がレジスタ７４に書き込まれる。
そして、カウンタ７２のカウント値に「２」がセットされる。
【０１５２】
次に、第２のクロックサイクルで、ファンクションモードデータＦＭＤがモード「１」を示し、４点近傍補間データＣpixel0がレジスタ７４から読み出されて、マルチプレクサ７８およびレジスタ８８を介してＬＩＰ回路６１のＩＮA 端子に出力される。それと同時に、図４に示すＬＩＰ回路５４からの４点近傍補間データＣpixel1が、マルチプレクサ７７およびレジスタ８７を介してＬＩＰ回路６１のＩＮB 端子に出力される。
それと同時に、図４に示す縮小率演算回路５０からのデータＣＯＥmipmapが、マルチプレクサ７６およびレジスタ８６を介してＬＩＰ回路６１のＩＮcoeff に出力される。
そして、ＬＩＰ回路５４において、上記式（９）に示す演算が行われ、レベル補間データＣpixel が算出される。
そして、カウンタ７２がカウント値が「２」であるため、レベル補間データＣpixel がマルチプレクサ７８にフィードバックされる。
そして、カウンタ７２のカウント値が減少して「１」になる。
【０１５３】
次に、第３のクロックサイクルで、ファンクションモードデータＦＭＤがモード「３」を示し、図４に示すＬＩＰ回路５４からの次の画素に係わる４点近傍補間データＣpixel0がレジスタ７４に書き込まれる。
それ同時に、第２のクロックサイクルで算出されたレベル補間データＣpixel （式（１０）のＣtex に対応）がマルチプレクサ７８およびレジスタ８８を介してＬＩＰ回路６１のＩＮA 端子に出力される。
それと同時に、トライアングルＤＤＡ回路１１からのＤＤＡデータＳ１１に含まれる（Ｒ，Ｇ，Ｂ）データＳ１１ｂ（フラグメントカラー値Ｃflag）が、マルチプレクサ７６およびレジスタ８６を介してＬＩＰ回路６１のＩＮcoeff に出力される。
そして、ＬＩＰ回路５４において、上記式（１０）に示す演算が行われ、モジュレート処理後のカラー値Ｃmod が算出される。
そして、カラー値Ｃmod は、カウンタ７２がカウント値が「１」であるため、マルチプレクサ７８にフィードバックされる。
そして、カウンタ７２のカウント値が減少して「０」になる。
また、４点近傍補間データＣpixel0の出力を１クロックサイクルだけ待つことを指示するウェイト指示が図４に示す読み出し回路５１に出力され、フラグメントデータＣflagの出力を１クロックサイクルだけ待つことを指示するウェイト指示が図１に示すトライアングルＤＤＡ回路１１に出力される。
【０１５４】
次に、第４のクロックサイクルで、ファンクションモードデータＦＭＤがモード「８」を示し、フォグイネーブルデータＦＥＤが論理値「１」であれば、第３のクロックサイクルで算出されたカラー値Ｃmod （式（１３）のＣflagに対応）が、マルチプレクサ７８およびレジスタ８８を介してＬＩＰ回路６１のＩＮA 端子に出力される。
それと同時に、例えば、図示しないフォグレジスタから読み出したフォグデータＣfog が、マルチプレクサ７７およびレジスタ８７を介して、ＬＩＰ回路６１のＩＮB 端子に出力される。
それと同時に、例えば、トライアングルＤＤＡ回路１１からのＤＤＡデータＳ１１に含まれるフォギング係数ＣＯＥfog が、マルチプレクサ７６およびレジスタ８６を介して、ＬＩＰ回路６１のＩＮcoeff 端子に出力される。
そして、ＬＩＰ回路５４において、上記式（１３）に示す演算が行われ、フォギング処理後のカラー値Ｃfoggedが算出される。
そして、カウンタ７２のカウント値が「０」であるため、ＬＩＰ回路６１のＯＵＴ端子からレジスタ６２にカラー値Ｃfoggedが出力される。
カラー値Ｃfoggedは、レジスタ６２から読み出されて画素データＳ１２として後段のメモリＩ／Ｆ回路１３に出力される。
以後、上述した第２のクロックサイクルの処理と、第３のクロックサイクルの処理と、第４のクロックサイクルの処理とが交互に繰り返される。
【０１５５】
以上説明したように、本動作形態では、ＭＩＰＭＡＰ処理のレベル補間処理と、モジュレート処理とでＬＩＰ回路６１と、フォギング処理とでＬＩＰ回路６１を共用できる。そのため、レベル補間処理用の回路とモジュレート処理用の回路とを直列に接続した場合に比べてゲート数を少なくでき、回路規模を縮小できる。
【０１５６】
このように、テクスチャエンジン回路１２では、ＭＩＭＰＡＰ処理のレベル補間処理と、テクスチャファンクション処理とで図１０に示すＬＩＰ回路６１を共用することで、回路規模を縮小できる。この場合に、レベル補間処理と、１個のテクスチャファンクション処理とでＬＩＰ回路６１を共用した場合には、処理時間が長期化することはない。
【０１５７】
また、テクスチャエンジン回路１２では、図４に示すＬＩＰ回路５２，５３，６１において、図１３に示すように補正データＦを用いて演算を行うため、全ビットが論理値「１」の場合に「１」と見なすシステムにおいて、上記式（１５）のＣＯＥが「１．０」の場合の演算を、回路規模を殆ど増大させることなく、正確に行うことができる。
すなわち、補正を行わないで適切な結果を得るために、１ビット増やして９ビットを用い、「０ｘ１００」を「１」と見なすと、前段のパイプレジスタのゲート数増加を招き、全体的にゲートを増加させることになるが、本実施形態では、ビット数を増やす必要がなく、このような問題は生じない。
【０１５８】
なお、テクスチャエンジン回路１２は、フルカラー方式の場合には、ＳＲＡＭ１７あるいはテクスチャバッファ２０から読み出した（Ｒ，Ｇ，Ｂ）データを直接用いる。一方、テクスチャエンジン回路１２は、インデックスカラー方式の場合には、予め作成したカラールックアップテーブル（ＣＬＵＴ）をテクスチャＣＬＵＴバッファ２３から読み出して、内蔵するＳＲＡＭに転送および記憶し、このカラールックアップテーブルを用いて、ＳＲＡＭ１７あるいはテクスチャバッファ２０から読み出したカラーインデックスに対応する（Ｒ，Ｇ，Ｂ）データを得る。
【０１５９】
メモリＩ／Ｆ回路１３
メモリＩ／Ｆ回路１３は、テクスチャエンジン回路１２から入力した画素データＳ１２に対応するｚデータと、ｚバッファ２２に記憶されているｚデータとの比較を行い、入力した画素データＳ１２によって描画される画像が、前回、ディスプレイバッファ２１に書き込まれた画像より、手前（視点側）に位置するか否かを判断し、手前に位置する場合には、画像データＳ１２に対応するｚデータでｚバッファ２２に記憶されたｚデータを更新する。
【０１６０】
ＣＲＴコントローラ回路１４
ＣＲＴコントローラ回路１４は、与えられた水平および垂直同期信号に同期して、図示しないＣＲＴに表示するアドレスを発生し、ディスプレイバッファ２１から表示データを読み出す要求をメモリＩ／Ｆ回路１３に出力する。この要求に応じて、メモリＩ／Ｆ回路１３は、ディスプレイバッファ２１から一定の固まりで表示データを読み出す。ＣＲＴコントローラ回路１４は、ディスプレイバッファ２１から読み出した表示データを記憶するＦＩＦＯ(First In First Out)回路を内蔵し、一定の時間間隔で、ＲＡＭＤＡＣ回路１５に、ＲＧＢのインデックス値を出力する。
【０１６１】
ＲＡＭＤＡＣ回路１５
ＲＡＭＤＡＣ回路１５は、各インデックス値に対応するＲ，Ｇ，Ｂデータを記憶しており、ＣＲＴコントローラ回路１４から入力したＲＧＢのインデックス値に対応するデジタル形式のＲ，Ｇ，Ｂデータを、Ｄ／Ａコンバータに転送し、アナログ形式のＲ，Ｇ，Ｂデータを生成する。ＲＡＭＤＡＣ回路１５は、この生成されたＲ，Ｇ，ＢデータをＣＲＴに出力する。
【０１６２】
レンダリング回路５の実現手法
以下、本実施形態に係る同一半導体チップ内に混載されるレンダリング回路５のロジック回路とＤＲＡＭ１６およびＳＲＡＭ１７等からなる２次メモリとの好適な構成、配置および配線方法について、図１６〜図１８に関連付けて説明する。
【０１６３】
本実施形態においては、ＤＲＡＭ１６は、たとえば図１６に示すように、４つのＤＲＡＭモジュール１４７１〜１４７４に分割されており、メモリＩ／Ｆ回路１３には、各ＤＲＡＭモジュール１４７１〜１４７４に対応したメモリコントローラ１４４１〜１４４４、並びにこれらメモリコントローラ１４４１にデータを分配するディストリビュータ１４４５が設けられている。
そして、メモリＩ／Ｆ回路１３は、各ＤＲＡＭモジュール１４７１〜１４７４に対して、図１６に示すように、ピクセルデータを、表示領域において隣接した部分は、異なるＤＲＡＭモジュールとなるように配置する。
これにより、三角形のような平面を描画する場合には面で同時に処理できることになるため、それぞれのＤＲＡＭモジュールの動作確率は非常に高くなっている。
【０１６４】
前述した描画処理においては、最終的にはピクセルの一つ一つのアクセスにまで集約されてくることになる。したがって、ピクセル一つ一つの処理が同時並行処理されることにより、描画性能は並行処理の数だけ増加できることが理想である。
そのために、３次元コンピュータグラフィックスシステム１におけるメモリシステムを構成するメモリＩ／Ｆ回路１３においても、同時並行処理が行える構成がとられている。
【０１６５】
グラフィック描画処理においては、前述したように、ピクセルに打ち込むところの処理回路は、ＤＲＡＭと頻繁にデータのやりとりを行う必要があることがわかる。
そのため、本実施形態では、図１７に示すように、ピクセル処理を制御する機能ブロックであるピクセル処理モジュール１４４６，１４４７，１４４８，１４４９をメモリコントローラから物理的に分離し、かつ、これらピクセル処理モジュール１４４６，１４４７，１４４８，１４４９を対応するＤＲＡＭモジュール１４７１，１４７２，１４７３，１４７４の近くに配置（近接配置）している。
【０１６６】
ピクセル処理モジュール１４４６，１４４７，１４４８，１４４９は、（Ｒ，Ｇ，Ｂ）カラーのリード（Ｒｅａｄ）／モディファイ（Ｍｏｄｉｆｙ）／ライト（Ｗｒｉｔｅ）処理および、隠面処理のための以前に描画している深さデータと、今から描画しようとしているデータの深さを比較して、その結果により書き戻したりする作業に関する処理を全て行う。
これら作業をすべてピクセル処理モジュール１４４６，１４４７，１４４８，１４４９で行うことで、ＤＲＡＭモジュール１４７１，１４７２，１４７３，１４７４との配線長が短いモジュール内で、ＤＲＡＭとのやりとりを完結することが可能となる。
そのため、ＤＲＡＭとの配線数、すなわち、転送のビット数を多くとっても、面積に対する配線が占める割合を、少なく抑えることができることから、動作速度向上および、配線面積の縮小化が可能となっている。
【０１６７】
ディストリビュータ等を含むＤＲＡＭ間制御モジュール１４５０に関しては、描画処理としての、ＤＤＡセットアップ回路１０のＤＤＡセットアップ演算、トライアングルＤＤＡ回路１１のトライアングルＤＤＡ演算、テクスチャエンジン回路１２のテクスチャ貼り付け、並びに、ＣＲＴコントロール回路１４による表示処理等に比較して、それぞれのＤＲＡＭモジュール（ＤＲＡＭ＋ピクセル処理）との関連も強く、ＤＲＡＭモジュール１４７１，１４７２，１４７３，１４７４との間の信号線が最も多くなるところである。
そのため、ＤＲＡＭ間制御モジュール１４５０は、それぞれのＤＲＡＭモジュール１４７１，１４７２，１４７３，１４７４の中心付近に配置して、最長配線長ができるだけ短くなるように考慮している。
【０１６８】
また、ピクセル処理モジュール１４４６，１４４７，１４４８，１４４９とＤＲＡＭ間制御モジュール１４５０との接続のための信号入出力端子については、図１７に示すように、それぞれのピクセル処理モジュール１４４６，１４４７，１４４８，１４４９における入出力端子を同じにするのではなく、個々のピクセル処理モジュールと、ＤＲＡＭ間制御モジュール１４５０間が最適（最短）に配線されるように、個々のピクセル処理モジュールにおける信号の入出力端子位置を調整してある。
【０１６９】
具体的には、ピクセル処理モジュール１４４６は、図１７においてモジュール下縁部の右端側に入出力端子Ｔ１４４６ａが形成されている。そして、この入出力端子Ｔ１４４６ａがＤＲＡＭ間制御モジュール１４５０の上縁部の左端側に形成された入出力端子Ｔ１４５０ａと対向するように配置されて、両端子Ｔ１４４６ａおよびＴ１４５０ａが最短距離をもって接続されている。
そして、ピクセル処理モジュール１４４６には、図１７において上縁部の中央部にＤＲＡＭモジュール１４７１との接続用入出力端子Ｔ１４４６ｂが形成されている。
【０１７０】
ピクセル処理モジュール１４４７は、図１７においてモジュール下縁部の左端側に入出力端子Ｔ１４４７ａが形成されている。そして、この入出力端子Ｔ１４４７ａがＤＲＡＭ間制御モジュール１４５０の上縁部の右端側に形成された入出力端子Ｔ１４５０ｂと対向するように配置されて、両端子Ｔ１４４７ａおよびＴ１４５０ｂが最短距離をもって接続されている。
そして、ピクセル処理モジュール１４４７には、図１７において上縁部の中央部にＤＲＡＭモジュール１４７２との接続用入出力端子Ｔ１４４７ｂが形成されている。
【０１７１】
ピクセル処理モジュール１４４８は、図１７においてモジュール上縁部の右端側に入出力端子Ｔ１４４８ａが形成されている。そして、この入出力端子Ｔ１４４８ａがＤＲＡＭ間制御モジュール１４５０の下縁部の左端側に形成された入出力端子Ｔ１４５０ｃと対向するように配置されて、両端子Ｔ１４４８ａおよびＴ１４５０ｃが最短距離をもって接続されている。
そして、ピクセル処理モジュール１４４８には、図１７において下縁部の中央部にＤＲＡＭモジュール１４７３との接続用入出力端子Ｔ１４４８ｂが形成されている。
【０１７２】
ピクセル処理モジュール１４４９は、図１７においてモジュール上縁部の左端側に入出力端子Ｔ１４４９ａが形成されている。そして、この入出力端子Ｔ１４４９ａがＤＲＡＭ間制御モジュール１４５０の下縁部の右端側に形成された入出力端子Ｔ１４５０ｄと対向するように配置されて、両端子Ｔ１４４９ａおよびＴ１４５０ｄが最短距離をもって接続されている。
そして、ピクセル処理モジュール１４４９には、図１７において下縁部の中央部にＤＲＡＭモジュール１４７４との接続用入出力端子Ｔ１４４９ｂが形成されている。
【０１７３】
なお、ピクセル処理モジュール１４４６，１４４７，１４４８，１４４９は、各ＤＲＡＭモジュール１４７１，１４７２，１４７３，１４７４からＤＲＡＭ間制御モジュール１４５０に至る経路を、上記のようにして最適な長さにしても、処理速度要求が満足できない処理に関しては、たとえばレジスタで分断した少なくとも１段のパイプライン処理をとり得、所望の処理速度を達成できるように構成されている。
【０１７４】
また、本実施形態に係るＤＲＡＭモジュール１４７１〜１４７４は図１８に示すように構成されている。なお、ここでは、ＤＲＡＭモジュール１４７１を例に説明するが、他のＤＲＡＭモジュール１４７２〜１４７４も同様の構成を有することから、その説明は省略する。
【０１７５】
ＤＲＡＭモジュール１４７１は、図１８に示すように、メモリセルがマトリクス状に配置され、ロウアドレスＲＡ、カラムアドレスＣＡに基づいて選択される図示しないワード線およびビット線を通してアクセスされるＤＲＡＭコア１４８０、ロウデコーダ１４８１、センスアンプ１４８２、カラムデコーダ１４８３、およびＳＲＡＭ等からなるいわゆるキャッシュメモリと同様の機能を備えた２次メモリ１４８４を有している。
【０１７６】
本実施形態のように、ＤＲＡＭモジュール毎に、グラフィックス描画におけるピクセル処理を制御する機能ブロックとしてのピクセル処理モジュール１４４６〜１４４９と、ＤＲＡＭモジュールの２次メモリ１４８４とがＤＲＡＭモジュールに近接配置されている。
そして、この場合、ＤＲＡＭのいわゆる長辺方向が、ＤＲＡＭコア１４８０のカラム方向になるように配置されている。
【０１７７】
図１８の構成においてランダムな読み出し（リード）に関して見てみると、ピクセル処理モジュール１４４６から制御信号と必要なアドレス信号Ｓ１４４６が、アドレス制御パスからＤＲＡＭモジュール１４７１に供給され、それをもとに、ロウアドレスＲＡとカラムアドレスＣＡが生成され、所望のロウに相当するＤＲＡＭのデータがセンスアンプ１４８２を通して読み出される。
センスアンプ１４８０を通ったデータは所望のカラムアドレスＣＡに従って、カラムデコーダにて必要なカラムが集約され、ランダムアクセスポートから所望のロウ／カラムに対応した、ＤＲＡＭのデータＤ１４７１がパスを介してピクセル処理モジュール１４４６に転送される。
【０１７８】
２次メモリにデータを書き込む場合は、ピクセル処理モジュール１４４６から制御信号と必要なアドレス信号Ｓ１４４６が、アドレス制御パスからＤＲＡＭモジュール１４７１に供給され、それをもとにロウアドレスのみが生成され、１ロウ分のデータが一気にＤＲＡＭ１６からＳＲＡＭ１７等からなる２次メモリ１４８４に書き込まれる。
この場合、ＤＲＡＭのいわゆる長辺方向が、ＤＲＡＭコア１４８０のカラム方向になるように配置されていることから、ロウ方向に配置する場合に比較して、ロウアドレス指定のみで、そのロウアドレスに対応している１ロウ分のデータを、一度に２次メモリ１４８４にロードできるビット数が格段に増加する。
【０１７９】
また、テクスチャ処理モジュールとしてのテクスチャエンジン回路１４３への２次メモリ（ＳＲＡＭ）１４８４からのデータＤ１４８４の読み込みは、テクスチャエンジン回路１４３から、制御信号と必要なアドレス信号が、アドレス制御パスからＤＲＡＭに供給され、それに対応したデータＤ１４８４がデータパスを介してテクスチャエンジン回路１４３へ転送される。
【０１８０】
また、本実施形態においては、図１８に示すように、ピクセル処理モジュールとＤＲＡＭモジュールの２次メモリとが、それぞれ互いにＤＲＡＭモジュールの長辺側の同一側に近接配置されている。
これにより、ピクセル処理モジュールとＤＲＡＭモジュールの２次メモリへのデータは、同一のセンスアンプを使うことができるため、ＤＲＡＭコア１４８０の面積増加を最小限に抑えて２ポート化することが可能となっている。
【０１８１】
以下、３次元コンピュータグラフィックシステム１の全体動作について説明する。
ポリゴンレンダリングデータＳ４が、メインバス６を介してメインプロセッサ４からＤＤＡセットアップ回路１０に出力され、ＤＤＡセットアップ回路１０において、ポリゴンの辺と水平方向の差分などを示す変分データＳ１０が生成される。
この変分データＳ１０は、トライアングルＤＤＡ回路１１に出力され、トライアングルＤＤＡ回路１１において、ポリゴン内部の各画素における線形補間された（ｚ，Ｒ，Ｇ，Ｂ，ＣＯＥblend ，ｓ，ｔ，ｑ，ＣＯＥfog ）データが算出される。そして、この算出された（ｚ，Ｒ，Ｇ，Ｂ，ＣＯＥblend ，ｓ，ｔ，ｑ，ＣＯＥfog ）データと、ポリゴンの各頂点の（ｘ，ｙ）データとが、ＤＤＡデータＳ１１として、トライアングルＤＤＡ回路１１からテクスチャエンジン回路１２に出力される。
【０１８２】
次に、図４に示すテクスチャエンジン回路１２の代表点決定回路３０１において代表点が決定され、当該代表点を示す代表点指示データＳ３０１に基づいて代表点決定回路３０１においてｑデータＳ３０２が選択される。
次に、図４および図８に示す縮小率演算回路５０において、ｑデータＳ３０２およびｍａｘｅデータＳ１１ｃを用いて縮小率ＬＯＤが算出される。
次に、図４に示すテクスチャエンジン回路１２の第２のバッファメモリ５１において、ＤＤＡデータＳ１１に含まれる（ｓ，ｔ，ｑ）データＳ１１ａ1 〜Ｓ１１ａ8 について、ｓデータをｑデータで除算する演算と、ｔデータをｑデータで除算する演算とが行われる。
そして、除算結果「ｓ／ｑ」および「ｔ／ｑ」に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥが乗算され、テクスチャ座標データ（ｕ，ｖ）が生成される。
次に、第２のバッファメモリ５１によって、前記生成されたテクスチャ座標データ（ｕ，ｖ）を含む読み出し要求が出力され、メモリＩ／Ｆ回路１３を介して、ＤＲＡＭ１６あるいはＳＲＡＭ１７に記憶された（Ｒ，Ｇ，Ｂ）データＳ１７が読み出される。
そして、このとき、上述したように、図４および図１０に示す構成を用いて、前述したＭＩＰＭＡＰ処理およびテクスチャファンクション処理が行われ、画素データＳ１２が生成される。
この画素データＳ１２は、テクスチャエンジン回路１２からメモリＩ／Ｆ回路１３に出力される。
【０１８３】
そして、メモリＩ／Ｆ回路１３において、テクスチャエンジン回路１２から入力した画素データＳ１２に対応するｚデータと、ｚバッファ２２に記憶されているｚデータとの比較が行なわれ、入力した画素データＳ１２によって描画される画像が、前回、ディスプレイバッファ２１に書き込まれた画像より、手前（視点側）に位置するか否かが判断され、手前に位置する場合には、画像データＳ１２がディスプレイバッファ２１に書き込まれると共に、対応するｚデータでｚバッファ２２に記憶されたｚデータが更新される。
【０１８４】
本発明は上述した第１実施形態には限定されない。
例えば、上述した実施形態では、図５に示すモード「１」〜「８」を指定するファンクションモードデータＦＭＤに基づいて、ＬＩＰ回路６１が動作する場合を例示したが、例えば、ＬＩＰ回路６１がアルファブレンディング処理を行うようにしてもよい。
【０１８５】
また、ＬＩＰ回路６１を共用する処理の内容および数は任意である。例えば、ＬＩＰ回路６１において、テクスチャファンクション処理として、デカル処理やアルファブレンディング処理などを行うようにしてもよい。
【０１８６】
第２実施形態
本実施形態の３次元コンピュータグラフィックシステム５０１は、基本的に前述した第１実施形態の３次元コンピュータグラフィックシステム１と同じであるが、図１に示すテクスチャエンジン回路１２およびメモリＩ／Ｆ回路１３においてパイプライン処理を行う点に特徴を有している。
以下、３次元コンピュータグラフィックシステム５０１の構成要素の機能のうち、前述した第１実施形態の３次元コンピュータグラフィックシステム１と異なる点を説明する。
【０１８７】
ＤＤＡセットアップ回路１０
また、ＤＤＡセットアップ回路１０は、同時に処理を行う８画素のそれぞれについて、処理対象となる三角形の内部に位置するか否かを示す１ビットの有効指示データｖａｌを決定する。具体的には、有効指示データｖａｌは、三角形の内部に位置する画素について「１」とし、三角形の外部に位置する画素について「０」とする。
ＤＤＡセットアップ回路１０は、算出した変分データＳ１０と、各画素の有効指示データｖａｌとをトライアングルＤＤＡ回路１１に出力する。
【０１８８】
トライアングルＤＤＡ回路１１
トライアングルＤＤＡ回路１１は、ＤＤＡセットアップ回路１０から入力した変分データＳ１０を用いて、三角形内部の各画素の線形補間された（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ）データを算出する。
トライアングルＤＤＡ回路１１は、各画素の（ｘ，ｙ）データと、当該（ｘ，ｙ）座標の画素についての（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，ｖａｌ）データとを、ＤＤＡデータ（補間データ）Ｓ１１としてテクスチャエンジン回路１２に出力する。
本実施形態では、トライアングルＤＤＡ回路１１は、並行して処理を行う矩形内に位置する８画素分のＤＤＡデータＳ１１を単位としてテクスチャエンジン回路１２に出力する。
【０１８９】
ここで、ＤＤＡデータＳ１１の（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，ｖａｌ）データは、図１９に示すように、１６１ビットのデータである。
具体的には、Ｒ，Ｇ，Ｂ，αデータがそれぞれ８ビットであり、ｚ，ｓ，ｔ，ｑデータがそれぞれ３２ビットであり、ｖａｌデータが１ビットである。
なお、以下、並行して処理を行う８画素についての（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ，ｖａｌ）データのうち、ｖａｌデータをｖａｌデータＳ２２０1 〜Ｓ２２０8 とし、（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ）データを被演算データＳ２２１1 〜Ｓ２２１8 とする。
すなわち、トライアングルＤＤＡ回路１１は、８画素分の（ｘ，ｙ）データと、ｖａｌデータＳ２２０1 〜Ｓ２２０8 と、被演算データＳ２２１1 〜Ｓ２２１8 からなるＤＤＡデータＳ１１を図１に示すテクスチャエンジン回路１２に出力する。
【０１９０】
テクスチャエンジン回路１２およびメモリＩ／Ｆ回路１３
テクスチャエンジン回路１２による、ＤＤＡデータＳ１１を用いた、縮小率ＬＯＤの算出処理と、「ｓ／ｑ」および「ｔ／ｑ」の算出処理、テクスチャ座標データ（ｕ，ｖ）の算出処理、および、テクスチャバッファ２０からの（Ｒ，Ｇ，Ｂ，α）データの読み出し処理と、メモリＩ／Ｆ回路１３によるｚ比較処理とを、図３に示す演算ブロック２００，２０１，２０２，２０４，２０５でパイプライン方式で順に実行する。
ここで、演算ブロック１９９，２００，２０１，２０２，２０４，２０５は、それぞれ８個の演算サブブロックを内蔵しており、８画素分の演算処理を並行して行う。
ここで、テクスチャエンジン回路１２が演算ブロック１９９，２００，２０１，２０２を内蔵し、メモリＩ／Ｆ回路１３が演算ブロック２０４を内蔵している。
また、演算ブロック１９９は図４に示す縮小率演算回路５０、代表点決定回路３０１およびｑデータ選択回路３０２に対応し、演算ブロック２００，２０１，２０２は図４に示す読み出し回路５１に対応し、演算ブロック２０３は図４に示すＬＩＰ回路５２，５３，５４およびＬＩＰ／テクスチャファンクション回路５５に対応している。
なお、ＬＩＰ／テクスチャファンクション回路５５では、例えば、ＭＩＭＡＰ処理のレベル補間処理と、モジュレート処理、デカル処理、ハイライト処理、フォギング処理、テクスチャブレンディング処理およびアルファブレンディング処理などのテクスチャファンクション処理のうち一の処理が選択的に行われる。
【０１９１】
〔演算ブロック１９９〕
演算ブロック１９９は、第１実施形態で説明した縮小率演算回路３０４、代表点決定回路３０１およびｑデータ選択回路３０２に対応する処理を行ってテクスチャデータの縮小率ＬＯＤを算出して演算ブロック２００に出力する。
縮小率ＬＯＤは、演算ブロック２００，２０１，２０２，２０３に順にシフトされる。
また、演算ブロック１９９は、トライアングルＤＤＡ回路１１から入力したＤＤＡデータＳ１１を後段の演算ブロック２００に出力する。
演算ブロック１９９は、ｖａｌデータＳ２２０1 〜Ｓ２２０8 が示す値とは無関係に常に動作する。
【０１９２】
〔演算ブロック２００〕
演算ブロック２００は、ＤＤＡデータＳ１１に含まれる（ｓ，ｔ，ｑ）データを用いて、ｓデータをｑデータで除算する演算と、ｔデータをｑデータで除算する演算とを行う。
演算ブロック２００は、図２０に示すように、８個の演算サブブロック２００1 〜２００8 を内蔵する。
ここで、演算サブブロック２００1 は、被演算データＳ２２１1 およびｖａｌデータＳ２２０1 を入力し、ｖａｌデータＳ２２０1 が「１」、すなわち有効であることを示す場合には、「ｓ／ｑ」および「ｔ／ｑ」を算出し、その算出結果を除算結果Ｓ２００1 として演算ブロック２０１の演算サブブロック２０１1 に出力する。
【０１９３】
また、演算サブブロック２００1 は、ｖａｌデータＳ２２０1 が「０」、すなわち無効であることを示す場合には、演算は行わず、除算結果Ｓ２００1 を出力しないか、あるいは、所定の仮値を示す除算結果Ｓ２００1 を演算ブロック２０１の演算サブブロック２０１1 に出力する。
また、演算サブブロック２００1 は、ｖａｌデータＳ２２０1 を後段の演算サブブロック２０１1 に出力する。
なお、演算サブブロック２００2 〜２００8 も、それぞれ対応する画素について、演算サブブロック２００1 と同じ演算を行い、それぞれ除算結果Ｓ２００2 〜Ｓ２００8 およびｖａｌデータＳ２２０2 〜Ｓ２２０8 を後段の演算ブロック２０１の演算サブブロック２０１2 〜２０１8 にそれぞれ出力する。
【０１９４】
図２１は、演算サブブロック２００1 の内部構成図である。
なお、図３に示す、全ての演算サブブロックは、基本的に、図２１に示す構成をしている。
図２１に示すように、演算サブブロック２００1 は、クロックイネーブラ２１０1 、データ用フリップフロップ２２２、プロセッサエレメント２２３およびフラグ用フリップフロップ２２４を有する。
クロックイネーブラ２１０1 は、システムクロック信号Ｓ２２５を基準としたタイミングでｖａｌデータＳ２２０1 を入力し、ｖａｌデータＳ２２０1 のレベルを検出する。そして、クロックイネーブラ２１０1 は、ｖａｌデータＳ２２０1 が、「１」である場合には、例えば、クロック信号Ｓ２１０1 にパルス発生させ、「０」である場合には、クロック信号Ｓ２１０1 にパルス発生させない。
【０１９５】
データ用フリップフロップ２２２は、クロック信号Ｓ２１０1 のパルスを検出すると、被演算データＳ２２１1 を取り込み、プロセッサエレメント２２３に出力する。
プロセッサエレメント２２３は、入力した被演算データＳ２２１1 を用いて前述した除算を行い、除算結果Ｓ２００1 を演算サブブロック２０１1 のデータ用フリップフロップ２２２に出力する。
フラグ用フリップフロップ２２４は、システムクロック信号Ｓ２２５を基準としたタイミングで、ｖａｌデータＳ２２０1 を取り込み、後段の演算ブロック２０１の演算サブブロック２０１1 のフラグ用フリップフロップ２２４に出力する。
なお、図２１に示すシステムクロック信号Ｓ２２５は、図２０に示す演算ブロック１９９、並びに全ての演算サブブロック２００1 〜２００8 ，２０１1 〜２０１8 ，２０２1 〜２０２8 ，２０４1 〜２０４8 のクロックイネーブラおよびフラグ用フリップフロップ２２４に供給される。
すなわち、演算サブブロック２００1 〜２００8 ，２０１1 〜２０１8 ，２０２1 〜２０２8 ，２０４1 〜２０４8 における処理は同期して行われ、同一の演算ブロックに内蔵された８個の演算サブブロックは並行して処理を行う。
【０１９６】
〔演算ブロック２０１〕
演算ブロック２０１は、演算サブブロック２０１1 〜２０１8 を有し、演算ブロック２００から入力した除算結果Ｓ２００1 〜Ｓ２００8 が示す「ｓ／ｑ」および「ｔ／ｑ」に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥを乗じて、テクスチャ座標データ（ｕ，ｖ）を生成する。
演算サブブロック２０１1 〜２０１8 は、それぞれクロックイネーブラ２１１1 〜２１１8 によりｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベル検出を行った結果、当該レベルが「１」の場合にのみ演算を行い、それぞれ演算結果であるテクスチャ座標データＳ２０１1 〜Ｓ２０１8 を、演算ブロック２０２の演算サブブロック２０２1 〜２０２8 に出力する。
【０１９７】
〔演算ブロック２０２〕
演算ブロック２０２は、演算サブブロック２０２1 〜２０２8 を有し、メモリＩ／Ｆ回路１３を介して、ＳＲＡＭ１７あるいはＤＲＡＭ１６に、演算ブロック２０１で生成したテクスチャ座標データ（ｕ，ｖ）を含む読み出し要求を出力し、メモリＩ／Ｆ回路１３を介して、ＳＲＡＭ１７あるいはテクスチャバッファ２０に記憶されているテクスチャデータを読み出すことで、（ｕ，ｖ）データに対応したテクスチャアドレスに記憶された（Ｒ，Ｇ，Ｂ，α）データＳ１７を得る。
なお、テクスチャバッファ２０には、ＭＩＰＭＡＰ（複数解像度テクスチャ）などの複数の縮小率に対応したテクスチャデータが記憶されている。ここで、何れの縮小率のテクスチャデータを用いるかは、所定のアルゴリズムを用いて、前記三角形を単位として決定される。
また、ＳＲＡＭ１７には、テクスチャバッファ２０に記憶されているテクスチャデータのコピーが記憶されている。
演算サブブロック２０２1 〜２０２8 は、それぞれクロックイネーブラ２１２1 〜２１２8 によりｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベル検出を行った結果、当該レベルが「１」の場合にのみ読み出し処理を行い、それぞれ読み出した（Ｒ，Ｇ，Ｂ，α）データＳ１７を、（Ｒ，Ｇ，Ｂ，α）データＳ２０２1 〜Ｓ２０２8 として、それぞれ演算ブロック２０３の演算サブブロック２０３1 〜２０３8 に出力する。
【０１９８】
なお、テクスチャエンジン回路１２は、フルカラー方式の場合には、テクスチャバッファ２０から読み出した（Ｒ，Ｇ，Ｂ，α）データを直接用いる。一方、テクスチャエンジン回路１２は、インデックスカラー方式の場合には、予め作成したカラールックアップテーブル（ＣＬＵＴ）をテクスチャＣＬＵＴバッファ２３から読み出して、内蔵するＳＲＡＭに転送および記憶し、このカラールックアップテーブルを用いて、テクスチャバッファ２０から読み出したカラーインデックスに対応する（Ｒ，Ｇ，Ｂ）データを得る。
【０１９９】
〔演算ブロック２０３〕
演算ブロック２０３は、演算サブブロック２０３1 〜２０３8 を有し、図４に示すＬＩＰ回路５２，５３，５４およびＬＩＰ／テクスチャファンクション回路５５を用いて、例えば、ＭＩＭＡＰ処理のレベル補間処理と、モジュレート処理、デカル処理、ハイライト処理、フォギング処理、テクスチャブレンディング処理およびアルファブレンディング処理などのテクスチャファンクション処理のうち一の処理を選択的に行う。
【０２００】
そして、演算ブロック２０３は、処理結果である（Ｒ，Ｇ，Ｂ，α）データＳ２０３1 〜Ｓ２０３8 を、演算ブロック２０４に出力する。
演算サブブロック２０３1 〜２０３8 は、それぞれクロックイネーブラ２１３1 〜２１３8 によりｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベル検出を行った結果、当該レベルが「１」の場合にのみ混合テクスチャファンクション処理および（Ｒ，Ｇ，Ｂ，α）データＳ２０３1 〜Ｓ２０３8 の出力を行う。
【０２０１】
〔演算ブロック２０４〕
演算ブロック２０４は、演算サブブロック２０４1 〜２０４8 を有し、入力した（Ｒ，Ｇ，Ｂ，α）データＳ２０３1 〜Ｓ２０３8 について、ｚバッファ２２に記憶されたｚデータの内容を用いて、ｚ比較を行い、（Ｒ，Ｇ，Ｂ，α）データＳ２０３1 〜Ｓ２０３8 によって描画する画像が、前回、ディスプレイバッファ２１に描画した値よりも手前（視点側）に位置する場合には、ｚバッファ２２を更新すると共に、（Ｒ，Ｇ，Ｂ，α）データＳ２０３1 〜Ｓ２０３8 を、（Ｒ，Ｇ，Ｂ，α）データＳ２０４1 〜Ｓ２０４8 として、ディスプレイバッファ２１に書き込む。
演算サブブロック２０４1 〜２０４8 は、それぞれクロックイネーブラ２１４1 〜２１４8 によりｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベル検出を行った結果、当該レベルが「１」の場合にのみ上述したｚ比較およびディスプレイバッファ２１への書き込みを行う。
なお、メモリＩ／Ｆ回路１３によるＤＲＡＭ１６に対してのアクセスは、１６画素について同時に行なわれる。
【０２０２】
以下、３次元コンピュータグラフィックシステム５０１の全体動作について説明する。
ポリゴンレンダリングデータＳ４が、メインバス６を介してメインプロセッサ４からＤＤＡセットアップ回路１０に出力され、ＤＤＡセットアップ回路１０において、三角形の辺と水平方向の差分などを示す変分データＳ１０が生成される。
この変分データＳ１０は、トライアングルＤＤＡ回路１１に出力され、トライアングルＤＤＡ回路１１において、三角形内部の各画素における線形補間された（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ）データが算出される。そして、この算出された（ｚ，Ｒ，Ｇ，Ｂ，α，ｓ，ｔ，ｑ）データと、三角形の各頂点の（ｘ，ｙ）データとが、ＤＤＡデータＳ１１として、トライアングルＤＤＡ回路１１からテクスチャエンジン回路１２に出力される。
【０２０３】
次に、テクスチャエンジン回路１２およびメモリＩ／Ｆ回路１３において、ＤＤＡデータＳ１１を用いて、縮小率ＬＯＤの算出処理、「ｓ／ｑ」および「ｔ／ｑ」の算出処理、テクスチャ座標データ（ｕ，ｖ）の算出処理、テクスチャバッファ２０からのデジタルデータとしての（Ｒ，Ｇ，Ｂ，α）データの読み出し処理、テクスチャファンクション処理、および、ｚ比較処理が、図２０に示す演算ブロック１９９，２００，２０１，２０２，，２０３，２０４でパイプライン方式で順に実行される。
【０２０４】
次に、図１に示すテクスチャエンジン回路１２およびメモリＩ／Ｆ回路１３のパイプライン処理の動作について説明する。
ここでは、例えば、図７に示す矩形２５１内の８画素について同時処理する場合を考える。この場合には、ｖａｌデータＳ２２０1 ，Ｓ２２０2 ，Ｓ２２０3 ，Ｓ２２０5 ，Ｓ２２０6 が「０」を示し、ｖａｌデータＳ２２０4 ，Ｓ２２０7 ，Ｓ２２０8 が「１」を示している。
【０２０５】
そして、ｖａｌデータＳ２２０1 〜Ｓ２２０8 および被演算データＳ２２１1 〜Ｓ２２１8 が、演算ブロック１９９に入力され、演算ブロック１９９において、Ｉ7 の画素を代表点として縮小率ＬＯＤが算出され、当該算出された縮小率ＬＯＤ、ｖａｌデータＳ２２０1 〜Ｓ２２０8 および被演算データＳ２２１1 〜Ｓ２２１8 が演算ブロック２００に出力される。
【０２０６】
次に、ｖａｌデータＳ２２０1 〜Ｓ２２０8 および被演算データＳ２２１1 〜Ｓ２２１8 が、それぞれ対応する演算サブブロック２００1 〜２００8 のクロックイネーブラ２１０1 〜２１０8 に入力される。
そして、クロックイネーブラ２１０1 〜２１０8 において、それぞれｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベルが検出される。具体的には、クロックイネーブラ２１０4 ，２１０7 ，２１０8 において「１」が検出され、クロックイネーブラ２１０1 ，２１０2 ，２１０3 ，２１０5 ，２１０6 において「０」が検出される。
その結果、演算サブブロック２００4 ，２００7 ，２００8 においてのみ、被演算データＳ２２１4 ，Ｓ２２１7 ，Ｓ２２１8 を用いて、「ｓ／ｑ」および「ｔ／ｑ」が算出され、当該除算結果Ｓ２００4 ，Ｓ２００7 ，Ｓ２００8 が演算ブロック２０１の演算ブロック２０１4 ，２０１7 ，２０１8 に出力される。
一方、演算サブブロック２００1 ，２００2 ，２００3 ，２００5 ，２００6 では、除算は行なわれない。
また、除算結果Ｓ２００4 ，Ｓ２００7 ，Ｓ２００8 の出力と同期して、ｖａｌデータＳ２２０1 〜Ｓ２２０8 が、演算ブロック２０１の演算サブブロック２０１1 〜２０１8 に出力される。
【０２０７】
次に、演算サブブロック２０１1 〜２０１8 のクロックイネーブラ２１０1 〜２１０8 において、それぞれｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベルが検出される。
そして、この検出結果に基づいて、演算サブブロック２０１4 ，２０１7 ，２０１8 においてのみ、除算結果Ｓ２００4 ，Ｓ２００7 ，Ｓ２００8 が示す「ｓ／ｑ」および「ｔ／ｑ」に、それぞれテクスチャサイズＵＳＩＺＥおよびＶＳＩＺＥを乗じて、テクスチャ座標データＳ２０２4 ，Ｓ２０２7 ，Ｓ２０２8 が生成され、それぞれ演算ブロック２０２の演算サブブロック２０２4 ，２０２7 ，２０２8 に出力される。
一方、演算サブブロック２０１1 ，２０１2 ，２０１3 ，２０１5 ，２０１6 では、演算は行なわれない。
また、テクスチャ座標データＳ２０２4 ，Ｓ２０２7 ，Ｓ２０２8 の出力と同期して、ｖａｌデータＳ２２０1 〜Ｓ２２０8 が、演算ブロック２０２の演算サブブロック２０２1 〜２０２8 に出力される。
【０２０８】
次に、演算サブブロック２０２1 〜２０２8 のクロックイネーブラ２１２1 〜２１２8 において、それぞれｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベルが検出される。
そして、この検出結果に基づいて、演算サブブロック２０２4 ，２０２7 ，２０２8 においてのみ、ＳＲＡＭ１７あるいはテクスチャバッファ２０に記憶されているテクスチャデータの読み出し処理が行なわれ、（ｓ，ｔ）データに対応したテクスチャアドレスに記憶された（Ｒ，Ｇ，Ｂ，α）データが読み出される。そして、この読み出した（Ｒ，Ｇ，Ｂ，α）データＳ２０２4 ，Ｓ２０２7 ，Ｓ２０２8 が、演算ブロック２０４の演算サブブロック２０３4 ，２０３7 ，２０３8 に出力される。
一方、演算サブブロック２０２1 ，２０２2 ，２０２3 ，２０２5 ，２０２6 では、読み出し処理は行なわれない。
また、（Ｒ，Ｇ，Ｂ，α）データＳ２０２4 ，Ｓ２０２7 ，Ｓ２０２8 の出力と同期して、ｖａｌデータＳ２２０1 〜Ｓ２２０8 が、演算ブロック２０３の演算サブブロック２０３1 〜２０３8 に出力される。
【０２０９】
次に、演算サブブロック２０３1 〜２０３8 のクロックイネーブラ２１２1 〜２１２8 において、それぞれｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベルが検出される。
そして、この検出結果に基づいて、演算サブブロック２０３4 ，２０３7 ，２０３8 においてのみ、テクスチャファンクション処理が行われ、それによって得られた（Ｒ，Ｇ，Ｂ，α）データＳ２０３4 ，２０３7 ，２０３8 を、演算ブロック２０４に出力する。
一方、演算サブブロック２０３1 ，２０３2 ，２０３3 ，２０３5 ，２０３6 では、テクスチャファンクション処理は行なわれない。
【０２１０】
次に、演算サブブロック２０４1 〜２０４8 のクロックイネーブラ２１４1 〜２１４8 において、それぞれｖａｌデータＳ２２０1 〜Ｓ２２０8 のレベルが検出される。
そして、この検出結果に基づいて、演算サブブロック２０４4 ，２０４7 ，２０４8 においてのみ、（Ｒ，Ｇ，Ｂ，α）データＳ２０３4 ，Ｓ２０３7 ，Ｓ２０３8 について、ｚバッファ２２に記憶されたｚデータの内容を用いて、ｚ比較が行なわれ、（Ｒ，Ｇ，Ｂ，α）データＳ２０３4 ，Ｓ２０３7 ，Ｓ２０３8 によって描画する画像が、前回、ディスプレイバッファ２１に描画した値よりも手前に位置する場合には、ｚバッファ２２が更新されると共に、（Ｒ，Ｇ，Ｂ，α）データＳ２０３4 ，Ｓ２０３7 ，Ｓ２０３8 がディスプレイバッファ２１に書き込まれる。
【０２１１】
すなわち、テクスチャエンジン回路１２およびメモリＩ／Ｆ回路１３では、図６に示す矩形２５１の画素について同時に処理を行なう場合に、三角形２５０の外に位置する画素についての処理は行なわない。すなわち、図６に示す矩形２５１内の画素についての演算を行なっている間は、演算サブブロック２００1 ，２００2 ，２００3 ，２００5 ，２００6 ，２０１1 ，２０１2 ，２０１3 ，２０１5 ，２０１6 ，２０２1 ，２０２2 ，２０２3 ，２０２5 ，２０２6 ，２０４1 ，２０４2 ，２０４3 ，２０４5 ，２０４6 は停止した状態になり、これらの演算サブブロックは電力を消費しない。
【０２１２】
以上説明したように、３次元コンピュータグラフィックシステム５０１は、前述した第１実施形態の３次元コンピュータグラフィックシステム１の効果に加えて以下に示す効果をさらに有する
すなわち、３次元コンピュータグラフィックシステム５０１によれば、テクスチャエンジン回路１２におけるパイプライン処理において、同時処理する８画素のうち、処理対象となる三角形の外部に位置する画素についての演算は行なわないようにすることができる。
そのため、テクスチャエンジン回路１２における消費電力を大幅に低減できる。その結果、３次元コンピュータグラフィックシステム５０１の電源として、簡単かつ安価なものを用いることができる。
なお、テクスチャエンジン回路１２は、図２０および図２１に示すように、各演算サブブロックに、クロックイネーブラおよび１ビットのフラグ用フリップフロップを組み込むことで、上述した機能を実現するが、クロックイネーブラおよび１ビットのフラグ用フリップフロップの回路規模は小さいため、テクスチャエンジン回路１２の回路規模が大幅に増大することはない。
【０２１３】
本発明は上述した実施形態には限定されない。
上述した実施形態では、同時に処理を行おうとする複数の画素データについて共通の縮小率を用いて記憶回路からテクスチャデータを読み出す場合を例示したが、前記複数の画素データについての個別に縮小率を算出する複数の縮小率算出回路を設けてもよい。この場合に、読み出し回路は、同時に処理を行おうとする複数の画素データにそれぞれ対応した複数設けられ、記憶回路、複数の縮小率算出回路および複数の読み出し回路が一つの半導体チップに混載される。
また、読み出し回路によって読み出したテクスチャデータを用いて同時に処理を行って複数の表示データを生成する複数の画像処理回路と、当該生成した表示データをＤＲＡＭなどの記憶回路に書き込む複数の書き込み回路とをさらに設け、記憶回路、複数の縮小率算出回路、複数の読み出し回路、複数の画像処理回路および複数の書き込み回路を一つの半導体チップに混載してもよい。
【０２１４】
【発明の効果】
以上説明したように、本発明の画像処理装置によれば、小規模な装置構成で、高画質を安定して提供できる。
【図面の簡単な説明】
【図１】図１は、本発明の実施形態の３次元コンピュータグラフィックシステムの構成図である。
【図２】図２は、図１に示すＤＤＡセットアップ回路における有効ビットデータの生成方法を説明するための図である。
【図３】図３は、図１に示すＳＡＲＡＭおよひテクスチャバッファに記憶されているＭＩＰＭＡＰ処理に用いられるテクスチャデータを説明するための図である。
【図４】図４は、図１に示すテクスチャエンジン回路の構成図である。
【図５】図５は、図４に示す代表点決定回路における処理のフローチャートである。
【図６】図６は、図４に示す代表点決定回路における処理を説明するための図である。
【図７】図７は、図２に示す三角形を処理対象としている場合の代表点の具体例を説明するための図である。
【図８】図８は、図４に示す縮小率算出回路の構成図である。
【図９】図９は、図８に示す縮小率算出回路の処理内容を説明するための図である。
【図１０】図１０は、図４に示すＬＩＰ／テクスチャファンクション回路の構成図である。
【図１１】図１１は、各モードにおいて、ＬＩＰ回路に入力されるデータを説明するための図である。
【図１２】図１２は、ＬＩＰ回路からＬＩＰ／テクスチャファンクション回路へのミップマップデータの入力タイミングおよびレベル補間処理の実行タイミングを説明するための図である。
【図１３】図１３は、図４に示すＬＩＰ回路の処理を説明するための図である。
【図１４】図１４は、図４に示すＬＩＰ回路の処理を説明するための図である。
【図１５】図１５は、図１３に示す前段の加算回路の部分構成図である。
【図１６】図１６は、図１に示すＤＲＡＭに対してのデータ格納方法を説明するための図である。
【図１７】図１７は、図１に示すレンダリング回路のロジック回路とＤＡＲＡＭおよび２次メモリとの好適な構成、配置および配線方法を説明するための図である。
【図１８】図１８は、図１７に示すＤＲＡＭモジュールの構成を説明するための図である。
【図１９】図１９は、本発明の第２実施形態の３次元コンピュータグラフィックシステムにおいて、図１に示すトライアングルＤＤＡ回路から出力されるＤＤＡデータのフォーマットを説明するための図である。
【図２０】図２０は、本発明の第２実施形態の３次元コンピュータグラフィックシステムにおけるテクスチャエンジン回路およびメモリＩ／Ｆ回路の部分構成図である。
【図２１】図２１は、図２０に示す演算サブブロックの構成図である。
【図２２】図２２は、ＭＩＰＭＡＰフィルタリング処理を説明するための図である。
【図２３】図２３は、従来の一般的なテクスチャマッピング装置を説明するための図である。
【図２４】図２４は、図２３に示すテクスチャマッピング装置における処理のフローチャートである。
【図２５】図２５は、高速処理を実現するテクスチャマッピング装置を説明するための図である。
【符号の説明】
１…３次元コンピュータグラフィックシステム、２…メインメモリ、３…Ｉ／Ｏインタフェース回路、４…メインプロセッサ、５…レンダリング回路、１０…ＤＤＡセットアップ回路、１１…トライアングルＤＤＡ回路、１２…テクスチャエンジン回路、１３…メモリＩ／Ｆ回路、１４…ＣＲＴコントローラ回路、１５…ＲＡＭＤＡＣ回路、１６…ＤＲＡＭ、１７…ＳＲＡＭ、２０…テクスチャバッファ、２１…ディスプレイバッファ、２２…Ｚバッファ、２３…テクスチャＣＬＵＴバッファ、３０１…代表点決定回路、３０２…ｓｔｑ選択回路、５０…縮小率演算回路、５１…テクスチャデータ読み出し回路、５５…ＬＩＰ／テクスチャファンクション回路
【図１】
0004325038.tif 000002
【図２】
0004325038.tif 000003
【図３】
0004325038.tif 000004
【図４】
0004325038.tif 000005
【図５】
0004325038.tif 000006
【図６】
0004325038.tif 000007
【図７】
0004325038.tif 000008
【図８】
0004325038.tif 000009
【図９】
0004325038.tif 000010
【図１０】
0004325038.tif 000011
【図１１】
0004325038.tif 000012
【図１２】
0004325038.tif 000013
【図１３】
0004325038.tif 000014
【図１４】
0004325038.tif 000015
【図１５】
0004325038.tif 000016
【図１６】
0004325038.tif 000017
【図１７】
0004325038.tif 000018
【図１８】
0004325038.tif 000019
【図１９】
0004325038.tif 000020
【図２０】
0004325038.tif 000021
【図２１】
0004325038.tif 000022
【図２２】
0004325038.tif 000023
【図２３】
0004325038.tif 000024
【図２４】
0004325038.tif 000025
【図２５】
0004325038.tif 000026