(57)【特許請求の範囲】
【請求項１】
入力座標ベクトル（ｘ、ｙ、ｚ、１）の透視変換を行い、その変換結果として出力座標ベクトル（ｘ´、ｙ´、ｚ´、ｗ´）の各要素を出力する４つの座標変換回路と、
出力座標ベクトル（ｘ´、ｙ´、ｚ´）を出力する座標変換回路の夫々について設けられ、当該出力座標ベクトル（ｘ´、ｙ´、ｚ´）の夫々の座標値を出力座標ベクトル（ｗ´）の値と比較することによって、夫々の座標についてその表示領域内に収まっている否か判定する３つの比較回路と、
前記比較回路からの出力を格納するクリッピングレジスタと
を備え、
出力座標ベクトル（ｗ´）を出力する座標変換回路は、変換結果である該出力座標ベクトル（ｗ´）を、出力座標ベクトル（ｘ´、ｙ´、ｚ´）を出力する座標変換回路に入力させることを特徴とする座標変換処理回路。
【請求項２】
前記出力座標ベクトルの値は、夫々符号と絶対値を示すフィールドで表され、前記比較回路は、絶対値を示すフィールド同士を比較する比較器と、前記比較器からの出力と前記出力座標ベクトル（ｘ´、ｙ´、ｚ´）の各々の座標値の論理積を出力する第１の回路と、前記比較器からの出力の反転信号と前記出力座標ベクトル（ｘ´、ｙ´、ｚ´）の各々の座標値の論理積を出力する第２の回路とからなることを特徴とする請求項１に記載の座標変換処理回路。
【請求項３】
前記クリッピングレジスタはシフトレジスタであり、前記比較回路からの出力をシフト動作によって退避しておくこと特徴とする請求項１に記載の座標変換処理回路。
【請求項４】
前記クリッピングレジスタは、複数の座標ベクトルに対応するシフトレジスタに格納された前記判別結果に基く論理信号を出力する論理回路を有することを特徴とする請求項１に記載の座標変換処理回路。
【請求項５】
前記論理回路は、論理和ゲートであることを特徴とする請求項４に記載の座標変換処理回路。
【請求項６】
前記比較回路は、ｘ´＞｜ｗ´｜又はｘ´＜−｜ｗ´｜の場合にｘ´が表示領域外であることを示す信号を出力し、ｙ´＞｜ｗ´｜又はｙ´＜−｜ｗ´｜の場合にｙ´が表示領域外であることを示す信号を出力し、ｚ´＞｜ｗ´｜又はｚ´＜−｜ｗ´｜の場合にｚ´が表示領域外であることを示す信号を出力すること特徴とする請求項１に記載の座標変換処理回路。
【請求項７】
前記比較回路の夫々は、前記出力座標ベクトル（ｘ´、ｙ´、ｚ´）の夫々の座標値が、夫々の座標について表示領域内に収まっている場合と、その表示領域の正の方向に外れている場合と、その表示領域の負の方向に外れている場合とのいずれであるかを示す２ビットの識別信号を出力することを特徴とする請求項６に記載の座標変換処理回路。
【請求項８】
前記クリッピングレジスタは、６ｘｎビット（ｎ＞１）のシフトレジスタであり、６ビット分のレジスタ部分が前記比較回路の識別信号を受け、６ビットのシフト動作によって順次他の部分に退避しておくこと特徴とする請求項７に記載の座標変換処理回路。
【請求項９】
前記クリッピングレジスタは、少なくとも１８ビットのシフトレジスタであり、この１８ビットの論理積を出力する出力回路が接続されていること特徴とする請求項８に記載の座標変換処理回路。
【請求項１０】
前記３つの比較器による判定を、並列に行うことを特徴とする請求項１乃至９に記載の座標変換処理回路。
【請求項１１】
前記出力座標ベクトル（ｘ´、ｙ´、ｚ´、ｗ´）は、グラフィックス描画処理におけるポリゴンの頂点座標であることを特徴とする請求項１乃至１０に記載の座標変換処理回路。
【請求項１２】
４つの座標変換回路により、入力座標ベクトル（ｘ、ｙ、ｚ、１）の透視変換を行い、その変換結果として出力座標ベクトル（ｘ´、ｙ´、ｚ´、ｗ´）の各要素を出力し、
出力座標ベクトル（ｗ´）を出力する座標変換回路から、変換結果である該出力座標ベクトル（ｗ´）を、出力座標ベクトル（ｘ´、ｙ´、ｚ´）を出力する座標変換回路に入力させ、
出力座標ベクトル（ｘ´、ｙ´、ｚ´）を出力する座標変換回路の夫々について設けられた３つの比較回路により、当該出力座標ベクトル（ｘ´、ｙ´、ｚ´）の夫々の座標値を出力座標ベクトル（ｗ´）の値と比較することによって、夫々の座標についてその表示領域内に収まっている否か判定し、
前記比較回路からの出力をクリッピングレジスタに格納する
ことを特徴とする座標変換処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、グラフィックス描画処理などに利用する座標変換を実行する浮動小数点プロセッサユニットの座標変換処理回路に関する。
【０００２】
【従来の技術】
グラフィックス描画処理では、ポリゴンの頂点座標を３次元座標から表示装置用の２次元座標に変換する。この座標変換は（４×４）行列と４要素のベクトルの積を計算することによって求められる。座標変換後の２次元座標は表示領域の範囲内に入っているか否かをチェックするクリッピング判定を行う必要がある。
【０００３】
上記グラフィックス描画処理において、
0003655723.tif 000002
とすると、
【数１】
0003655723.tif 000003
となるので、４個の積和演算器を並列に４回繰り返せば座標変換を高速に実行することができる。この座標変換が終わった後、変換された座標が表示領域の範囲内にあるかどうかのクリッピングチェックを行なう。
【０００４】
実際には座標変換後の１点（ｘ´, ｙ´, ｚ´, ｗ´）について考えると、
【数２】
−｜ｗ´｜＜ｘ´＜｜ｗ´｜    …（１式）
−｜ｗ´｜＜ｙ´＜｜ｗ´｜    …（２式）
−｜ｗ´｜＜ｚ´＜｜ｗ´｜    …（３式）
上式全てが成立する場合に領域内となる。これを点のクリッピング判定と呼ぶことにする。
【０００５】
領域外の場合には以下の条件でどの方向に出ているかをチェックできる。
【０００６】
【数３】
｜ｘ´｜＜−｜ｗ´｜：ｘ負方向の領域外    …（４式）
｜ｘ´｜＞  ｜ｗ´｜：ｘ正方向の領域外    …（５式）
｜ｙ´｜＜−｜ｗ´｜：ｙ負方向の領域外    …（６式）
｜ｙ´｜＞  ｜ｗ´｜：ｙ正方向の領域外    …（７式）
｜ｚ´｜＜−｜ｗ´｜：ｚ負方向の領域外    …（８式）
｜ｚ´｜＞  ｜ｗ´｜：ｚ正方向の領域外    …（９式）
ポリゴン（ｎ角形）を描画する場合にはｎ頂点分の点クリッピング判定を行なう。その結果、全て領域内だった場合、そのポリゴンが領域内だと判定でき、そのまま表示する。一つでも頂点が領域外だと、そのポリゴンをクリップして表示する。また、そのポリゴンの全ての頂点が領域外の時は二通りの場合がある。全ての頂点が一定方向の領域外なら、例えば全ての頂点が（４式）を満たすならば、そのポリゴンを表示しない。それ以外、例えば頂点１が（４式）を満たし、それ以外は（５式）を満たす場合などは、そのポリゴンをクリップして表示する。
【０００７】
このような座標変換、クリッピング判定を行なう浮動小数点プロセッサの一例を図５に示す。
【０００８】
図５に示す浮動小数点プロセッサはコプロセッサとして設計されており、命令のフェッチ、デコードなどはメインプロセッサ側で行なわれる。条件分岐はコプロセッサ側からＴＲＵＥ／ＦＡＬＳＥ信号がメインプロセッサ側に送られ、その信号によってメインプロセッサ側で条件分岐が行なわれる。
【０００９】
この浮動小数点プロセッサは、１２８ビットのソースバス１及びソースバス２と、同じく１２８ビットのディスティネーションバス３を有し、図６に示すようなレジスタ４ならびに図７に示すような演算器７ｘ，７ｙ，７ｚ，７ｗを有している。それぞれの１２８ビットバスは３２ビットづつ４グループに分けられる。これをｘ系統、ｙ系統、ｚ系統、ｗ系統と呼ぶことにする。
【００１０】
ソースバス２とディスティネーションバス３では、ｘ系統のバスはレジスタ４のレジスタ番号が４で割り切れるレジスタ（Ｒ０，Ｒ４，Ｒ８，…）に接続され、ｙ系統のバスはレジスタ番号が４で割ると１余るレジスタ（Ｒ１，Ｒ５，Ｒ９，…）に接続され、ｚ系統のバスはレジスタ番号が４で割ると２余るレジスタ（Ｒ２，Ｒ６，Ｒ１０，…）に接続され、ｗ系統のバスはレジスタ番号が４で割ると３余るレジスタ（Ｒ３，Ｒ７，Ｒ１１，…）に接続されている。ソースバス１は全てのバスが全てのレジスタに接続されてクロスバー構成になっている。
【００１１】
演算器７ｘ，７ｙ，７ｚ，７ｗはそれぞれ積和演算器（ＦＭＡＣｘ，ＦＭＡＣｙ，ＦＭＡＣｚ，ＦＭＡＣｗ）を構成し、積和演算、乗算、加算、減算を４並列で実行することができる。比較演算などの特殊な演算は演算器７ｗが行なう。
【００１２】
図５に示すように接続することによって、座標変換における（４×４）行列の計算を高速に行なうことができる。以下に、行列計算で用いる命令とプログラム例を示す。
【００１３】
記述：Ｒ数値はレジスタ番号数値のレジスタを示す。
【００１４】
ＦＭＵＬ命令
４個の乗算を並列に行なう。
【００１５】
0003655723.tif 000004
ＦＭＡＣ命令４個の乗算を並列に行なう。
【００１６】
0003655723.tif 000005
浮動小数点数の符号を反転する。
【００１７】
0003655723.tif 000006
浮動小数点数の比較を行なう。比較結果はＴＲＵＥ／ＦＡＬＳＥ信号を用いてプロセッサ側に送られる。
【００１８】
例：
ＦＣＭＰ  ｅｑ  Ｒ０，Ｒ１
Ｒ０とＲ１が等しければＴＲＵＥ信号を送る。そうでなければＦＡＬＳＥ信号を送る。
【００１９】
ＦＣＭＰ  ｎｅ  Ｒ０，Ｒ１
Ｒ０とＲ１が等しくなればＴＲＵＥ信号を送る。そうでなければＦＡＬＳＥ信号を送る。
【００２０】
ＦＣＭＰ  ｇｔ  Ｒ０，Ｒ１
Ｒ０がＲ１より大きければＴＲＵＥ信号を送る。そうでなければＦＡＬＳＥ信号を送る。
【００２１】
ＦＣＭＰ  ｌｅ  Ｒ０，Ｒ１
Ｒ０がＲ１以下ならばＴＲＵＥ信号を送る。そうでなければＦＡＬＳＥ信号を送る。
【００２２】
ＦＣＭＰ  ｌｔ  Ｒ０，Ｒ１
Ｒ０がＲ１より小さければＴＲＵＥ信号を送る。そうでなければＦＡＬＳＥ信号を送る。
【００２３】
ＦＣＭＰ  ｅｑ  Ｒ０，Ｒ１
Ｒ０がＲ１以上ならばＴＲＵＥ信号を送る。そうでなければＦＡＬＳＥ信号を送る。
【００２４】
ＢＣＴ命令
コプロセッサからＴＲＵＥ信号が送られて来たらＬＡＢＥＬに分岐する。
【００２５】
例：
ＢＣＴ  ｌａｂｅｌ
これらの命令を使って、三角形がポリゴンの座標変換とクリッピング判定を行なうプログラムを記述すると以下のようになる。
【００２６】
〜各データとレジスタの対応〜
変換前の三角形ポリゴンの頂点１：（Ｒ０，Ｒ１，Ｒ２，Ｒ３）
変換前の三角形ポリゴンの頂点２：（Ｒ４，Ｒ５，Ｒ６，Ｒ７）
変換前の三角形ポリゴンの頂点３：（Ｒ８，Ｒ９，Ｒ１０，Ｒ１１）
0003655723.tif 000007
変換後の三角形ポリゴンの頂点１：（Ｒ３２，Ｒ３３，Ｒ３４，Ｒ３５）
変換後の三角形ポリゴンの頂点２：（Ｒ３６，Ｒ３７，Ｒ３８，Ｒ３９）
変換後の三角形ポリゴンの頂点３：（Ｒ４０，Ｒ４１，Ｒ４２，Ｒ４３）
………ここからプログラムリスト……ｌｉｓｔ  １………
；頂点１の座標変換
ＦＭＵＬ  Ｒ３２−Ｒ３５，Ｒ０，Ｒ１６−Ｒ１９
ＦＭＡＣ  Ｒ３２−Ｒ３５，Ｒ１，Ｒ２０−Ｒ２３
ＦＭＡＣ  Ｒ３２−Ｒ３５，Ｒ２，Ｒ２４−Ｒ２７
ＦＭＡＣ  Ｒ３２−Ｒ３５，Ｒ３，Ｒ２８−Ｒ３１
；頂点２の座標変換
ＦＭＵＬ  Ｒ３６−Ｒ３９，Ｒ４，Ｒ１６−Ｒ１９
ＦＭＡＣ  Ｒ３６−Ｒ３９，Ｒ５，Ｒ２０−Ｒ２３
ＦＭＡＣ  Ｒ３６−Ｒ３９，Ｒ６，Ｒ２４−Ｒ２７
ＦＭＡＣ  Ｒ３６−Ｒ３９，Ｒ７，Ｒ２８−Ｒ３１
；頂点３の座標変換
ＦＭＵＬ  Ｒ４０−Ｒ４３，Ｒ８，Ｒ１６−Ｒ１９
ＦＭＡＣ  Ｒ４０−Ｒ４３，Ｒ９，Ｒ２０−Ｒ２３
ＦＭＡＣ  Ｒ４０−Ｒ４３，Ｒ１０，Ｒ２４−Ｒ２７
ＦＭＡＣ  Ｒ４０−Ｒ４３，Ｒ１１，Ｒ２８−Ｒ３１
；クリッピング判定（ｗは正と仮定）
；頂点１
ＦＣＭＰ  ｇｔ  Ｒ３２，Ｒ３５  ；頂点１：ｘ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｇｔ  Ｒ３３，Ｒ３５  ；頂点１：ｙ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｇｔ  Ｒ３４，Ｒ３５  ；頂点１：ｚ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＮＥＧ  ｇｔ  Ｒ３５，Ｒ３５  ；Ｒ３５＝−（Ｒ３５）
ＦＣＭＰ  ｌｔ  Ｒ３２，Ｒ３５  ；頂点１：ｘ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｌｔ  Ｒ３３，Ｒ３５  ；頂点１：ｙ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｌｔ  Ｒ３４，Ｒ３５  ；頂点１：ｚ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
；頂点２
ＦＣＭＰ  ｇｔ  Ｒ３６，Ｒ３９  ；頂点２：ｘ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｇｔ  Ｒ３７，Ｒ３９  ；頂点２：ｙ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｇｔ  Ｒ３８，Ｒ３９  ；頂点２：ｚ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＮＥＧ  Ｒ３９，Ｒ３９        ；Ｒ３９＝−（Ｒ３９）
ＦＣＭＰ  ｌｔ  Ｒ３６，Ｒ３９  ；頂点２：ｘ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｌｔ  Ｒ３７，Ｒ３９  ；頂点２：ｙ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｌｔ  Ｒ３８，Ｒ３９  ；頂点２：ｚ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
；頂点３
ＦＣＭＰ  ｇｔ  Ｒ４０，Ｒ４３  ；頂点３：ｘ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｇｔ  Ｒ４１，Ｒ４３  ；頂点３：ｙ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｇｔ  Ｒ４２，Ｒ４３  ；頂点３：ｚ＞ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＮＥＧ  Ｒ４３，Ｒ４３        ；Ｒ４３＝−（Ｒ４３）
ＦＣＭＰ  ｌｔ  Ｒ４０，Ｒ４３  ；頂点３：ｘ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｌｔ  Ｒ４１，Ｒ４３  ；頂点３：ｙ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
ＦＣＭＰ  ｌｔ  Ｒ４２，Ｒ４３  ；頂点３：ｚ＜−ｗなら…
ＢＣＴ  ｌａｂｅｌ              ；クリッピング処理へジャンプ
………ここまでプログラムリスト……ｌｉｓｔ  １………
【００２７】
【発明が解決しようとする課題】
以上説明したように、グラフィックス描画処理における座標変換を行う従来のプロセッサにおいては、二つの数値の比較命令と条件分岐命令を組み合わせるため、クリッピング判定のための比較と条件分岐に多くの命令を必要としていた。このため、クリッピング判定を伴う座標変換性能が低下してしまうという不具合を招いていた。
【００２８】
そこでこの発明は、上記に鑑みてなされたものであり、その目的とするところは、グラフィックス描画処理における座標変換後のクリッピング判定を効率良く行なう座標変換処理回路を提供することにある。
【００２９】
【課題を解決するための手段】
上記目的を達成するために、本発明は、入力座標ベクトル（ｘ、ｙ、ｚ、１）の透視変換を行い、その変換結果として出力座標ベクトル（ｘ´、ｙ´、ｚ´、ｗ´）の各要素を出力する４つの座標変換回路と、出力座標ベクトル（ｘ´、ｙ´、ｚ´）を出力する座標変換回路の夫々について設けられ、当該出力座標ベクトル（ｘ´、ｙ´、ｚ´）の夫々の座標値を出力座標ベクトル（ｗ´）の値と比較することによって、夫々の座標についてその表示領域内に収まっている否か判定する３つの比較回路と、前記比較回路からの出力を格納するクリッピングレジスタとを備え、出力座標ベクトル（ｗ´）を出力する座標変換回路は、変換結果である該出力座標ベクトル（ｗ´）を、出力座標ベクトル（ｘ´、ｙ´、ｚ´）を出力する座標変換回路に入力させることを特徴とする。
【００３０】
上記発明において、前記出力座標ベクトルの値は、夫々符号と絶対値を示すフィールドで表され、前記比較回路は、絶対値を示すフィールド同士を比較する比較器と、前記比較器からの出力と前記出力座標ベクトル（ｘ´、ｙ´、ｚ´）の各々の座標値の論理積を出力する第１の回路と、前記比較器からの出力の反転信号と前記出力座標ベクトル（ｘ´、ｙ´、ｚ´）の各々の座標値の論理積を出力する第２の回路とから構成することができる。
【００３１】
上記発明において、前記クリッピングレジスタはシフトレジスタであり、前記比較回路からの出力をシフト動作によって退避しておくことができる。
【００３２】
上記発明において、前記クリッピングレジスタは、複数の座標ベクトルに対応するシフトレジスタに格納された前記判別結果に基く論理信号を出力する論理回路を有することが好ましい。
【００３３】
上記発明において、前記論理回路は、論理和ゲートであることが好ましい。
【００３４】
上記発明において、前記比較回路は、ｘ´＞｜ｗ´｜又はｘ´＜−｜ｗ´｜の場合にｘ´が表示領域外であることを示す信号を出力し、ｙ´＞｜ｗ´｜又はｙ´＜−｜ｗ´｜の場合にｙ´が表示領域外であることを示す信号を出力し、ｚ´＞｜ｗ´｜又はｚ´＜−｜ｗ´｜の場合にｚ´が表示領域外であることを示す信号を出力することが好ましい。
【００３５】
上記発明において、前記比較回路の夫々は、前記出力座標ベクトル（ｘ´、ｙ´、ｚ´）の夫々の座標値が、夫々の座標について表示領域内に収まっている場合と、その表示領域の正の方向に外れている場合と、その表示領域の負の方向に外れている場合とのいずれであるかを示す２ビットの識別信号を出力することが好ましい。
また、上記発明において、前記クリッピングレジスタは、６ｘｎビット（ｎ＞１）のシフトレジスタであり、６ビット分のレジスタ部分が前記比較回路の識別信号を受け、６ビットのシフト動作によって順次他の部分に退避しておくことが好ましい。
さらに、上記発明において、前記クリッピングレジスタは、少なくとも１８ビットのシフトレジスタであり、この１８ビットの論理積を出力する出力回路が接続されていることが好ましい。
また、前記３つの比較器による判定を、並列に行うことが好ましい。
さらに、前記出力座標ベクトル（ｘ´、ｙ´、ｚ´、ｗ´）は、グラフィックス描画処理におけるポリゴンの頂点座標であることが好ましい。
【００３６】
【発明の実施の形態】
以下、図面を用いてこの発明の実施の形態を説明する。
【００３７】
図１に、本発明の１実施例による座標変換処理回路を用いたグラフィックス処理システムを示す。
【００３８】
このシステムでは、プロセッサ１と、グラフィックスプロセッサユニット（以下、「ＧＰＵ」と記す。）３と、メインメモリ５がメインバス７でそれぞれ接続されており、さらに、グラフィックスメモリ９がＧＰＵ３にグラフィックスバス１１で接続されている。
【００３９】
ＧＰＵ３は前処理部１３とメイン処理部１５を有しており、メイン処理部１５はＤＤＡを使い、グラフィックスメモリ９から読み取ったテクスチャ情報を使って、出力画像のピクセルをレンダリングし、結果をグラフィックスメモリ９上のフレームバッファに書き込む。また、前処理部１３はメイン処理のＤＤＡの初期値、差分値などのパラメータを計算する。
【００４０】
プロセッサ１はプロセッサコア１７によりメインメモリ５からプログラムを読み込んで実行する。プロセッサコア１７はプログラムに従って、画面に描画すべきポリゴンの頂点の２次元座標と色情報等（以下、「ＧＰＵコマンド情報」と記す。）を作る。その際、座標変換ユニット１９を使用して３次元座標から２次元座標を作る。さらに、プロセッサ１はプログラムに従って、上記ＧＰＵコマンド情報に付加情報（どんなポリゴンを描画するかの識別コマンド）を付け加え、ＧＰＵコマンドとしてメインバス７を通してＧＰＵ３に送り、ＧＰＵ３が描画を実行する。なお、メインバス７を使わずに専用のバスを利用して情報を送る場合も考えられ得る。また、プロセッサ１のＧＰＵコマンドを作るスピードと、ＧＰＵ３の描画スピードがバランスしない場合（どちらかが遅い等）には、メインメモリ５上にＧＰＵコマンドをバッファリングして速度差を吸収する。
【００４１】
図２に座標変換処理回路１９の構成を示す。この実施形態の座標変換処理回路は、図５に示す座標変換処理回路に比べて、図５に示す演算器７ｘ，７ｙ，７ｚと同等の機能に加えて図３に示すクリッピング用比較器４ｘ、４ｙ、４ｚを内蔵した演算器５ｘ，５ｙ，５ｚと、図４に示すクリッピングレジスタ６を備えて構成されており、他の構成は図５と同様である。
【００４２】
図３において、クリッピング比較器４ｘ、４ｙ、４ｚは、座標変換後の頂点ｎ（ｎ＝１、２、３）の浮動小数点による出力座標ベクトル（ｘn ，ｙn ，ｚn ，ｗn ）を受けて、ｘn とｗn を比較してｘn ＞｜ｗn ｜又はｘn ＜−｜ｗn ｜あるいはｘn ≧｜ｗn ｜又はｘn ≦−｜ｗn ｜を判別し、ｙn とｗn を比較してｙn ＞｜ｗn ｜又はｙn ＜−｜ｗn ｜あるいはｙn ≧｜ｗn ｜又はｙn ≦−｜ｗn ｜を判別し、ｚn とｗn を比較してｚn ＞｜ｗn ｜又はｚn ＜−｜ｗn ｜あるいはｚn ≧｜ｗn ｜又はｚn ≦−｜ｗn ｜を判別し、それぞれの判別結果を出力する動作を１つの比較命令により行い、座標変換後の頂点ｎの出力座標ベクトル（ｘn ，ｙn ，ｚn ，ｗn ）を符号を含めて保持する入力レジスタ５１、５２と、入力レジスタ５１に保持された出力座標ベクトル（ｘn ，ｙn ，ｚn ）と入力レジスタ５２に保持された出力座標ベクトルｗn の大小関係をそれぞれ比較する比較器５３と、比較器５３の比較結果と入力レジスタ５１に保持された出力座標ベクトルの符号の反転値を入力してｘn ＞ｗn 又はｙn ＞ｗn 又はｚn ＞ｗn あるいはｘn ≧ｗn 又はｙn ≧ｗn 又はｚn ≧ｗn を判別する論理積（ＡＮＤ）ゲート５４と、比較器５３の比較結果と入力レジスタ５１に保持された出力座標ベクトルの符号を入力してｘn ＜−ｗn 又はｙn ＜−ｗn 又はｚn ＜−ｗn あるいはｘn ≦−ｗn 又はｙn ≦−ｗn 又はｚn ≦−ｗn を判別するＡＮＤゲート５５を備えて構成されている。
【００４３】
図４において、クリッピングレジスタ６は、シフトレジスタ６１と論理和（ＯＲ）ゲート６２を備えている。論理和（ＯＲ）ゲート６２は、シフトレジスタ６１の右側の１８ビットのビット積を出力する。
【００４４】
前記比較命令の実行により、シフトレジスタ６１は、演算器５ｘ，５ｙ，５ｚのクリッピング比較器から出力されたそれぞれの判別結果を受ける為に、６ビット分左シフトを行う。つまり、一連の処理の中で、頂点（ｎ−１）の前出力座標ベクトル（ｘn-1 ，ｙn-1 ，ｚn-1 ，ｗn-1 ）の判別結果をシフトした後、次のクリッピング判別結果を空いた右側の６ビットに受け取る。そして、判別結果がｎ頂点分（ここでは３頂点分）揃った段階で、シフトインされて保持されたｎ角形（三角形）ポリゴンの頂点の判別結果からクリッピング比較器による判別が成立する頂点が存在するか否かのクリッピング判定が、シフトレジスタ６１で行われ、クリッピングすべき頂点が存在する場合にはクリッピング処理を実行する分岐命令を実行させる信号を出力する。
【００４５】
図３に示すクリッピング比較器において、入力レジスタ５１の入力は、演算器５ｘならｘ値が、演算器５ｙならｙ値が、演算器５ｚならｚ値が入力される。入力レジスタ５２の入力はどの演算器５ｘ，５ｙ，５ｚでも同一のｗ値が入力される。
【００４６】
入力ｘを代表して説明すると、入力ｘの符号ビットと、入力ｗの符号ビットを分離し、数値フィールドのみを比較器５３に入力する。ここでは、入力ｘ，ｙ，ｚの数値フィールドを入力１とし、入力ｗの数値フィールドを入力２とする。ここで数値フィールドは、浮動小数点の指数部と仮数部からなっている。
【００４７】
比較器５３の比較結果は、入力１＞入力２の場合に「１」、そうでない場合には「０」となる。比較の条件は入力１≧入力２でも構わない。さらに、入力ｘ，ｙ，ｚの符号ビットの反転値をＡＮＤゲート５４の一方の入力とし、入力ｘ，ｙ，ｚの符号ビットをＡＮＤゲート５５の一方の入力とする。
【００４８】
図４に示す構成において、比較器５３は入力ｘと入力ｗの絶対値を比較し、｜ｘ｜＞｜ｗ｜でｘ≧０（つまり、ｘ＞ｗ）の時、ＡＮＤゲート５４の出力である＋Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．が「１」になり、｜ｘ｜＞｜ｗ｜でｘ＜０（つまり、ｘ＜−ｗ）の時、ＡＮＤゲート５５の出力である−Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．が「１」になる（ｗは正であると仮定する）。
【００４９】
次に、演算器５ｘ，５ｙ，５ｚ，５ｗのそれぞれのクリッピング用比較器からの出力、＋ｘ  Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．、＋ｙ  Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．、＋ｚ  Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．、−ｘ  Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．、−ｙ  Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．、−ｚ  Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．、をクリッピングレジスタ６への入力とする。
【００５０】
クリッピング用比較器は、ＦＣＬＩＰ命令で演算器５ｘ，５ｙ，５ｚのクリッピング用比較器が同時に実行される。ＦＣＬＩＰ命令は、６ビット左シフト後、クリッピング比較を行ない、クリッピング判定を行なう。詳しくは以下の通りである。
【００５１】
ＦＣＬＩＰ命令動作例
ＦＣＬＩＰ  Ｒ０−Ｒ３，Ｒ４
(1) 第一動作
シフトレジスタ６１を６ビット左シフト。
【００５２】
(2) 第二動作
Ｒ０（入力ｘ）とＲ４（入力ｗ）を演算器５ｘのクリッピング比較器で比較する。Ｒ１（入力ｙ）とＲ４（入力ｗ）を演算器５ｙのクリッピング比較器で比較する。Ｒ２（入力ｚ）とＲ４（入力ｗ）を演算器５ｚのクリッピング比較器で比較する。
【００５３】
(3) 第三動作
クリッピング判定
シフトレジスタ６１の下位１８ビットに一つでも「１」があれば、メインプロセッサにＴＲＵＥ信号を送る。
【００５４】
尚、上記第一動作と第二動作は、独立なので平行して行われる。
【００５５】
クリッピングレジスタ６を構成するシフトレジスタ６１は、図５に示すように、例えば３２ビットのレジスタで、最下位６ビットがクリッピング比較器の出力に接続されている。第０ビットが＋Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．に、第１ビットが＋Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．に、第２ビットが＋Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．に、第３ビットが＋Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．に、第４ビットが＋Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．に、第５ビットが＋Ｃｌｉｐｐｉｎｇ  Ｉｎｆｏ．に、それぞれ接続されている。
【００５６】
シフトレジスタ６１は、ＦＣＬＩＰ命令が実行される度に６ビット左シフトされるので、常に最新の頂点のクリッピング情報が第０〜５ビットに、一つ前の頂点のクリッピング情報が第６〜１１ビットに、二つ前の頂点のクリッピング情報が第１２〜１７ビットに、三つ前の頂点のクリッピング情報が第１８〜２３ビットに、四つ前の頂点のクリッピング情報が第２４〜２９ビットに入っていることになる。
【００５７】
つまり、三角形ポリゴンの場合には３頂点分の情報で、ポリゴンのクリッピング判定を行なうので、ＯＲゲート６２を用いて第０ビット〜１７ビットの内一つでも「１」があるかどうかを判定し、「１」があればＴＲＵＥ信号がメインプロセッサに出力され、クリッピング処理を行うべく分岐命令が実行される。
【００５８】
このような構成を採用することにより、クリッピング用比較器によって、二つ必要だったクリッピング判定用の比較命令を一つにでき、高速に処理できる。また、クリッピングレジスタ６によって、常に最新５頂点分のクリッピング情報を保持でき、三角形ポリゴンの３頂点分のクリッピング情報から、五角形ポリゴンの５頂点分のクリッピング情報を保持できる。さらに、上述したクリッピング用比較器とクリッピングレジスタを用いることにより、前述したｌｉｓｔ  １は以下に示すｌｉｓｔ  ２のようになり、クリッピング判定のプログラムのステップ数を短縮することができる。
【００５９】
………ここからプログラムリスト……ｌｉｓｔ  ２………
；頂点１の座標変換
ＦＭＵＬ  Ｒ３２−Ｒ３５，Ｒ０，Ｒ１６−Ｒ１９
ＦＭＡＣ  Ｒ３２−Ｒ３５，Ｒ１，Ｒ２０−Ｒ２３
ＦＭＡＣ  Ｒ３２−Ｒ３５，Ｒ２，Ｒ２４−Ｒ２７
ＦＭＡＣ  Ｒ３２−Ｒ３５，Ｒ３，Ｒ２８−Ｒ３１
；頂点２の座標変換
ＦＭＵＬ  Ｒ３６−Ｒ３９，Ｒ４，Ｒ１６−Ｒ１９
ＦＭＡＣ  Ｒ３６−Ｒ３９，Ｒ５，Ｒ２０−Ｒ２３
ＦＭＡＣ  Ｒ３６−Ｒ３９，Ｒ６，Ｒ２４−Ｒ２７
ＦＭＡＣ  Ｒ３６−Ｒ３９，Ｒ７，Ｒ２８−Ｒ３１
；頂点３の座標変換
ＦＭＵＬ  Ｒ４０−Ｒ４３，Ｒ８，Ｒ１６−Ｒ１９
ＦＭＡＣ  Ｒ４０−Ｒ４３，Ｒ９，Ｒ２０−Ｒ２３
ＦＭＡＣ  Ｒ４０−Ｒ４３，Ｒ１０，Ｒ２４−Ｒ２７
ＦＭＡＣ  Ｒ４０−Ｒ４３，Ｒ１１，Ｒ２８−Ｒ３１
；クリッピング判定（ｗは正と仮定）
ＦＣＬＩＰ  Ｒ３２−Ｒ３４，Ｒ３５；頂点１のクリッピング情報をクリッピングレジスタへ
ＦＣＬＩＰ  Ｒ３６−Ｒ３８，Ｒ３９；頂点２のクリッピング情報をクリッピングレジスタへ
ＦＣＬＩＰ  Ｒ４０−Ｒ３２，Ｒ４３；頂点２のクリッピング情報をクリッピングレジスタへ
ＢＣＴ  ｌａｂｅｌ                ；最新３頂点分の情報を元にクリッピング処理へジャンプ
………ここまでプログラムリスト……ｌｉｓｔ  ２………
また、本実施例のクリッピングレジスタ６では、各頂点のクリッピング情報
（＋ｘ，−ｘ，＋ｙ，−ｙ，＋ｚ，−ｚ）を保持しているため、該当ポリゴンが全てクリッピング領域外にあるかどうかのチェックを効率良く行える。
【００６０】
例えば、三角形ポリゴンにおいては、頂点１の＋ｘクリッピング情報ビット、頂点２の＋ｘクリッピング情報ビット、頂点３の＋ｘクリッピング情報ビットの全てが「１」の場合にそのポリゴンは全てクリッピング領域外にあり、表示する必要がないと判断できる。この場合、ＯＲゲート６２を頂点１の＋ｘ、頂点２の＋ｘ、頂点３の＋ｘの論理積をとる論理ゲートに置き換えるようにすればよい。
【００６１】
尚、ここでは、座標変換後の頂点ｎを３個（ｎ＝１、２、３）としたが、任意の個数の頂点（ｎ≧３）を持つ多角形のポリゴンも全く同様に取り扱えることは自明である。つまり、必要に応じて、ＯＲゲート６２の入力ビット数を増やし、又、シフトレジスタ６１のビット幅を大きくすればよい。
【００６２】
【発明の効果】
以上説明したように、この発明によれば、座標変換後の出力座標ベクトル（ｘn ，ｙn ，ｚn ）とｗn のそれぞれの比較を１命令で行う構成を採用したので、クリッピング判定用の命令を少なくすることができ、かつクリッピング判定のプログラムのステップ数を削減できるので、クリッピング判定処理にかかる時間を短縮することができる。また、クリッピング判定用の比較情報を専用のレジスタに集めてクリッピング判定を行う構成を採用したので、１ポリゴン分のクリッピング判定を効率良く行なうことができる。
【図面の簡単な説明】
【図１】本発明の１実施例による座標変換処理回路を用いたグラフィックス処理システムを示す。
【図２】発明の一実施形態に係る座標変換処理回路の構成を示す図である。
【図３】クリッピング比較器の構成を示す図である。
【図４】クリッピングレジスタの構成を示す図である。
【図５】グラフィックス処理における座標変換を行う従来の座標変換処理回路の構成を示す図である。
【図６】図５に示すレジスタの構成を示す図である。
【図７】図５に示す演算器の構成を示す図である。
【符号の説明】
１，２  ソースバス
３  ディスティネーションバス
４  レジスタ
５ｘ，５ｙ，５ｚ，５ｗ，７ｘ，７ｙ，７ｚ，７ｗ  演算器
６  クリッピングレジスタ
５１，５２  入力レジスタ
５３  比較器
５４，５５，６２  論理ゲート
６１  シフトレジスタ
【図１】
0003655723.tif 000008
【図２】
0003655723.tif 000009
【図３】
0003655723.tif 000010
【図４】
0003655723.tif 000011
【図５】
0003655723.tif 000012
【図６】
0003655723.tif 000013
【図７】
0003655723.tif 000014