JPH096966A - 四辺形を表わす画素データを生成する装置 - Google Patents

四辺形を表わす画素データを生成する装置

Info

Publication number
JPH096966A
JPH096966A JP8145821A JP14582196A JPH096966A JP H096966 A JPH096966 A JP H096966A JP 8145821 A JP8145821 A JP 8145821A JP 14582196 A JP14582196 A JP 14582196A JP H096966 A JPH096966 A JP H096966A
Authority
JP
Japan
Prior art keywords
triangle
data
vertex
plane equation
sorted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8145821A
Other languages
English (en)
Other versions
JP3839870B2 (ja
Inventor
L Ashbangh John
ジョン・エル・アッシュバーン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH096966A publication Critical patent/JPH096966A/ja
Application granted granted Critical
Publication of JP3839870B2 publication Critical patent/JP3839870B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

(57)【要約】 【課題】 コンピュータ・グラフィックス・システム
で、四辺形を表す画素データを生成する装置の処理効率
を改善する。 【解決手段】装置は、四辺形を定義する頂点データに応
じて平面方程式データを生成する処理回路および第1お
よび第2の三角形の平面方程式データに応じて四辺形を
表わす画素データを生成する充填スキャン・コンバータ
を含む。処理回路は、頂点データに応じて四辺形を第1
および第2の三角形に分割する第1の手段と、第1およ
び第2の三角形によって共有される共有データを含む第
1の三角形の平面方程式データを生成する第2の手段
と、第2の三角形を表す頂点データおよび共有データに
応じて、共有データの少なくとも一部を2回生成するこ
となく第2の三角形の平面方程式を生成する第3の手段
を含む。。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にディスプレ
イ・グラフィックスの生成に関し、特に、充填スキャン
・コンバータに入力される三角形の平面方程式の生成に
関する。
【0002】
【従来の技術】多角形は、表示画面上に表面を表示する
ためにグラフィックスで用いられる基本プリミティブの
一つである。多角形の充填(fill)される領域は、グラフ
ィックス・ディスプレイに3次元の物体の表面をレンダ
リング(rendering)する際に特に役に立つ。一般に多角
形は、凸状または凹状のどちらかの任意の形状をもつ、
結合され、閉じられた線の連続として定義される。多角
形の辺の上および中に入る表示画素をアクティブにする
ことによって、表示画面上で多角形を充填することがで
きる。辺の内側の画素は、内部(interior)の画素と呼ば
れる。図18は、いくつかの多角形および充填される多角
形をレンダリングするためにアクティブにされる画素を
示している。
【0003】いくつかの技法を用いて、多角形を充填す
るためにどの画素をアクティブにするべきか決定する。
これらの技法は、充填スキャン・コンバージョンといわ
れる。一般にこれらの技法は、画素の水平または垂直の
行のいずれのスパン上の一組の辺の間で作用する。例え
ば図18で、それぞれの多角形についてそれぞれの水平ス
パンの始点および終点が陰付けされた画素によって印さ
れている。充填スキャン・コンバータは、画素から画素
へ、例えば図18のX方向へステップし、それぞれの画素
についてパラメータの値を計算することによって、1つ
のスパン内の画素データを順に生成することができる。
そして1画素下の行にY方向に下がることによって、画
素を生成するための新しいスパンが選択され、新しいス
パンについて画素から画素へステッピングを繰り返す。
【0004】図18から分かるように、多角形は複雑にな
りえる。多くの辺をもつ多角形、内部交差(intersectin
g)する多角形、および凹形の多角形のような複雑な多角
形については、スキャン・コンバージョンは非常に複雑
になりうる。従って、三角形を充填するように充填スキ
ャン・コンバータを最適化し、三角形の組合せとして多
角形をレンダリングすることが望ましい。さらに、通常
グラフィック・データベースには四辺形が存在するた
め、2つの三角形に分割される四辺形を支持するように
充填スキャン・コンバータを最適化することが望まし
い。そして三角形の充填スキャン・コンバータは、結果
の三角形を両方とも充填することができる。
【0005】図18は2次元で単一色で描かれているが、
多角形は例えば赤、緑および青の色の値によって定義さ
れるような色をもつこともできる。多角形は3次元であ
ってもよく、したがって通常Z軸の座標として定義され
るそれぞれの画素に関連する奥行き(depth)をもつ。そ
れゆえ図18に示すそれぞれの画素は、実際上、X座標お
よびY座標、さらに赤、緑、青およびZ軸座標をもつこと
ができる。
【0006】三角形を効率的に表示するために設計され
るハードウェアおよびソフトウェアは、例えば加速器の
ブロックと充填スキャン・コンバータのブロックという
ようにいくつかのブロックに分割することができる。こ
のような配置において、加速器は三角形の頂点(V0,V1,V
2)に関するデータに基づいて平面方程式を生成する。こ
れらの平面方程式は、三角形の中のそれぞれの画素に関
連するパラメータの値を一意に定義するように設計さ
れ、結果として充填スキャン・コンバータは高速でシン
プルな電子機器ハードウェアとなり、加速器から供給さ
れる平面方程式を「ステッピング(stepping)する」こと
によって画素を生成する。例えば加速器は加算、乗算お
よび除算を行うことができ、充填スキャン・コンバータ
は加算のみ行う。
【0007】
【発明が解決しようとする課題】四辺形を生成および充
填するとき、それは2つの別々の三角形に分割すること
ができ、それぞれの三角形に関するデータは別々に加速
器に入力されて適当な平面方程式を生成することができ
る。しかしこの方法には、相当な量の処理資源を使用
し、長々とした計算が必要となりうる。四辺形を充填す
るために必要な処理資源および時間を減少させることが
要求されている。
【0008】さらに充填スキャン・コンバータは、頂点
の指定に関してソートされた三角形情報が与えられる場
合、より効率的に設計することができる。頂点のソート
は平面方程式を生成するより前に実行することができる
が、その方法のために付加的な処理資源および時間が用
いられる。したがって、ソートされた三角形の頂点を用
いて平面方程式を生成する際に必要とされる処理資源お
よび時間を減少させることが要求されている。
【0009】
【課題を解決するための手段】本発明の一つの形態は、
四辺形を表示する画素データを生成するコンピュータ・
グラフィック・システム装置に照準されている。装置
は、四辺形を定義する頂点データに応じて平面方程式デ
ータを生成する処理回路、および第1および第2の三角
形の平面方程式データに応じて四辺形を表わす画素デー
タを生成する充填スキャン・コンバータを含む。処理回
路は、頂点データに応じて四辺形を第1および第2の三
角形に分割する第1の手段と、第1および第2の三角形
によって共有される共有データを含む第1の三角形の平
面方程式データを生成する第2の手段と、第2の三角形
を表す頂点データおよび共有データに応じて、共有デー
タの少なくとも一部を2度生成することなく第2の三角
形の平面方程式を生成する第3の手段を含む。共有デー
タは、第2の手段によって第1のメモリから第2のメモ
リにフェッチ(fetch)される頂点データを含むことがで
き、第3の手段は、第1のメモリよりもアクセス時間が
短い第2のメモリから頂点データの少なくとも一部に直
接アクセスする手段を含むことができる。また共有デー
タは、第1の三角形および第2の三角形の両方に共通す
る辺に関する辺データを含むこともできる。ある実施例
で、第1の手段は、第1の頂点、第2の頂点、第3の頂
点、第1の辺、第2の辺および第3の辺を含む第1の三
角形を指定する手段ならびに第1の三角形の第1の頂
点、第4の頂点、第1の三角形の第3の頂点、第1の三
角形の第1の辺、第4の辺および第5の辺を含む第2の
三角形を指定する手段を含む。
【0010】この発明の別の形態は、充填スキャン・コ
ンバータに供給される、四辺形を表わす平面方程式デー
タを生成する方法に照準されている。方法は、四辺形を
表す頂点データを受け取るステップと、四辺形を第1の
三角形および第2の三角形に分割するステップと、共有
データを含む第1の三角形の平面方程式データを生成す
るステップと、第1の三角形の平面方程式データを充填
スキャン・コンバータに与えるステップと、共有データ
の少なくとも一部を使用して第2の三角形の平面方程式
データを生成するステップと、第2の三角形の平面方程
式データを充填スキャン・コンバータに供給するステッ
プとを含む。
【0011】この発明のもう一つの形態は、充填スキャ
ン・コンバータに供給される、四辺形を表わす平面方程
式のデータを生成する装置に向けられている。装置は、
四辺形を表す頂点データを受け取る手段と、四辺形を第
1の三角形および第2の三角形に分割する手段と、共有
されたデータを含む第1の三角形の平面方程式データを
生成する手段と、第1の三角形の平面方程式データを充
填スキャン・コンバータに供給する手段と、共有される
データの少なくとも一部を使用して第2の三角形の平面
方程式データを生成する手段と、第2の三角形の平面方
程式データを充填スキャン・コンバータに供給する手段
を備える。
【0012】
【発明の実施の形態】図1は、本発明に従って前処理を
行うライン・スキャン・コンバージョンの取り込みに適
したグラフィックス・システムの一つの実施例のブロッ
ク図である。図示される具体化は、基板およびチップの
数、それらが区分される方法、バスの幅およびデータ転
送速度に関して単なる典型であることを理解されたい。
多数の他の具体化を使ってもよい。ここで図示され、説
明される回路は単なる実例として与えられている。回路
は、例えばSynopsysから市販されている論理統合ソフト
ウェアを使用する大規模なカスタム集積回路で実現され
ることが好ましい。論理統合ソフトウェアは、Veralog
のような高級言語で論理ゲートに書き込まれる回路の説
明を最適化および翻訳する。回路は、5ボルトで動作す
る1ミクロンのFETを生成するCMOSプロセス、3.3ボルト
で動作する0.6ミクロンで引かれた(drawn)ゲート長のデ
バイスを生成するCMOSプロセス、またはデジタル回路を
実行するに適した他のプロセスを使用して実現すること
ができる。論理統合ソフトウェアへの入力は構造的とい
うより機能的であるので、論理統合ソフトウェアによっ
て生成される実際の回路は、ここで示されるものと異な
ってもよい。
【0013】図示されるように、システムはフロント・
エンド基板10、テクスチャ・マッピング基板12およびフ
レーム・バッファ基板14を含む。フロント・エンド基板
は、52ビットのバス16を通してホスト・コンピュータ15
に連絡している。フロント・エンド基板は、レンダリン
グされるプリミティブをバス16を通してホスト・コンピ
ュータから受け取る。プリミティブは、プリミティブが
三角形である場合、例えば頂点のようなプリミティブの
部分に関して、x,y,zベクトル座標のデータ、R,G,B色デ
ータおよびテクスチャS,T座標によって規定される。3
次元のプリミティブを表すデータは、フロント・エンド
基板10によって、85ビットのバス18を通してテクスチャ
・マッピング基板12およびフレーム・バッファ基板14に
供給される。テクスチャ・マッピング基板は、プリミテ
ィブを表す画面表示画素を計算するために受け取ったプ
リミティブ・データを補間し、プリミティブのそれぞれ
の画素について対応する結果のテクスチャ・データを決
定する。結果のテクスチャ・データは、図をわかりやす
くするために図1に単一のバスとして示される55ビット
のバス28を通してフレーム・バッファ基板に供給され
る。
【0014】フレーム・バッファ基板14は、それぞれの
プリミティブを表す表示画面上の画素を計算するために
フロント・エンド基板1Oから受け取ったプリミティブ・
データを補間し、物体の色の値を決定する。フレーム・
バッファ基板は、画素毎に、物体の色の値をテクスチャ
・マッピング基板から供給される結果のテクスチャ・デ
ータと組み合わせ、それぞれの画素について結果の画像
R,G,B値を生成する。それぞれの画素のR,G,B色制御信号
がR,G,B線29を通して供給され、表示画面の画素を制御
し、表示画面上にテクスチャ・マッピングされたプリミ
ティブを表す結果の画像を表示する。
【0015】フロント・エンド基板10、テクスチャ・マ
ッピング基板12、およびフレーム・バッファ基板14はそ
れぞれパイプラインで結ばれ、複数のプリミティブにつ
いて同時に操作する。テクスチャ・マッピングおよびフ
レーム・バッファの基板はフロント・エンド基板から供
給されるプリミティブについて操作し、一方、フロント
・エンド基板は、基板12および14のパイプラインが満杯
になるまで新しいプリミティブについて操作および供給
を続ける。
【0016】フロント・エンド基板10は、分配器チップ
30、3つの3次元(3D)加速器チップ32A、32Bおよび32
C、2次元(2D)加速器チップ34、および集線器チップ36
を含む。分配器チップ30は、バス16を通してホスト・コ
ンピュータからX,Y,Z座標および色のプリミティブ・デ
ータを受け取り、3次元のプリミティブ・データを3D
加速器チップ32A、32Bおよび32Cに一様に分配する。こ
のように3つのグループのプリミティブが同時に操作さ
れるので、システムの帯域幅は増大する。データは、40
ビットのバス38Aを通して3D加速器チップ32Aおよび32
Bに供給され、40ビットのバス38Bを通してチップ32Cに
供給される。バス38Aおよび38Bは、60MHzの速度でデー
タを転送し、2つの3D加速器チップを支持するに十分
な帯域幅を与える。2Dのプリミティブ・データは、44
ビットのバス40を通して40MHzの速度で2D加速器チッ
プ34に供給される。
【0017】それぞれの3D加速器チップは、受け取っ
たプリミティブを定義するx,y,z座標を対応する画面の
空間座標に変換し、画面の空間座標について物体のR,G,
B値およびテクスチャS,T値を決定し、プリミティブの四
辺形を三角形に分解し、それぞれの三角形を定義する三
角形の平面方程式を計算し、そしてR,G,B値を決定する
ために光源の計算を行う。またそれぞれの3D加速器チ
ップは、複数のウィンドウが表示される場合またはプリ
ミティブの部分が表示画面に表示される画像の量を越え
てしまう場合、画像のクリッピング操作を実行して、結
果の画像の正確な画面表示を保証する。3D加速器チッ
プ32A、32Bおよび32Cのそれぞれからの出力データは、4
4ビットのバス42Aおよび42Bを通して60MHzの速度で集線
器チップ36に供給される。2D加速器チップ34もまた、
46ビットのバス44を通って45MHzの速度で集線器チップ3
6に出力データを供給する。集線器チップ36は、3D加
速器チップ32Aないし32Cから受け取った3Dプリミティ
ブを結合し、分配器チップ30によって分配される前のオ
リジナルの順序にプリミティブを並べ直し、結合された
プリミティブの出力データをバス18を通してテクスチャ
・マッピングおよびフレーム・バッファの基板に供給す
る。
【0018】テクスチャ・マッピング基板12は、テクス
チャ・マッピング・チップ46およびキャッシュ・メモリ
として配置されることが好ましいローカル・メモリ48を
含む。より詳しく後述するが、キャッシュ・メモリ48
は、フレーム・バッファ基板でレンダリングされるプリ
ミティブに関連するテクスチャMIPマップ・データを格
納する。テクスチャMIPマップ・データは、ホスト・コ
ンピュータ15の主メモリ17からバス40を通り、2D加速
器チップ34、そして24ビットのバス24を通してダウンロ
ードされる。
【0019】テクスチャ・マッピング・チップ46は、表
示画面上にレンダリングされるプリミティブを表すプリ
ミティブ・データを、バス18を介して連続して受け取
る。上述のように3D加速器チップ32AないしCから供給
されるプリミティブは、点、線および三角形を含む。テ
クスチャ・マッピング基板は、点および線のテクスチャ
・マッピングを実行せず、三角形のプリミティブに関し
てのみ操作する。三角形のプリミティブを表すデータ
は、少なくとも一つの頂点に関する物体のx,y,z画素座
標、少なくとも一つの頂点の物体の色のRGB値、少なく
とも一つの頂点に対応するテクスチャ・マップの部分の
S,T座標、および三角形の平面方程式を含む。テクスチ
ャ・マッピング・チップ46は、物体の画素のz座標およ
び物体の色のR,G,B値を無視する。チップ46は、x,y画素
座標を補間し、プリミティブを表すそれぞれのx,y画面
表示画素に対応するSおよびT座標を補間する。それぞれ
の画素について、テクスチャ・マッピング・チップは、
キャッシュ・メモリから対応するテクスチャMIPマップ
の部分にアクセスし、複数のテクセル(texel)の加重平
均を含みうる画素について結果のテクスチャ・データを
計算する。
【0020】一つの典型的な実施例において、キャッシ
ュは64ブロックの256x256テクセルを格納する。先の技
術システムのテクスチャ・マッピング・ハードウェアに
用いられているローカル・メモリとは異なり、本発明の
キャッシュ・メモリは、大きいテクスチャのような、レ
ンダリングされるプリミティブにマップするテクスチャ
MIPマップの連続全体を格納しなくてもよい。むしろキ
ャッシュ・メモリは、任意のある時間に、現在レンダリ
ングしているプリミティブに実際に使用されるMIPマッ
プの連続の個別の部分のみ格納する。従って多くの応用
について、レンダリングされる画像の完全なテクスチャ
・データの1部分だけが、任意の時間にキャッシュ・メ
モリに格納される。
【0021】それぞれのテクスチャの完全なMIPマップ
の連続は、ホスト・コンピュータ15の主メモリ17に配置
および格納される。レンダリングされるプリミティブの
それぞれの画素について、テクスチャ・マッピング・チ
ップ46はキャッシュ・メモリ48のディレクトリにアクセ
スし、テクスチャMIPマップの対応する1つまたは複数
のテクセルがキャッシュに存在するかどうか判断する。
アクセスした時点で対応するテクセルがキャッシュ・メ
モリに格納されていれば、キャッシュのヒットが生じ、
テクスチャ・マッピング・チップ46によってテクセルが
キャッシュからフェッチおよび操作され、フレーム・バ
ッファ基板に渡される結果のテクスチャ・データを計算
する。しかしテクスチャ・マッピング・チップ46がアク
セスする時にプリミティブの画素についてキャッシュ・
メモリの中に対応するテクセルが格納されていない場
合、キャッシュ・ミスが生じる。キャッシュ・ミスが生
じたとき、プリミティブをレンダリングするために必要
なテクスチャMIPマップ・データの部分がホスト・コン
ピュータ15の主メモリ17からキャッシュ・メモリ48にダ
ウンロードされ、場合によっては前に格納されていた一
部のデータを置き換える。しかし、レンダリングされる
あらゆるプリミティブについてMIPマップの連続の全体
をダウンロードする従来のテクスチャ・マッピング・シ
ステムとは異なって、本発明は、プリミティブを現在レ
ンダリングするために実際に必要なMIPマップの連続の
部分、または現在レンダリングされたプリミティブの部
分だけをダウンロードする。より詳細に後述するが、キ
ャッシュ・ミスが起きたときは、テクスチャ・マッピン
グ・チップ46によって割込み制御信号が発信され、ホス
ト・コンピュータ15のテクスチャ割込みマネージャーを
起動させる。割込み制御信号はライン94を通して分配器
チップ30に供給され、そしてライン95を通してホスト・
コンピュータに割込み信号を供給する。
【0022】要求されるテクスチャ・データは、ホスト
・コンピュータによってその主メモリから読み出され、
3Dプリミティブをレンダリングするフロント・エンド
基板を通るテクスチャ・マッピング・チップへのパイプ
ラインを迂回して、バス24を通してテクスチャ・マッピ
ング基板48にダウンロードされる。このように、キャッ
シュ・ミスの割込みが生じたとき、フロント・エンド基
板は3Dプリミティブを操作して、バス18を通してテク
スチャ・マッピング・チップおよびフレーム・バッファ
基板に出力プリミティブ・データを供給し続ける一方
で、キャッシュ・ミスを起こしたプリミティブに関連す
るテクスチャ・データが主メモリ17からダウンロードさ
れる。従来のテクスチャ・マッピング・システムとは対
照的に、テクスチャ・マッピング・ハードウェアにテク
スチャ・データをダウンロードするのに、3Dプリミテ
ィブのパイプラインをフラッシュ(flush)する必要がな
く、従ってシステムの帯域幅と性能を増加させる。それ
ぞれの画素に関する結果のテクスチャ・データは、テク
スチャ・マッピング・チップ46によって5つのバス28を
通してフレーム・バッファ基板に供給される。5つのバ
ス28はそれぞれフレーム・バッファ基板に備えられた5
つのフレーム・バッファ制御器チップ50A、50B、50C、5
0Dおよび50Eに結合され、結果のテクスチャ・データを
フレーム・バッファ制御器チップに平行に供給する。フ
レーム・バッファ制御器チップ50AないしEはそれぞれ、
関連するVRAM(ビデオ・ランダム・アクセス・メモリ)チ
ップ51AないしEに結合される。フレーム・バッファ基板
はさらに、4つのビデオ形式チップ52A、52B、52Cおよ
び52DならびにRAM DAC(ランダム・アクセス・メモリ・
デジタル-アナログ・コンバータ)54を含む。フレーム・
バッファ制御器チップは、表示画面の別々の、重複しな
いセグメントを制御する。それぞれのフレーム・バッフ
ァ制御器チップは、フロント・エンド基板からバス18を
通してプリミティブ・データを受け取り、テクスチャ・
マッピング基板からバス28を通して結果のテクスチャ・
マッピング・データを受け取る。フレーム・バッファ制
御器チップはプリミティブ・データを補間して、プリミ
ティブを表すそれぞれのセグメントの画面表示の画素の
座標、およびそれぞれの画素の座標について対応する物
体R,G,B色の値を計算する。テクスチャ・マッピング基
板から結果のテクスチャ・データが供給されるプリミテ
ィブ(すなわち三角形)について、フレーム・バッファ制
御器チップは画素ごとに物体の色の値と結果のテクスチ
ャ・データを結合して、表示画面上に表示されるそれぞ
れの画素の最終的なR,G,B値を生成する。
【0023】物体およびテクスチャの色の値を結合する
方法は、多くの異なった方法で制御することができる。
例えば置き換えモードでは、画素をレンダリングする際
にテクスチャの色の値だけが使用されるように、物体の
色の値をテクスチャの色の値と簡単に置き換えることが
できる。代替として変調モードでは、物体およびテクス
チャの色の値を一緒に倍増させて、画素の最終的なR,G,
B値を生成することができる。さらに、対応するテクス
チャの色の値を物体の色の値と結合する方法を規定する
比率を明示する色制御ワードを、それぞれのテクセルに
ついて格納することができる。それぞれの画素に対応す
る結果のテクセル・データについて結果の色制御ワード
を決定し、それをフレーム・バッファ制御器チップにバ
ス28を通して供給することができ、その結果、制御器チ
ップは対応する結果の制御ワードによって示される比率
を使用してそれぞれの画素について最終的なR,G,B値を
決定することができる。
【0024】フレーム・バッファ制御器チップ50Aない
しEによって生成された、それぞれの画素のR,G,B値を含
む結果の画像ビデオ・データは、対応するVRAMチップ51
AないしEに格納される。VRAMチップ51AないしEのそれぞ
れのグループは8つのVRAMチップを含み、従って、40の
VRAMチップがフレーム・バッファ基板上に位置する。そ
れぞれのビデオ形式チップ52AないしDはVRAMチップの異
なるセットに接続され、そこからデータを受け取る。ビ
デオ・データはVRAMチップから連続的にシフトされ、64
ビットのバス58A、58B、58Cおよび58Dを通って33MHzの
速度で4つのビデオ形式チップ52A、52B、52Cおよび52D
にそれぞれ供給される。ビデオ形式チップは、RAMDACに
よって処理できるようにビデオ・データをフォーマット
し、フォーマットされたデータを32ビットのバス60A、6
0B、60Cおよび60Dを通して33MHzの速度でRAMDAC54に供
給する。それからRAMDAC54は、デジタルの色データをア
ナログのR,G,B色制御信号に変換し、それぞれの画素の
R,G,B制御信号を、R,G,B制御ライン29に沿って画面ディ
スプレイ(図示しない)に供給する。
【0025】本発明のある実施例では、テクスチャ・マ
ッピング基板12およびフレーム・バッファ基板14上のハ
ードウェアが複製されるため、あるプリミティブをレン
ダリングするタスクを複数のプリミティブに関して平行
して実行することができ、結果としてシステムの帯域幅
が増える。本発明のこのような代替実施例が図2に示さ
れており、複製されたハードウェアを有する本発明のコ
ンピュータ・グラフィックス・システムのブロック図を
示している。図2のシステムは、4つの3D加速器チッ
プ32A、32B、32Cおよび32Dと、キャッシュ・メモリ48A
および48Bにそれぞれ関連する2つのテクスチャ・マッ
ピング・チップ46Aおよび46Bと、VRAMチップのグループ
にそれぞれ関連する10のフレーム・バッファ・チップ50
Aないし50Jを含む。図2のシステムの動作は、上述され
た図1のシステムの動作と同様である。図2の実施例に
おけるハードウェアの複製は、あるプリミティブをレン
ダリングする操作を複数のプリミティブについて平行し
て実行することができるので、システムの帯域幅の増加
を可能にする。
【0026】加速器チップ32A、32Bおよび32Cを表わす
簡略されたブロック図が、図3に示されている。ホスト
・コンピュータ15からのプリミティブ・データは入力FI
FO70を通って、頂点RAM(バッファ0)71および頂点RAM(バ
ッファ0)72を含む二重バッファの頂点RAMに供給され
る。加速器はパイプライン構成において2つの個別のプ
ロセッサを含む。左のスタック78は、クリップ・コード
・ロジック82、レジスタ・ファイル73、マルチプレクサ
74、浮動小数点ALU75および浮動小数点乗算器76を含
む。左のスタック78の動作は、アドレス解読ロジック、
変換エンジンおよび分解エンジンを含む左のスタック制
御ユニット77によって制御される。左のスタック78から
の結果は、プリミティブRAM(バッファ0)80およびプリミ
ティブRAM(バッファ1)81を含む二重バッファのプリミテ
ィブRAMを通って右のスタック79に供給される。右のス
タックは、色クランパ/比較器85、レジスタ・ファイル1
80、マルチプレクサ182、浮動小数点ALU184、浮動小数
点乗算器186および浮動小数点除算/平方根ユニット188
を含む。右のスタック79からの結果は、出力FIFO91を通
ってテクスチャ・マッピング基板12およびフレーム・バ
ッファ基板14(図1)に供給される。右のスタック79の動
作は、右のスタック制御ユニット83によって制御され
る。右のスタックはライティング(lighting)、クリッピ
ングおよび平面方程式の計算を実行する。クリッピング
およびライティングのパラメータは、ホスト・コンピュ
ータ15によってクリッピング/ライティングRAM84に供給
される。
【0027】加速器は、変換、四辺形の分解、三角形お
よびベクトルに関する部分的な勾配計算、ライティング
(またはシェーディング(shading))、クリッピング、お
よびランダムに向きを定められ、定義された四辺形(ク
ワッド)、三角形およびベクトルの平面方程式(または勾
配)の計算を実行する。出力は、画素データにレンダリ
ングするためにフレーム・バッファ基板14のスキャン・
コンバータに供給され、また画素ごとのテクスチャの色
の値を生成するためにテクスチャ・マッピング基板12に
供給される。
【0028】図3の例では、サイズおよびコストを制限
するため、右のスタック79だけが除算器を含んでいる。
右のスタックは除算器を含み、左のスタックは除算器を
含まないので、左のスタックが変換、部分的な勾配計
算、クリップ検査、分解およびライティングのための前
計算を実行して、加速器の機能を区分する。右のスタッ
クは、ライティング、クリッピングおよび平面方程式の
計算を実行する。根本的な操作の流れは、プリミティブ
・データがホスト・コンピュータから入力FIFO70に入力
することである。プリミティブ・データは頂点RAMバッ
ファ71および72のうちの一方に入る。そして左のスタッ
ク78は、変換、分解および部分的な勾配計算を実行し、
結果をプリミティブRAMバッファ80および81のうちの一
方に置く。左のスタックが1つのプリミティブに関して
その操作を完了すると、右のスタック78にそのプリミテ
ィブについて操作を開始するように通知する。そして左
のスタックは、次のプリミティブに関して操作を始める
ことができる。同時に右のスタックは、プリミティブRA
Mバッファにあるプリミティブに関してライティング、
(必要であれば)クリッピング、および平面方程式の計算
を行う。
【0029】代替の実施例では、左と右のスタックが共
に、除算器を含む同一のハードウェアを含む。この構成
では、それぞれのスタックが異なるプリミティブに同じ
操作を実行するように機能を区分することができる。
【0030】図4は、平面方程式の生成を実行する典型
的な回路素子のブロック図である。ALU(算術論理ユニッ
ト)184、乗算器186および除算器188は、操作上、マルチ
プレクサ/データ・フォーマッタ182を通してレジスタ・
ファイル180およびRAM(ランダム・アクセス・メモリ)19
6に接続される。図4に示されるような一つの実施例に
おいて、RAM196は2つのRAMセグメント、RAM196Aおよび
RAM196Bから構成される。RAM196Aは図3の二重バッファ
のプリミティブRAM80および81に対応し、RAM196Bは図3
のクリッピング/ライティングRAM84に対応する。好まし
い実施例では、ALU184、乗算器186および除算器188はす
べて浮動小数点回路であるが、発明の利点を実現するた
めに必ずしも必要ではない。ALU184、乗算器186および
除算器/平方根計算機188の組み合わせを、処理ユニット
185と呼ぶことができる。RAM196は、三角形および四辺
形に関する頂点データを格納する。ALU184は加算および
減算のような数値演算を実行し、乗算器186および除算
器188はそれぞれ乗算および除算を実行する。レジスタ
・ファイル180およびマルチプレクサ/データ・フォーマ
ッタ182は記憶域およびデータ・ルーチングを提供し、
一般にデータ・フロー回路181と呼ぶことができる。入
力は、LS_leftバス183およびLS_rightバス189で受け取
ることができる。出力はLS_OUTバス187上に供給するこ
とができ、それは充填スキャン・ステッパがステッピン
グに使用する情報を受け取ることができるFIFOに接続さ
れていることが好ましい。図3の右のスタック制御器83
の一部として実行されうる状態(state)機械190は、図4
の他の素子を制御して、より詳しく後述するように平面
方程式を生成する。
【0031】図4でRAM196は、図1のホスト・コンピュ
ータ15および上流の処理回路から、四辺形のデータ定義
(典型的には頂点)を受け取る。図1で示したシステムに
関して、好ましい実施例において図4の回路素子は3D
加速器チップ32AないしCのそれぞれの中に属している。
RAM196は、変換および辺の勾配計算を行う加速器の中の
上流回路からデータを受け取る。上流回路によってRAM1
96に書き込まれたデータは、後述するように平面方程式
の計算および頂点のソーティングを行う図4の回路によ
ってアクセスされる。RAM196は高速に操作するために二
重バッファであることが好ましい。
【0032】一般に、三角形に基づく充填スキャン・コ
ンバータをもつ3Dコンピュータ・グラフィックス・シ
ステムは、外部ソースから四辺形の定義を受け取り、こ
の四辺形の定義を第1および第2の三角形の定義に分割
し、これらの定義を平面方程式ジェネレータの入力に与
える。それからシステムは、第1の三角形について平面
方程式を生成し、充填スキャン・コンバータにこれらの
平面方程式を与える。図1の中で、充填スキャン・コン
バータはフレーム・バッファ基板14内に存在する。充填
スキャン・コンバータは、平面方程式に基づくそれぞれ
の画素のそれぞれのパラメータの値を決定することによ
って、充填された三角形をレンダリングする。続いてシ
ステムは、第2の三角形について平面方程式を生成し、
それらを充填スキャン・コンバータに供給することがで
きる。
【0033】発明の一つの見地によれば、グラフィック
ス・システムは四辺形を2つの三角形に分割するため、
第1の三角形の平面方程式の生成による結果を使用する
ことにより、第2の三角形の平面方程式をより効率的に
生成することができる。発明のこの見地を分かりやすく
するために、平面方程式、および平面方程式で用いられ
る値の微分によって充填スキャン・コンバータの機能を
述べる。
【0034】図5を参照すると、三角形7は一連のスパ
ン8Aないし8Nに分解することができる。それぞれのスパ
ンは、充填される三角形7の中の1行の画素を表してい
る。そして充填スキャン・コンバータは、これらのスパ
ンに沿ってステップし、三角形の中のすべての画素につ
いてパラメータのそれぞれの値を決定することによっ
て、画素データを生成する。これを行うために、充填ス
キャン・コンバータはそれぞれのスパンについて、スパ
ンの位置Yと、スパンの始点および終点のX座標と、赤、
緑、青およびZの始点値と、勾配(dz/dx、dred/dx、dgre
en/dxおよびdblue/dx)という情報を与えられる。
【0035】それぞれの頂点(V0,V1,V2)のパラメータを
示す値の間の補間を行うことによって、それぞれのパラ
メータの始点値がそれぞれのスパンについて決定され
る。始点値および表示パラメータ(赤、緑、青または奥
行きを含む)の勾配(dp/dx)が分かると、連続した画素の
パラメータは以下の方程式で補間される。
【0036】
【数1】p1 = p0+dp/dx
【0037】上記の方程式で、p1は次の画素の1つのパ
ラメータであり、p0は現在の画素の1つのパラメータで
あり、dp/dxはこのパラメータの偏導関数である。例え
ばパラメータが赤の場合、次の画素(p1)の赤の強度は、
X軸上の連続する画素の間で赤の強度が変化する量(dp/d
x)に、現在の画素(p0)の赤の強度を加えることによって
決定される。
【0038】充填スキャン・コンバータは、次のスパン
8Bのパラメータの始点値を決定するために、三角形の辺
に沿ってそれぞれのパラメータについて同様の補間を行
う。これらのパラメータpはそれぞれXおよびYの線形関
数であるから、三角形の任意の点のパラメータの値を以
下の形式の平面方程式として表すことができる。
【0039】
【数2】p = ax + by + c
【0040】上記の方程式で、pは赤、緑、青またはz座
標のいずれかである。上記のような平面方程式は、Comp
uter Graphics, Principles and Practice (Foley et a
l, Addison Wesley, 1990)の中でより詳しく説明されて
いる。具体的には、「a」、「b」および「c」は、それ
ぞれユニークなxy位置のpの値を定義する定数である。
ここで、「平面方程式の生成」とはこれらの定数の値を
生成することに言及し、また以下で述べるが、代替の定
数の値の決定もまた平面方程式を説明する。
【0041】第1または開始のスパン8Aの第1の画素の
値p0は、平面方程式ジェネレータによって与えられる。
充填スキャン・コンバータは、説明のために最小のYス
パンとするこの開始スパンに基づいて、他のスパン8Bな
いし8Nの始点のパラメータ値を計算することができる。
慣例によって、表示画面上で、Xは左から右に増加し、Y
は上から下に増加する。充填スキャン・コンバータは、
辺に沿ってY方向にステッピングするために以下の方程
式を用いることができる。辺は、x=edge_slope*y+b(こ
こでedge_slope=dx/dy(Yに関するXの変化))によって表
すことができる。
【0042】
【数3】p0 = ax0 + by0 +c p1 = ax1 + by1 +c
【0043】ここで、p0は辺を表す一つの画素のあるパ
ラメータ値であり、p1は次のスパンの始点の画素を表す
画素の同じパラメータの値である。また(x0, y0)および
(x1, y1)は、辺上の連続する点を定義する。しかし、x1
=x0+dx、および辺に沿ったYのステップに関してy1=y0
+1であるので、以下の方程式が成り立つ。
【0044】
【数4】p1=a(x0 + dx) + b(y0 + 1) + c =(ax0 + by0 + c) + adx + b = p0 + adx + b
【0045】上記の方程式で、「a」の値は、三角形全
体に関するの定数である。一定のdyの一般的な線におい
て、dxの値は定数であるが典型的には整数でない。しか
し画素は離散的な位置にあるので、充填スキャン・コン
バータは整数のX値にそれぞれの画素を当てはめ、つま
りdxを整数値Δxに置き換えることができる。整数値Δx
は実際の線のdxと選ばれた画素との間で誤差が増えるに
従って変化する。しかし選ばれた整数Δxは常に、切り
捨てのedge_slopeまたは切り上げのedge_slopeのどちら
かである。従って上記の方程式は次のようになる。
【0046】
【数5】p1 = p0 + b + 切り捨て(edge_slope) + 調整
【0047】切り捨て(A)とは、最も近い整数に切り捨
てされた「A」値をいう。[b+切り捨て(edge_slope)]の
項は、前もって計算された定数であり、
【0048】
【数6】調整 = a [(絶対値(x1 - x0) > 絶対値(edge
_slope)(Δxが切り上げのedge_slope)の場合] 調整 = 0 [絶対値(x1 - x0) =< 絶対値(edge_slope)
(Δxが切り捨てのedge_slope)の場合]
【0049】p(I)がスパン8上のx=Iのパラメータpの値
である場合、画素p(I)を決定するために次式が与えられ
る。
【数7】 p(I)=p(I- 1) + b + [切り捨て(edge_slope))] + 調整 調整 = a [絶対値(x(I) - x(I-1)) > 絶対値(edge_sl
ope)の場合] 調整 = 0 [絶対値(x(I) - x(I-1)) =< 絶対値(edge_s
lope)の場合]
【0050】edge_slopeがX(I-1)に加えられてX(I)にな
るとき、少数位置からの桁上げ(carry)があるときに限
ってΔxは切り上げたedge_slopeと等しくなることに留
意されたい。上記の方程式は、如何なる乗算の実行も必
要としない。こうしてスパン8Aの始点の画素が与えら
れ、スパン8Aの初期パラメータが与えられると、次のス
パン8Bの第1の画素の始点パラメータは単純な加算機お
よび計数器を用いて生成することができるので、充填ス
キャン・コンバータの構造が単純化される。
【0051】スパン8Aないし8Nのすべてのスパンは、典
型的にXスパンとして生成されるので、三角形の辺は典
型的にY方向にステップされる。図6aおよび図6bは、充
填スキャン・コンバータが充填する三角形のタイプIお
よびタイプIIをそれぞれ示している。この指定に関し
て、タイプIの三角形9は、三角形9の中でY方向に最も
長い左側の1辺を含み、タイプIIの三角形10は、三角形
10の中でY方向に最も長い右側の1辺を含む。この指定
に関して、充填スキャン・コンバータを辺1として識別
される辺から常にステップするように設計することがで
き、その結果充填スキャン・コンバータの構造を単純化
することができる。さらに、充填スキャン・コンバータ
を三角形の上から下に(Yを増加させて)ステップするよ
うに設計することができ、その結果また充填スキャン・
コンバータの構造を単純化することができる。最長の辺
を含む三角形のタイプに依存して、スパンは左から右
(図6aのタイプIの三角形9)または右から左(図6bのタイ
プIIの三角形10)のどちらかの向きに補間される。完全
に水平な1辺をもつ三角形は、どちらのタイプとしても
扱うことができる。
【0052】図7を参照して、充填スキャン・コンバー
タはx'0、y0およびm2として示される値を使って図示さ
れた三角形を充填する。この例では、x'0は第1のスパ
ンのY値と交差する辺1上の点のX座標値であり、整数で
ある必要はない。値y0は、第1のスパンのY座標であ
り、整数である。値m2は、辺1の勾配(yの変化で割った
xの変化)である。始点の画素のX値の選択は、X方向にス
テップする次のX値に基づく。ステップするX方向は、m2
の符号によって決定することができる。スパンの終点を
決定するために、対向する辺(辺2または辺3のいずれ
も)もまた同様の方法でステップされる。
【0053】以上のことをまとめてみると、充填スキャ
ン・コンバータは以下の値を使って、平面方程式の一つ
の変形を表す。
【0054】1.平面方程式の一般的な形式からのそれ
ぞれのパラメータの「a」値。この値はdp/dxであり、X
方向に関するパラメータ「p」の導関数に等しい。dP_dX
(ここでP=[R, G, B, Z])と表す。
【0055】2.平面方程式の一般的な形式からのそれ
ぞれのパラメータの「b」値。この値はdp/dyであり、Y
方向に関するパラメータ「p」の導関数に等しい。この
値は充填スキャン・コンバータに渡される前に、「a」
が上記の通りの場合、[切り捨て(edge1_slope)]の値と
結合される。「切り捨て(edge1_slope)」は辺1の勾配d
x/dyの整数部分である。このように、(b+切り捨て(edge
1_slope))の量が使用される。この値はdP_dE(ここでP=
[R, G, B, Z])と表す。
【0056】3.p0(生成される第1の画素)のパラメー
タの始点値。これらはP_Start(ここでP=[R, G, B, Z])
と表す。
【0057】さらに、充填スキャン・コンバータは以下
のX,Y辺情報を使用して、三角形の辺をステップし、三
角形のスパンを定義する。
【0058】4.三角形の全ての3辺の勾配dx/dy。こ
れらはedgeN_slope(ここでN=[1, 2,3])と表す。
【0059】5.辺1の始点および終点のY値。充填ス
キャン・コンバータはこれらの値を丸めるので、辺1の
始点と終点のY値は、頂点0と頂点2の実際のy軸の値と等
しい。図6aおよび図6bに示されるように、辺1が常に(Y
に関して)長い辺になるように、頂点が典型的にソート
される。これらを、edge1_y_startおよびedge1_y_stop
と表す。
【0060】6.辺3の始点のY値。この値は特定のY交
差に合わせて調整する必要はない。充填スキャン・コン
バータは、典型的にこの値を内部に(internally)切り詰
める(truncate)。最初に辺1および辺2がスパンを定義し
たあとに、この値が使用される。しかし、Yスパンがedg
e3_y_startより大きいかまたは等しくなると、辺1およ
び辺3がスパンを定義する。
【0061】7.それぞれの辺の始点のX値。その辺の
整数の始点のY値に合わせて調整される。(X値自体は、
偶然を除いて通常整数ではない。)これらは、edgeN_x_s
tart(ここでN=[1,2,3])と表す。
【0062】8.三角形が図6aおよび図6bに示されるよ
うなタイプIの三角形であるかまたはタイプIIの三角形
であるかを指示するフラグ(X_increment)。図6aに示さ
れるタイプIの三角形に関して、辺1と辺2または辺1
と辺3の間のすべてのスパンは、X方向で増加する。図6
bに示されるタイプIIの三角形に関して、辺1と辺2ま
たは辺1と辺3の間のすべてのスパンは、X方向で減少
する。
【0063】三角形の3つの頂点から平面方程式を生成
するために、すべての3つの頂点が形式(X,Y, Z, 赤、
緑、青)の座標を持つと仮定することができる。言い換
えると、それらはすべて、XおよびY座標とともに奥行き
および色の情報を持つ。ここで示された概念はすべて、
頂点がXおよびY座標のみ、または上記のパラメータの任
意の組み合わせをもつ例についても等しく適用すること
ができる。
【0064】上述したように、平面方程式ジェネレータ
は、四辺形が2つの三角形に分割された後の三角形の定
義を受け取り、これらの三角形の定義に基づいて平面方
程式を生成することができる。これは、図8で6つのス
テップ120、122、124、126、128、130に分割されたプロ
セスに従って実行される。これらのステップの順序は、
図8に示される順序で実行される必要はなく、ある範囲
で同時にまたは平行に実行されることができる。ここ
で、これらのステップについて詳細に述べる。説明で
は、頂点はすでにv0.y<=v1.y<v2.yというようにソー
トされていると仮定する。言い換えると、頂点V0のY軸
の値は、頂点V1のY軸の値よりも小さいかあるいは等し
く、また図6aおよび図6bに示すように頂点V2のY軸の値
よりも小さい。
【0065】平面方程式ジェネレータは、最初に辺のデ
ルタを計算する(ステップ120)。1つのパラメータの辺
のデルタは、そのパラメータがある辺に沿って変化する
量である。Z軸(奥行き)および色のパラメータについて
は2つの辺のデルタのみ必要とされる。なぜなら、偏導
関数を決定するにはこのような2つの値だけで十分だか
らである。また以下の方程式で示されるように、辺のデ
ルタは1方向に関してそれぞれに定義されるため、三角
形のまわりで一貫する方向を持つ。これは四辺形を分解
するのに有用である。しかし、平面方程式を生成するた
めに、一般に外積が2辺の間で決定され、2辺の両方に
隣接する頂点が固定される。実例のため、固定される頂
点は、ここで頂点V0として示す。しかしその他のどの頂
点も外積の固定される頂点として選ぶことができ、その
場合、以下の方程式は異なる形式で表される。以下の方
程式で、変数「n」は変数が一貫した辺方向に関する正
規化座標であることをが示し、「mn」は変数が一貫した
辺方向に関する正規化座標の負であることを示す。例え
ば、nx1は頂点0から頂点1(辺2)へのX軸の正規化された
変化である。また、mnx2はが辺1についてX軸に沿った正
規化の変化の負であり、辺1のdxと呼ばれる。以下に示
すように、mnx2は、頂点0(v0.x)のX値から頂点2(v2.x)
のX値を引いた差に等しい。辺の指定に関しては、図6
a、図6bまたは図7を参照されたい。最後に、dxe3(辺3
のdx)は、辺3すなわち頂点V2から頂点V1へのX軸に沿っ
たX軸の変化である。同様の変数が、他のパラメータに
ついても使用される。
【0066】
【数8】 mnx2 = v0.x - v2.x nx1 = v1.x - v0.x dxe3 = v2.x - v1.x mny2 = v0.y - v2.y ny1 = v1.y - v0.y dye3 = v2.y - v1.y mnz2 = v0.z - v2.z nz1 = v1.z - v0.z mnred2 = v0.red - v2.red nred1 = v1.red - v0.red mngreen2 = v0.green - v2.green ngreen1 = v1.green - v0.green mnblue2 = v0.blue - v2.blue nblue1 = v1.blue - v0.blue
【0067】それから平面方程式ジェネレータは、Xお
よびYに関して辺の勾配を計算する(ステップ122)。上記
で計算されたいくつかの値を用いて、例えば辺1の勾配
(edge1_slope)は辺1のYの変化(上記mny2)で割った辺1の
Xの変化(上記mnx2)に等しく、他の辺についても同様の
計算が行われる。
【0068】
【数9】 edge1_slope = mnx2/mny2 edge2_slope = nx1/ny1 edge3_slope = dxe3/dye3
【0069】そして平面方程式ジェネレータは、辺の始
点/終点のY値を初期化する(ステップ124)。これらは、
辺1の始点のY値(edge1_y_start)、辺1の終点のY値(edge
1_y_stop)、および辺3の始点のY値(edge3_y_start)を含
む。これらは調整された2次的な画素ではないので、値
は必ずしも整数ではなく、頂点のY軸値から直接決定す
ることができる。
【0070】
【数10】 edge1_y_start = v0.y edge1_y_stop = v2.y edge3_y_start = v1.y
【0071】次に、平面方程式ジェネレータは、最も近
い頂点(図7の頂点V0)から第1のYスパン交点まで辺(図7
の辺1)に沿って調整した、辺の始点のXを計算する(ステ
ップ126)。これらの値(edge1_x_start、edge2_y_start
およびedge3_y_start)を生成するために、最初に2つの
端数が決定される。端数frac_y0は、頂点V0からY軸に沿
って次に大きい整数Y(すなわち第1のYスパン)までの量
であり、frac_y1は頂点V1のY値と次に大きい整数Yとの
間の差である。それぞれの始点Xは、以下の通り、辺の
勾配の一つと端数の一つの積に頂点の一つのX値を加え
ることによって決定することができる。
【0072】
【数11】 frac_y0 = 切り上げ(v0.y) - v0.y frac_y1 = 切り上げ(v1.y) - v1.y edge1_x_start = v0.x + edge1_slope*frac_y0 edge2_x_start = v0.x + edge2_slope*frac_y0 edge3_x_start = v1.x + edge3_slope*frac_y1
【0073】好ましい実施例で、切り上げ操作は、通常
最も近くにある最も大きい整数に丸めることである。例
えば(-1.3)は(-1.0)に丸められる。同様に切り捨ては、
好ましくは通常次に小さい整数に丸めることである。そ
して平面方程式ジェネレータは、Zおよび色ならびに三
角形のタイプ(IまたはII)に関して偏導関数を計算する
(ステップ128)。最初に、三角形がタイプIまたはタイプ
IIのどちらであるか示す、偏導関数の分母(one_over_c
d)を決定する。偏導関数の計算はすべて頂点0から頂点2
および頂点0から頂点1の2つのベクトルの外積に基づい
ている。しかし、1つの三角形には1つの平面だけが定
義されうるので、いかなる平面についてもその平面の法
線は1つしか存在せず(符号および大きさは無視する)、
従って外積はどの頂点(0,1または2)に基づいてもよい。
【0074】
【数12】 x_increment = [1 (one_over_cd < 0.0 (sign(one_over_cd)) [0 (one_over_cd ≧ 0.0 (sign(one_over_cd)) e1_slope = truncate(edge1_slope) dz/dx = (mny2*nz1 - mnz2*ny1)*one_over_cd dz/dy = (mxz2*nx1 - mnx2*nx1)*one_over_cd dz/de1 = dz/dy + dz/dx*e1_slope dred/dx = (mny2*nred1 - mnred2*ny1)*one_over_cd dred/dy = (mnred2*nx1 - mnx2*nred1)*one_over_cd dred/de1 = dred/dy + dred/dx*e1_slope dgreen/dx =(mny2*ngreen1 - mngreen2*ny1)*one_over_cd dgreen/dy =(mngreen2*nx1 - mnx2*ngreen1)*one_over_cd dgreen/de1 =dgreen/dy + dgreen/dx*e1_slope dblue/dx =(mny2*nblue1 - mnblue2*ny1)*one_over_cd dblue/dy =(mnblue2*nx1 - mnx2*nblue1)*one_over_cd dblue/de1 = dblue/dy + dblue/dx*e1_slope
【0075】この中で「truncate」操作とは、0値によ
り近い次の整数に丸めることをいう。次に平面方程式ジ
ェネレータは、頂点から第1の画素まで調整した、Zお
よび色の始点値を計算する(ステップ130)。
【0076】
【数13】 frac_x0 = [切り上げ(edge1_x_start) - v0.x (x_increment = 1の場合)] [切り捨て(edge1_x_start) - v0.x (x_increment = 0の場合)] z_start = v0.z + dz/dy*frac_y0 + dz/dx*frac_x0 red_start = v0.red + dred/dy*frac_y0 + dred/dx*frac_x0 green_start = v0.green + dgreen/dy*frac_y0 + dgreen/dx*frac_x0 blue_start = v0.blue + dblue/dy*frac_y0 + dblue/dx*frac_x0
【0077】one_over_cdの符号は、外積が面(page)の
外または中のどちらを指しているのか決定する。このよ
うに、この符号は三角形がタイプIまたはタイプIIのど
ちらの三角形であるか決定するために使用することがで
きる。
【0078】始点/終点の値のうちY以外はすべて、充填
スキャン・コンバータによる使用のために頂点から離れ
て調整される。edgeN_x_startは、頂点xから、辺と頂点
の下の第1のスパンとの交点に調整される。Z、赤、
緑、青の始点はすべて、充填スキャン・コンバータによ
って頂点V0からレンダリングされる第1の画素に調整さ
れる。充填スキャン・コンバータによって計算される最
初の画素は、図7に示されるように、V0のすぐ下のスパ
ンの左端にある1画素であり、辺1の上またはその内側
にある。
【0079】上述したように、四辺形は2つの個々の三
角形に分割することができ、それぞれの三角形は適当な
平面方程式を生成する平面方程式ジェネレータに個別に
入力される。図9aは2つの三角形に分割できる四辺形を
示し、図9bは2つの三角形に分割できる凹形四辺形を示
す。図9aおよび図9bから分かるように、結果は1つの共
有される辺をもつ2つの三角形である。
【0080】発明の一つの見地によれば、共有される辺
および2つの共有される頂点は、詳しくは第2の三角形
に関して上述の平面方程式の計算の一部を省くために利
用される。第1の三角形ついて平面方程式が生成される
一方で、第2の三角形について一部の計算を始めること
によって、付加的なパフォーマンスを得ることができ
る。
【0081】図10aは、図9aに示される四辺形の辺およ
び頂点について命名規則を示し、図10bは、図9bに示さ
れる四辺形の辺および頂点の命名規則を示す。例えば図
10aにおいて、第1の三角形101は、3つの頂点V1.0、V1.
1およびV1.2、ならびに辺1.1、辺1.2および辺1.3をも
つ。第2の三角形102は、頂点V2.0、V2.1およびV2.2、
ならびに辺2.1、辺2.2および辺2.3をもつ。これらの図
で、最初の数字は三角形を識別し、2番目の数字は三角
形の頂点または辺を表す。例えば、V2.1は第2の三角形
102の頂点1である。これらの命名規則は、同一の辺1(三
角形102の辺1.1および三角形101の辺2.1)および同一の
頂点0(V1.0およびV2.0)および頂点2(V1.2およびV2.2)を
共有する、2つの三角形の生成を容易にする。同様の共
有が、図10Bの第1の三角形103と第2の三角形104の間
にも存在する。
【0082】辺1は四辺形の2つの三角形の間で共有さ
れているので、第2の三角形の平面方程式の生成は、第
1の三角形の平面方程式による結果を用いて実行するこ
とができ、その結果処理効率が改善される。例えば、変
数mnx2は辺1に関するX軸の正規化された変化であり、辺
1のdxと呼ぶ。mnx2は図10aの三角形101についてすでに
計算されており、指定によって三角形101および三角形1
02は辺1を同一にするので、mnx2は三角形102に関して再
度計算する必要がない。如何に処理効率を改善すること
ができるかという方法について、より詳細に以下で説明
する。
【0083】再び図4を参照して、レジスタ180は、RAM
196よりも速く、頂点データのようなデータについてALU
184、乗算器186および除算器188にアクセスする。従っ
て、RAM196に代わってレジスタ180からパラメータをア
クセスできれば、動作はより短い時間で実行される。発
明の一つの実施例では計算を実行する前に、通常、パラ
メータがRAM196からフェッチされ、レジスタ180に入れ
られる。そしてレジスタ180から同じパラメータが直接
アクセスされる場合、アクセス時間が減少する。しかし
第2の三角形の平面方程式を生成するとき、四辺形の2
つの三角形に共有される辺および共有される頂点に関連
する任意のデータおよびその他の中間のパラメータに関
して、RAM196からレジスタ180へのフェッチを省くこと
ができる。この説明の中で「フェッチ」という語は、RA
M196からレジスタ・ファイル180へ数値を移す操作を説
明するために用いられる。
【0084】第2の三角形に関して省略することができ
るRAM196からレジスタ180へのフェッチは、v0.x、v0.
y、v0.z、v2.x、v2.y、v2.z、mnx2およびmny2を含む。
なぜならこれらの値は、第1の三角形について実行され
た計算の結果としてレジスタ180にすでに格納されてい
るからである。これらの値は頂点0、頂点2または辺1と
関連するのですでに格納されており、それらの値ははす
べて、図10aおよび図10bに示される指定の結果として両
方の三角形に同一である。
【0085】その上、mnz2、mnred2、mngreen2、mnblue
2およびedge1_slopeの値の計算は、第2の三角形に関し
て省略することができる。これらの計算を省略できるの
は、これらの値が第1の三角形について実行された計算
の結果としてすでに計算されており、図10aおよび図10b
に示すように共有される辺1と関連しているからであ
る。
【0086】図11は、本発明の一つの実施例に従って、
四辺形に関する平面方程式を計算するプロセスを示して
いる。ステップ170では、四辺形の定義を受け取る。ス
テップ171で、四辺形を第1の三角形と第2の三角形に
分割する。先に述べたように、このステップは、それぞ
れの三角形について2つの共有される頂点と一つの共有
される辺が存在するように、四辺形を分割することを含
むことができる。さらに、分割するステップは、それぞ
れの三角形の共有される頂点と共有される辺が同じ指定
をもつように三角形の辺および頂点を指定することを含
むことができる。ステップ172で、第1の三角形の平面
方程式が生成される。第1の三角形の平面方程式は充填
スキャン・コンバータに与えられる(ステップ174)。ス
テップ176で、第1の三角形の平面方程式を生成した結
果を用いて第2の三角形の平面方程式を生成する。例え
ば、ステップ176は、レジスタにすでに格納されている
値のような、第1の三角形の平面方程式を生成した中間
の結果を使用することを含むことができる。さらにその
結果は、mnz2等のような平面方程式の定数を含むことが
できる。従って、ステップ176は、ステップ174が完了す
る前に始めることができる。図4に示した回路は個別の
ALU184、乗算器186、および除算器188を含むので、いく
つかの操作を平行して実行することができる。ステップ
178で、第2の三角形の平面方程式を充填スキャン・コ
ンバータに与える。
【0087】図12は、本発明の一つの実施例で実行され
るフェッチおよび計算の操作を表にしたものであり、上
で述べた方法で三角形を指定し、フェッチおよび計算の
ような重複した動作を省くることによって達成される利
点を示している。フェッチおよび計算の一部は、二回実
行してもよいことに注意されたい。例えば一つの実施例
では、図12に示されるように、edge1_slopeは第1の三
角形と同様に第2の三角形についても生成される。さら
にv0.x、v2.xおよびv2.yのフェッチは、第2の三角形に
ついて省略されなかった。平面方程式の生成を実行する
ために用いられる異なった構造に基づいて、これは速度
に影響を与えうる。しかし回路の構造を単純化するため
に、edge1_slopeの計算を代わって2回実行することは
有利でありうる。このような実施例では、おそらく2ク
ロック・サイクルが加わることになる。
【0088】さらに図4のような配置において、乗算器
186には多くの場合ALU操作よりも多くの乗算/除算の操
作があるので、しばしば処理のスループットに関する障
害となる。また図4に示した実施例で、乗算器186およ
び除算器188は、各々の入力および出力について効果的
に時分割多重送信(time multiplex)する共通のバスを共
有する。その結果、上の表で示したフェッチのようにい
くつかのステップを省略できたとしても、乗算器186そ
れ自身のスループットを増やさない限り、ALU184および
除算器188によるレジスタ・ファイル180へのアクセスが
スループットを減少させることはできないので、スルー
プットに影響を与えることはできない。
【0089】しかし、代替の実施例では、edge1_slope
の計算およびv0.x、v2.x、v2.yのフェッチが、両方とも
第2の三角形に関して省略される。省略するフェッチや
計算の組合せは本発明の範囲内である。
【0090】上で示したように、図4は、三角形の生成
および平面方程式の生成を実行するシステムの好ましい
実施例を示す。しかしこれらの機能は、図示のハードウ
ェアまたはソフトウェアのどちらでも、またはハードウ
ェアおよびソフトウェアの組み合わせとして、実行する
ことができる。ソフトウェアの実施例で、ソフトウェア
は、汎用コンピュータまたは必要な機能を実行するため
に最適化されたコンピュータで実行することができる。
このようなコンピュータは、一般にCPU、ハード・ドラ
イブまたはEPROMのようなプログラム・メモリ、ランダ
ム・アクセス・メモリのようなデータ・メモリ、および
これらの素子の間のインターフェースへの処理のバスを
含む。また、通信デバイスを充填スキャン・コンバータ
へのインターフェースに使用することもできる。
【0091】発明の別の見地は、頂点のソーティングに
関連する。充填スキャン・コンバータは、典型的には、
表示画面の最上部のスパンを横切ってステップし、それ
からより下のスパンに進み(Y値を増やす)、より低いス
パンのステッピングを実行する(図5参照)。最上部のス
パンを最初に実行するというこの命令は、頂点V0を最上
部の頂点として定義することによって充填スキャン・コ
ンバータに指示することができる。従ってグラフィック
ス・システムは、3つの頂点V0、V1、V2に関するデータ
のような三角形の情報を受け取る頂点ソーターを含むこ
とができる。このような頂点ソーターは頂点に関するデ
ータをソートして、平面方程式ジェネレータにソート順
にデータを供給する。図6aおよび図6bに関して述べたよ
うに辺および頂点の指定を保持するために、この頂点の
ソーティングによって辺のソーティングも行われる。平
面方程式ジェネレータは、例えば充填スキャン・コンバ
ータに供給される平面方程式を生成するという図8に示
したステップを実行する。
【0092】しかし、図8で計算する平面方程式のある
値だけが頂点のソートに依存する。こうして、ソーティ
ングは図8に示すプロセスのうちの最初の数ステップと
同時に行うことができ、その結果プロセスはより効率的
になり、必要な処理資源が削減される。
【0093】頂点のソーティングと平面方程式の生成
は、上述のように、図4および図15に示す処理ユニット
によって同時に実行することができる。
【0094】典型的に、頂点のソーティングは、最大の
ものに対する最小のものを見つけるためにそれぞれの頂
点の対のY座標値を比較することを含む。これらのY座標
値を比較するプロセスには計算サイクルが余分にかかる
が、代わりにその時間を使って平面方程式を計算し始め
ることができる。その代わり、Yをソーティングする命
令は、図8で先に述べた平面方程式の一部として計算さ
れる辺のデルタYでコード化されることに注意された
い。辺のデルタは頂点に関して一貫して定義されるので
(図6aおよび図6bを参照)、辺のデルタYの符号を使って
ソーティングの結果を決定することができる。
【0095】図13は、異なったソートの結果になる三角
形のいくつかの例を示す。例えば、三角形201は、辺と
頂点の表記が図6aおよび図6bの指定に従っているのでソ
ーティングを必要としない。しかし三角形203について
は、頂点V1が、最小のY座標値をもつので、三角形201の
ような指定を得るために頂点V0と交換されなければなら
ない。
【0096】図14は、図13のそれぞれの例に関して頂点
と辺の適当な交換を行うための正確な表を示している。
図14に示すように、ソートされた頂点の順序およびソー
トされた辺の順序は、それぞれの辺に関する辺のデルタ
dyの符号から決定することができる。「辺3のDY符
号」、「辺2のDY符号」および「辺1のDY符号」の「0」
は、辺のデルタdyの符号が正であることを示し、「1」
は辺のデルタdyの符号が負である。例えば、三角形202
について、辺1のdy(頂点V0から頂点V2)が正であり、辺2
のdy(頂点V1から頂点V0)は負であり、辺3のdy(頂点V2か
ら頂点V1)が正である。「ソート後の頂点の順序」と
は、オリジナルの頂点に関するソート後の頂点の順序を
いう。例えば(b)の場合、ソート後の頂点の順序は(2,0,
1)であり、ソート後の頂点V2はオリジナルの頂点V0と等
しく、ソート後の頂点V0はオリジナルの頂点V1と等し
く、ソート後の頂点V1はオリジナルの頂点V2と等しいこ
とを意味する。同様に、ソート後の辺の順序は、オリジ
ナルの辺に関するソート後の辺の順序を示す。
【0097】図8および平面方程式を生成するステップ
に関して上述したように、辺のデルタはそれぞれ、三角
形のまわりで一貫した方向を持つように1方向で定義さ
れる。三角形202についてソーティングは、頂点および
辺の指定を時計回りに効果的に回転させることによって
達成される。そのようにして、図14はソート後の頂点の
順序およびソート後の辺の順序を示している。図14は、
図13に示す三角形201ないし206のそれぞれの結果の頂点
の順序と辺の順序を含む。また図14は、図13に示さなか
った2つの付加のケースも示している。具体的には、ケ
ース(g)はそれぞれの辺が正の辺のデルタをもつ場合を
示し、ケース(h)はそれぞれの辺が負の辺のデルタをも
つ場合を示す。先に述べたような辺の定義では、このよ
うなケースは通常起こらない。しかし、例えば三角形が
縮小されて有効に点に変形した場合、すべての辺のデル
タが0となることができ、それぞれの辺のデルタの符号
は正または負である。三角形が変形して水平線になる場
合にも同様の状況が存在しうる。従って、(g)および(h)
に示されたケースは存在しうる。これらのケースでは、
頂点が全て効果的に等しいので、実際のソーティングは
必要でない。従ってこれらのケースにおいては、ソート
後の頂点の順序およびソート後の辺の順序は、任意の頂
点のソーティングの前の順序になりうる。
【0098】図15は、頂点をソーティングするための回
路の一つの実施例を示し、図4に示した平面方程式の計
算回路の一部として実行することができる。回路は使用
されうるロジックを表わしており、代替の実現を効果的
に行って、同様の目的を達成することもできる。回路
は、ram_sign信号229上で受け取られる3辺のデルタYの
符号を保持する入力レジスタ220A、220Bおよび220Cを含
む。論理回路222の出力は出力レジスタ224A、224Bおよ
び224Cに供給され、ソートされた信号を供給し、それら
の信号は図17のアドレス・マップに示される方法で図4
のレジスタ・ファイル180をアドレスする際に使用され
る。
【0099】操作上、それぞれの入力レジスタ220A、22
0Bおよび220Cは、辺のデルタのそれぞれの符号を示す時
分割多重送信されたデータを運ぶram_sign信号229を受
け取る。ライン226上の信号set_e1_dyは、ram_sign信号
229が辺1のデルタYの符号を保有することを示し、ライ
ン227上の信号set_e2_dyは、ram_sign信号229が辺2の
デルタYの符号を保有することを示し、ライン228上の信
号set_e3_dyは、ram_sign信号229が辺3のデルタYの符
号を保有することを示す。辺のデルタYの符号信号は、
例えば辺のデルタのそれぞれを計算する図8のステップ
120から受け取られる。論理回路222は、ソート後の頂点
の順序を決定するために図14に示されるロジックに従っ
てロジックの操作を行い、レジスタ224Aないし224Cに出
力を与える。例えば出力レジスタ224Aは、ソート後の頂
点V0を表わす2ビットの値を保有し、それを出力信号so
rted_v0としてライン231上に供給する。出力レジスタ22
4Bはソート後の頂点V2を表わす2ビットの値を保有し、
それを出力信号sorted_v2としてライン232上に供給す
る。出力レジスタ224Cは、ソート後の頂点V1に関する値
を保有し、出力信号sorted_v1としてライン233上に供給
する。ライン230上の信号set_sort_regsは、ソート後の
頂点の値を保有するために、出力レジスタ224Aないし22
4Cをラッチ(latch)するために使用することができる。
さらに論理回路222は、ライン234上に信号sorted_edges
_same_as_verticesと指定される別の出力を供給し、ソ
ーティングの結果として三角形のタイプが入れ替わらな
かったことを示すために用いられる。(三角形のタイプI
およびIIについて図6aおよび図6bを参照)。図15に示す
回路が、ソート後の辺の番号を供給する必要はない。ソ
ート後の辺の番号は、ライン231ないし233のソート後の
頂点の信号およびsorted_edges_same_as_vertices信号2
34から解読することができる。
【0100】図15に示す回路からの出力が与えられれ
ば、図4に示す回路を使って一つの典型的な実施例にお
けるソートされた平面方程式を生成することができる。
一つの実施例では、図15からの出力はレジスタ・ファイ
ル180の頂点データへのポインタとして使用されるた
め、ソーティングの結果としての実際上のデータ交換を
回避する。図17は、この実施例で使用されるレジスタ・
ファイル180のためのメモリ・マップを示す。図17でラ
ベル256は、頂点V0、頂点V1または頂点V2のいずれの頂
点に関連してレジスタ・ファイル180に格納される値を
示す。アドレス252は十進アドレスであり、アドレス254
はアドレス252に一致する2進アドレスである。領域256
はそれぞれのアドレスの内容を定義する。例として、
X、Y、Z、R、G、Bの値が頂点のそれぞれと関連付けられ
ている。これらの値の一つにアクセスするために、適当
なアドレスが与えられる。二進アドレスの最初の2つの
数字は、どの頂点が選択されるかを示し(頂点V0の場合0
1、頂点V1の場合10、頂点V2の場合11)、最後の3つの二
進数字はその頂点の個々の値を示す。このように、最初
の2つの数字はソート後の頂点を表すことができる。こ
れらの2つの数字は図15の信号224AないしCからの出力
であるので、頂点データを再配置する必要はない。また
図17の頂点データは、辺情報、詳しくは3辺のそれぞれ
についての辺のdxおよび辺のdyを含むことに注意された
い。図17に示す配列によって、これらの値はまた、図15
に示す回路の出力から参照することできる。
【0101】上に示したように、図4の回路を使って四
辺形の迅速な生成を行うことができる。ソートされた平
面方程式の生成を行う際、ALU184、乗算器186および除
算器188によって速くアクセスできるように、頂点およ
び辺のデータを、RAM196からフェッチてレジスタ・ファ
イル180に格納することができる。レジスタ・ファイル1
80は、2ビットのソートされた頂点の信号224AないしC
がレジスタ・ファイル180から所望のソート後の頂点を
選ぶことができるように、頂点データと辺をレジスタ・
ファイルに格納する。さらに、3ビットのフィールドを
使って、所望のソートされた頂点の適当なパラメータ
(例えばX、Y、Z、赤、緑、青)を指定することができ
る。従って、sorted.v0.xを実行される計算への入力と
して要求する場合、レジスタ180に2ビットの頂点指定
および3ビットのパラメータ指定を含むアドレスを与え
ることによって、データをレジスタ180から読み取るこ
とができる。
【0102】図16および以下の方程式は、ソート後のパ
ラメータ値を使って平面方程式を計算する際、図4の回
路によって実行される操作を示している。操作は、図16
に示された順序で実行される必要はなく、重複させた
り、同時に実行することも可能である。以下の方程式
で、変数名にある「sorted」の語は、ソーティングの後
の値を示す。従って、例えばオリジナルの頂点が、v0、
v1およびv2(v1.y<v0.y<v2.y)である場合、sorted.v0
= v1、sorted.v1 = v0およびsorted.v2 = v2である。
【0103】ステップ132で、辺のデルタが図8のステ
ップ120と同様の方法で計算される。従って、mnx2、nx
1、dxe3、mny2、ny1、dye3、mnz2、nz1、mnred2、nred
1、mngreen2、ngreen2、mnnblue2およびnblue1の値のそ
れぞれは、ソーティングの前またはソーティングの間に
計算することができる。
【0104】
【数14】 mnx2 = v0.x - v2.x nx1 = v1.x - v0.x dxe3 = v2.x - v1.x mny2 = v0.y - v2.y ny1 = v1.y - v0.y dye3 = v2.y - v1.y mnz2 = v0.z - v2.z nz1 = v1.z - v0.z mnred2 = v0.red - v2.red nred1 = v1.red - v0.red mngreen2 = v0.green - v2.green ngreen1 = v1.green - v0.green mnblue2 = v0.blue - v2.blue nblue = v1.blue - v0.blue
【0105】ステップ134で、ソート後の辺の勾配が計
算される。これは、辺の勾配がソーティングなしで計算
される図8のステップ122と区別される。図8のプロセ
スは、先にソートされた頂点データに依存するからであ
る。従って、ソートされた辺の勾配は、出力レジスタ22
4AないしCからの出力を使って適当なソートされた頂点
を決定し、以下に示すように計算することができる。ア
スタリスク(*)を伴う下の値は、ソーティングとは独立
した値であるから、ソーティングの前または間に計算す
ることができる。
【0106】
【数15】 edge1_slope* = mnx2 / mny2 edge2_slope* = nx1 / ny1 edge3_slope* = dxe3 / dye3 sorted.e1_slope = edge1_slope または edge3_slope (ソートによる) sorted.e2_slope = edge1_slope または edge2_slope (ソートによる) sorted.e3_slope = edge2_slope または edge3_slope (ソートによる)
【0107】例えば、sorted_edges_same_as_vertices
信号が有効である場合、sorted.e1_slopeは、ソート後
のV0のdxをソート後のV0のdyで割ったものとして計算さ
れる。そうでなければ、sorted.e1_slopeはソート後のV
2のdxをソート後のV2のdyで割ったものとして計算され
る。(ソート後の頂点の指定について図17を参照。例え
ば「V0のdx」はedge1_dxをいう)。同様に、信号sorted_
edges_same_as_verticesが有効である場合、sorted.e2_
slopeはソート後のV1のdxをソート後のV1のdyで割った
ものとして計算される。そうでない場合、ソート後のV0
のdxをソート後のV0のdyで割ったものとして計算され
る。また、信号sorted_edges_same_as_verticesが有効
である場合、sorted.e3_slopeはソート後のV2のdxをソ
ート後のV2のdyで割ったものとして計算され。そうでな
い場合、ソート後のV1のdxをソート後のV1のdxで割った
ものとして計算される。
【0108】ステップ136で、ソート後の辺の始点/終点
のY値が決定される。ソート後の頂点は分かっているの
で、始点/終点の値はソート後の頂点から直接決定する
ことができる。
【数16】 edge1_y_start = sorted.v0.y edge1_y_stop = sorted.v2.y edge3_y_start = sorted.v1.y
【0109】それから図7のステップ126と同様の方程
式を用いるが、代わりにソート後の値を使用して、辺の
始点のXを計算することができる(ステップ138)。
【数17】 frac_y0 = 切り上げ(sorted.v0.y) - sorted.v0.y frac_y1 = 切り上げ(sorted.v1.y) - sorted.v1.y edge1_x_start = sorted.v0.x + sorted.e1_slope*frac_y0 edge2_x_start = sorted.v0.x + sorted.e2_slope*frac_y0 edges_x_start = sorted.v1.x + sorted.e3_slope*frac_y1
【0110】奥行きおよび/または色が要求される場
合、ステップ140でZおよび任意の色に関する偏導関数が
決定される。以下の方程式のいくつかは、三角形のソー
ティングには依存せず、ソーティング回路がソートを実
行した時点の任意の順序で実行することができることに
留意されたい。例えばすべての偏導関数は、辺に関する
ものを除いてソートに依存しない。x_increment値は上
述のようにソートに依存する。x_incrementによって表
される外積の符号は、三角形のタイプを変更した(タイ
プIからII、またはタイプIIからI)ソーティングとは反
対になるからである。従ってsorted_edges_same_as_ver
tices信号234がアクティブであれば、x_incrementは前
に述べたとおりである。しかしsorted_edges_same_as_v
ertices信号234がアクティブでない場合、これはタイプ
の入れ替えを示しており、x_incrementの信号は反対に
なる。
【0111】
【数18】 x_increment = [sign(one_over_cd) (sorted_edges_same_as_verticesの場合)] [-sign(one_over_cd) (その他の場合)] e1_slope = truncate(sorted.e1_slope) dz/dx* = (mny2*nz1 - mnz2*ny1)*one_over_cd dz/dy* = (mnz2*nx1 - mnx2*nz1)*one_over_cd dz/de1 = dz/dy + dz/dx*e1_slope dred/dx* = (mny2*nred1 - mnred2*ny1)*one_over_cd dred/dy* = (mnred2*nx1 - mnx2*nred1)*one_over_cd dred/de1 = dred/dy + dred/dx*e1_slope dgreen/dx* = (mny2*ngreen1 - mngreen2*ny1)*one_over_cd dgreen/dy* = (mngreen2*nx1 - mnx2*ngreen1)*one_over_ cd dgreen/de1 =dgreen/dy + dgreen/dx*e1_slope dblue/dx* = (mny2*nblue1 - mnblue2*ny1)*one_over_cd dblue/dy* = (mnblue2*nx1 - mnx2*nblue1)*one_over_cd dblue/de1 = dblue/dy + dblue/dx*e1_slope
【0112】次に、ソート後のZおよび色の始点値を、
頂点から第1の画素へ調整して計算する(ステップ14
2)。
【0113】
【数19】 frac_x0 = [切り上げ(edge1_x_start)-sorted.v0.x (x_increment=1の場合)] [切り捨て(edge1_x_start)-sorted.v0.x (x_increment=0の場合)] z_start = sorted.v0.z + dz/dy*frac_yo + dz/dx*frac_x0 red_start = sorted.v0.red + dred/dy*frac_y0 + dred/dx*frac_x0 green_start = sorted.v0.green + dgreen/dy*frac_y0 + dgreen/dx*frac_x0 blue_start = sorted.v0.blue + dblue/dy*frac_y0 + dblue/dx*frac_x0
【0114】この結果、頂点のソーティングは、別の方
法で必要とされるよりも速い時間で少ない処理資源を用
いて実行することができる。例えば辺のデルタYは、平
面方程式の生成のためにすでに算出されていることにな
っているので、それぞれの頂点のY座標値の比較を行う
代わりに、これらのデルタを比較の基準に使用して、頂
点のソーティングを実行することができる。それぞれの
辺のデルタYは、一貫した辺の指定に従ってY軸がその辺
に関して増加しているかを示す符号をもっているので、
論理回路を使って頂点を速くソートしてソート後の頂点
を与えることができる。
【0115】さらに、ソーティングのステップ全体は、
平面方程式の生成に関して効果的に明白である。ソーテ
ィング操作を実行し、そのソーティング操作の結果に基
づいて平面方程式を計算する代わりに、平面方程式を一
つのステップの中で効果的に生成することができる。
【0116】同時に実行されるソーティングは、図4に
示すようなハードウェア、ソフトウェア、またはハード
ウェアとソフトウェアの組み合わせのいずれにおいても
実行することができる。
【0117】本発明は例として次の実施態様を含む。 (1)コンピュータ・グラフィックス・システムで、四
辺形を表わす画素データを生成する装置であって、四辺
形を定義する頂点データに応じて、四辺形を第1および
第2の三角形(101および102、103および104)を表わす頂
点データに分割する第1の手段と、上記第1の三角形(1
01,103)を表わす頂点データに応じて、上記第1および
第2の三角形(101および102、103および104)が共有する
共有データを含む上記第1の三角形(101,103)の平面方
程式データを生成する第2の手段と、第2の三角形(10
2,104)を表わす頂点データおよび共有データに応じて、
共有データの少なくとも一部を生成することなく、上記
第2の三角形(102,104)の平面方程式データを生成する
第3の手段と、を含む、四辺形を定義する頂点データに
応じて平面方程式データを生成する処理回路(181,185,1
90)と、上記第1および第2の三角形(101および102、10
3および104)の上記平面方程式データに応じて、上記四
辺形を表わす画素データを生成する充填スキャン・コン
バータ(14)と、を備える、上記装置。 (2)共有されるデータが、第2の手段によって第1の
メモリ(196)から第2のメモリ(180)にフェッチされる頂
点データを含み、第3の手段が、第1のメモリ(196)よ
りもアクセス時間が短い第2のメモリ(180)の頂点デー
タの少なくとも一部に直接アクセスする手段を含む、上
記(1)の装置。
【0118】(3)平面方程式データに応じて四辺形を
表わす画素データを生成する充填スキャン・コンバータ
(14)を含むコンピュータ・グラフィックス・システムに
おいて、四辺形を表す頂点データを受け取るステップ(1
70)と、四辺形を、第1の三角形(101,103)および第2の
三角形(102,104)を表わす頂点データに分割するステッ
プ(171)と、共有されるデータを含む第1の三角形(101,
103)の平面方程式データを生成するステップ(172)と、
第1の三角形(101,103)の平面方程式データを、四辺形
を表わす画素データを生成する充填スキャン・コンバー
タ(14)に供給するステップ(174)と、共有されるデータ
の少なくとも一部を使用して第2の三角形(102,104)の
平面方程式データを生成するステップ(176)と、第2の
三角形(102,104)の平面方程式データを、四辺形を表わ
す画素データを生成する充填スキャン・コンバータに供
給するステップ(178)と、を含む、平面方程式データを
生成する方法。 (4)第1の三角形(101,103)の平面方程式データを生
成するステップが、共有されるデータの一部をメモリ(1
80)に格納することを含み、第2の三角形(102,104)の平
面方程式データを生成するステップが、メモリ(180)の
共有データの少なくとも一部に直接アクセスすることを
含む、上記(3)の方法。 (5)第1の三角形の平面方程式データを生成するステ
ップ(172)が、第1の三角形(101,103)および第2の三角
形(102,104)の間の共有される辺(辺1.1,辺2.1)を表すデ
ータを生成することを含み、第2の三角形(102,104)の
平面方程式データを生成するステップ(174)が、共有さ
れる辺(辺1.1,辺1.2)を表すデータの少なくとも一部を
使用することを含む、上記(3)の方法。 (6)第2の三角形(102,104)の平面方程式データを生
成するステップ(176)が、第1の三角形(101,103)の平面
方程式データを生成するステップ(172)の少なくとも一
部の間に実行される、上記(3)の方法。
【0119】(7)平面方程式データに応じて、四辺形
を表わす画素データを生成する充填スキャン・コンバー
タ(14)を含むコンピュータ・グラフィックス・システム
において、平面方程式データを生成する装置(181,185,1
90)であって、四辺形を表す頂点データを受け取る手段
と、四辺形を第1の三角形(101,103)および第2の三角
形(102,104)を表わす頂点データに分割する手段と、共
有されるデータを含む第1の三角形(101,103 )の平面方
程式データを生成する手段と、第1の三角形(101,103)
の平面方程式データを充填スキャン・コンバータに供給
する手段と、共有されるデータの少なくとも一部を使用
して第2の三角形(102,104)の平面方程式データを生成
する手段と、第2の三角形(102,104)の平面方程式を、
四辺形を表わす画素データを生成する充填スキャン・コ
ンバータに供給する手段と、を備える、上記装置。 (8)第1の三角形(101,103)の平面方程式データを生
成する手段が、共有されるデータの一部をメモリ(180)
に格納する手段と、第2の三角形(102,104)の平面方程
式データを生成する手段が、メモリ(180)の共有された
データの少なくとも一部に直接アクセスする手段を含
む、上記(7)の装置。 (9)第1の三角形(101,103)の平面方程式データを生
成する手段が、第1の三角形(101,103)および第2の三
角形(102,104)の間の共有される辺(辺1.1、辺2.1)を表
すデータを生成する手段を含み、第2の三角形(102,10
4)の平面方程式データを生成するステップが、共有され
る辺(辺1.1、辺2.1)を表すデータの少なくとも一部を使
用する手段を含む、上記(7)の装置。 (10)第2の三角形(102,104)の平面方程式データを
生成する手段が、第1の三角形(101,103)の平面方程式
データを生成する手段が平面方程式データを生成してい
る間に、平面方程式を生成する手段を含む、上記(7)の
装置。
【0120】
【発明の効果】本発明によれば、コンピュータ・グラフ
ィックス・システムで四辺形を2つの三角形に分割して
処理し、共有される辺および頂点を利用することにより
画素データを生成する処理効率を改善することができ
る。
【図面の簡単な説明】
【図1】本発明を具体化したコンピュータ・グラフィッ
クス・システムの第1の実施例のブロック図である。
【図2】本発明を具体化したコンピュータ・グラフィッ
クス・システムの第2の実施例のブロック図である。
【図3】本発明の実施例を具体化した加速器のブロック
図である。
【図4】図1および図3のそれぞれの加速器の一部分の
ブロック図であり、 平面方程式のデータを生成する処
理回路を示す。
【図5】充填スキャン・コンバータによって実行される
時に充填される三角形のスパンの生成を示す。
【図6】図6aは、最も長い辺が三角形の左側にある三角
形の第1のタイプを示す。図6bは、最も長い辺が三角形
の右側にある三角形の第2のタイプを示す。
【図7】三角形を充填する充填スキャン・コンバータに
よって用いられる画素および関連するパラメータの詳細
を示す。
【図8】平面方程式の連続的な生成に関して図4の回路
の操作を示すフローチャートである。
【図9】図9aは、2つの三角形に分割することができる
四辺形を示す。図9bは、2つの三角形に分割することが
できる凹形の四辺形を示す。
【図10】図10aは、図9aに示される四辺形の辺および
頂点の命名規則を示す。図10bは、図9bに示される四辺
形の辺および頂点の命名規則を示す。
【図11】四辺形を作る三角形の平面方程式を生成する
別の方法に関して、図4に示される回路の操作を示すフ
ローチャートである。
【図12】図11のステップに関連するフェッチおよび計
算の操作を示す図表であり、一部のフェッチおよび計算
の操作の削除を示す。
【図13】頂点をソートする前の三角形のいくつかの例
を示す。
【図14】図13に示す三角形で行われる頂点のソーティ
ングを示す。
【図15】図14に従って頂点のソーティングを実行する
回路の一例を示す。
【図16】頂点のソーティングが平面方程式の生成と同
時に実行されるプロセスを示す。
【図17】図4のレジスタ・ファイル内の頂点データの
メモリ・マップである。
【図18】いくつかの多角形およびその多角形を充填す
るためにアクティブにされた画素を示す。
【符号の説明】
10 フロント・エンド基板 12 テクスチャ・マッピング基板 14 フレーム・バッファ基板 15 ホスト・コンピュータ 32 3D加速器 34 2D加速器 80,81 プリミティブRAMバッファ 84 クリッピング/ライティングRAM 180 レジスタ・ファイル 182 マルチプレクサ/データ・フォーマッタ 184 加算および乗算のALU 186 乗算器 188 除算器

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・グラフィックス・システム
    で、四辺形を表わす画素データを生成する装置であっ
    て、 上記四辺形を定義する頂点データに応じて、上記四辺形
    を第1および第2の三角形を表わす頂点データに分割す
    る第1の手段と、上記第1の三角形を表わす頂点データ
    に応じて、上記第1および第2の三角形によって共有さ
    れる共有データを含む上記第1の三角形の平面方程式デ
    ータを生成する第2の手段と、上記第2の三角形を表わ
    す頂点データおよび上記共有データに応じて、上記共有
    データの少なくとも一部を2度生成することなく、上記
    第2の三角形の平面方程式データを生成する第3の手段
    とを含む、四辺形を定義する頂点データに応じて平面方
    程式データを生成する処理回路と、 上記第1および第2の三角形の上記平面方程式データに
    応じて、上記四辺形を表わす画素データを生成する充填
    スキャン・コンバータと、を備える、上記装置。
JP14582196A 1995-06-08 1996-06-07 四辺形を表わす画素データを生成する装置および方法 Expired - Lifetime JP3839870B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/488,644 US5710879A (en) 1995-06-08 1995-06-08 Method and apparatus for fast quadrilateral generation in a computer graphics system
US488,644 1995-06-08

Publications (2)

Publication Number Publication Date
JPH096966A true JPH096966A (ja) 1997-01-10
JP3839870B2 JP3839870B2 (ja) 2006-11-01

Family

ID=23940531

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14582196A Expired - Lifetime JP3839870B2 (ja) 1995-06-08 1996-06-07 四辺形を表わす画素データを生成する装置および方法

Country Status (2)

Country Link
US (1) US5710879A (ja)
JP (1) JP3839870B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842004A (en) * 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US5930519A (en) * 1997-04-30 1999-07-27 Hewlett Packard Company Distributed branch logic system and method for a geometry accelerator
US5956047A (en) 1997-04-30 1999-09-21 Hewlett-Packard Co. ROM-based control units in a geometry accelerator for a computer graphics system
US6184902B1 (en) * 1997-04-30 2001-02-06 Hewlett-Packard Company Centralized branch intelligence system and method for a geometry accelerator
US6219064B1 (en) 1998-01-07 2001-04-17 Seiko Epson Corporation Graphics mechanism and apparatus for mipmap level estimation for anisotropic texture mapping
US7088359B2 (en) * 2003-04-23 2006-08-08 Via Technologies, Inc. Vertex reordering in 3D graphics
US7286139B2 (en) * 2004-09-17 2007-10-23 Via Technologies, Inc. Partial guardband clipping

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811244A (en) * 1986-09-26 1989-03-07 Hitachi, Ltd. Drawing information management system
JP2690110B2 (ja) * 1988-08-15 1997-12-10 沖電気工業株式会社 走査変換方法
US5142617A (en) * 1988-10-27 1992-08-25 Tektronix, Inc. Method of shading a graphics image
JPH0719295B2 (ja) * 1990-08-06 1995-03-06 富士ゼロックス株式会社 図形の塗り潰し方法

Also Published As

Publication number Publication date
JP3839870B2 (ja) 2006-11-01
US5710879A (en) 1998-01-20

Similar Documents

Publication Publication Date Title
US5973705A (en) Geometry pipeline implemented on a SIMD machine
US5801711A (en) Polyline and triangle strip data management techniques for enhancing performance of computer graphics system
US5720019A (en) Computer graphics system having high performance primitive clipping preprocessing
US5274760A (en) Extendable multiple image-buffer for graphics systems
US6115047A (en) Method and apparatus for implementing efficient floating point Z-buffering
US5230039A (en) Texture range controls for improved texture mapping
US5185856A (en) Arithmetic and logic processing unit for computer graphics system
US5307450A (en) Z-subdivision for improved texture mapping
US4725831A (en) High-speed video graphics system and method for generating solid polygons on a raster display
US5896136A (en) Computer graphics system with improved blending
US5821950A (en) Computer graphics system utilizing parallel processing for enhanced performance
US5850489A (en) Linear expression evaluator
US5926406A (en) System and method for calculating floating point exponential values in a geometry accelerator
US5898437A (en) Method for fast rendering of three-dimensional objects by generating lists of like-facing coherent primitives
US5982384A (en) System and method for triangle rasterization with frame buffers interleaved in two dimensions
JP3839871B2 (ja) 三角形を表わす画素データを生成する装置
JPH11272880A (ja) 固定小数点ライティング・ユニットを用いたロ―カル・アイ・ベクトルの高速計算方法
JPH0916806A (ja) 立体画像処理装置
US5912830A (en) System and method for conditionally calculating exponential values in a geometry accelerator
JPH096973A (ja) データ同期装置
US5696944A (en) Computer graphics system having double buffered vertex ram with granularity
US5784075A (en) Memory mapping techniques for enhancing performance of computer graphics system
JP3839870B2 (ja) 四辺形を表わす画素データを生成する装置および方法
US20020171672A1 (en) Graphics data accumulation for improved multi-layer texture performance
US5732248A (en) Multistep vector generation for multiple frame buffer controllers

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050719

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20051012

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20051017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060315

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060718

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060804

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090811

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100811

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110811

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110811

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120811

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120811

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130811

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130811

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130811

Year of fee payment: 7

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

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

Free format text: PAYMENT UNTIL: 20130811

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130811

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term