(57)【特許請求の範囲】
【請求項１】
処理データをパイプライン処理によりデータ転送するパイプライン処理装置であって、
複数個で１区切りとなった処理データを順次データ転送する複数のパイプラインレジスタと、
パイプライン駆動信号及びフラッシュ信号が入力され、該パイプライン駆動信号及びフラッシュ信号に基づいて前記パイプラインレジスタにおける前記データ転送を制御するパイプラインコントロール手段とを含み、
前記パイプラインコントロール手段が、
前記パイプライン駆動信号が有効になった場合には、前記複数のパイプラインレジスタの中の１のパイプラインレジスタについて該１のパイプラインレジスタの前段のパイプラインレジスタに処理データが存在する場合にのみ該１のパイプラインレジスタへのデータ転送を許可する手段と、
前記フラッシュ信号が有効となった場合には、前記パイプライン駆動信号の有効・無効に無関係に既に入力が終了した１区切りの処理データを前記複数のパイプラインレジスタから自動排出する手段と、
を含むことを特徴とするパイプライン処理装置。
【請求項２】
処理データをパイプライン処理によりデータ転送するパイプライン処理装置であって、
複数個で１区切りとなった処理データを転送クロックを用いて順次データ転送する複数のパイプラインレジスタと、
前記複数のパイプラインレジスタの各々に接続され、接続された前記パイプラインレジスタへの前記転送クロックを用いたデータ転送を許可する信号を生成し出力する複数のパイプラインコントロール手段とを含み、
前記パイプラインコントロール手段が、
前段のパイプラインコントロール手段から入力される入力パイプライン駆動信号あるいは入力フラッシュ信号のうちいずれかが有効となった場合には当該パイプラインコントロール手段が接続されるパイプラインレジスタへのデータ転送を許可する信号を生成するとともに、該入力パイプライン駆動信号を第１の記憶手段に保持し、前回にデータ転送が許可された時に該第１の記憶手段に保持された入力パイプライン駆動信号及び現在前段から入力される入力パイプライン駆動信号が共に有効な場合には、後段のパイプラインコントロール手段へと出力する出力パイプライン駆動信号を有効とするパイプライン駆動許可手段と、
前段のパイプラインコントロール手段から入力される入力フラッシュ信号を第２の記憶手段に保持し、１転送クロック期間前に該第２の記憶手段に保持された入力フラッシュ信号あるいは現在前段から入力される入力フラッシュ信号のうちのいずれかが有効な場合には、後段のパイプラインコントロール手段へと出力する出力フラッシュ信号を有効とするフラッシュ許可手段と、
を含むことを特徴とするパイプライン処理装置。
【請求項３】
請求項２において、
前記パイプライン駆動許可手段が、前記第１の記憶手段に保持されるデータをクリアーする手段を含み、該データクリアー手段により前記第１の記憶手段に保持されるデータをクリアーすることでパイプライン処理装置の初期化を行うことを特徴とするパイプライン処理装置。
【請求項４】
複数のポリゴンの集合で表現された３次元オブジェクトに対して複数のクリッピング面を用いたクリッピング処理を施すためのクリッピング処理装置であって、
入力されるポリゴン画像データに基づいて、該ポリゴンが前記クリッピング面により内分されるか否かを判定する内外判定手段と、
前記内外判定手段によりポリゴンが内分されると判定された場合に、入力されるポリゴン画像データを用いて該ポリゴンについての内分点を演算する内分点演算手段と、
パイプライン駆動信号及びフラッシュ信号を生成し前記内分点演算手段に対して出力する出力コントロール手段とを含み、
前記内分点演算手段が、
複数個で１区切りとなったポリゴン画像データを順次データ転送する複数のパイプラインレジスタと、
前記出力コントロール手段から前記パイプライン駆動信号及び前記フラッシュ信号が入力され、該パイプライン駆動信号及びフラッシュ信号に基づいて前記パイプラインレジスタにおける前記データ転送を制御するパイプラインコントロール手段とを含み、
前記パイプラインコントロール手段が、
前記パイプライン駆動信号が有効になった場合には、前記複数のパイプラインレジスタの中の１のパイプラインレジスタについて該１のパイプラインレジスタの前段のパイプラインレジスタにポリゴン画像データが存在する場合にのみ該１のパイプラインレジスタへのデータ転送を許可する手段と、
前記フラッシュ信号が有効となった場合には、前記パイプライン駆動信号の有効・無効に無関係に既に入力が終了した１区切りのポリゴン画像データを前記複数のパイプラインレジスタから自動排出する手段と、
を含むことを特徴とするクリッピング処理装置。
【請求項５】
請求項４において、
前記内分点演算手段が、ポリゴンの頂点座標間の距離を内分するための除算を行う除算手段を含み、
前記出力コントロール手段が、前記除算手段の除算完了を検出する手段と、該検出手段により除算完了が検出された場合に前記パイプライン駆動信号を有効にする手段とを含むことを特徴とするクリッピング処理装置。
【請求項６】
請求項４において、
１のクリッピング面を用いたクリッピング処理が完了したポリゴン画像データを再度前記内外判定手段及び前記内分点演算手段に入力させ、これにより該ポリゴン画像データに対して他のクリッピング面によるクリッピング処理を施させる手段を含むことを特徴とするクリッピング処理装置。
【請求項７】
請求項４乃至６のいずれかのクリッピング処理装置を含む３次元シミュレータ装置であって、
前記クリッピング処理装置によりクリッピング処理が施されたポリゴンを用いて、仮想３次元空間において観者から見える視界画像を合成する画像合成手段を少なくとも含むことを特徴とする３次元シミュレータ装置。
【請求項８】
パイプライン駆動信号及びフラッシュ信号を用い、複数個で１区切りとなった処理データが入力される複数のパイプラインレジスタのデータ転送をコントロールするパイプライン処理方法であって、
前記パイプライン駆動信号が有効になった場合には、前記複数のパイプラインレジスタの中の１のパイプラインレジスタについて該１のパイプラインレジスタの前段のパイプラインレジスタに処理データが存在する場合にのみ該１のパイプラインレジスタへのデータ転送を許可し、前記フラッシュ信号が有効となった場合には、前記パイプライン駆動信号の有効・無効に無関係に既に入力が終了した１区切りの処理データを前記複数のパイプラインレジスタから自動排出することを特徴とするパイプライン処理方法。
【発明の詳細な説明】
［技術分野］
本発明はパイプライン処理装置およびこれを用いたクリッピング処理装置、３次元シミュレータ装置、パイプライン処理方法に関する。
［背景技術］
従来、３次元シミュレータ装置、例えば疑似３次元画像のビデオゲーム、飛行機および各種乗物の操縦シュミレータ等に使用される３次元シミュレータ装置では、リアルタイムに処理を行うことの必要性から、一般にパイプライン処理と呼ばれる手法によりデータ処理を行っている。
ここで、パイプライン処理とは、機能別のハードウェアを直列に配置し、それぞれの処理負荷を均一化するデータ処理手法をいう。
さて、従来のパイプライン処理装置としては、図20（Ａ）、（Ｂ）に示すように、クロック駆動型パイプライン処理またはデータ駆動型パイプライン処理の２つの手法の処理装置が知られている。
図20（Ａ）に示すクロック駆動型パイプライン処理装置では、共通のクロック信号によりクロック駆動されるレジスタ450〜453が直列に接続され、これによりデータ処理部455〜458でのデータ処理が行われる。このクロック駆動型パイプライン処理装置によれば、処理されるべきデータの流れは、全て共通のクロック信号により同期して、同じタイミングで制御されるため、制御方法が極めて簡単であるという利点がある。
また、図20（Ｂ）に示すデータ駆動型パイプライン処理装置は、前段に処理データが存在する場合にのみ駆動されるレジスタ460〜463が直列に接続され、これによりデータ処理部465〜468でのデータ処理が行われる。このデータ駆動型のパイプライン処理装置によれば、各レジスタ460〜463は前段に処理データが存在する場合にのみ駆動され前に進む。したがって、パイプライン処理を行っている際に、全てのレジスタに必ず処理データが存在することになる。この結果、パイプライン処理の目的であるデータ処理の均一化をより効率よく図ることができる。
しかし、上記クロック駆動型パイプライン処理装置およびデータ駆動型パイプライン処理装置には、以下に述べるよう問題点があった。
まず、クロック駆動型パイプライン処理装置では、全てのレジスタ450〜453に共通のクロックを供給し、これにより処理データを転送している。したがって、レジスタの前段に処理データが存在しない場合でも、クロックに同期して次々に処理データが転送されてしまうことになる。この結果、処理データが入力されないレジスタが存在すると、パイプライン処理の際に、処理データのないレジスタが存在することとなり、パイプライン処理の目的であるデータ処理の均一化を図ることができない。
次に、データ駆動型パイプライン処理装置であるが、これについては、まず、その制御方法、構成方法がなかなか容易ではないという欠点がある。即ち、この手法によれば、前段に処理データが存在する場合にのみ処理データを前に進めるよう制御するコントロール回路を設けなければならない。しかし、このようなコントロール回路を設けた場合、その構成、制御方法をどのようなものにするかは、なかなか容易な問題ではない。また、このコントロール回路は全てのレジスタ460〜463に接続されるため、ハードウェアの負担を軽減するためにも、その構成はなるべく簡易で、回路点数の少ないものである必要があり、この点が大きな技術的課題となる。
また、データ駆動型パイプライン処理装置では、前段にデータが存在する場合にしか前に進むことができない。したがって、例えば図20（Ｂ）において、レジスタ461は，レジスタ460に処理データが存在する場合にしか、処理データを後段のデータ処理部466,467,468、レジスタ462,463に転送することができない。したがって、前段の状態とは無関係にレジスタ461のデータを後段に転送したいというような事情が生じた場合、パイプライン処理の効率化を図ることができず、全体として処理時間の適正化を図ることができないことになる。
以上のように、クロック駆動型パイプライン処理装置には、制御方法は簡易であるという長所はあるが、パイプライン処理の均一化を図るのが困難であるという欠点がある。逆に、データ駆動型パイプライン処理装置には、ある程度パイプライン処理の均一化を図ることはできるという長所はあるが、制御方法が容易ではなく、場合によってはパイプライン処理の全体的な適正化を図ることができないという欠点がある。したがって、両者のパイプライン処理の長所を兼ね備えたパイプライン処理装置、例えば両者のパイプライン処理を混在できるようなパイプライン処理装置の存在が望まれている。
［発明の開示］
本発明は、以上ような従来の課題に鑑みなされたものであり、その目的とすることは、パイプライン処理の最適化を図ることができ、しかも、構成、制御方法が簡易なパイプライン処理装置、これを用いたクリッピング処理装置、パイプライン処理方法を提供することにある。
前記目的を達成するために本発明は、処理データをパイプライン処理によりデータ転送するパイプライン処理装置であって、
複数個で１区切りとなった処理データを順次データ転送する複数のパイプラインレジスタと、
パイプライン駆動信号及びフラッシュ信号が入力され、該パイプライン駆動信号及びフラッシュ信号に基づいて前記パイプラインレジスタにおける前記データ転送を制御するパイプラインコントロール手段とを含み、
前記パイプラインコントロール手段が、
前記パイプライン駆動信号が有効になった場合には、前記複数のパイプラインレジスタの中の１のパイプラインレジスタについて該１のパイプラインレジスタの前段のパイプラインレジスタに処理データが存在する場合にのみ該１のパイプラインレジスタへのデータ転送を許可する手段と、
前記フラッシュ信号が有効となった場合には、前記パイプライン駆動信号の有効・無効に無関係に既に入力が終了した１区切りの処理データを前記複数のパイプラインレジスタから自動排出する手段とを含むことを特徴とする。
本発明によれば、前段に処理データが存在する場合にのみ処理データが転送され、複数個で１区切りとなった処理データは、入力終了後にフラッシュ信号を有効とすることで自動排出することができる。即ち、パイプライン駆動信号が有効（アサート）の場合には、常に前段に処理データが存在する場合にのみデータ転送が行われることになるため、パイプライン処理が均一化され、処理の高速化が図れる。一方、フラッシュ信号を有効とすることで、前段に処理データが存在するか否かにかかわらず入力終了後の処理データを自動排出でき、これにより、この処理データを次の処理に迅速に利用することができる。この結果、本発明は、特にリアルタイムに演算処理を行わなければならない画像演算処理、例えば、クリッピング処理装置等に最適なパイプライン処理装置となる。
また、本発明は、処理データをパイプライン処理によりデータ転送するパイプライン処理装置であって、
複数個で１区切りとなった処理データを転送クロックを用いて順次データ転送する複数のパイプラインレジスタと、
前記複数のパイプラインレジスタの各々に接続され、接続された前記パイプラインレジスタへの前記転送クロックを用いたデータ転送を許可する信号を生成し出力する複数のパイプラインコントロール手段とを含み、
前記パイプラインコントロール手段が、
前段のパイプラインコントロール手段から入力される入力パイプライン駆動信号あるいは入力フラッシュ信号のうちいずれかが有効となった場合には当該パイプラインコントロール手段が接続されるパイプラインレジスタへのデータ転送を許可する信号を生成するとともに、該入力パイプライン駆動信号を第１の記憶手段に保持し、前回にデータ転送が許可された時に該第１の記憶手段に保持された入力パイプライン駆動信号及び現在前段から入力される入力パイプライン駆動信号が共に有効な場合には、後段のパイプラインコントロール手段へと出力する出力パイプライン駆動信号を有効とするパイプライン駆動許可手段と、
前段のパイプラインコントロール手段から入力される入力フラッシュ信号を第２の記憶手段に保持し、１転送クロック期間前に該第２の記憶手段に保持された入力フラッシュ信号あるいは現在前段から入力される入力フラッシュ信号のうちのいずれかが有効な場合には、後段のパイプラインコントロール手段へと出力する出力フラッシュ信号を有効とするフラッシュ許可手段とを含むことを特徴とする。
本発明では、まず、以下のようにしてデータ駆動型のパイプライン処理が実現される。即ち、１段目のパイプラインコントロール手段の入力パイプライン駆動信号を有効（例えば"1"）にすると、１段目のパイプラインレジスタへのデータ転送が許可されるとともに、１段目の第１の記憶手段に"1"が記憶される。そして、次に、入力パイプライン駆動信号が"1"になると、１段目のパイプラインコントロール手段では前回及び現在の入力パイプライン駆動信号が共に"1"となるため、出力パイプライン駆動信号が"1"となる。これにより２段目のパイプラインレジスタへのデータ転送が許可される。以上のようにして、前段に処理データが存在する場合にのみ処理データが転送されることが保証され、データ駆動型のパイプライン処理が実現される。
一方、本発明では、以下のようにして処理データの自動排出が実現される。即ち、１段目のパイプラインコントロール手段の入力フラッシュ信号が"1"となると、２段目以降の入力フラッシュ信号についても全て"1"となり、全てのパイプラインレジスタのデータ転送がまず許可される。そして、この入力フラッシュ信号は第２の記憶手段に保持される。これにより、１段目の出力フラッシュ信号は少なくとも１転送クロック期間、２段目は少なくとも２転送クロック期間というように、出力フラッシュ信号は、１段後段になる毎に１転送クロック期間長く有効となる。これにより、フラッシュ信号が有効になった時点においてパイプラインレジスタに存在する処理データを全て自動排出することが可能となる。
また、本発明は、前記パイプライン駆動許可手段が、前記第１の記憶手段に保持されるデータをクリアーする手段を含み、該データクリアー手段により前記第１の記憶手段に保持されるデータをクリアーすることでパイプライン処理装置の初期化を行うことを特徴とする。
本発明によれば、データクリア手段により第１の記憶手段に保持されるデータがクリアされる。これにより、データ駆動型のパイプライン処理を施すべき処理データが何も入力されていないという初期状態に戻すことができる。そして、この場合、例えばクリアー信号とフラッシュ信号を同時に有効とすることで、パイプラインレジスタ内に既にあるデータについては全て自動排出しながら、新たなデータをパイプラインレジスタに入力することが可能となる。
また、本発明は、複数のポリゴンの集合で表現された３次元オブジェクトに対して複数のクリッピング面を用いたクリッピング処理を施すためのクリッピング処理装置であって、
入力されるポリゴン画像データに基づいて、該ポリゴンが前記クリッピング面により内分されるか否かを判定する内外判定手段と、
前記内外判定手段によりポリゴンが内分されると判定された場合に、入力されるポリゴン画像データを用いて該ポリゴンについての内分点を演算する内分点演算手段と、
パイプライン駆動信号及びフラッシュ信号を生成し前記内分点演算手段に対して出力する出力コントロール手段とを含み、
前記内分点演算手段が、
複数個で１区切りとなったポリゴン画像データを順次データ転送する複数のパイプラインレジスタと、
前記出力コントロール手段から前記パイプライン駆動信号及び前記フラッシュ信号が入力され、該パイプライン駆動信号及びフラッシュ信号に基づいて前記パイプラインレジスタにおける前記データ転送を制御するパイプラインコントロール手段とを含み、
前記パイプラインコントロール手段が、
前記パイプライン駆動信号が有効になった場合には、前記複数のパイプラインレジスタの中の１のパイプラインレジスタについて該１のパイプラインレジスタの前段のパイプラインレジスタにポリゴン画像データが存在する場合にのみ該１のパイプラインレジスタへのデータ転送を許可する手段と、
前記フラッシュ信号が有効となった場合には、前記パイプライン駆動信号の有効・無効に無関係に既に入力が終了した１区切りのポリゴン画像データを前記複数のパイプラインレジスタから自動排出する手段とを含むことを特徴とする。
本発明によれば、クリッピング処理装置における内分点演算処理において、データ駆動型のパイプライン処理が可能となるとともに、フラッシュ信号による自動排出も可能なパイプライン処理手法を実現できる。特に、クリッピング処理装置に使用されるポリゴン画像データは、複数個で１区切りになった非常に長いデータとなるため、本発明のクリッピング処理手法は非常に有効なものとなる。
また、本発明は、前記内分点演算手段が、ポリゴンの頂点座標間の距離を内分するための除算を行う除算手段を含み、
前記出力コントロール手段が、前記除算手段の除算完了を検出する手段と、該検出手段により除算完了が検出された場合に前記パイプライン駆動信号を有効にする手段とを含むことを特徴とする。
本発明では、内分点演算手段における除算処理が最も時間がかかり、また、この除算処理の結果が出力されるまでは、その後のデータ処理を行うことができない。そこで、この場合には、データ駆動型のパイプライン方式で内分点演算処理を行うことになる。即ち、出力コントロール手段は、除算完了を検出した後に、パイプライン駆動信号を有効とし、パイプラインレジスタ内のポリゴン画像データを１つ前にシフトさせることになる。一方、１区切りのポリゴン画像データについての内分点演算処理が終了すると、フラッシュ信号を有効にすることで、パイプライン駆動信号の有効・無効に関係なく、即ち除算手段における除算完了を待つことなく、ポリゴン画像データが自動排出され、これにより処理の高速化が図られる。
また、本発明は、１のクリッピング面を用いたクリッピング処理が完了したポリゴン画像データを再度前記内外判定手段及び前記内分点演算手段に入力させ、これにより該ポリゴン画像データに対して他のクリッピング面によるクリッピング処理を施させる手段を含むことを特徴とする。
本発明によれば、１つのクリッピング処理装置により、複数のクリッピング面によるクリッピング処理を行わせることができ、更に、透視投影変換処理を行わせることもできる。そして、本発明では、フラッシュ信号により１区切りのポリゴン画像データを自動排出できるため、１のクリッピング面によりクリッピング処理が施されたポリゴン画像データに対して、即座に他のクリッピング面によるクリッピング処理を施すことができ、処理の高速化を図ることができる。
また、本発明は、上記クリッピング処理装置を含む３次元シミュレータ装置であって、
前記クリッピング処理装置によりクリッピング処理が施されたポリゴンを用いて、仮想３次元空間において観者から見える視界画像を合成する画像合成手段を少なくとも含むことを特徴とする。
本発明によれば、クリッピング処理装置によりクリッピング処理を施すことで、画像合成手段において処理しなければならないポリゴンの数を大幅に減少させることができ、リアルタイムに画像合成が可能な３次元シミュレータ装置を提供できることとなる。
【図面の簡単な説明】
図１は、本発明に係るパイプライン処理装置の好適な一例について示すブロック図である。
図２は、パイプラインレジスタ部の一例を示すブロック図である。
図３は、パイプラインコントロール部の一例を示すブロック図である。
図４は、本実施例の基本的な動作を説明するための概略図である。
図５は、本実施例の特徴的な動作を説明するための概略図である。
図６は、本実施例の基本的な動作を示すタイミング図である。
図７は、本実施例の特徴的な動作を示すタイミング図である。
図８は、フラッシュ信号がアサートされた後の後段のフラッシュ信号の状態を示すタイミング図である。
図９は、本実施例が適用される３次元シミュレータ装置の概念について説明するための概略説明図である。
図10は、本実施例が適用される３次元シミュレータ装置の一例について示す概略ブロック図である。
図11は、３次元演算部での画像処理演算について説明するための概略説明図である。
図12は、テクスチャマッピングの概念について説明する概略説明図である。
図13（Ａ）、（Ｂ）は、３次元シミュレータ装置により取り扱われるデータのデータフォーマットの一例を示すものである。
図14は、クリッピング処理装置におけるクリッピング演算手法を説明するための概略説明図である。
図15は、クリッピング処理装置の具体的な回路構成を示すブロック図である。
図16（Ａ）、（Ｂ）、（Ｃ）は、クリッピング処理装置を自己ループモードで使用する場合について示す概略説明図である。
図17（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、クリッピング処理装置の動作について説明するための概略説明図である。
図18（Ａ）、（Ｂ）は、クリッピング処理装置の動作について説明するための概略説明図である。
図19（Ａ）、（Ｂ）、（Ｃ）は、クリッピング処理装置の動作について説明するための概略説明図である。
図20（Ａ）、（Ｂ）は、従来のクロック駆動型パイプライン処理装置とデータ駆動型パイプライン処理装置を示す概略ブロック図である。
［発明を実施するための最良の形態］
1.パイプラインレジスタ部およびパイプラインコントロール部の説明
図１には、本発明に係るパイプライン処理装置の実施例のブロック図が示される。同図に示されるように本パイプライン処理装置は、パイプラインレジスタ部500〜506、およびパイプラインコントロール部530〜536を含んで構成される。これにより、データ処理部520〜524に対し処理すべきデータが供給される。
パイプラインレジスタ部500〜506は、パイプライン処理すべき処理データを実際に記憶する機能を持ち、図１には、説明を簡単にするため４ビットのデータをパイプライン処理する場合について示されている。即ち、それぞれのパイプラインレジスタ部500〜506には４ビットの入力データＤ［0:3］が入力され、後段のデータ処理部に出力データＱ［0:3］を出力している。ただし、データ処理部520〜524においてデータ処理を行わず、データをそのままシフトするのであれば、出力データＱ［0:3］は後段のパイプラインレジスタにそのまま入力される。
パイプラインレジスタ部500〜506におけるデータ転送は、転送信号であるクロックBCLKにより行われる。ただし、クロックBCLKによるデータの転送は、転送許可信号LDにより転送が許可された場合にのみ有効となる。そして、この転送許可信号LDは、パイプラインコントロール部530〜536により生成される。
パイプラインコントロール部530〜536は、パイプラインレジスタ部500〜506におけるデータのパイプライン処理を制御する機能を持つ。具体的には、転送許可信号LDを生成して、これによりパイプラインレジスタ部530〜536におけるデータ転送の許可・不許可を行い、この制御を行っている。
それぞれのパイプラインコントロール部530〜536には、クロック同期をとるためのクロックBCLK、パイプライン駆動を行うための入力パイプライン駆動信号ENIN、フラッシュ動作を行うための入力フラッシュ信号FLASHINが入力される。そして、これらの入力信号により、転送許可信号LD、出力パイプライン駆動信号ENOUT、出力フラッシュ信号FLASHOUTが生成される。転送許可信号LDはパイプラインレジスタ部に出力され、これによりデータ転送の許可・不許可が行われる。また、出力パイプライン駆動信号ENOUTおよび出力フラッシュ信号FLASHOUTは、それぞれ入力パイプライン駆動信号ENIN、入力フラッシュ信号FLASHINとして、後段のパイプラインコントロール部に入力される。
なお、パイプラインレジスタ部500〜506およびパイプラインコントロール部530〜536にはRST信号が入力され、電源投入時における初期リセットが行われる。また、パイプラインコントロール部530〜536には、CLEAR信号の反転信号（以下、＊CLEAR信号と表す）が入力され、データ処理の際の所望の時に、パイプラインコントロール部530〜536の内容をクリアーすることが可能となる。これにより、パイプラインコントロール部に順次記憶されたデータ処理の制御内容を、一度クリアーして、初期状態の制御内容により再度データ処理をやり直すことが可能となる。
図２には、パイプラインレジスタ部500〜506の詳細な構成が示される。同図に示されるように、パイプラインレジスタ部500〜506は、データを保持・転送するためのパイプラインレジスタ510〜516と、これらのパイプラインレジスタ510〜516の転送クロックRCLKを生成するNAND回路518を含んで構成される。
パイプラインレジスタ510〜516には入力データＤ［0:3］が入力され、転送クロックRCLKに従ってこれが保持され、出力データＱ［0:3］として後段に転送される。
NAND回路518には、転送許可信号LDとクロックBCLKが入力される。そして、転送許可信号LDが‘1'の場合のみクロックBCLKが有効となり、前記転送クロックRCLKが生成される。これにより、データ転送の許可・不許可が可能となる。
図３には、パイプラインコントロール部530〜536の詳細な構成が示される。同図に示されるように、パイプラインコントロール部530〜536は、フラッシュ許可部540およびパイプライン駆動許可部550を含んで構成される。なお、インバータ回路546は、クロックBCLKの反転信号（以下、＊BCLKと表す）を生成するものである。
フラッシュ許可部540は、前段からの入力フラッシュ信号FLASHINにより出力フラッシュ信号FLASHOUTを生成する機能を有し、レジスタ542、OR回路544を含んで構成される。レジスタ542は、＊BCLK信号に同期して入力フラッシュ信号FLASHINを保持し、これをOR回路544に出力している。OR回路544は、FLASHIN信号またはレジスタ542に記憶されたデータのいずれか一方が有効な場合（‘1'の場合）、これをFLASHOUT信号として出力する。このFLASHOUT信号は、後段のパイプラインコントロール部のFLASHIN信号となり、後段のフラッシュ動作を許可する信号となる。
パイプライン駆動許可部550は、セレクタ付レジスタ552、AND回路556,558,560、OR回路554を含んで構成される。
OR回路554では、入力パイプライン駆動信号ENINまたは入力フラッシュ信号FLASHINのうちいずれか一方が有効な場合（‘1'の場合）、LD信号が生成され、パイプラインレジスタ部およびAND回路556に出力される。これによりこの段のパイプラインレジスタ部のパイプライン駆動が許可されることになる。
セレクタ付レジスタ552では、SA端子が‘1'の場合にはDA端子に入力されたデータが保持され、SA端子が‘0'の場合にはDB端子に入力されたデータが保持される。このSA端子には、AND回路556の出力が入力され、このAND回路556には、LD信号と＊CLEAR信号が入力されている。また、DA端子にはENIN信号が入力される。さらに、DB端子には、AND回路558の出力が入力され、このAND回路558にはセレクタ付レジスタ552の出力と＊CLEAR信号が入力されている。
この構成により、＊CLEAR信号が‘0'となると、SA端子、DB端子がともに‘0'となり、セレクタ付レジスタ552の記憶データがクリアーされることになる。
また、ENIN信号またはFLASHIN信号のいずれかが‘1'となりLD信号が‘1'となると、SA端子が‘1'となり、ENIN信号の内容が記憶され、セレクタ付レジスタ552の記憶データが更新される。逆に、LD信号が‘0'である場合は、セレクタ付レジスタ552の出力データが入力にフィードバックされ、前回の記憶データが保持されることになる。
ENIN信号およびセレクタ付レジスタ552の出力がともに‘1'の場合、即ち前段のパイプラインレジスタ部およびこの段のパイプラインレジスタ部のデータがともに有効な場合は、出力パイプライン駆動信号ENOUTが生成される。このENOUT信号は、後段のパイプラインコントロール部のENIN信号となり、後段のパイプライン駆動を許可する信号となる。
次に、本パイプライン処理装置の動作について図４、図５を用いて説明する。
図４には、本パイプライン処理装置の基本的な動作が示される。A1,A2,A3〜Anはパイプラインレジスタ部500〜506に記憶される実際の処理データを表している。同図に示されるようにENIN信号がアクティブ状態（‘1'）になるとパイプラインレジスタ部の転送が許可され、パイプラインレジスタ部に記憶されるデータが１段ずつ後段に転送される。例えば、同図では、時刻１においてENIN信号が‘1'となるため、次の時刻２で処理データA1が１段目のパイプラインレジスタ部に入力される。また、同様に時刻3,4においてENIN信号が‘1'となるため、それぞれ時刻4,5において処理データA2,A3が本装置に入力され、既に入力された処理データは順次後段にシフトされる。
同図では、このような複数個で１区切りとなった処理データA1〜A3の入力が終了した後、FLASHIN信号がアクティブ状態（‘1'）となっている。これにより入力された処理データA1〜A3は、ENIN信号とは無関係に自動排出されることになる。例えば、同図では、時刻６においてFLASH信号が‘1'となる。これにより時刻７より、処理データA1〜A3は、クロックBCLKに同期して、次々に後段に転送され、自動排出されることになる。
図５には、本パイプライン処理装置のさらに特徴的な動作が示される。時刻1,3,4においては,ENIN信号が‘1'となるため、処理データA1〜A3が入力される。次に、時刻６において、ENIN信号およびFLASH信号が同時に‘1'となる。これは、処理データA1〜A3の入力が終了し、同時に次の処理データB1が本パイプライン処理装置に入力されることを意味している。したがって、時刻７において処理データB1が１段目に入力される。また、処理データA3は、２段目に転送される。さて、時刻７では、ENIN信号がアクティブ状態となっていない。したがって、時刻８においても処理データB1は１段目に保持されたままとなる。これに対して、処理データA1〜A3については、一度、既にFLASH信号により駆動されているため、ENIN信号とは全く無関係に、クロックBCLKに同期して、次々に後段にシフトして、自動的に外部に排出されることになる。
本パイプライン処理装置は、このような特徴を持つため、本装置を制御する前段のコントロール部は、本装置に処理データを出力し終わった後FLASH信号を‘1'とするだけで、それ以降、この処理データについての制御を行う必要がなくなる。したがって、本装置を制御する前段のコントロール部は、次に出力する処理データの制御のみを行えばよくなる。この結果、回路構成が非常に単純化でき、回路規模を非常に小さくできるとともに、複雑な制御回路の設計が必要なくなるため、設計期間の短縮化を図ることも可能となる。
2.クリアー動作への適用
さて、従来のパイプライン処理装置において、パイプライン処理の内容を一度クリアーにして、パイプライン処理を新たにやり直そうとする場合、パイプラインレジスタ部内の記憶内容を全てクリアーする必要があった。しかし、このようにパイプラインレジスタ部の記憶内容を全てクリアーにすると、クリアー動作の前にパイプラインレジスタ部に記憶されているデータが失われてしまうことになる。しかし、場合によっては、この記憶データを有効なままにして、パイプライン処理の内容だけをクリアーしたい場合がある。このような場合には、例えば、パイプラインレジスタ部の先頭にダミーのデータを入力して、これにより必要なデータを押し出してやる手法も考えられるが、これには無駄な動作、無駄な時間が必要となる。本パイプライン処理装置によれば、このような場合にも、パイプラインレジスタ部内の処理データは有効なままとして、パイプライン処理の内容だけをクリアーにして、クリアー後、即座に新たにデータを入力してパイプライン処理をやり直すことが可能となる。以下、この場合の本パイプライン処理装置の動作について説明する。
まず、図６に示される本パイプライン処理装置の基本的な動作のタイミングについて説明する。これは、FLASH信号が全く入力されない場合の動作である。
時刻１では、＊CLEAR信号がネゲートされ、処理データの入力の準備ができる。ここで、ネゲートとは、信号を論理的にアクティブな状態からアクティブでない状態にすることをいう。
次に、時刻２で、前段のパイプラインコントロール部によりENIN信号がアサートされ、前段のパイプラインレジスタ部に処理データが来たことが示される。ここで、アサートとは、信号を論理的にアクティブでない状態からアクティブな状態にすることをいう。このように、ENIN信号がアサートされると、図３に示すOR回路554によりLD信号がアサートされ、この段のパイプラインレジスタ部に処理データが取り込まれる。しかし、時刻２においては、この段には有効なデータが存在しないため、後段への出力であるENOUT信号はアサートされない。即ち、前段の処理データが有効か否かを示すENIN信号はアサートされているが、この段の処理データが有効か否かを示すセレクタ付レジスタ552の出力がアサートされないため、AND回路560の出力はアサートされないことになる。
次に、時刻３においてもENIN信号がアサートされ、引き続き前段から処理データが入力される。この場合、時刻２において、既にセレクタ付レジスタ552にはこの段の処理データが有効であるという情報が記憶されている。したがって、セレクタ付レジスタ552の出力はアサートされ、AND回路560の出力はアサートされる。この結果、この段のデータを次段に送るためのENOUT信号が出力されることになる。
次に、時刻４では、前段からの処理データは入力されず、ENIN信号はアサートされない。したがって、AND回路560の出力であるENOUT信号もアサートされない。
時刻５では再びENIN信号がアサートされ、それに従ってENOUT信号もすぐにアサートされる。この点が上記の時刻２の場合と異なり、このようにENOUT信号がすぐにアサートされるのは、時刻５においては、この段の処理データが有効か否かを示すセレクタ付レジスタ552の出力が既にアサートされているからである。
時刻８では、＊CLEAR信号がアサートされ、これにより再び、全てのパイプラインレジスタ部500〜506がクリアーされる。
時刻10からは、また新しい処理データが入力される。
さて、時刻８において＊CLEAR信号が入力された時、この段の処理データおよびこの段以外の全ての段の処理データは保持されたままなので、この処理データが、このままでは失われてしまう。したがって、これらの処理データはクリアー動作の前に全て出力されていなければならない。これを行う一つの手法として、ダミーとなるデータをパイプラインレジスタ部の初段にロードして、これにより必要な処理データを押し出してやる手法も考えられる。しかし、この手法では、無駄なデータをロードしてやらなくてはならず時間的にも不利であり、制御も複雑となる。そこで、本パイプライン処理装置では、このような場合にFLASH信号（FLASHIN信号およびFLASHOUT信号）を使用することになる。このFLASH信号まで含めたタイミング図が図７に示される。
図７が図６と異なるところは、＊CLEAR信号がアサートされるのと同時にFLASHIN信号もアサートされているところである。FLASHIN信号がアサートされると、OR回路554によりLD信号もアサートされるため、前段の処理データは後段に転送され記憶される。また、レジスタ542により、このFLASHIN信号は記憶され、FLASHOUT信号は２クロックの長さで出力されることになる。そして、FLASHOUT信号は、図８に示されるように、１段後段になる毎に１クロック時間だけ長くアサートされることになる。
これにより、この段から後ろのパイプラインレジスタ部は、今この段にまである処理データを全て排出することができる。この場合、＊CLEAR信号によりENIN信号が入力されるセレクタ付レジスタ552はクリアーされている。したがって、フラッシュ動作が行われ処理データが自動排出されている間でも、再び処理データが前段に存在している場合にしか、LD信号はアサートされない（図７の時刻10）。正確には、時刻９において既に初期化が終わっているので、この段のパイプラインコントロール部は全く通常と同じ動作が可能となる。そして時刻10には、次の段のパイプラインコントロール部も通常の動作状態に戻る。同様に、時刻11にはさらに次の段のパイプラインコントロール部も通常の状態に戻ることになる。このことは、時刻９より、１段目に連続して通常に処理データが入力されても、本パイプライン処理装置の正常な動作が保証されることを示している。これによって、クリアー動作後、後段側では、パイプラインレジスタ部に残された処理データを自動排出するFLASH動作を行いながら、前段側では、通常通り、入力された処理データに対するパイプライン処理が可能となる。
3.クリッピング処理への適用
以下、本パイプライン処理装置を、画像処理におけるクリッピング処理に適用した場合の例について示す。
（１）３次元シミュレータ装置全体の説明
まず、本パイプライン処理装置が適用された３次元シミュレータ装置の全体について説明する。
従来、例えば３次元ゲームあるいは飛行機及び各種乗物の操縦シミュレータ等に使用される３次元シミュレータ装置として種々のものが知られている。このような３次元シミュレータ装置では、図９に示す３次元物体300に関する画像情報が、あらかじめ装置に記憶されている。この３次元物体300は、プレーヤ（観者）302がスクリーン306を介して見ることができる風景等の表示物を表すものである。そして、この表示物である３次元物体300の画像情報をスクリーン306上に透視投影変換することにより疑似３次元画像（投影画像）308をスクリーン306上に画像表示している。この装置では、プレーヤ302が、操作パネル304により回転、並進等の操作を行うと、この操作信号に基づいて所定の３次元演算処理が行われる。具体的には、まず、操作信号によりプレーヤ302の視点位置、視線方向あるいはプレーヤ302の搭乗する移動体の位置、方向等がどのように変化するかを求める演算処理が行われる。次に、この視点位置、視線方向等の変化に伴い、３次元物体300の画像がスクリーン306上でどのように見えるかを求める演算処理が行われる。そして、以上の演算処理はプレーヤ302の操作に追従してリアルタイムで行われる。これによりプレーヤ302は、自身の視点位置、視線方向の変化あるいは自身の搭乗する移動体の位置、方向の変化に伴う風景等の変化を疑似３次元画像としてリアルタイムに見ることが可能となり、仮想的な３次元空間を疑似体験できることとなる。
図10には、本３次元シミュレータ装置の構成の一例が示される。なお、以下の説明では、３次元シミュレータ装置を３次元ゲームに適用した場合を例にとり説明を進める。
図10に示すように、この３次元シミュレータ装置は、操作部412、仮想３次元空間演算部413、画像合成部401、CRT446により構成される。
仮想３次元空間演算部413では、操作部412からの操作信号、中央処理部414に記憶されたゲームプログラムに従って、仮想３次元空間の設定が行われる。即ち、３次元物体300をどの位置に、どの方向で配置するかの演算が行われる。
画像合成部401は、画像供給部410、画像形成部428を含んで構成される。そして、画像合成部401では、仮想３次元空間演算部500による仮想３次元空間の設定情報に従って疑似３次元画像の画像合成が行われる。
さて、本３次元シミュレータ装置では、仮想３次元空間を構成する３次元物体は、３次元のポリゴンに分割された多面体として表現されている。例えば、図９において３次元物体300は、３次元のポリゴン（１）〜（６）（ポリゴン（４）〜（６）は図示せず）に分割された多面体として表現される。そして、この３次元のポリゴンの各頂点の座標および付随データ等（以下、頂点画像情報と呼ぶ）が３次元画像情報記憶部416に記憶されている。
画像供給部410では、仮想３次元空間演算部413の設定情報に従って、この頂点画像情報に対する回転、並進等の各種の演算および透視投影変換等の各種の座標変換が行われる。そして、演算処理の終了した頂点画像情報は、所定の順序に並び換えられた後、画像形成部428に出力される。
画像形成部428では、頂点座標等からなるポリゴンデータから、ポリゴン内の画像情報が演算される。この画像情報はパレット＆ミキサ回路444でRGBデータに変換され、CRT446より画像出力される。
さて、以上の構成の３次元シミュレータ装置では、画像供給部410にて以下のような演算を行っている。
即ち、ドライビングゲームを例にとれば、図11に示すように、３次元画像情報記憶部416から読み出されたハンドル、ビル、看板等を表す３次元オブジェクト300、333、334が、ワールド座標系（ＸW、ＹW、ＺW）で表現される３次元空間上に配置される。その後、これらの３次元オブジェクトを表す画像情報は、プレーヤ302の視点を基準とした視点座標系（Xv、Yv、Zv）へと座標変換される。
次に、いわゆるクリッピング処理と呼ばれる画像処理が行われる。ここで、クリッピング処理とはプレーヤ302の視野外（または３次元空間上で開かれたウィンドウの視野外）にある画像情報、即ちクリッピング面１、２、３、４、５、６により囲まれる領域（以下表示領域20とする）の外にある画像情報を除去する画像処理をいう。つまり、本３次元シミュレータ装置によりその後の処理に必要とされる画像情報は、プレーヤ302の視野内にある画像情報のみである。したがって、これ以外の情報をあらかじめ除去しておけば、その後の処理の負担を減らすことができる。即ち、プレーヤ302の周りには、360度全方向に物体が存在するので、このうちの視野内にある物体のみを処理するようにすれば、その後に処理すべきデータ量は大幅に減り、特に、リアルタイムにて画像処理を行う３次元シミュレータ装置においては、必須の画像処理となる。
これを図11によりさらに詳しく説明すると以下のようになる。つまり、プレーヤ302の視野外（表示領域20の外）にある物体、例えば視野から外れて後ろに通り過ぎて行く看板等を表す３次元オブジェクト334の画像情報が除去される。この除去処理は、クリッピング面１〜６のそれぞれの面について、表示領域の内にあるか外にあるかを判断し、全ての面ついて外にあった物体のみを除去することで行われれる。
これに対して、表示領域20の境界にあるビル等の３次元オブジェクト333では、表示領域20の外にある部分が除去され、表示領域20の内にある部分のみがその後の画像処理に使用される。また、表示領域20内に完全に含まれているハンドル等の３次元オブジェクト300の画像情報は、そのままその後の画像処理に使用されることとなる。
最後に、表示領域20内にある物体に対してのみ、スクリーン座標系（ＸS、ＹS）への透視投影変換が行われ、その後、ソーティング処理が行われる。
なお、本３次元シミュレータ装置では、より高品質の画像をより効率よく画像合成すべく、テクスチャマッピング手法およびグーローシェーディング手法と呼ぶ手法により画像合成を行っている。以下、これらの手法の概念について簡単に説明する。
図12には、テクスチャマッピング手法の概念について示される。
図12に示すような３次元オブジェクト332の各面に例えば格子状、縞状の模様等が施されたものを画像合成する場合には、従来は、３次元オブジェクトを、３次元ポリゴン（１）〜（80）（３次元ポリゴン（41）〜（80）については図示せず）に分割し、これらの全てのポリゴンに対して画像処理を行っていた。その理由は、従来の３次元シミュレータ装置では、１つのポリゴン内の色の塗りつぶしは、指定された一つの色でしか行えなかったためである。この結果、複雑な模様等が施された高品質な画像を合成する場合には、ポリゴン数が非常に増加してしまうため、実質的に、このような高品質の画像を合成することは不可能であった。
そこで、本３次元シミュレータ装置では、３次元オブジェクト332の回転、並進、透視投影変換等の座標変換およびクリッピング等の処理を、各面を構成する３次元ポリゴンＡ、Ｂ、Ｃごとに行い（具体的には各３次元ポリゴンの頂点ごと）、格子状、縞状の模様については、テクスチャとして取り扱い、ポリゴンの処理と分割して処理を行っている。即ち、図10に示すように画像形成部428内にはテクスチャ情報記憶部442が設けられ、この中には各３次元ポリゴンにはり付けるべきテクスチャ情報、つまり格子状、縞状の模様等の画像情報が記憶されている。
そして、このテクスチャ情報を指定するテクスチャ情報記憶部442のアドレスを、各３次元ポリゴンの各頂点のテクスチャ座標VTX、VTYとして与えておく。具体的には、図12に示すように、ポリゴンＡの各頂点に対しては、（VT X0、VT Y0）、（VT X1、VT Y1）、（VT X2、VT Y2）、（VT X3、VT Y3）のテクスチャ座標が設定される。
画像形成部428内のプロセッサ部430では、この各頂点のテクスチャ座標VTX、VTYから、ポリゴン内の全てのドットについてのテクスチャ座標ＴX、ＴYが求められる。そして、求められたテクスチャ座標ＴX、ＴYにより、テクスチャ情報記憶部442から対応するテクスチャ情報が読み出され、パレット＆ミキサ回路444に出力される。これにより、図12に示すような、格子状、縞状等のテクスチャが施された３次元オブジェクトを画像合成することが可能となる。
また、本３次元シミュレータ装置では前記したように３次元オブジェクト332を３次元ポリゴンの固まりとして表現している。したがって、各３次元ポリゴンの境界における輝度情報の連続性が問題となる。例えば複数の３次元ポリゴンを用いて球を表現しようとする場合、３次元ポリゴン内の全ドットが全て同じ輝度に設定されると、実際は「丸み」を表現したいのに、各３次元ポリゴンの境界が「丸み」として表現されない事態が生じる。そこで、本３次元シミュレータ装置では、グーローシェーディングと呼ばれる手法によりこれを回避している。この手法では、前記したテクスチャマッピング手法と同様に、３次元ポリゴンの各頂点に図12に示すように各頂点の輝度情報VBRI0〜VBRI3を与えておき、画像形成部428で最終的に画像表示する際に、この各頂点の輝度情報VBRI0〜VBRI3より３次元ポリゴン内の全てのドットについての輝度情報を補間により求めている。
以上のように、本３次元シミュレータ装置は、テクスチャマッピング手法およびグーローシェーディング手法を用いて、高画質で高速の画像処理が可能となる構成となっている。そして、これにより、ポリゴンの画像情報は、ポリゴンの頂点表示座標、頂点テクスチャ座標、頂点輝度情報等の複数個で１区切りになったデータとして構成されることになる。さらに、同一の３次元オブジェクトに共通のデータであるオブジェクトデータ、同一のフレーム内で共通のデータであるフレームデータも存在する。図13には、これらのデータフォーマットの一例が示される。したがって、同図に示すような複数個で一区切りとなったデータを、画像供給部410内において、どのようにして効率よく、適正に処理するかが、一つの大きな技術的課題となる。
なお、以下、説明を簡単にするために、図13に示すように、頂点輝度情報VBRI0〜VBRI3をI0〜I3と、頂点テクスチャ座標VT X0〜VT Y3をＴX0〜ＴY3と、頂点座標VX0〜VZ3をX0〜Z3と表すこととする。
（２）クリッピング処理装置の説明
図10に示すように、画像供給部410にはクリッピング処理を行うためのクリッピング処理装置420が内蔵されている。以下、このクリッピング処理装置420について説明する。
（Ａ）クリッピング処理の手法
まず、本実施例におけるクリッピング処理の手法について、図14を用いて説明する。図14には、クリッピング面１によりポリゴン70をクリッピングする場合が示される。同図において、v0＝（X0、Y0、Z0）、v1＝（X1、Y1、Z1）、v2＝（X2、Y2、Z2）、v3＝（X3、Y3、Z3）は、ポリゴン10の頂点座標であり、ｈ（Ｖ）＝aX＋bY＋cZ＋ｄは、クリッピング面１の平面方程式である。
・各頂点座標の内外判定
ポリゴンデータの入力と同時に、頂点座標V0〜V3がクリッピング面１の外の領域にあるか内の領域にあるかの内外判定が行われる。このために、まず、以下の演算が行われる。
ｈ（V0）＝aX0＋bY0＋cZ0＋ｄ
ｈ（V1）＝aX1＋bY1＋cZ1＋ｄ
ｈ（V2）＝aX2＋bY2＋cZ2＋ｄ
ｈ（V3）＝aX3＋bY3＋cZ3＋ｄ
上記の演算により、ｈ（Vn）≦０となった場合はVnは表示領域にあると判断され、ｈ（Vn）＞０となった場合はVnは表示外領域にあると判断される。例えば、図14においては、ｈ（V0）、ｈ（V3）＞０よりV0、V3は表示外領域にあると判断され、ｈ（V1）、ｈ（V2）≦０よりV1、V2は表示領域にあると判断される。
・内分点の演算
図14において、全頂点が表示領域にあると判断されたポリゴン72については、全頂点がそのまま次の処理（例えば次の平面に対するクリッピング処理または透視投影変換）に供されることになる。また、全頂点が表示外領域にあると判断されたポリゴン74については、全頂点が次の処理の対象から外される。
これに対して、クリッピング面１によりクリッピングされたポリゴン70についてはクリッピング点、即ち内部点Vk、Vlが求められる。そして、頂点V0、V3はその後の処理の対象から外され、その代わりに内分点Vk、Vlがポリゴン70の頂点とされ、その後の処理に使用されることとなる。
内分点Vk、Vlを求めるために、まず、それぞれの内分比ｔk、ｔlが以下の演算式により求められる。
ｔk＝（|h（V0）｜）／（|h（V1）−ｈ（V0）｜）
ｔl＝（|h（V2）｜）／（|h（V3）−ｈ（V2）｜）
次に上記の内分比ｔk、ｔlを用いて、以下の演算式により内分点Vk、Vlが求められる。
Vk＝V0＋ｔk（V1−V0）
Vl＝V2＋ｔl（V3−V2）
以上の内分点の演算は全て、頂点座標の内分点演算を例にして説明したが、本実施例では、これ以外の頂点テクスチャ座標、頂点輝度情報についてもクリッピングによる内分点を求めている。また、ポリゴンの頂点数についても上記の説明では４頂点のポリゴンを例にして説明したが、本実施例ではこれに限らず任意のｎ個の頂点を持つポリゴンに対してクリッピング処理を行うことができる。したがって、この場合、上記の演算式は以下のような一般式によって表すことができ、これにより出力データWoutを求めている。
Wout＝Wa＋ｔi（Wb−Wa）
W:頂点輝度座標I0〜In、頂点テクスチャ座標ＴX0、ＴY0〜ＴXn、ＴYn、頂点座標X0、Y0、Z0〜Xn、Yn、Znのうちクリッピングされるもの
ａb：クリッピングされるべき２点間のポイントナンバ
ｔi：その時の内分比
（Ｂ）クリッピング処理装置の構成および動作
さて、本実施例のクリッピング処理装置420では、上記の内外判定、内分点の演算を、図１に示したパイプライン処理装置によりパイプライン処理して、処理の高速化を図っている。図15には、このパイプライン処理装置を適用したクリッピング処理装置420のブロック図の一例が示される。
図15に示すように、クリッピング処理装置は、入力部212、平面方程式演算部216およびクリッピング指示部218から構成される内外判定部210、ポリゴンデータレジスタ214、パイプライン処理装置の制御を行う出力コントロール部220、実際に内分点を演算する内分点演算部230、出力データを入力部212にフィードバックするための出力マルチプレクサ260を含んで構成される。
入力部212には、視点座標系へ座標変換された後のフレームデータ、オブジェクトデータ、ポリゴンデータおよびクリッピング処理装置の制御を行うためのデータ等が順次入力される。そして、これらのデータから、クリッピング処理装置において必要なデータの抽出および各種のデータフォーマット変換が行われる。
例えば、フレームデータからは画像を表示するモニタの角度、大きさ等を抽出し、これによりクリッピングを行う平面方程式の係数等が抽出される。また、オブジェクトデータからは、オブジェクト毎の処理に必要なデータが抽出される。また、ポリゴンデータからは、ポリゴンの頂点座標、頂点テクスチャ座標、頂点輝度情報等が抽出され、これに必要なデータフォーマット変換が行われ、頂点座標が平面方程式演算部216へ、頂点座標、頂点テクスチャ座標、頂点輝度情報等がポリゴンデータレジスタ214へと出力される。
ポリゴンデータレジスタ214では、入力部212から入力された頂点座標、頂点テクスチャ座標、頂点輝度情報等が順次記憶され、クリッピング指示部218の指示に従って、データ（Wa、Wb）が内分点演算部230へと出力される。
平面方程式演算部216では、前記演算手法で説明したように、下記の演算式に従い、ポリゴンの全頂点座標Vnに対する内外判定が行われる。ここで、係数a,b,c,dは、フレームデータにより設定されたものである。
ｈ（Vn）＝aXn＋bYn＋cZn＋ｄ
上記の演算により、ｈ（Vn）≦０となった場合はVnは表示領域内にあると判定され、ｈ（Vn）＞０となった場合はVnは表示外領域にあると判定される。
クリッピング指示部218では、まず、前記した平面方程式演算部216での判定結果が、ポリゴンの各頂点のインデックスデータとして記憶される。例えば、図14に示すようにポリゴン70が頂点V0とV1、V2とV3で内分されると判定された場合は、インデックスデータ（０、１）、（２、３）が記憶される。そして、クリッピング指示部218は、ポリゴンデータレジスタ214に対して、このインデックスデータに対応するポリゴンの頂点座標、頂点テクスチャ座標、頂点輝度情報を出力するよう指示を行う。同様にして、クリッピング指示部218は、出力コントロール部220に対して、このインデックスデータに対応する内分点演算の制御を行うよう指示を行う。さらに、この場合は、クリッピング指示部218により、平面方程式演算部216で演算されたｈ（Vm）、ｈ（Vn）（以下、ｈm、ｈnと呼ぶ）が内分点演算部230へと出力される。
また、ポリゴンの全ての頂点が表示領域外にあるとされた場合、このポリゴンはクリッピングアウトされたポリゴンとなる。したがってこの場合は、当該ポリゴンに対応する画像構成データを全て無効にするよう、ポリゴンデータレジスタ214および出力コントロール部220に対して指示が出される。また、逆に、ポリゴンの全ての頂点が表示領域内にあるとされた場合は、このポリゴンは内分点演算の必要のないポリゴンとなる。したがってこの場合は、ポリゴンデータレジスタ214および出力コントロール部220に対して、当該ポリゴンに対する内分点演算を行わないよう指示が出される。
出力コントロール部220は、クリッピング指示部218の指示に従って、パイプラインレジスタ部500〜506（図15では"P"と表す）、パイプラインコントロール部530〜536（図15では"PC"と表す）の制御を行う。この制御は、具体的には、ENIN信号およびFLASHIN信号により行われる。
内分点演算部230は、絶対値演算部232,234、除算部240、減算部242、乗算部248、加算部250、パイプラインレジスタ部500〜506、パイプラインコントロール部530〜536を含んで構成される。
パイプラインレジスタ部500〜506およびパイプラインコントロール部530〜536の構成は前述したものと同様である。なお、図15では、BCLK信号、＊CLEAR信号、RST信号を省略している。
絶対値演算部232,234ではクリッピング指示部218から出力されたｈm、ｈnより、それぞれ|hm−ｈn｜、|hm｜が演算され、除算部240へと出力される。除算部240では、これらのデータより内分比ti＝|hm|/|hm−ｈn｜が演算され、乗算部248へと出力される。
減算部242では、ポリゴンデータレジスタ214からパイプラインレジスタ部500,501を介して入力されたポリゴンデータWa、WbよりWb−Waが演算され、パイプラインレジスタ部502を介して乗算部248へと出力される。なお、ここでWa、Wbには、ポリゴンの頂点座標のみならず、頂点テクスチャ座標、頂点輝度情報も含まれる。これらのデータは、ポリゴンが内分される場合に、後の画像処理の演算に必要となるものだからである。
乗算部248では、前記ti、Wb−Waより、ti（Wb−Wa）が演算され、パイプラインレジスタ部504を介して加算部250へと出力される。
加算部250では、パイプラインレジスタ部504を介して入力された前記ti（Wb−Wa）と、ポリゴンデータレジスタ214よりパイプラインレジスタ部501、503、505を介して入力されたWaより、
Wout＝Wa＋ti（Wb−Wa）
が演算される。これにより内分点が求められたことになる。
内分点演算部230での演算結果Woutは、パイプラインコントロール部506を介して出力マルチプレクサ260に入力される。
さて、通常、クリッピング処理を行う場合、図11に示されるように、１つのポリゴンに対して複数のクリッピング面１〜６によるクリッピング処理を行わなければならない。本実施例では、内部ループ動作を行うことにより、この複数のクリッピング面によるクリッピング処理を１つまたは複数のクリッピング処理装置により行うことができるよう形成されている。出力マルチプレクサ260はこの場合の内部ループを形成するために設けられたものである。図16（Ａ）〜（Ｃ）には、このように内部ループを形成した場合の接続が示される。
即ち、まず、図16（Ａ）に示すように、処理の終了したデータを出力後、新たなデータが入力され、一番初めに行うべきクリッピング面によりクリッピング処理が行われる。その後、同図（Ｂ）に示すように、出力マルチプレクサ260により入力と出力が接続され内部ループが作られる。これにより、一番初めのクリッピング面によりクリッピング処理されたデータが入力に戻され、この戻されたデータに対して次のクリッピング面によるクリッピング処理が行われる。
このようにして、順次、あらかじめ定められたクリッピング面の順序に従ってクリッピング処理が行われた後、内部ループが解除されて、データが次段へと出力される。
図16（Ｃ）には、このクリッピング処理装置を複数段設けて、上記処理を行う場合の例が示される。この場合には、例えば、一段目のクリッピング処理装置420aにて、初めの３面のクリッピング面によるクリッピング処理が行われ、二段目のクリッピング処理装置420bにて、残る３面のクリッピング処理が行われる。なお、同図において、座標変換部418はポリゴンを視点座標系への座標変換を行うブロックであり、出力フォーマット変換部421は、クリッピング処理により多角形に変形してしまったポリゴンを例えば４角形のポリゴンにフォーマット変換する処理を行うブロックである。
さて、本実施例では、クリッピング処理装置におけるクリッピング処理を、パイプラインレジスタ部500〜506、パイプラインコントロール部530〜536を用いて、パイプライン処理により行っている。以下、本実施例の特徴的な動作の一例について説明する。
まず、入力部212に、図13に示したフォーマットのデータが入力される。この入力されるデータとしては、クリッピング処理装置の前段から来るデータである場合と、出力マルチプレクサ260より、自己ループ出入力されるデータである場合がある。
さて、この入力されたデータは、入力部212にて所定のフォーマット変換がなされた後、内外判定部210、ポリゴンデータレジスタ214等に出力される。例えば、内外判定部210には、内外判定演算を行うべく、図13における頂点座標（X0〜Z3）が出力される。また、ポリゴンデータレジスタ214には、頂点輝度情報（I0〜I3）頂点テクスチャ座標（ＴX0〜ＴY3）、頂点座標（X0〜Z3）等が出力される。
内外判定部210内の平面方程式演算部216では、入力された頂点座標（X0〜Z3）により、このポリゴンに対する内外判定が行われる。内外判定の結果は、例えば、頂点V0とV1、V2とV3でクリッピングが生じた場合は（０、１）、（２、３）というインデックスデータがクリッピング指示部218に記憶される。
内外判定部210での内外判定が終了すると、ポリゴンデータレジスタ214により、前記したインデックスデータを基に所定のフォーマットで頂点輝度情報、頂点テクスチャ情報、頂点座標が出力される。ここでは、例えば（Wa、Wb）＝（I0、I1）、（I1、−）、（I2、−）、（I2、I3）、（TX0、TX1）、（TY0、TY1）、（TX1、−）、（TY1、−）、（TX2、−）、（TY2、−）、（TX2、TX3）、（TY2、TY3）、（X0、X1）、（Y0、Y1）、（Z0、Z1）、（X1、−）、（Y1、−）、（Z1、−）、（X2、−）、（Y2、−）、（Z2、−）、（X2、X3）、（Y2、Y3）、（Z2、Z3）というフォーマットのデータが、順次パイプラインレジスタ部500、501に出力される。ここで、“−”はドントケアーを意味する。この場合のパイプラインレジスタ部の駆動はENIN信号により行われることになる。また、クリッピング指示部218による絶対値演算部232,234へのｈm、ｈnの出力は、前回のポリゴンデータに対する除算部240でのデータ処理が終わった時点で出力されることになる。
さて、図15に示す本実施例では、除算部240でのデータ処理が最も時間がかかり、例えば、12クロックの時間がかかる。そして、これ以外の絶対値演算部232、234、減算部242、乗算部248、加算部250では、データ処理に１クロックの時間がかかる。したがって、ポリゴンデータレジスタ214から出力されたデータは、図17（Ａ）に示すように、パイプラインレジスタ部502、503にデータが転送された時点で、除算部240での演算結果を待って停止する状態となる。即ちパイプラインレジスタ部503,502に（I0、I1−I0）が記憶された状態で、ENINがネゲートされ、パイプライン処理が停止する。そして、所定時間経過後、除算部240から演算結果が出力されると、ENIN信号がアサートされパイプライン処理が再開され、図17（Ｂ）の状態になる。
この例では、頂点V1とV2の間は内分されないため、I1は内分点演算を行わずそのままの状態で出力する必要がある。したがって、この場合は、除算部240の出力であるtiはti＝０に設定される。また、除算部240での除算の必要もないため、クロックBCLKに同期してパイプラインレジスタ部500〜506はシフトすることになる。これにより、同図（Ｃ）の状態となる。
同図（Ｃ）では、前記した同図（Ｂ）でti＝０と設定されているため、パイプラインレジスタ部504には"0"が入力される。また、パイプラインレジスタ部506には、最終演算結果である頂点V0とV1の内分点ＩK＝I0＋ti（I1−I0）が入力される。さらに、パイプラインレジスタ部503、502には（I2、−）が入力される。この場合、I1と同様にI2も内分点演算を行わずにそのままの状態で出力する必要があるため、ti＝０に設定される。この状態で、パイプラインレジスタ部500〜506がシフトすると、同図（Ｄ）の状態となる。
同図（Ｄ）に示すように、パイプラインレジスタ部506には、I1が内分点演算を行わないそのままの状態で入力される。また、パイプラインレジスタ部503、502には、頂点V2とV3の内分点を求めるため（I2、I3−I2）が入力される。このように次々とパイプライン処理されることにより、ポリゴンの頂点輝度情報（I0、I1、I2、I3）は、（ＩK、I1、I2、ＩL）へと変更される。同様にして、頂点テクスチャ座標（TX0〜TY3）、頂点座標（X0〜Z3）についても内分点演算が行われ、クリッピング処理後の新たなポリゴンデータが形成されることになる。
さて、図18（Ａ）には、ポリゴンデータレジスタ214から、このポリゴンの最後のデータ（Z2、Z3）が出力された場合の状態が示される。このように複数個で１区切りとなったデータの入力が終了した時点で、出力コントロール部220はFLASHIN信号をアサートする。すると、これらの複数個で１区切りとなったデータは、ENIN信号によるパイプライン駆動とは無関係に自動的に駆動され排出されることになる。即ち、図18（Ｂ）に示すように、次に処理すべきデータがパイプラインレジスタ部500,501に入力されていないにもかかわらず、この１度FLASHIN信号により駆動されたデータは、次のパイプラインレジスタ部に自動的にシフトされる。さらに、図19（Ａ）では、次に処理されるポリゴンの輝度情報（I0、I1）がパイプラインレジスタ部501,500に入力され、図19（Ｂ）では、除算部240から除算結果tiが出力されるのを待つ状態となっている。このような場合でも、図19（Ｂ），（Ｃ）に示すように、一度駆動された前のポリゴンに関するデータは、除算結果の出力と無関係に自動排出されて行く。
以上のように本実施例では一度FLASHIN信号により駆動されたデータはその後、全く制御を行う必要がなくなり、制御方法が非常に簡易なものとなり、設計期間の短縮化等を図ることができる。また、図19（Ｂ），（Ｃ）に示したように、一度FLASHIN信号により駆動されたデータは、除算部240から除算結果が出力されるのを待つ必要が全くなくなる。この結果、演算処理が終了したデータをすぐに次の演算処理に使用することができる。
例えば、本実施例では、図15,図16に示したように自己ループを形成し、１つの面によるクリッピング処理が終了したデータを、出力マルチプレクサ260を介して入力部212に戻している。そして、その後、この戻したデータに対して、内外判定部210により次の面に対する内外判定を行い、次の面に対するクリッピング処理を行うことになる。このため、内分点演算部により演算が終了したデータは、できるだけ早く出力マルチプレクサ260を介して内外判定部210に戻してやる必要がある。ところが、従来のデータ駆動方式によるパイプライン処理装置では、図19（Ｂ），（Ｃ）に示すように次のデータがパイプラインレジスタ部502,503で除算結果を待っているような状況では、パイプラインレジスタ部504,505,506にあるデータを前に進めることができなかった。このため、従来のパイプライン処理装置では、このような状況においてパイプライン処理を効率よく行うことができず、リアルタイムにパイプライン処理を行う必要がある３次元シミュレータ装置には非常に不向きなものとなっていた。
このような場合、例えば、ダミーのデータをパイプラインレジスタ部に入力して前のデータを押し出してやる等の特別な手法を用いてこの状況を回避することも考えられる。しかし、このクリッピング処理装置内でのパイプライン処理のタイミングは、プレーヤの操作状況、ゲーム状況等の種々の要素により複雑に変化するものである。即ち、プレーヤの操作により、場合によってはほとんどのポリゴンに対して内分点演算を行わなければならない状況が生じる。また、ゲーム状況によりポリゴンが表示画面上の中央部に集中しているような場合は、ほとんどのポリゴンに対して内分点演算を行わなくてもよい状況も生じる。さらに、このパイプライン処理装置の前段にある処理部が、処理が遅れたため、データをこのパイプライン処理装置に出力できないという状況が生じる場合がある。したがって、このような種々の状況が生じてクリッピング処理のタイミングが複雑に変化したような場合には、前記した特別な手法によりパイプラインの処理の非効率化を回避することは容易なことではない。
これに対して、本実施例では、このような種々の状況が生じてクリッピング処理のタイミングが複雑に変化しても、ENIN信号によりデータをパイプライン駆動して、データの入力終了後、ただ単にFLASHIN信号をアサートしてやるという非常に簡易な制御手法により、効率よくパイプライン処理を行うことが可能となる。しかも、各パイプラインレジスタ部500〜506に接続されるパイプラインコントロール部530〜536の構成も非常に簡易であり、回路点数も非常に少ないものとなる。したがって、本実施例のパイプライン処理装置は、パイプライン処理の効率化を図れるデータ駆動型パイプライン処理装置と、制御方法が簡易なクロック駆動型パイプライン処理装置の双方の長所を兼ね備えており、リアルタイムにパイプライン処理を行わなければならない３次元シミュレータ装置に最適なパイプライン処理装置となる。
なお、本発明は上記実施例に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。
例えば本発明が適用されるデータの演算処理としては、前記したクリッピング処理に限らず、例えばリアルタイムな演算処理が必要な種々のパイプライン処理に適用できる。
また、本発明における入力フラッシュ信号の入力位置は、初段に限らず例えば２段目、３段目等に入力してやることも可能である。
また、本発明において、クリッピング演算手段により行われるクリッピング処理の演算手法としては、上記した演算手法に限らず種々のアルゴリズムを用いた演算手法を用いることができる。
また、本発明は、業務用のゲーム機、家庭用のゲーム装置、フライトシミュレータ、教習所等で使用されるドライビングシミュレータ等、種々のものに適用できる。更に、多数のプレーヤが参加する大型アトラクション型のゲーム装置、シミュレーション装置にも適用できる。
また、本発明で説明した仮想３次元空間演算手段、画像合成手段、クリッピング処理装置等において行われる演算処理は、専用の画像処理デバイスを用いて処理してもよいし、汎用のマイクロコンピュータ、DSP等を利用してソフトウェア的に処理してもよい。
更に、仮想３次元空間演算手段、画像合成手段等で行われる演算処理も本実施例で説明したものに限定されるものではない。
また、本発明を適用した３次元シミュレータ装置には、画像合成された疑似３次元画像をヘッドマウントディスプレイ（HMD）と呼ばれるディスプレイに表示する構成のものも含まれる。
【図１】
0003594309.tif 000002
【図２】
0003594309.tif 000003
【図３】
0003594309.tif 000004
【図４】
0003594309.tif 000005
【図５】
0003594309.tif 000006
【図６】
0003594309.tif 000007
【図７】
0003594309.tif 000008
【図８】
0003594309.tif 000009
【図９】
0003594309.tif 000010
【図１０】
0003594309.tif 000011
【図１１】
0003594309.tif 000012
【図１２】
0003594309.tif 000013
【図１３】
0003594309.tif 000014
【図１４】
0003594309.tif 000015
【図１５】
0003594309.tif 000016
【図１６】
0003594309.tif 000017
【図１７】
0003594309.tif 000018
【図１８】
0003594309.tif 000019
【図１９】
0003594309.tif 000020
【図２０】
0003594309.tif 000021