JP2000149035A - 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置 - Google Patents

高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置

Info

Publication number
JP2000149035A
JP2000149035A JP11255123A JP25512399A JP2000149035A JP 2000149035 A JP2000149035 A JP 2000149035A JP 11255123 A JP11255123 A JP 11255123A JP 25512399 A JP25512399 A JP 25512399A JP 2000149035 A JP2000149035 A JP 2000149035A
Authority
JP
Japan
Prior art keywords
edge
record
pixel
value
current
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
JP11255123A
Other languages
English (en)
Other versions
JP4365950B2 (ja
JP2000149035A5 (ja
Inventor
Merrick Long Timothy
メリック ロング ティモシー
Fraser Christopher
フレイザー クリストファー
Moore Kevin
ムーア ケビン
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.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AUPP5859A external-priority patent/AUPP585998A0/en
Priority claimed from AUPP5854A external-priority patent/AUPP585498A0/en
Priority claimed from AUPP5862A external-priority patent/AUPP586298A0/en
Priority claimed from AUPP5858A external-priority patent/AUPP585898A0/en
Priority claimed from AUPP9234A external-priority patent/AUPP923499A0/en
Priority claimed from AUPQ0049A external-priority patent/AUPQ004999A0/en
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2000149035A publication Critical patent/JP2000149035A/ja
Publication of JP2000149035A5 publication Critical patent/JP2000149035A5/ja
Publication of JP4365950B2 publication Critical patent/JP4365950B2/ja
Application granted granted Critical
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/42Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of patterns using a display memory without fixed position correspondence between the display memory contents and the display position on the screen

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 複数の画素位置とを有するラスタ画素画像に
レンダリングするための方法、装置およびコンピュータ
可読媒体を提供する。 【解決手段】 所定の順序で、そのスキャン・ラインと
交差するオブジェクトの辺の交差座標の決定は、複数の
バッファを使用して辺レコードを処理し、これによっ
て、順序への辺交差の効率的なソートを可能にすること
によって達成される。辺交差の隣接する対のそれぞれに
ついて、対応するオブジェクトに関連する情報を検査し
て、辺交差の対応する対の間の画素位置のスパンに関す
るアクティブ・オブジェクトの組を決定する。画素位置
のスパンのそれぞれについて、アクティブ・オブジェク
トの対応する組を使用して、スパン内の位置のそれぞれ
の値を決定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト・グ
ラフィック要素のラスタ画素画像へのレンダリングに関
し、具体的には、レンダリング処理の一部としての画素
データのフレーム記憶装置またはライン記憶装置を使用
しない、そのようなオブジェクト・グラフィック要素の
画素画像データへの効率的なレンダリングに関する。
【0002】
【従来の技術】ほとんどのオブジェクト・ベース・グラ
フィックス・システムでは、ページまたは画面の画素ベ
ース画像を保持するためにフレーム・ストアまたはペー
ジ・バッファが使用される。通常、グラフィック・オブ
ジェクトの輪郭は、計算され、塗り潰され、フレーム・
ストアに書き込まれる。二次元グラフィックスの場合、
他のオブジェクトの手前にあるオブジェクトは、単純に
背景オブジェクトの書込み後にフレーム・ストアに書き
込まれ、これによって、画素単位で背景を置換する。こ
れは、当技術分野では、「ペインタのアルゴリズム(Pa
inter's algorithm)」として一般に知られている。オ
ブジェクトは、最も奥のオブジェクトから最も手前のオ
ブジェクトという優先順位で検討され、通常は、各オブ
ジェクトが、スキャン・ラインの順序でラスタ化され、
画素が、各スキャン・ラインに沿ったシーケンシャルな
並びでフレーム・ストアに書き込まれる。
【0003】この技法には、基本的に2つの問題があ
る。第1の問題は、フレーム・ストア内のすべての画素
への高速なランダム・アクセスが必要であることであ
る。これは、新たに検討されるオブジェクトのそれぞれ
が、フレーム・ストア内のどの画素にも影響する可能性
があるからである。このため、フレーム・ストアは、通
常は半導体のランダム・アクセス・メモリ(RAM)内
に保持される。高解像度カラー・プリンタの場合、必要
なRAMの量は非常に多くなり、通常は100Mバイト
を超えるが、これは、コストがかかり、高速での動作が
困難である。第2の問題は、多数の画素がペイント(レ
ンダリング)され、時間的に後のオブジェクトによって
上塗り(再レンダリング)されることである。時間的に
前のオブジェクトによる画素のペイントは、時間の浪費
になる。
【0004】大量のフレーム・ストアの問題を克服する
ための方法の1つが、「バンディング(banding)」の
使用である。バンディングを使用する時には、一時にフ
レーム・ストアの一部だけがメモリ内に存在する。描画
されるオブジェクトのすべてが、「表示リスト」に保存
される。画像全体は上記と同様にレンダリングされる
が、存在するフレーム・ストアの部分の外側をペイント
(レンダリング)しようとする画素ペイント(レンダリ
ング)動作は、「クリップ」アウトされる。オブジェク
トのすべてが描画された後に、フレーム・ストアの部分
を、プリンタ(または他の位置)に送り、フレーム・ス
トアの別の部分を選択し、この処理を繰り返す。この技
法には、ペナルティが伴う。たとえば、描画されるオブ
ジェクトは検討され、何度も(バンドごとに1回)再検
討されなければならない。バンドの数が増えるにつれ
て、レンダリングが必要なオブジェクトの検査が繰り返
されるし回数も増える。バンディングの技法は、上塗り
のコストという問題を解決しない。
【0005】いくつかの他のグラフィック・システムで
は、スキャン・ラインの順で画像が検討される。やは
り、描画されるオブジェクトのすべてが、表示リストに
保存される。各スキャン・ライン上で、そのスキャン・
ラインと交差するオブジェクトが優先順位の順でオブジ
ェクトごとに検討され、オブジェクトの辺の交差点の間
の画素のスパンが、ライン・ストアにセットされる。こ
の技法も、大量のフレーム・ストアの問題を克服する
が、やはり上塗りの問題をこうむる。
【0006】これらのほかに、大きいフレーム・ストア
の問題と上塗りの問題の両方を解決する技法がある。そ
のような技法の1つでは、各スキャン・ラインが順番に
作られる。やはり、描画されるオブジェクトのすべて
が、表示リストに保存される。各スキャン・ラインで
は、そのスキャン・ラインと交差するオブジェクトの辺
が、スキャン・ラインとの交差の座標の昇順で保持され
る。これらの交差の点または辺の交点が、順番に検討さ
れ、アクティブ・フラグの配列のトグルに使用される。
そのスキャン・ライン上での対象となるオブジェクト優
先順位ごとに1つのアクティブ・フラグがある。検討さ
れる辺の対のそれぞれの間で、最初の辺と次の辺の間に
ある各画素の色データが、アクティブ・フラグに対する
優先順位エンコーダを使用して、どの優先順位が最も上
にあるかを判定すること、および2つの辺の間のスパン
の画素に関するその優先順位に関連する色を使用するこ
とによって生成される。次のスキャン・ラインに備え
て、各辺の交差の座標が、各辺の性質に応じて更新され
る。この更新の結果として誤ってソートされた状態にな
った隣接する辺は、交換される。新しい辺も、辺のリス
トに合併される。
【0007】この技法は、フレーム・ストアまたはライ
ン・ストアがなく、上塗りがなく、位数N倍(このNは
優先順位の数)ではなく定数位数の時間でオブジェクト
優先順位が処理されるという大きい長所を有する。
【0008】
【発明が解決しようとする課題】しかし、この技法には
下記の複数の制限がある。
【0009】(i)この技法は、辺からオブジェクトの
内外の状態を決定するための、当技術分野で既知の「奇
数−偶数」塗潰し規則だけをサポートする。多数のグラ
フィック記述言語の必須機能である「非ゼロ・ワインデ
ィング」塗潰し規則は、この技法によってサポートされ
ない。
【0010】(ii)単純な交換技法が修復に不適切で
ある場合に、大量の誤ったソートが発生する可能性があ
る。各スキャン・ライン上で辺リスト全体のブルート・
フォース・ソート(brute-force sort)を実行すること
ができるが、これは非常に低速である。
【0011】(iii)この技法は、オブジェクト・タ
イプとしてのラスタ(画素ベース)画像をサポートしな
い。このような画像は、ほとんどのグラフィック記述言
語の必須機能である。
【0012】(iv)この技法は、ペイントされる画素
のそれぞれが、より低い優先順位のオブジェクトの画素
を厳密に隠す、不透明のオブジェクトだけをサポートす
る。よって、この技法は、複数のグラフィック・オブジ
ェクトの色が相互作用するラスタ演算をサポートしな
い。このような演算には、XORモードでの描画または
部分的に透明なオブジェクトの合成が含まれる。これら
の変更演算は、ほとんどのグラフィック記述言語の必須
機能である。
【0013】(v)この技法は、1つまたは複数のクリ
ップ形状によって、クリップ形状の境界の内側(または
外側)にあるいくつかの他のグラフィック・オブジェク
トを削除する、クリッピングをサポートしない。クリッ
ピングは、ほとんどのグラフィック記述言語の必須機能
である。
【0014】(vi)この技法では、オブジェクトの辺
の、具体的にはテキストに関する、大量の非効率的な符
号化が使用される。このようなグラフィック記述の極端
に一般的な要素は、より単純な形で表現されることが望
ましい。
【0015】(vii)この技法は、いくつかの場合
に、1つまたは複数のオブジェクトのアクティビティが
変数である複雑な合成式の正確な評価を提供しない。
【0016】この技法は、既存のグラフィック記述言語
が必要とする多数の機能を実施できないので、その使用
が極度に制限されている。
【0017】さらに、既存のレンダリング・インターフ
ェースの中には、複数のグラフィック・オブジェクトの
色のビット単位の論理組合せの実装を要求するものがあ
り、複数のグラフィック・オブジェクトの色のアルファ
・チャネル(透明度、不透明度またはマットと称する)
に基づく組合せの実装を要求するものもある。現在の技
法では、この2つの機能を統一された形で実装すること
ができない。
【0018】
【課題を解決するための手段】本発明の目的は、従来技
術のシステムに伴う1つ又は複数の欠陥を、実質的に克
服するか、少なくとも改善することである。
【0019】本発明の一つの態様によれば、ラスター画
素イメージを形成するべく、グラフィックオブジェクト
を処理する方法であって、該処理は、ラスタライズされ
た表示順における現在のスキャンラインのための対応す
る辺レコードを評価することにより、前記グラフィック
オブジェクトの辺間の交差順序を判断し、後続のスキャ
ンラインのための各辺に関する辺交差値を決定するもの
であって、該処理は前記辺レコードの処理の間に、限ら
れた数の処理された辺レコードを順序付けされていない
第1バッファに保持し、順序付け可能な処理済の辺レコ
ードが前記第1バッファに加えられのに応じて、順序付
け可能な前記辺レコードを漸進的に順次に第2バッファ
へ送るステップと、順序付けできない処理済の辺を、第
3バッファにおいて並べるために該第3バッファへ送る
ステップと、前記第2及び第3バッファからの辺レコー
ドを選択的に処理し、後続のスキャンラインに対する並
べられた交差を決定するステップとを備える方法が開示
される。
【0020】また、本発明の他の態様によれば、グラフ
ィックオブジェクト描画システムにおいて、ラスター画
素イメージを形成するべくグラフィックオブジェクトを
処理する方法であって、該処理は、前記グラフィックオ
ブジェクトの辺と前記ラスター画素イメージの現在のス
キャンラインとの交差の順序を決定する第1処理を備
え、前記システムが、現在のスキャンラインと後続のス
キャンラインの各々に関する複数の辺レコードと、該辺
レコードの各々は少なくとも対応するスキャンライン上
の対応する辺の画素位置の値を保持し、前記現在の辺レ
コード及び後続の辺レコードの各々は、少なくとも主部
分とスピル部分に分割され、少なくとも前記現在の辺レ
コードの主部分はラスター画素順に並べられ、少なくと
も一つの現在のアクティブ辺レコードと、スピルアクテ
ィブ辺レコードと、制限された所定数の辺レコードを含
むプールとを備え、前記方法が、(a)前記現在の辺レ
コードの前記主部分及びスピル部分の各々からの第1の
辺レコードを対応するアクティブ辺レコードに送るステ
ップと、(b)前記ラスタ画素順において最も低い値を
有するアクティブ辺レコードを決定し、現在の辺の値及
びレコードとしてその値とレコードを出力するために、
前記アクティブ辺レコードの値を比較するステップと、
(c)前記現在の辺レコードを、前記後続のスキャンラ
インのための対応する辺の値で更新するステップと、
(d)更新された辺の値を前記プール内の辺のああ痛い
と比較するステップと、ここで、更新された辺の値が前
記プール内の辺の値より小さい場合に、(da)前記更
新された現在の辺レコードが後続の辺レコードのスピル
部分へ送られ、さもなければ、(db)(dba)最小
の辺値を有する辺レコードが前記プールから、前記後続
の辺レコードの主部分の次のレコードへ送られ、(db
b)前記更新された辺レコードは、前記サブステップ
(dba)で殻になった前記プールのレコードへ送ら
れ、(dc)更なる辺レコードが、現在の辺レコードの
対応する部分から更新された辺レコードによって空にさ
れたアクティブ辺レコードへ送られ、(e)前記プール
内の前記レコードの各々が占領されるまで、ステップ
(b)乃至(d)を繰り返すステップと、これによって
前記プールの最小の辺値レコードが前記後続の辺レコー
ドの前記主部分へ送られ、(f)前記現在のレコードの
全てのレコードが更新されるまで前記ステップ(b)乃
至(e)を繰り返し、次いで、前記プールからのレコー
ドを順次に前記後続のレコードの前記主部分内の次のレ
コードへフラッシュするステップと、(g)前記レコー
ドを、前記後続のレコードにおける前記スピル部分にお
いて、ラスタ画素順にソートするステップと、(h)前
記後続の辺レコードを前記現在の辺レコードへ送るステ
ップと、(i)前記ラスタ画素イメージの更なるスキャ
ンラインの各々に関して、前記ステップ(a)乃至
(h)を繰り返すステップとを備える方法が開示され
る。
【0021】また、本発明の他の態様によれば、ラスタ
ー画素イメージを形成するべく、グラフィックオブジェ
クトを処理する装置であって、該処理は、ラスタライズ
された表示順における現在のスキャンラインのための対
応する辺レコードを評価することにより、前記グラフィ
ックオブジェクトの辺間の交差順序を判断し、後続のス
キャンラインのための各辺に関する辺交差値を決定する
ものであって、未整列の第1バッファ、第2バッファ及
び第3バッファを有するメモリと、限られた数の処理さ
れた辺レコードを順序付けされていない前記第1バッフ
ァに保持し、順序付け可能な処理済の辺レコードが前記
第1バッファに加えられのに応じて順序付け可能な前記
辺レコードを漸進的に順次に前記第2バッファへ送り、
順序付けできない処理済の辺を前記第3バッファにおい
て並べるために該第3バッファへ送り、前記第2及び第
3バッファからの辺レコードを選択的に処理し、後続の
スキャンラインに対する並べられた交差を決定するプロ
セッサとを備える装置が開示される。
【0022】また、本発明の他の態様によれば、ラスタ
ー画素イメージを形成するべく、グラフィックオブジェ
クトを処理する装置であって、該処理は、ラスタライズ
された表示順における現在のスキャンラインのための対
応する辺レコードを評価することにより、前記グラフィ
ックオブジェクトの辺間の交差順序を判断し、後続のス
キャンラインのための各辺に関する辺交差値を決定する
ものであって、限られた数の処理された辺レコードを順
序付けされていない第1バッファに保持し、順序付け可
能な処理済の辺レコードが前記第1バッファに加えられ
のに応じて、順序付け可能な前記辺レコードを漸進的に
順次に第2バッファへ送る手段と、順序付けできない処
理済の辺を、第3バッファにおいて並べるために該第3
バッファへ送る手段と、前記第2及び第3バッファから
の辺レコードを選択的に処理し、後続のスキャンライン
に対する並べられた交差を決定する手段とを備える装置
が開示される。
【0023】また、本発明の他の態様によれば、ラスタ
ー画素イメージを形成するべく、グラフィックオブジェ
クトを処理する装置のためのプログラムを格納するコン
ピュータ可読媒体であって、該処理は、ラスタライズさ
れた表示順における現在のスキャンラインのための対応
する辺レコードを評価することにより、前記グラフィッ
クオブジェクトの辺間の交差順序を判断し、後続のスキ
ャンラインのための各辺に関する辺交差値を決定するも
のであって、該プログラムが、限られた数の処理された
辺レコードを順序付けされていない第1バッファに保持
し、順序付け可能な処理済の辺レコードが前記第1バッ
ファに加えられのに応じて、順序付け可能な前記辺レコ
ードを漸進的に順次に第2バッファへ送る保持ステップ
のコードと、順序付けできない処理済の辺を、第3バッ
ファにおいて並べるために該第3バッファへ送る転送ス
テップのコードと、前記第2及び第3バッファからの辺
レコードを選択的に処理し、後続のスキャンラインに対
する並べられた交差を決定する処理ステップのコードと
を備えるコンピュータ可読媒体が開示される。
【0024】本発明の更に他の態様は以下の説明から明
らかとなる。
【0025】
【発明の実施の形態】以下、添付の図面を参照して本発
明の実施形態を説明する。なお、以下の実施形態の記載
において、数学記号を下記のように表記する。
【表1】 図1は、コンピュータ・グラフィック・オブジェクト画
像のレンダリングおよびプレゼンテーションのために構
成されたコンピュータ・システム1を概略的に示す図で
ある。このシステムには、システム・ランダム・アクセ
ス・メモリ(RAM)3に関連するホスト・プロセッサ
2が含まれ、システムRAM3には、不揮発性のハード
・ディスク・ドライブ5または類似の装置と、揮発性の
半導体RAM4を含めることができる。システム1に
は、システム読取専用メモリ(ROM)6も含まれ、シ
ステムROM6は、通常は半導体ROM7を基礎とし、
多くの場合に、コンパクト・ディスク装置(CD−RO
M)8によって補足することができる。システム1に
は、ラスタ式に動作するビデオ表示装置(VDU)また
はプリンタなどの、画像を表示するための手段10も組
み込むことができる。
【0026】システム1に関して上で説明した構成要素
は、バス・システム9を介して相互接続され、IBM
PC/ATタイプのパーソナル・コンピュータおよびそ
れから発展した構成、Sun Sparcstatio
nsおよび類似物など、当技術分野で周知のコンピュー
タ・システムの通常動作モードで動作可能である。
【0027】やはり図1に図示されているように、画素
シーケンシャル・レンダリング装置20は、バス9に接
続され、好ましい実施形態では、システム1からバス9
を介して命令およびデータを供給されるグラフィック・
オブジェクト・ベースの記述から導出される画素ベース
の画像のシーケンシャル・レンダリングのために構成さ
れる。装置20は、オブジェクト記述のレンダリングの
ためにシステムRAM3を使用することができるが、レ
ンダリング装置20は、通常は半導体RAMから形成さ
れる、専用のレンダリング・ストア配置30と関連付け
られることが好ましい。
【0028】次に図2を参照すると、好ましい実施形態
の機能データ流れ図が示されている。図2の機能流れ図
は、オブジェクト・グラフィック記述11から始まる。
このオブジェクト・グラフィック記述11は、ホスト・
プロセッサ2によって生成されるか、且つ/又は、シス
テムRAM3内に記憶されるかシステムROM6から導
出され、グラフィック・オブジェクトのパラメータを記
述するのに使用され、そこから画素ベース画像をレンダ
リングするために、画素シーケンシャル・レンダリング
装置20によって解釈され得る。たとえば、オブジェク
ト・グラフィック記述11には、ディスプレイ上の1点
から別の点まで横断する直線の辺(単純ベクトル)また
は、直交する線を含む複数の辺によって二次元オブジェ
クトが定義される直交辺フォーマットを含むいくつかの
フォーマットで辺を有するオブジェクトを組み込むこと
ができる。これ以外に、連続曲線によってオブジェクト
が定義されるフォーマットも、適当であり、これらに
は、乗算を実行する必要なしに二次曲線を単一の出力空
間内でレンダリングできるようにするいくつかのパラメ
ータによって単一の曲線を記述できる二次多項式の線分
を含めることができる。三次スプラインや類似物などの
それ以外のデータ・フォーマットを使用することもでき
る。オブジェクトには、多数の異なる辺タイプの混合物
を含めることができる。通常、すべてのフォーマットに
共通するのは、それぞれの線(直線であれ曲線であれ)
の始点と終点の識別子であり、通常は、これらは、スキ
ャン・ライン番号によって識別され、したがって、その
曲線をレンダリングすることのできる特定の出力空間が
定義される。
【0029】たとえば、図16Aに、線分を適当に記述
し、レンダリングするために、2つの線分601および
602に分割する必要がある辺600の従来技術の辺記
述を示す。分割の必要が生じるのは、従来技術の辺記述
が、二次式を介して簡単に計算されるが、変曲点604
に適応することができないからである。したがって、辺
600は、それぞれ終点603および604または終点
604および605を有する2つの別々の辺として扱わ
れた。図16Bに、終点611および612と制御点6
13および614によって記述される三次スプライン6
10を示す。このフォーマットでは、レンダリングのた
めに三次多項式の計算が必要であり、したがって、計算
時間がかかる。
【0030】図16Cに、好ましい実施形態に適用可能
な辺の例を示す。好ましい実施形態では、辺は、単一の
実体とみなされ、必要であれば、異なるフォーマットで
記述できる辺の部分を示すために区分されるが、その具
体的な目的は、各部分の記述の複雑さが最小限になるよ
うにすることである。
【0031】図16Cの左側には、スキャン・ラインA
〜Mの間にまたがる単一の辺620が示されている。辺
は、start_x、start_y、辺の次の線分を
指すアドレスを含む1つまたは複数の線分記述、およ
び、辺の終了に使用される最終線分を含む複数のパラメ
ータによって記述される。好ましい実施形態によれば、
辺620は、3つのステップ線分、1つのベクトル線分
および1つの二次線分として記述することができる。ス
テップ線分は、単純に、xステップ値とyステップ値を
有するものとして定義される。図示の3つのステップ線
分の場合、線分記述は[0,2]、[+2,2]および
[+2,0]である。xステップ値は符号付きであり、
これによってステップの向きが示されるが、yステップ
値は、必ず、スキャン・ラインの値が増えるラスタ・ス
キャン方向であるから符号なしであることに留意された
い。次の線分は、通常はパラメータstart_x、s
tart_y、finish_yおよび傾斜(DX)を
必要とするベクトル線分である。この例では、ベクトル
線分が辺620の中間線分であるから、start_x
およびstart_yは、前の線分から生じるので、省
略することができる。傾斜値(DX)は、符号付きであ
り、前のスキャン・ラインのx値に加算されて、現行ス
キャン・ラインのx値を与え、図示の例では、DX=+
1である。次の線分は、二次線分であり、これは、ベク
トル線分に対応する構造を有するが、さらに、やはり符
号付きであり、線分の傾斜を変更するためにDXに加算
される2階値(DDX)も有する。
【0032】図16Cの右側の線分は、好ましい実施形
態による三次曲線の例を示す図であり、これには上記の
二次線分に対応する記述が含まれるが、線分の傾斜の変
化の割合を変更するためにDDXに加算される符号付き
の3階値(DDDX)が追加されている。同様に、多数
の他の階も実施することができる。
【0033】上記から、辺の線分を記述する複数のデー
タ・フォーマットを処理する能力があると、複雑で計算
コストの高い数学演算に頼らずに、辺の記述と評価を単
純化することができることが明白である。これに対し
て、図16Aの従来技術のシステムでは、直交、ベクト
ルまたは二次のいずれであれ、すべての辺を二次形式で
記述する必要があった。
【0034】好ましい実施形態の動作を、図8に示され
た画像78のレンダリングという単純な例に関して説明
する。画像78は、2つのグラフィカル・オブジェク
ト、具体的に言うと、不透明の赤色の長方形90とその
上にレンダリングされ、これによって長方形90を部分
的に隠す、部分的に透明の青色の三角形80を含む。図
からわかるように、長方形90には、種々の画素位置
(X)とスキャン・ライン位置(Y)の間で定義された
横の辺92、94、96および98が含まれる。辺96
および98は、スキャン・ライン上に形成される(した
がってこれらと平行である)ので、長方形90の実際の
オブジェクト記述は、図9Aに示されているように、横
の辺92および94だけに基づくものとすることができ
る。これに関連して、辺92は、画素位置(40,3
5)から始まり、ラスタ方向で画面の下側へ延びて、画
素位置(40,105)で終わる。同様に、辺94は、
画素位置(160,35)から位置(160,105)
まで延びる。長方形グラフィック・オブジェクト90の
水平部分は、単に辺92から辺94へラスタ化された形
で走査することによって得ることができる。
【0035】しかし、青い三角形のオブジェクト80
は、3つのオブジェクト辺82、84および86によっ
て定義され、各辺は、三角形の頂点を定義するベクトル
とみなされる。辺82および84は、画素位置(10
0,20)から始まり、それぞれ画素位置(170,9
0)または(30,90)まで延びる。辺86は、これ
ら2つの画素位置の間で、従来のラスタ化された左から
右への方向に延びる。この特定の例では、辺86が、上
で述べた辺96および98と同様に水平なので、辺86
が定義されることは必須ではない。というのは、辺86
が、辺82および84に関する終点をもつという特徴が
あるからである。辺82および84の記述に使用される
始点および終点の画素位置のほかに、これらの辺のそれ
ぞれに、この場合ではそれぞれ+1または−1の傾斜値
が関連付けられる。
【0036】図10に、スキャン・ライン35で始まる
長方形90がレンダリングされる様子と、辺82および
84がスキャン・ライン35とどのように交差するかを
示す。図10から、画像78のラスタ化には、高い優先
順位レベルを有するオブジェクトが、低い優先順位レベ
ルを有するオブジェクトの「上」にレンダリングされる
形で2つのオブジェクト90および80が描画される必
要のあることがわかる。これを図11に示す。図11
は、画像78のレンダリングに使用される辺リスト・レ
コードを示す図である。図11のレコードには、オブジ
ェクトごとに1つずつの、2つの項目が含まれる。これ
らの項目は、それぞれのオブジェクトのラスタ・レンダ
リング順での始点に対応するスキャン・ライン値で配置
される。図11から、辺レコードのそれぞれが、オブジ
ェクトの関連する優先順位レベルと、記述される辺の性
質に関する詳細(たとえば色、傾斜など)を有すること
がわかる。
【0037】再び図2に戻って説明する。レンダリング
されるグラフィック・オブジェクトの記述に必要なデー
タを識別したので、グラフィック・システム1は、表示
リスト生成ステップ12を実行する。
【0038】表示リスト生成12は、取り付けられたR
OM6およびRAM3を有するホスト・プロセッサ2上
で実行されるソフトウェア・モジュールとして実施され
ることが好ましい。表示リスト生成12では、周知のグ
ラフィック記述言語、グラフィック・ライブラリ呼出し
または他のアプリケーション固有フォーマットのうちの
1つまたは複数で表現されたオブジェクト・グラフィッ
ク記述を表示リストに変換する。表示リストは、通常
は、表示リスト・ストア13に書き込まれる。表示リス
ト・ストア13は、一般にRAM4内で形成されるが、
その代わりにレンダリング・ストア30内で形成するこ
ともできる。図3からわかるように、表示リスト・スト
ア13には、複数の構成要素を含めることができ、その
1つは命令ストリーム14であり、もう1つは辺情報1
5であり、ラスタ画像画素データ16を含めることがで
きる。
【0039】命令ストリーム14には、特定の画像内で
所望される特定のグラフィック・オブジェクトをレンダ
リングするために画素シーケンシャル・レンダリング装
置20によって読み取られる、命令として解釈可能なコ
ードが含まれる。図8に示された画像の例では、命令ス
トリーム14が、下記の形になり得る。 (1)スキャン・ライン20までレンダリングする(何
もしない) (2)スキャン・ライン20で2つの青い辺82および
84を追加する (3)スキャン・ライン35までレンダリングする (4)スキャン・ライン35で2つの赤い辺92および
94を追加する (5)最後までレンダリングする。
【0040】同様に、図8の例によれば、辺情報15に
は、下記が含まれることになる。 ・辺84は画素位置100から始まり、辺82は画素位
置100から始まる; ・辺92は画素位置40から始まり、辺94は画素位置
160から始まる; ・辺84は70スキャン・ラインだけ延び、辺82は7
0スキャン・ラインだけ延びる; ・辺84は傾斜=−1を有し、辺84は傾斜=+1を有
する; ・辺92は傾斜=0を有し、辺94は傾斜=0を有す
る; ・辺92および94は70スキャン・ラインだけ延び
る。
【0041】上の命令ストリーム14および辺情報15
の例とそれぞれが表現される形から、図8の画像78で
は、画素位置(X)とスキャン・ライン値(Y)によっ
て、画像78がレンダリングされる単一の出力空間が定
義されることが認められる。しかし、本開示の原理を使
用して、他の出力空間構成を実現することもできる。
【0042】図8には、ラスタ画像画素データが含まれ
ず、したがって、表示リスト13の記憶部分16には何
も記憶する必要がない。この特徴については後で説明す
る。
【0043】表示リスト・ストア13は、画素シーケン
シャル・レンダリング装置20によって読み取られる。
画素シーケンシャル・レンダリング装置20は、通常は
集積回路として実施される。画素シーケンシャル・レン
ダリング装置20は、表示リストをラスタ画素のストリ
ームに変換し、このストリームは、たとえばプリンタ、
ディスプレイまたはメモリ・ストアなどの別の装置に転
送することができる。
【0044】好ましい実施形態では、集積回路として画
素シーケンシャル・レンダリング装置20を説明する
が、これは、ホスト・プロセッサ2などの汎用処理ユニ
ット上で実行可能な同等のソフトウェア・モジュールと
して実施することができる。このソフトウェア・モジュ
ールは、ディスク装置またはコンピュータ・ネットワー
クなどのコンピュータ可読媒体を介してユーザに配布す
ることのできるコンピュータ・プログラム製品の一部を
形成することができる。
【0045】図3は、画素シーケンシャル・レンダリン
グ装置20、表示リスト・ストア13および一時的レン
ダリング・ストア30の構成を示す図である。画素シー
ケンシャル・レンダリング装置20の処理ステージ22
には、命令実行機構300、辺処理モジュール400、
優先順位決定モジュール500、塗潰し色決定モジュー
ル600、画素合成モジュール700および画素出力モ
ジュール800が含まれる。処理動作では、一時的スト
ア30を使用するが、これは、上で述べたように表示リ
スト・ストア13と同一の装置(たとえば磁気ディスク
または半導体RAM)を共用するか、速度最適化のため
に個々の格納部(ストア)として実施することができ
る。辺処理モジュール400は、辺レコード・ストア3
2を使用して、スキャン・ラインからスキャン・ライン
へ順方向に運ばれる辺情報を保持する。優先順位決定モ
ジュール500は、優先順位特性および状況テーブル3
4を使用して、各優先順位に関する情報と、スキャン・
ラインがレンダリングされている間の辺交差に関する各
優先順位の現在の状態を保持する。塗潰し色決定モジュ
ール600は、塗潰しデータ・テーブル36を使用し
て、特定の位置で特定の優先順位の塗潰し色を決定する
のに必要な情報を保持する。画素合成モジュール700
は、画素合成スタック38を使用して、出力画素の値を
決定するために複数の優先順位からの色が必要になる出
力画素の、決定中の中間結果を保持する。
【0046】表示リスト・ストア13および上で詳細を
示した他のストア32ないし38は、RAM内で実施す
るか、他のデータ記憶技術で実施することができる。
【0047】図3の実施形態に示された処理ステップ
は、処理パイプライン22の形をとる。この場合、パイ
プラインのモジュールは、以下で説明する形でそれらの
間でメッセージを受け渡しながら、画像データの異なる
部分に対して並列に同時に実行することができる。もう
1つの実施形態では、以下で説明するメッセージのそれ
ぞれが、下流モジュールへの制御の同期転送の形をとる
ことができ、上流処理は、下流モジュールがそのメッセ
ージの処理を完了するまで中断される。
【0048】命令実行機構300は、命令ストリーム1
4から命令を読み取り、処理し、その命令を、出力39
8を介してパイプライン22内の他のモジュール40
0、500、600および700に転送されるメッセー
ジにフォーマットする。好ましい実施形態では、命令ス
トリーム14に、以下の命令を含めることができる。
【0049】LOAD_PRIORITY_PROPE
RTIES: この命令は、優先順位特性および状況テ
ーブル34にロードされるデータと、そのデータがロー
ドされるテーブル内のアドレスに関連する。命令実行機
構300は、この命令に出会った時に、優先順位特性お
よび状況テーブル34の指定された位置でのデータの記
憶のためのメッセージを発行する。これは、このデータ
を含むメッセージをフォーマットし、処理パイプライン
22を介して、ストア動作を実行する優先順位決定モジ
ュール500に渡すことによって達成できる。
【0050】LOAD_FILL_DATA: この命
令は、塗潰しデータ・テーブル36にロードされるデー
タと、そのデータがロードされるテーブル内のアドレス
に関連する。命令実行機構300は、この命令に出会っ
た時に、塗潰しデータ・テーブル36の指定されたアド
レスでのデータの記憶のためのメッセージを発行する。
これは、このデータを含むメッセージをフォーマット
し、処理パイプライン22を介して、ストア動作を実行
する塗潰しデータ決定モジュールに渡すことによって達
成できる。
【0051】LOAD_NEW_EDGES_AND_
RENDER: この命令は、次のスキャン・ラインを
レンダリングする時にレンダリング処理に導入される新
しい辺15の表示リスト・ストア13内のアドレスに関
連する。命令実行機構300は、この命令に出会った時
に、このデータを含むメッセージをフォーマットし、辺
処理モジュール400に渡す。辺処理モジュール400
は、新しい辺のアドレスを辺レコード・ストア32に記
憶する。指定されたアドレスにある辺は、次のスキャン
・ラインをレンダリングする前に、最初のスキャン・ラ
イン交差座標に基づいてソートされる。一実施形態で
は、辺は、表示リスト生成処理12によってソートされ
る。別の実施形態では、辺は、画素シーケンシャル・レ
ンダリング装置20によってソートされる。
【0052】SET_SCAN LINE_LENGT
H: この命令は、レンダリングされるスキャン・ライ
ンのそれぞれで作られる画素数に関連する。命令実行機
構300は、この命令に出会った時に、この値を辺処理
モジュール400および画素合成モジュール700に渡
す。
【0053】SET_OPACITY_MODE: こ
の命令は、画素合成演算で不透明度チャネル(当技術分
野ではアルファ・チャネルとも称する)を使用するかど
うかを示すフラグに関連する。命令実行機構300は、
この命令に出会った時に、このフラグの値を画素合成モ
ジュール700に渡す。
【0054】命令実行機構300は、通常は、命令をマ
ッピングし、パイプライン動作に復号して、さまざまな
モジュールに渡す、マイクロコードステートマシンによ
って形成される。或いは、その代わりに、対応するソフ
トウェア処理を使用することもできる。
【0055】スキャン・ラインのレンダリング動作中の
辺処理モジュール400の動作を、図4を参照して以下
に説明する。スキャン・ラインのレンダリングのための
初期条件は、以下の3つの辺レコードのストが使用可能
であることである。これら3つのリストのいずれかまた
はすべては空でもよい。これらのリストは、辺情報15
から取得されLOAD_NEW_EDGES_AND_
RENDER命令によってセットされる新しい辺を含む
新辺リスト402、前のスキャン・ラインから順方向に
運ばれた辺レコードを含む主辺リスト404および、や
はり前のスキャン・ラインから順方向に運ばれた辺レコ
ードを含むスピル辺リスト406である。各辺レコード
には、下記が含まれ得る。
【0056】(i)現在のスキャン・ライン交差座標
(本明細書ではX座標と称する) (ii)この辺の現在の線分が続くスキャン・ライン数
のカウント(本明細書ではNYと称する。いくつかの実
施形態では、これをY限界と表現する場合がある) (iii)各スキャン・ラインの後でこの辺レコードの
X座標に加算される値(本明細書ではDXと称する) (iv)各スキャン・ラインの後でこの辺レコードのD
Xに加算される値(本明細書ではDDXと称する) (v)1つまたは複数の優先順位番号(P) (vi)辺がスキャンラインと上向き(+)に交差する
か下向き(−)に交差するかを示す方向(DIR)フラ
グ (vii)リスト内の次の辺線分のアドレス(AD
D)。
【0057】このようなフォーマットは、ベクトル、直
交配置された辺および二次曲線に適合する。これ以外の
パラメータ、たとえばDDDXの追加によって、このよ
うな配置が三次曲線に適合できるようになる。三次ベジ
ェ・スプラインなど、いくつかの応用分野では、6階多
項式(すなわちDDDDDDXまで)が必要になる場合
がある。
【0058】図8の辺84および94の例では、スキャ
ン・ライン20での対応する辺レコードが、以下の表1
に示されたものになる。
【0059】
【表2】
【0060】この説明では、レンダリング処理によって
生成されつつあるスキャン・ラインに沿って画素から画
素へステップする座標を、X座標と称し、スキャン・ラ
インからスキャン・ラインへとステップする座標を、Y
座標と称する。各辺リストには、メモリ内で連続的に配
置された0個以上のレコードが含まれることが好まし
い。ポインタ・チェインの使用を含む他の記憶配置も可
能である。3つのリスト402、404および406の
それぞれのレコードは、スキャン・ライン交差(X)座
標の順で配置される。これは、通常は、当初は辺入力モ
ジュール408によって管理されるソート処理によって
得られ、辺入力モジュール408は、辺情報を含むメッ
セージを命令実行機構300から受け取る。各スキャン
・ライン交差座標の整数部分だけを有意とみなすために
ソートを緩和することが可能である。また、各スキャン
・ライン交差座標を、現在のレンダリング処理によって
作られる最小および最大のX座標にクランプされるとみ
なすことによってさらにソートを緩和することが可能で
ある。適当な場合には、辺入力モジュール408は、メ
ッセージを、出力498を介してパイプライン22の下
流のモジュール500、600および700に受け渡
す。
【0061】辺入力モジュール408は、3つのリスト
402、404および406のそれぞれへの参照を維持
し、これらのリストから辺データを受け取る。これらの
参照のそれぞれは、スキャン・ラインの処理の開始時
に、各リスト内の最初の辺を参照するように初期設定さ
れる。その後、辺入力モジュール408は、選択される
レコードが3つの参照されるレコードからの最小のX座
標を有するものになるように、3つの参照された辺レコ
ードのうちの1つから辺レコードを選択する。複数のX
レコードが等しい場合には、それぞれが任意の順序で処
理され、対応する辺交差が、下記の形で出力される。そ
のレコードの選択に使用された参照は、その後、そのリ
ストの次のレコードに進められる。選択されたばかりの
辺は、メッセージにフォーマットされ、辺更新モジュー
ル410に送られる。また、辺のいくつかのフィール
ド、具体的には現在のX、優先順位番号および方向フラ
グが、メッセージにフォーマットされ、このメッセージ
は、辺処理モジュール400の出力498として優先順
位決定モジュール500に転送される。なお、本明細書
に記載されたものより多数または少数のリストを使用す
る実施形態も可能である。
【0062】辺を受け取った時に、辺更新モジュール4
10は、現在の線分が続くスキャン・ライン数のカウン
トをデクリメントする。そのカウントが0に達した場合
には、次の線分アドレスによって示されるアドレスから
新しい線分を読み取る。線分では、下記が指定される。 (i)線分を読み取った直後に現在のX座標に加算され
る値 (ii)その辺の新しいDX値 (iii)その辺の新しいDDX値 (iv)新しい線分が続くスキャン・ライン数の新しい
カウント。
【0063】示されたアドレスに使用可能な次の線分が
ない場合には、その辺に対してそれ以上の処理は実行さ
れない。そうでない場合には、辺更新モジュール410
は、その辺の次のスキャン・ラインのX座標を計算す
る。これには、通常は、現在のX座標をとり、これにD
X値を加算することが用いられる。DXは、処理される
辺の種類に応じて、必要であればDDX値を加算される
場合がある。その後、辺は、複数の辺レコードの配列で
ある辺プール412内の使用可能な空きスロットに書き
込まれる。空きスロットがない場合には、辺更新モジュ
ール410は、スロットが使用可能になるのを待つ。辺
レコードが辺プール412に書き込まれたならば、辺更
新モジュール410は、新しい辺が辺プール412に追
加されたことを、信号線416を介して辺出力モジュー
ル414に知らせる。
【0064】スキャン・ラインのレンダリングのための
初期条件として、辺出力モジュール414は、図4には
図示されていないが、辺レコード32内のリスト404
および406に関連する次主辺リスト420および次ス
ピル辺リスト422のそれぞれへの参照を有する。これ
らの参照のそれぞれは、当初は空のリスト420および
422が構築される位置に初期設定される。辺が辺プー
ル412に追加されたことを示す信号416を受け取っ
た時に、辺出力モジュール414は、追加された辺が、
次主辺リスト420に最後に書き込まれた辺(があれ
ば)より小さいX座標を有するかどうかを判定する。こ
れが真である場合には、順序付けの基準を侵害せずにそ
の辺を主辺リスト404の末尾に追加することができな
いので、「スピル」が発生したという。スピルが発生し
た時には、その辺は、好ましくはソートされた次スピル
辺リスト422を維持する形で、次スピル辺リスト42
2に挿入される。たとえば、これは、ソフトウェア・ソ
ート・ルーチンを使用して達成することができる。いく
つかの実施形態では、スピルが、極端に大きいX座標な
ど、他の条件によってトリガされる場合がある。
【0065】辺プール412に追加された辺が、次主辺
リスト420に最後に書き込まれた辺(があれば)以上
のX座標を有し、辺プール412に使用可能な空きスロ
ットがない場合には、辺出力モジュール414は、辺プ
ール412から、最小のX座標を有する辺を選択し、そ
の辺を次主辺リスト420の末尾に追加し、この処理で
次主辺リスト420を延長する。辺プール412内の、
その辺によって占められていたスロットは、空きとして
マークされる。
【0066】辺入力モジュール408は、これら3つの
入力リスト402、404および406のすべてからす
べての辺を読み取り、転送した後に、スキャン・ライン
の終りに達したことを示すメッセージをフォーマット
し、そのメッセージを、優先順位決定モジュール500
と辺更新モジュール410の両方に送る。そのメッセー
ジを受け取った時に、辺更新モジュール410は、それ
が現在実行しているすべての処理が完了するのを待ち、
その後、このメッセージを辺出力モジュール414に転
送する。そのメッセージを受け取った時に、辺出力モジ
ュール414は、辺プール412からの残りの辺レコー
ドのすべてを、X順で次の主辺リスト404に書き込
む。その後、次主辺リスト420および主辺リスト40
4への参照を、辺入力モジュール408と辺出力モジュ
ール414の間で交換し、同様の交換を、次スピル辺リ
スト422とスピル辺リスト406に関しても実行す
る。この形で、次のスキャン・ラインのための初期条件
が確立される。
【0067】辺レコードの挿入時に次スピル辺リスト4
22をソートするのではなく、そのような辺レコード
を、単にリスト422の末尾に追加することができ、ス
キャン・ラインの末尾で、現在のスピル・リスト406
との交換の前にソートされるリスト422は、次のスキ
ャン・ラインの辺ラスタ化でアクティブになる。エッジ
をソートする他の方法では、より少数またはより多数の
リストを使用することができ、また、異なるソート・ア
ルゴリズムを使用することができる。
【0068】上記から、辺交差メッセージが、スキャン
・ライン順および画素順(すなわち、まずYでソートさ
れ、次にXでソートされる)で優先順位決定モジュール
500に送られること、および各辺交差メッセージに、
それに適用される優先順位のラベルが付けられることを
推論することができる。
【0069】図12Aは、辺の線分が受け取られる時に
辺処理モジュール400によって作成される可能性があ
るアクティブ辺レコード418の具体的な構造を示す図
である。辺の最初の線分がステップ(直交)線分である
場合には、辺のX値を、最初の線分の「Xステップ」と
称する変数に加算して、アクティブ化された辺のX位置
を得る。そうでない場合には、辺のX値を使用する。こ
れは、新しい辺レコードの辺が、Xedge+Xstepによっ
てソートされなければならないことを意味する。したが
って、最初の線分のXstepは、辺のソートを単純化する
ために0でなければならない。最初の線分のY値は、ア
クティブ辺レコード418のNYフィールドにロードさ
れる。アクティブな辺のDXフィールドは、ベクトルま
たは二次線分のDXフィールド識別子からコピーされ、
ステップ線分の場合には0がセットされる。図12Aに
示されたuフラグは、線分が上向き(図13Aに関連す
る説明を参照されたい)である場合にセットされる。q
フラグは、線分が二次線分の場合にセットされ、そうで
ない場合にはクリアされる。iフラグが設けられ、これ
は、線分が不可視である場合にセットされる。dフラグ
は、辺が、関連するクリッピング・レベルなしに直接ク
リッピング・オブジェクトして使用され、閉じた曲線に
適用可能である時にセットされる。線分の実際の優先順
位レベルまたはレベル・アドレスは、新しい辺レコード
の対応するフィールドからアクティブ辺レコード418
のレベル(ADDR)フィールド(Level(Addr))にコ
ピーされる。アクティブ辺レコード418の線分アドレ
ス/DDXフィールド(Seg.Addr(DDX))は、線分リス
ト内の次の線分のアドレスであるか、線分が二次線分の
場合にはセグメントのDDX値からコピーされるかのい
ずれかである。線分アドレスは、辺レコードを終了させ
るのに使用される。その結果、好ましい実施形態では、
二次曲線のすべて(すなわち、DDXフィールドを使用
する曲線)が、辺レコードの終端線分になる。
【0070】図12Aから、他のデータ構造も可能であ
り、たとえばより高次の多項式の実装が使用される場合
にはそれが必要であることを諒解されたい。さらに、線
分アドレスおよびDDXフィールドは、異なるフィール
ドに分離することができ、代替実施態様に合わせて追加
のフラグを設けることができる。
【0071】図12Bは、辺処理モジュール400で使
用される、上で説明した好ましい実施形態の辺レコード
の配置を示す図である。辺プール412は、新アクティ
ブ辺レコード428、現アクティブ辺レコード430お
よびスピル・アクティブ辺レコード432によって補足
される。図12Bからわかるように、レコード402、
404、406、420および422は、ある時点でレ
ンダリングされる辺の数に応じて、サイズを動的に変更
することができる。各レコードには、新辺リスト402
の場合にはLOAD_EDGES_AND_RENDE
R命令に組み込まれたSIZE値によって決定される、
限界値が含まれる。このような命令に出会った時には、
SIZEを検査し、0でない場合には、新しい辺レコー
ドのアドレスをロードし、リスト402の限界サイズを
決定する限界値を計算する。
【0072】好ましい実施形態では、辺レコードの処理
のために配列とそれに関連するポインタを使用するが、
たとえばリンク・リストなどの、他の実施態様を使用す
ることができる。これらの他の実施態様は、ハードウェ
ア・ベース、ソフトウェア・ベースまたはその組合せと
することができる。
【0073】図8に示された画像78の具体的なレンダ
リングを、図10に示されたスキャン・ライン34、3
5および36に関連してこれから説明する。この例で
は、次のスキャン・ラインの新しいX座標の計算が、説
明を明瞭にするために省略され、図12Cないし図12
Iでは、出力辺交差が、辺プール412のレジスタ42
8、430および432の1つから導出される。
【0074】図12Cは、スキャン・ライン34(半透
明の青い三角形80の最上部)のレンダリングの終りで
の、上で述べたリストの状態を示す図である。スキャン
・ライン34には、新しい辺がなく、したがって、リス
ト402が空であることに留意されたい。主辺リスト4
04および次主辺リスト420のそれぞれには、辺82
および84だけが含まれる。リストのそれぞれには、対
応するポインタ434、436および440が含まれ、
これらは、スキャン・ライン34の完了時に、対応する
リスト内の次の空きレコードを指す。各リストには、対
応するリストの末尾を指すために必要な、アスタリスク
(*)によって示される限界ポインタ450も含まれ
る。リンク・リストを使用する場合には、リンク・リス
トに、対応する機能を実行するヌル・ポインタ終端子が
含まれるので、このような限界ポインタは不要になる。
【0075】上で述べたように、各スキャン・ラインの
始めに、次主辺リスト420と主辺リスト404が交換
され、新しい辺が、新辺リスト402に受け取られる。
残りのリストはクリアされ、ポインタのそれぞれは、各
リストの最初のメンバを指すようにセットされる。スキ
ャン・ライン35の始めでは、配置は図12Dのように
なる。図12Dからわかるように、レコードには、図1
0から辺92、94、84および82に対応することが
わかる4つのアクティブな辺が含まれる。
【0076】図12Eを参照すると、レンダリングが開
始される時に、新辺レコード402の最初の線分が、ア
クティブ辺レコード428にロードされ、主辺リスト4
04およびスピル辺リスト406の最初のアクティブな
辺レコードが、それぞれレコード430および432に
コピーされる。この例では、スピル辺リスト406は空
であり、したがって、ローディングは行われない。レコ
ード428、430および432内の辺のX位置が比較
され、辺交差が、最小のX位置を有する辺について発行
される。この場合、発行される辺は、辺92に対応する
辺であり、この辺がその優先順位値と共に出力される。
その後、ポインタ434、436および438が、リス
ト内の次のレコードを指すように更新される。
【0077】その後、辺交差が発行される辺が更新され
(この場合、その位置にDX=0を加算することによっ
て)、辺プール412にバッファリングされ、この辺プ
ール412は、この例では3つの辺レコードを保持する
サイズになる。発行された辺が現れたリスト(この場合
ではリスト402)内の次の項目が、対応するレコード
(この場合ではレコード428)にロードされる。これ
を図12Fに示す。
【0078】さらに、図12Fから明らかなとおり、レ
ジスタ428、430および432の間の比較によっ
て、もう一度最小のX値を有する辺が選択され、適切な
次の辺交差(X=85、P=2)として出力される。そ
して、同様に、選択され出力された辺は、更新され、辺
プール412に追加され、適当なポインタのすべてがイ
ンクリメントされる。この場合、更新される値は、X←
X+DXによって与えられ、ここでは、84=85−1
として与えられる。また、図からわかるように、新しい
辺のポインタ434が、この場合では新辺リスト402
の末尾に移動される。
【0079】図12Gでは、最小の現行X値を有すると
識別された次の辺が、やはり、レジスタ430から取得
され、辺交差(X=115、P=2)として出力され
る。そして、辺の更新が発生し、図示のように、その値
が辺プール412に追加される。この時、辺プール41
2は満杯になり、ここから、最小のX値を有する辺が選
択され、出力リスト420に発行され、対応する限界ポ
インタが、それ相応に移動される。
【0080】図12Hからわかるように、次の最小の辺
交差は、レジスタ428からのものであり、これが出力
される(X=160、P=1)。やはり辺プール412
が更新され、次に小さいX値が出力リスト420に発行
される。
【0081】スキャン・ライン35の終りに、図12I
からわかるように、X値の小さい順で、辺プール412
の内容が出力リスト420にフラッシュされる。図12
Jからわかるように、次主辺リスト420と主辺リスト
404は、次のスキャン・ライン36のレンダリングに
備えて、ポインタを交換することによって交換される。
交換の後に、図12Jからわかるように、主辺リスト4
04の内容には、スキャン・ライン36上の現在の辺の
すべてが含まれ、これらはX位置の順で配置され、これ
によって、高速のレンダリングを容易にする便利なアク
セスが可能になる。
【0082】通常、新しい辺は、X位置の昇順で辺処理
モジュール400によって受け取られる。新しい辺が現
れる時には、その位置が更新され(次にレンダリングさ
れるスキャン・ラインのために計算され)、これによっ
て、以下の処置が決定される。
【0083】(a)更新された位置が信号線498に出
力された最後のX位置より小さい場合には、新しい辺
は、主スピル・リスト406へのソートされる挿入であ
り、対応する限界レジスタが更新される。
【0084】(b)そうでない場合に、空間があるなら
ば、その辺は辺プール412内で保存される。
【0085】前述から明白なとおり、辺プール412
は、ラスタ化画像の次のスキャン・ラインのレンダリン
グに備えた順序付きの形でのリストの更新を助ける。さ
らに、辺プール412のサイズは、多数の順序付けられ
ていない辺に適合するために変更することができる。し
かし、実際には、辺プール412が、一般にグラフィッ
ク処理システムの処理速度および使用可能なメモリに依
存する、実用的な限界を有することは明白である。制限
的な意味では、辺プール412を省略することができる
が、これは、通常は、更新された辺を、次出力辺リスト
420へのソートされた挿入にすることを必要とする。
しかし、好ましい実施形態では、上で述べたスピル・リ
ストの使用を介する通常の出来事として、この状況が回
避される。スピル・リストを設けることによって、好ま
しい実施形態を、実用的なサイズの辺プールを用いて実
施でき、なおかつ、ソフトウェア集中的なソート手順に
頼らずに比較的複雑な辺交差を処理することができる。
辺プールとスピル・リストが辺交差の複雑さに適合する
のに不十分になる場合では、これは稀な場合であるが、
ソート法を使用することができる。
【0086】スピル・リスト手順が使用される場合の例
を、図14Aに示す。図14Aでは、3つの任意の辺6
0、61および63が、スキャン・ラインAおよびBの
間の相対位置で任意の辺62と交差する。さらに、スキ
ャン・ラインAおよびBのそれぞれについて実際に表示
される画素位置64が、スパン画素位置CないしJとし
て図示されている。辺プール412が3つの辺レコード
を保存するサイズである、上で説明した例では、このよ
うな配置だけでは、図14Aに示された隣接するスキャ
ン・ラインの間で発生する3つの辺の交差に適合するの
に不十分であることは明白である。
【0087】図14Bに、スキャン・ライン上の辺6
0、61および63をレンダリングした後の辺レコード
の状態を示す。辺交差Hは、最も最近に発行された辺交
差であり、辺プール412は、次のスキャン・ラインで
あるスキャン・ラインBのための、それぞれ辺60、6
1および63の更新されたX値E、GおよびIで満杯に
なっている。辺62は、現アクティブ辺レコード430
にロードされ、辺プール412が満杯なので、辺60に
対応する最小のX値が、出力辺リスト420に出力され
る。
【0088】図14Cでは、次の辺交差が発行され(辺
62のX=J)、対応する更新された値、この場合はス
キャン・ラインBのX=Cが決定される。新たに更新さ
れた値X=Cは、出力リスト420からコピーされた最
も最近の値X=Eより小さいので、現在の辺レコードと
それに対応する新たに更新された値が、出力スピル・リ
スト422に直接に転送される。
【0089】図14Dに、スキャン・ラインBの開始時
の辺レコードの状態を示す。この図では、主リストおよ
び出力リストと、それらに対応するスピル構成要素が交
換されていることがわかる。最初に発行される辺を決定
するために、辺60を現アクティブ辺レジスタ430に
ロードし、辺62を、スピル・アクティブ辺レジスタ4
32にロードする。X値が比較され、最小のX値(X=
C)を有する辺62が発行され、更新され、辺プール4
12にロードされる。
【0090】辺の発行と更新は、主辺リスト404内の
残りの辺について継続され、スキャン・ラインの終り
に、辺プール412がフラッシュされて、図14Eに示
された状況になる。図14Eからは、辺60ないし63
のそれぞれが、次のスキャン・ラインでのレンダリング
のために適当に順序付けられ、スキャン・ラインB上で
正しく発行され、レンダリングされたことがわかる。
【0091】上記から明らかになるように、スピル・リ
ストは、複雑な辺交差状況の存在のもとで、辺ラスタ化
順序の維持をもたらす。さらに、このリストがサイズに
おいて動的に変更可能であることによって、辺交差の数
と複雑さの大きい変化を、例外的に複雑な辺交差以外の
すべての辺交差でソート手順に頼る必要なしに処理でき
る。
【0092】好ましい実施形態では、辺プール412
は、8つの辺レコードを保存するサイズにされ、リスト
404および420のサイズは、それらに関連するスピ
ル・リスト406および422と一緒に、動的に変更可
能であり、これによって、複雑な辺交差要件を有する大
きい画像を処理するために十分な範囲が提供される。
【0093】優先順位決定モジュール500の動作を、
図5を参照して以下に説明する。辺処理モジュール40
0からの着信メッセージ498は、優先順位データ設定
メッセージ、塗潰しデータ設定メッセージ、辺交差メッ
セージおよびスキャン・ラインの終りメッセージが含ま
れる可能性があるが、優先順位更新モジュール506に
よって読み取られる前に、まず先入れ先出し(FIF
O)バッファ518を通過する。FIFO518は、辺
処理モジュール400の動作と優先順位決定モジュール
500の動作を分離するように働く。優先順位状態テー
ブル502は、上で述べたテーブル34の一部を含む
が、各オブジェクトの優先順位に関する情報を保持する
のに使用される。FIFO518は、エッジ交差のスキ
ャン・ライン全体の辺処理モジュール400からの受取
りと優先順位状態テーブル502への転送を単一の処置
で可能にするサイズであることが好ましい。これによっ
て、優先順位決定モジュール500が、同一の画素
(X)位置での複数の辺交差を効率的に処理できるよう
になる。優先順位状態テーブル502の各レコードに
は、以下が記録される。
【0094】(i)この優先順位が、奇数−偶数塗潰し
規則または非ゼロ・ワインディング塗潰し規則の適用に
よって決定される内部/外部状態を有するかどうかを示
す塗潰し規則フラグ (ii)この優先順位をもたらす辺が交差するたびに塗
潰し規則によって示される形で変更される塗潰しカウン
ト (iii)この優先順位がクリッピングと塗潰しのどち
らに使用されるかを示すクリッパ・フラグ (iv)クリッパ・フラグがセットされている辺につい
て、クリッピング・タイプが「クリップ・イン」と「ク
リップ・アウト」のどちらであるかを記録するクリップ
・タイプ・フラグ (v)この優先順位をもたらすクリップ・イン・タイプ
のクリップ領域に入る時にデクリメントされ、出る時に
インクリメントされ、この優先順位をもたらすクリップ
・アウト・タイプのクリップ領域に入る時にインクリメ
ントされ、出る時にデクリメントされる、クリップ・カ
ウント (vi)「ニード・ビロウ」フラグと称する、この優先
順位がそれ未満のレベルを最初に計算することを必要と
するかどうかを記録するフラグ。
【0095】クリッピング・オブジェクトは、当技術分
野で既知であり、特定の新しいオブジェクトを表示する
ように働くのではなく、画像内の別のオブジェクトの形
状を変更するように働く。クリッピング・オブジェクト
は、さまざまな視覚的効果を達成するために、オンに
し、オフにすることもできる。たとえば、図8のオブジ
ェクト80は、オブジェクト90に対して、オブジェク
ト90のうちでクリッピング・オブジェクト80の下に
ある部分を除去するように働くクリッピング・オブジェ
クトとして構成することができる。これは、クリッピン
グ境界内における、オブジェクト90の下にある、クリ
ッピングされていなければオブジェクト90の不透明さ
によって隠されるオブジェクトまたは画像を見せるとい
う効果を有する。
【0096】図13Aおよび図13Bに、奇数−偶数規
則と非ゼロ・ワインディング規則の応用例を示す。非ゼ
ロ・ワインディング規則の目的のために、図13Aに、
オブジェクト70の辺71および72が、辺が下向きと
上向きのどちらであるかに従って概念上の向きをどのよ
うに割り振られるかを示す。閉じた境界を形成するため
に、辺は、境界に沿って始点と終点が重なる形でリンク
する。塗潰し規則(後で適用され、説明される)の目的
のために辺に与えられる向きは、線分が定義される順序
と独立である。辺の線分は、レンダリングの方向に対応
する、追跡される順序で定義される。
【0097】図13Bに、2つの下向きの辺73および
76と、3つの上向きの辺74、75および77を有す
る単一のオブジェクト(五線星形)を示す。奇数−偶数
規則は、各辺が対象のスキャン・ラインと交差するたび
にブール値を単純にトグルし、したがって、効果的にオ
ブジェクト色をオンにするかオフにすることによって動
作する。非ゼロ・ワインディング規則では、交差する辺
の向きに応じて塗潰しカウント値をインクリメントまた
はデクリメントする。図13Bでは、このスキャン・ラ
インで出会う最初の2つの辺73および76が下向きで
あり、したがって、これらの辺の横断によって、塗潰し
カウントがインクリメントされ、それぞれ+1および+
2になる。このスキャン・ラインが出会う次の2つの辺
74および77は、上向きであり、したがって、塗潰し
カウントがそれぞれ+1および0にデクリメントされ
る。
【0098】いくつかの実施形態では、この情報の一部
が、表示リスト13および前に説明したさまざまな辺リ
ストの辺に関連し、辺交差メッセージの一部として優先
順位決定モジュール500に転送される。具体的に言う
と、塗潰し規則フラグ、クリッパ・フラグ、クリップ・
タイプ・フラグおよびニード・ビロウ・フラグを、この
形で処理することができる。
【0099】図5に戻って、優先順位更新モジュール5
06は、それが処理を完了したものまでのスキャン・ラ
イン交差座標を記録するカウンタ524を維持する。こ
れを、優先順位更新モジュール506の現行Xと称す
る。スキャン・ラインの開始時の初期値は0である。
【0100】FIFO518の先頭で受け取った辺交差
メッセージを検査する際に、優先順位更新モジュール5
06は、辺交差メッセージのX交差値とその現行Xを比
較する。辺交差メッセージのX交差値が、優先順位更新
モジュール506の現行X以下の場合には、優先順位更
新モジュール506は、その辺交差メッセージを処理す
る。辺交差メッセージの処理は、2つの形態になり、
「通常辺処理」(下で説明する)は、辺交差メッセージ
の最初の優先順位によって示される優先順位状態テーブ
ル502内のレコードが、クリップ優先順位でないこと
を示すクリッパ・フラグを有する時に使用され、そうで
ない場合には、「クリップ辺処理」(下で説明する)が
実行される。
【0101】優先順位がある画素でアクティブになるの
は、その画素が、その優先順位の塗潰し規則に従って優
先順位に適用される境界辺の内部にあり、その優先順位
のクリップ・カウントが0の場合である。優先順位は、
それが最も上のアクティブな優先順位である場合、また
は、それより上位のアクティブな優先順位のすべてが、
対応するニード・ビロウ・フラグをセットしている場合
に、公開される。この形で、画素値を、公開された優先
順位の塗潰しデータだけを使用して生成することができ
る。
【0102】ある優先順位のニード・ビロウ・フラグ
は、表示リストの情報内で確立され、そのフラグがセッ
トされていなければ、問題の優先順位の下のアクティブ
な優先順位のすべてが、レンダリング中の画素値に寄与
しないことを画素生成システムに知らせるのに使用され
る。このフラグは、最終的な画素値に全く寄与しないは
ずの余分な合成演算を防ぐのに適当な場合にクリアされ
る。
【0103】「通常辺処理」には、辺交差メッセージ内
の優先順位のそれぞれについて、その優先順位によって
示される優先順位状態テーブル・レコードのフィールド
に関して、以下のステップが含まれる。
【0104】(i)現在の優先順位の現在の塗潰しカウ
ントを記録し、(ii)現在の優先順位の塗潰し規則
が、(a)奇数−偶数である場合には、塗潰しカウント
が現在0以外であれば塗潰しカウントに0をセットし、
そうでない場合には0以外の値をセットし、(b)非ゼ
ロ・ワインディングである場合には、塗潰しカウントを
インクリメントまたはデクリメント(辺の方向フラグに
応じて)し、(iii)新しい塗潰しカウントと記録さ
れた塗潰しカウントを比較し、一方が0で他方が0以外
の場合には、現在の優先順位に対して「アクティブ・フ
ラグ更新」(下で説明する)動作を実行する。
【0105】いくつかの実施形態では、辺交差メッセー
ジのそれぞれに複数の優先順位を置くのではなく、優先
順位ごとに別々の辺交差メッセージを使用することがで
きる。
【0106】アクティブ・フラグ更新動作には、まず現
在の優先順位のための新しいアクティブ・フラグを確立
することが含まれる。アクティブ・フラグは、優先順位
状態テーブル502のその優先順位の塗潰しカウントが
0以外であり、その優先順位のクリップ・カウントが0
の場合に0以外になり、そうでない場合には、アクティ
ブ・フラグは0になる。アクティブ・フラグ更新動作の
第2ステップは、アクティブ・フラグ配列508内の現
在の優先順位によって示される位置に、決定されたアク
ティブ・フラグを格納し、現在の優先順位の優先順位状
態テーブルのニード・ビロウ・フラグが0の場合には、
不透明アクティブ・フラグ配列510の現在の優先順位
によって示される位置にもアクティブ・フラグを格納す
ることである。
【0107】「クリップ辺処理」には、辺交差メッセー
ジの最初の優先順位によって示される優先順位状態テー
ブル・レコードのフィールドに関して、以下のステップ
が含まれる。
【0108】(i)現在の優先順位の現在の塗潰しカウ
ントを記録し、(ii)現在の優先順位の塗潰し規則
が、(a)奇数−偶数である場合には、塗潰しカウント
が現在0以外であれば塗潰しカウントに0をセットし、
そうでない場合には0以外の値をセットし、(b)非ゼ
ロ・ワインディングである場合には、塗潰しカウントを
インクリメントまたはデクリメント(辺の方向フラグに
応じて)し、(iii)新しい塗潰しカウントと記録さ
れた塗潰しカウントを比較し、(a)新しい塗潰しカウ
ントが0であり、記録された塗潰しカウントが0である
場合、または、新しい塗潰しカウントが0以外であり、
記録された塗潰しカウントが0以外である場合には、
0、(b)現在の優先順位のクリップ・タイプ・フラグ
がクリップ・アウトであり、記録された塗潰しカウント
が0であり、新しい塗潰しカウントが0以外である場
合、または、現在の優先順位のクリップ・タイプ・フラ
グがクリップ・インであり、記録された塗潰しカウント
が0以外であり、新しい塗潰しカウントが0である場合
には、+1、(c)それ以外の場合には、−1のクリッ
プ・デルタ値を決定し、(iv)辺交差メッセージの最
初の優先順位の後のすべての後続優先順位について、そ
の後続優先順位によって示される優先順位状態テーブル
内のレコードのクリップ・カウントに決定されたクリッ
プ・デルタ値を加算し、その処理で、クリップ・カウン
トが、0以外から0になった場合または0から0以外に
なった場合に、その後続優先順位に対して上で説明した
アクティブ・フラグ更新動作を実行する。各クリップ・
カウントの初期値は、前に説明したLOAD_LEVE
L_PROPERTIES命令によってセットされるこ
とに留意されたい。クリップ・カウントは、通常は、各
優先順位に影響するクリップ・イン優先順位の数に初期
設定される。
【0109】いくつかの実施形態では、優先順位がクリ
ップに関連付けられず、その代わりに、辺交差メッセー
ジで与えられるすべての優先順位のクリップ・カウント
が直接にインクリメントまたはデクリメントされる。こ
の技法は、たとえば、クリップ形状が単純であり、複雑
な塗潰し規則の適用が不要な時に使用することができ
る。この特定の応用例では、辺によって制御されるレベ
ルのクリップ・カウントは、上向きの辺の場合にインク
リメントされ、下向きの辺の場合にデクリメントされ
る。反時計回りに記述された単純な閉じた曲線は、クリ
ップ・インとして働き、時計回りに記述された単純な閉
じた曲線は、クリップ・アウトとして働く。
【0110】辺交差メッセージのX交差値が、優先順位
更新モジュール506の現行Xを超える時には、優先順
位更新モジュール506は、生成する画素数のカウント
すなわち、辺交差メッセージのX交差値と現行Xの間の
差を形成し、このカウントを優先順位生成メッセージに
フォーマットし、接続520を介して優先順位生成モジ
ュール516に送る。その後、優先順位更新モジュール
506は、所与の個数の画素の処理が完了したことを示
す優先順位生成モジュール516からの信号522を待
つ。信号522を受け取った時に、優先順位更新モジュ
ール506は、その現行Xに、辺交差メッセージのX交
差値をセットし、上で説明した処理を継続する。
【0111】優先順位生成モジュール516は、テーブ
ル34内でも形成される、各優先順位に関する情報を保
持するのに使用される、優先順位データ・テーブル50
4に関して動作する。優先順位データ・テーブル504
の各レコードには、以下が含まれる可能性がある。
【0112】(i)塗潰しテーブル・アドレス (ii)塗潰しタイプ (iii)ラスタ演算コード (iv)アルファ・チャネル演算コード (v)「ソース・ポップ」フラグ (vi)「デスティネーション・ポップ」フラグ (vii)本明細書で「x独立」フラグと称する、この
優先順位の色が所与のYに対して一定であるかどうかを
記録するフラグ。
【0113】優先順位生成メッセージの受取り520の
際に、優先順位生成モジュール516は、供給されたカ
ウントによって示される回数だけ「画素優先順位生成動
作」(下で説明する)を実行し、その後すぐに、動作を
完了したことを知らせる信号522を優先順位更新モジ
ュール506に送る。
【0114】各画素の優先順位生成動作には、まず不透
明アクティブ・フラグ配列510に対して優先順位エン
コーダ514(たとえば、4096対12ビット優先順
位エンコーダ)を使用して、最高の不透明アクティブ・
フラグの優先順位の数を決定することが含まれる。この
優先順位(もし存在すれば)は、優先順位データ・テー
ブル504のインデクシングに使用され、そのように参
照されたレコードの内容は、優先順位生成モジュール5
16から塗潰し優先順位メッセージ出力598に形成さ
れ、塗潰し色決定モジュール600に送られる。さら
に、優先順位が前のステップによって決定された(すな
わち、少なくとも1つの不透明アクティブ・フラグがセ
ットされた)場合には、決定された優先順位が保持さ
れ、これを「現行優先順位」と称する。優先順位が決定
されなかった場合には、現行優先順位に0をセットす
る。その後、優先順位生成モジュール516は、アクテ
ィブ・フラグ配列508に対して変更済み優先順位エン
コーダ512を繰り返し使用して、現行優先順位を超え
る最小のアクティブ・フラグを決定する。そのように決
定された優先順位(があれば)は、優先順位データ・テ
ーブル504のインデクシングに使用され、そのように
参照されたレコードの内容は、塗潰し優先順位メッセー
ジに形成され、塗潰し色決定モジュール600に送られ
598、その後、決定された優先順位が、現行優先順位
の更新に使用される。このステップは、優先順位が決定
されなくなる(すなわち、現行優先順位を超える、アク
ティブ・フラグでフラグを立てられた優先順位がなくな
る)まで、繰り返し使用される。その後、優先順位生成
モジュール516は、画素の終りメッセージを形成し、
塗潰し色決定モジュール600に送る。
【0115】上で説明した基本動作に対する好ましい特
徴として、優先順位生成モジュール516は、シーケン
スの最初の画素を処理する間に、塗潰し色決定モジュー
ル600に転送する各メッセージのx独立フラグの値を
記録する。転送されるメッセージのすべてでx独立フラ
グが指定されている場合には、隣接する辺交差の間の画
素のスパンのすべての後続メッセージを、カウント−1
の単一の反復指定によって置換することができる。これ
は、反復メッセージを作り、このシーケンスのその後の
処理のすべての代わりに塗潰し色決定モジュール600
に送ることによって行われる。
【0116】上で説明した基本動作に対するもう1つの
好ましい特徴として、優先順位生成モジュール516
は、各レベル生成メッセージの後に、接続522を介し
て優先順位更新モジュール506に最高の不透明優先順
位を送る。優先順位更新モジュール506は、これをス
トア526に保持する。その後、優先順位更新モジュー
ル506は、メッセージのX交差が現行Xより大きいこ
とを単純にテストするのではなく、画素優先順位生成メ
ッセージを作る前に、メッセージのX交差が現行Xより
大きいこと、およびメッセージ内のレベルのうちの少な
くとも1つが、最高の不透明優先順位以上であることを
テストする。これを行うことによって、より少ない数の
画素優先順位決定動作を実行することができ、より長い
反復シーケンスを生成することができる。
【0117】いくつかの実装で所望されるように、動作
の反復メッセージまたはシーケンスが使用されない場
合、同様の機能を、優先順位生成モジュール516の出
力にキャッシュまたはFIFO(図示せず)を組み込む
ことを介して達成できる。これは、たとえば4セル・キ
ャッシュによって実施できる。キャッシュを用いると、
優先順位更新モジュール506が、キャッシュがロード
されると同時に作業を継続でき、これによって、出力5
98へのキャッシュのフラッシュと独立に次の優先順位
レベルを生成できるようになる。
【0118】図8および図9A,Bに示されたグラフィ
ック・オブジェクトの例を使用して、上で説明した優先
順位更新処理を、図12Cないし図12Jおよび図15
Aないし図15Eに示された辺の交差を使用して、スキ
ャン・ライン35に関して示すことができる。
【0119】図15Aないし図15Eは、優先順位テー
ブル502および504の動作を示す図であり、優先順
位テーブル502および504は、好ましい実施形態で
は、配列508および510とエンコーダ512および
514と共に、レベル・アクティブ化テーブル530と
称する単一のテーブルに合併される。図15Aからわか
るように、辺交差メッセージは、辺処理モジュール40
0からスキャン・ラインの順で受け取られ、テーブル5
30にロードされ、テーブル530は、優先順位の順で
配置される。辺交差メッセージには、この例では、辺横
断の非ゼロ・ワインディング規則に従うインクリメント
方向が含まれる。優先順位テーブル530内の項目をセ
ットしないことも可能である。
【0120】図示のレベル・アクティブ化テーブル53
0には、非ゼロ・ワインディング規則または、適当な場
合には奇数−偶数規則に従って辺から決定される塗潰し
カウントのための列項目が含まれる。ニード・ビロウ・
フラグは、優先順位の特性であり、LOAD_PRIO
RITIES_PROPERTIES命令の一部として
セットされる。ニード・ビロウは、テーブル530がロ
ードされる時に、すべての優先順位レベルについてセッ
トされる。「クリップ・カウント」および「塗潰しイン
デックス・テーブル」などの他の列を使用することがで
きるが、この例では、説明を簡単にするために省略す
る。どのレベルもアクティブでない場合、対応する項目
に0がセットされる。さらに、配列510および508
の値は、後続の辺交差を受け取った後に、テーブル53
0から更新される。
【0121】図15Aから、便宜上、複数のレコードが
明瞭さのために省略されていることは明白である。通
常、レベル・アクティブ化テーブル530には、優先順
位の順で配置された、以下のレコードが含まれるはずで
ある。
【0122】・塗潰しカウント ・クリップ・カウント ・塗潰しタイプ ・下記を含むアクティブ化条件およびフラグ (i)ニード・ビロウ・フラグ (ii)クリップ・タイプ (iii)クリッパ・フラグ ・下記を含む合成用グラフィック演算およびフラグ (i)ラスタ演算コード (ii)アルファ・チャネル演算コード (iii)「ソース・ポップ」フラグ (iv)「デスティネーション・ポップ」フラグ (v)x独立フラグ ・塗潰し規則 ・属性 ・塗潰しテーブル・インデックス。
【0123】テーブル530の内容は、優先順位決定モ
ジュール500で使用されない場合に、画素生成用の塗
潰し色決定モジュール600と合成演算用の画素合成モ
ジュール700のそれぞれにメッセージとして渡され
る。
【0124】スキャン・ライン35の最初の辺交差(図
12E)を図15Aに示すが、図15Aでは、P=1の
場合に、塗潰しカウントが、非ゼロ・ワインディング規
則に従って辺の値に更新される。下のオブジェクトは存
在しないので、「ニード・ビロウ」は、0にセットされ
るレベルである。
【0125】テーブル530の前の状態はセットされて
いないので、配列510および508は、セットされな
いままになり、優先順位エンコーダ514は、優先順位
の出力をディスエーブルされる。これは、優先順位生成
モジュール516によって解釈され、優先順位生成モジ
ュール516は、スキャン・ライン35の最初の空白の
部分である「オブジェクトなし」優先順位(たとえばP
=0)のカウントn=40(画素)を出力する。
【0126】図15Bは、図12Fの辺交差を受け取っ
た時の配置を示す図である。塗潰しカウントが更新され
る。その後、配列510および508は、テーブル53
0からの前の最高レベルを用いてセットされる。この時
点で、モジュール516は、半透明の三角形80との交
差の前の不透明な赤いオブジェクト90の辺96を表
す、カウントn=45、P=1を出力する。
【0127】図15Cは、図12Gの辺交差を受け取っ
た時の配置を示す図である。非ゼロ・ワインディング規
則のゆえに、塗潰しカウントが下向きに調節されている
ことに留意されたい。現在の辺交差を受け取る前に有効
であるオブジェクトは、不透明ではないので、変更済み
優先順位エンコーダ512が、n=(115−85)=
30画素の現行として出力される最高のアクティブ・レ
ベルとして優先順位P=2を選択するのに使用される。
【0128】図15Dは、図12Hの辺交差を受け取っ
た時の配置を示す図である。前に変更されたP=2の
「ニード・ビロウ」が、アクティブ配列508に転送さ
れ、したがって、優先順位エンコーダが、n=(160
−115)=45画素の現行である値P=1を出力する
ことができることに留意されたい。
【0129】図15Eは、図12Iの辺交差を受け取っ
た時の結果を示す図であり、n=(180−160)=
20画素のP=0の出力が供給される。
【0130】したがって、優先順位モジュール500
は、スキャン・ラインのすべての画素に関する、画素の
カウントと、対応する優先順位表示値を出力する。
【0131】塗潰し色決定モジュール600の動作を、
図6を参照して、以下に説明する。優先順位判定モジュ
ール500からの着信メッセージ598は、塗潰しデー
タ設定メッセージ、反復メッセージ、塗潰し優先順位メ
ッセージ、画素の終りメッセージおよびスキャン・ライ
ンの終りメッセージを含み、まず、塗潰しルックアップ
および制御モジュール604に渡される。塗潰しルック
アップおよび制御モジュール604は、塗潰し色決定モ
ジュール600のさまざまな構成要素による使用のため
に、現行X位置カウンタ614および現行Y位置カウン
タ616を維持する。
【0132】スキャン・ラインの終りメッセージを受け
取った時には、塗潰しルックアップおよび制御モジュー
ル604は、現行X位置カウンタ614を0にリセット
し、現行Y位置カウンタ616をインクリメントする。
スキャン・ラインの終りメッセージは、その後、画素合
成モジュール700に渡される。
【0133】塗潰しデータ設定メッセージを受け取った
時には、塗潰しルックアップおよび制御モジュール60
4は、塗潰しデータ・テーブル36の指定された位置6
02にそのデータを記憶する。
【0134】反復メッセージを受け取った時には、塗潰
しルックアップおよび制御モジュール604は、反復メ
ッセージからのカウントだけ現行X位置カウンタ614
をインクリメントする。反復メッセージは、その後、画
素合成モジュール700に渡される。
【0135】画素の終りメッセージを受け取った時に
は、塗潰しルックアップおよび制御モジュール604
は、やはり現行X位置カウンタ614をインクリメント
し、この画素の終りメッセージは、その後、画素合成モ
ジュール700に渡される。
【0136】塗潰し優先順位メッセージを受け取った時
には、塗潰しルックアップおよび制御モジュール604
は、下記の処理を含む動作を実行する。
【0137】(i)塗潰し優先順位メッセージからの塗
潰しタイプを使用して、テーブル36のレコード・サイ
ズを選択する。
【0138】(ii)塗潰し優先順位メッセージからの
塗潰しテーブル・アドレスと、上で決定されたレコード
・サイズを使用して、塗潰しデータ・テーブル36から
レコードを選択する。
【0139】(iii)塗潰し優先順位メッセージから
の塗潰しタイプを使用して、塗潰し色の生成を実行する
サブモジュールを決定し、選択する。サブモジュールに
は、ラスタ画像モジュール606、フラット・カラー・
モジュール608、リニア・ランプ・カラー・モジュー
ル610および不透明タイル・モジュール612を含め
ることができる。
【0140】(iv)決定されたレコードを、選択され
たサブモジュール606ないし612に供給する。
【0141】(v)選択されたサブモジュール606な
いし612が、供給されたデータを使用して、色と不透
明度の値を決定する。
【0142】(vi)決定された色と不透明度は、塗潰
し色メッセージからの残りの情報、すなわち、ラスタ演
算コード、アルファ・チャネル演算コード、ソース・ポ
ップ・フラグおよびデスティネーション・ポップ・フラ
グと組み合わされて、色合成メッセージを形成し、この
色合成メッセージは、接続698を介して画素合成モジ
ュール700に送られる。
【0143】好ましい実施形態では、決定された色と不
透明度が、8ビットの精度の赤、緑、青および不透明度
の4つ組であり、通常の形で32ビット/画素が与えら
れる。しかし、シアン、マゼンタ、黄および黒の、不透
明度を含有する4つ組か、他の多数の既知の色表現のう
ちの1つを、その代わりに使用することができる。赤、
緑、青および不透明度の場合を、下の説明で使用する
が、この説明は、他の場合にも適用することができる。
【0144】ラスタ画像モジュール606、フラット・
カラー・モジュール608、リニア・ランプ・カラー・
モジュール610および不透明タイル・モジュール61
2の動作を、これから説明する。
【0145】フラット・カラー・モジュール608は、
供給されたレコードを、3つの8ビットの色成分(通常
は赤、緑および青の成分と解釈される)と1つの8ビッ
トの不透明度値(通常は、指定された色によって覆われ
る画素の割合の尺度と解釈され、0は覆われないすなわ
ち完全な透明を意味し、255は完全に覆われるすなわ
ち完全な不透明を意味する)を含む固定フォーマットの
レコードと解釈する。この色と不透明度の値は、接続6
98を介して直接に出力され、それ以上の処理なしで、
決定された色および不透明度を形成する。
【0146】リニア・ランプ・カラー・モジュール61
0は、供給されたレコードを、3つの色成分および1つ
の不透明度成分に関連する4組の定数cx、cyおよび
dと、リニア・ランプの基準点の座標である2つの位置
値xbaseおよびybaseを含む固定フォーマット
のレコードと解釈する。基準点では、色成分と不透明度
成分が、それに関連付けられたd値を有する。
【0147】4組のそれぞれについて、結果の値rは、
次式を使用して、現在のXY座標とxbaseおよびy
base定数に3つの定数を組み合わせることによって
計算される。
【0148】r=clamp(cx×(X−xbas
e)+cy×(Y−ybase)+d) ここで、関数clampは、次のように定義される。
【0149】 { 255 255≦x clamp(x)={ └x┘ 0≦x<255 { 0 x<0 。
【0150】代替実装では、リニア・ランプ・カラー・
モジュール610は、供給されたレコードを、3つの色
成分および1つの不透明度成分に関連する、4組の3つ
の定数cx、cyおよびdを含む固定フォーマットのレ
コードと解釈する。これらの4組のそれぞれについて、
結果の値rは、次式を使用して、3つの定数を現行Xカ
ウントであるxおよび現行Yカウントであるyと組み合
わせることによって計算される。
【0151】 r=clamp(cx×x+cy×y+d) ここで、関数clampは、上で定義されたものであ
る。
【0152】そのように作られた4つの結果は、色と不
透明度の値に形成される。この色と不透明度の値は、接
続698を介して直接に出力され、それ以上の処理なし
で決定された色および不透明度を形成する。
【0153】同一の結果を与える他の算術計算を使用す
ることができる。
【0154】不透明タイル・モジュール612は、供給
されたレコードを、3つの8ビット色成分、1つの8ビ
ット不透明度値、整数のX位相(px)、Y位相(p
y)、Xスケール(sx)、Yスケール(sy)および
64ビットのマスクを含む固定フォーマットのレコード
と解釈する。これらの値は、表示リスト生成から発し、
通常は、元のページ記述に含まれる。ビット・マスク内
のビット・アドレスaは、次の式で決定される。
【0155】a=((x/2sx+px)mod 8)+
((y/2sy+py)mod 8)×8 。
【0156】ビット・マスク内のアドレス「a」のビッ
トが検査される。検査されるビットが1の場合には、レ
コードからの色と不透明度が、モジュール612の出力
に直接にコピーされ、決定された色および不透明度を形
成する。検査されるビットが0の場合には、3つの0成
分値を有する色と0の不透明度値が形成され、決定され
た色および不透明度として出力される。
【0157】ラスタ画像モジュール606は、供給され
たレコードを、6つの定数a、b、c、d、xbase
およびybaseと、サンプリングされるラスタ画像画
素データ16の各ラスタ・ライン内のビット数の整数カ
ウント(bpl)と、画素タイプとを含む固定フォーマ
ットのレコードと解釈する。画素タイプは、ラスタ画像
画素データ内の画素データ16を、次のうちのどれとし
て解釈するかを示す。
【0158】(i)1ビット毎画素の白黒不透明画素 (ii)1ビット毎画素の不透明黒または透明の画素 (iii)8ビット毎画素のグレイ・スケール不透明画
素 (iv)8ビット毎画素の黒不透明スケール画素 (v)24ビット毎画素の不透明3色成分画素 (vi)32ビット毎画素の3色成分と不透明度の画素 他の多くのフォーマットが可能である。
【0159】ラスタ画像モジュール606は、画素タイ
プ・インジケータを使用して、ビット単位の画素サイズ
(bpp)を決定する。その後、ラスタ画像画素データ
16内のビット・アドレスaを、次式から計算する。
【0160】a=bpp*└a×(x−xbase)+
c×(y−ybase)┘+bpl×└b×(x−xb
ase)+d×(y−ybase)┘ 。
【0161】レコード602からの画素タイプに従って
解釈された画素は、ラスタ画像画素データ16内の計算
されたアドレス「a」から取り出される。この画素は、
3つの8ビット色成分と1つの8ビット不透明度成分を
有するために、必要に応じて展開される。「展開」と
は、たとえば、8ビット/画素のグレイ・スケール不透
明ラスタ画像からの画素が、赤、緑および青の成分のそ
れぞれに適用されるサンプリングされた8ビット値と、
完全な不透明がセットされた不透明度成分を持つことを
意味する。これが、画素合成モジュール700への決定
された色および不透明度の出力698を形成する。
【0162】その結果、表示可能オブジェクト内で有効
なラスタ画素データは、メモリ内の画像画素データ16
へのマッピングの決定を介して得られる。これによっ
て、ラスタ画素データのオブジェクト・ベース画像への
アフィン変換が効率的に実施され、これは、グラフィッ
ク・オブジェクトとの合成が発生する可能性がある場合
に画像ソースからの画素データをフレーム・ストアに転
送する従来技術の方法より効率的である。
【0163】上記に対する好ましい特徴として、任意選
択として、ラスタ画像画素データ16内の画素間の補間
を、まず中間結果pおよびqを次式に従って計算するこ
とによって実行することができる。
【0164】 p=a×(x−xbase)+c×(y−ybase) q=b×(x−xbase)+d×(y−ybase)
【0165】次に、ラスタ画像画素データ16内の4画
素のビット・アドレスa00、a01、a10およびa11を、
次式に従って決定する。 a00=bpp×└p┘+bpl×└q┘ a01=a00+bpp a10=a00+bpl a11=a00+bpl+bpp 。
【0166】次に、結果の画素成分値rを、次式に従っ
て、色成分および不透明度成分のそれぞれについて決定
する。 r=interp(interp(get(a00),g
et(a01),p),interp(get(a10),
get(a11),p),q) ここで、関数interpは、次のように定義される。 interp(a,b,c)=a+(b−a)×(c−
└c┘) 。
【0167】上の諸式で、表現└値┘=floor
(値)であり、floor演算では、値の端数部分の切
捨が行われる。
【0168】get関数は、所与のビット・アドレスで
の、ラスタ画像画素データ16からサンプリングされた
現行画素成分の値を返す。いくつかの画像タイプのいく
つかの成分について、これが暗黙の値になる可能性があ
ることに留意されたい。
【0169】上記に対する好ましい特徴として、任意選
択として、供給されたレコードから読み取られるタイル
・サイズを用いる剰余演算によって現行X位置カウンタ
614および現行Y位置カウンタ616から導出される
xおよびyの値を上式で使用することによって、画像タ
イリングを実行することができる。
【0170】多数の他のこのような塗潰し色生成サブモ
ジュールが可能である。
【0171】画素合成モジュール700の動作をこれか
ら説明する。塗潰し色決定モジュール600からの着信
メッセージには、反復メッセージ、色合成メッセージ、
画素の終りメッセージおよびスキャン・ラインの終りメ
ッセージが含まれるが、このメッセージは、順番に処理
される。
【0172】反復メッセージまたはスキャン・ラインの
終りメッセージを受け取った時には、画素合成モジュー
ル700は、それ以上の処理なしで画素出力FIFO7
02にそのメッセージを転送する。
【0173】色合成メッセージを受け取った時には、画
素合成モジュール700は、概要を示せば、色合成メッ
セージからの色と不透明度を、色合成メッセージからの
ラスタ演算およびアルファ・チャネル演算に従って、画
素合成スタック38からポップされた色および不透明度
と組み合わせる。その後、結果を画素合成スタック38
にプッシュする。色合成メッセージの受取り時に実行さ
れる処理の説明は、下で与える。
【0174】画素の終りメッセージを受け取った時に
は、画素合成モジュール700は、画素合成スタック3
8から色と不透明度をポップする。ただし、スタック3
8が空の場合には不透明の白の値が使用される。結果の
色と不透明度は、画素出力FIFOに転送される画素出
力メッセージに形成される。
【0175】既知の合成アプローチは、ポーター(Po
rter,T)およびダフ(Duff,T)著「Com
positing Digital Images」、
Computer Graphics誌、Vol.18
No.3、1984年、第253〜259ページに記
載されている。ポーター−ダフ合成演算の例を、図21
に示す。しかし、このようなアプローチでは、合成によ
って形成される交差領域内のソースおよびデスティネー
ションの色の処理だけが可能であり、その結果、交差領
域内の透明度の影響に適合できないという点で、不完全
である。その結果、ポーターおよびダフによって定義さ
れたラスタ演算は、透明度の存在下で基本的に動作不能
である。
【0176】色合成メッセージを受け取った時に画素合
成モジュール700によって実行される処理を、これか
ら説明する。
【0177】色合成メッセージを受け取った時に、画素
合成モジュール700は、まず、ソースの色と不透明度
を形成する。これは、色合成メッセージでポップ・ソー
ス・フラグがセットされていない限り、色合成メッセー
ジで供給された色と不透明度が使用され、ポップ・ソー
ス・フラグがセットされている場合には、その代わりに
画素合成スタック38から色がポップされる。この時、
すなわち、画素合成スタックのポップ中に、画素合成ス
タック38が空であることがわかった場合、エラー表示
なしで不透明の白の色値が使用される。次に、デスティ
ネーションの色と不透明度が、画素合成スタック38か
らポップされる。ただし、色合成メッセージでデスティ
ネーション・ポップ・フラグがセットされていない場合
には、スタック・ポインタが「ポップ」動作中に変更さ
れず、その結果スタック38の最上部からの読み取りに
なる。
【0178】ソースの色および不透明度をデスティネー
ションの色および不透明度と組み合わせる方法を、図7
Aないし図7Cを参照して以下に説明する。色および不
透明度の値は、通常は0から255までの範囲の8ビッ
ト値として記憶されるが、ここでは説明の目的のため
に、0から1までの範囲(すなわち正規化されている)
とみなす。2画素を合成する目的のために、各画素が2
つの領域、すなわち、完全に不透明な領域と完全に透明
な領域に分割されるものとみなし、不透明度値は、これ
ら2つの領域の比率の表示であるとみなされる。図7A
に、図示されない3成分色値と、不透明度値(so)を
有するソース画素702を示す。ソース画素702の影
付きの領域は、画素702の完全に不透明な部分704
を表す。同様に、図7Aの影付きでない領域は、ソース
画素702のうちで、完全に透明であるとみなされる部
分706を表す。図7Bに、ある不透明度値(do)を
有するデスティネーション画素710を示す。デスティ
ネーション画素710の影付きの領域は、画素710の
完全に不透明な部分712を表す。同様に、画素710
は、完全に透明な部分714を有する。ソース画素70
2およびデスティネーション画素710の不透明領域
は、組合せのために、互いに直交するとみなされる。こ
れら2つの画素のオーバーレイ716を、図7Cに示
す。対象の3つの領域が存在し、これには、so×(1
−do)の面積を有するデスティネーション外ソース7
18、面積so×doを有するソース・デスティネーシ
ョン交差720および、(1−so)×doの面積を有
するソース外デスティネーション722が含まれる。こ
れら3つの領域のそれぞれの色値は、概念上は独立に計
算される。デスティネーション外ソース領域718は、
その色をソース色から直接にとる。ソース外デスティネ
ーション領域722は、その色をデスティネーション色
から直接にとる。ソース・デスティネーション交差領域
720は、その色をソース色とデスティネーション色の
組合せからとる。上で説明した他の動作とは別個の、ソ
ース色とデスティネーション色の組合せの処理は、ラス
タ演算と称され、これは、画素合成メッセージからのラ
スタ演算コードによって指定される、1組の関数のうち
の1つである。好ましい実施形態に含まれるラスタ演算
の一部を、表2に示す。
【0179】
【表3】
【0180】各関数は、ソース色およびデスティネーシ
ョン色の対応する色成分の対のそれぞれに適用されて、
結果の色において同様の成分が得られる。多くの他の関
数が可能である。
【0181】画素合成メッセージからのアルファ・チャ
ネル演算も考慮されている。アルファ・チャネル演算
は、3つのフラグを使用して実行され、フラグのそれぞ
れは、ソース画素702とデスティネーション画素71
0のオーバーレイ716内の対象の領域のうちの1つに
対応する。領域のそれぞれについて、領域の不透明度値
が形成され、この不透明度値は、アルファ・チャネル演
算で対応するフラグがセットされていない場合には0、
それ以外の場合にはその領域の面積である。
【0182】結果の不透明度は、領域の不透明度の合計
から形成される。結果の色の各成分は、領域の色と領域
の不透明度の対のそれぞれの積の和を結果の不透明度で
除算することによって形成される。
【0183】結果の色および不透明度は、画素合成スタ
ック38にプッシュされる。
【0184】エクスプレッションツリーは、画像の形成
に必要な合成演算を記述するのにしばしば使用され、通
常は、葉ノード、単項ノードおよび2項ノードを含む複
数のノードが含まれる。葉ノードは、エクスプレッショ
ンツリーの最も外側のノードであり、子ノードを持た
ず、画像のプリミティブ要素を表す。単項ノードは、ツ
リーの単項演算子の下の部分から来る画素データを変更
する演算を表す。2項ノードは、通常は、左と右のサブ
ツリーに分岐し、各サブツリー自体は、少なくとも1つ
の葉ノードを含むエクスプレッションツリーである。
【0185】任意の形状のオブジェクトとの合成の時に
は、上で述べたさまざまなスタック演算が、画像の異な
る区域について異なり、特定の位置でアクティブなオブ
ジェクトに依存するという問題が生じる。
【0186】図17Aおよび図17Bに、ソース(S)
とデスティネーション(D)の間の通常の2項演算(エ
クスプレッションツリーとして図示)を示す。実際に実
行される演算とは無関係に、図17Aの2項演算は、下
に示すアクティビティの4つの場合または領域に分解さ
れる。
【0187】1.(A)Sがアクティブ、(B)Dが非
アクティブ 2.(A)Sがアクティブ、(B)Dがアクティブ 3.(A)Sが非アクティブ、(B)Dがアクティブ 4.(A)Sが非アクティブ、(B)Dが非アクティ
ブ。
【0188】ケース4は、必ず無演算(NOP)が実行
される必要があることをもたらし、その結果、2進木の
アクティブ・レベルには3つの異なる組合せが存在する
ことになる。この概念の3項、4項およびさらに高次の
木への拡張は、当業者には明白である。
【0189】その結果、合成スタック38(2項の例の
場合)を構築する時に、上で識別した3つの演算のうち
の1つを、スタックによって実施する必要がある。さら
に、スタック内の各オブジェクトに関連する異なる演算
は、レベル・アクティブ化テーブルでそのオブジェクト
の下にあるものに依存する。ペインタのアルゴリズムで
発生する、単純なOVER演算を使用するオブジェクト
のレンダリングの場合に、これは問題にならない。しか
し、他の合成演算に関して、スタック演算は、合成演算
のオペランドのアクティビティに依存して変更される必
要がある。これは、スタック演算を提供するレベルをク
リッピングすることによって行うことができるが、各レ
ベルに適用されるクリップの数が、急激に増加し、スタ
ック演算の処理が困難になる。問題になる演算の例が、
あるオブジェクト(オペランド)が、他方のオブジェク
トをクリッピング(その境界を変更)し、交差領域で可
変透明度を有する場合の、図21に示されたポーター−
ダフ演算のOUTおよびROUTである。
【0190】この問題に対処するために、本明細書で
「アクティビティ」テーブルと称するもう1つのテーブ
ルを設ける。このテーブルは、レベル・アクティブ化テ
ーブルの付属品として働いて、上で述べた代替処置の論
理的決定をもたらす。
【0191】図18Aに、基本的に3つの部分を含む、
包括的なアクティビティ・テーブル800を示す。第1
部分802は、処理中の特定の塗潰しレベルのアクティ
ブ化条件を提供する。第2部分804には、それぞれの
レベル(具体的には2項の例の)に適当な、上で参照し
た異なる処置のそれぞれが含まれる。第3部分806
は、ソース・オブジェクトまたはデスティネーション・
オブジェクトが特定のレベルでアクティブであるかどう
かを示す。処置部分804に含まれる項目は、具体的な
演算そのものとするか、その代わりに、適当な場合にレ
ベル・アクティブ化テーブルへのポインタとすることが
できることに留意されたい。
【0192】また、さまざまな演算によって、他の演算
にデータを供給することができる場合と、できない場合
があることに留意されたい。その結果、アクティビティ
・テーブル800は、演算がデータを供給するさまざま
な条件を示すフラグを組み込むように変更することがで
きる。
【0193】アクティビティ・テーブルの好ましい形態
のデータ構造を、図18Bにテーブル810として示
す。テーブル810には、そのデータを使用する次の演
算の項目へのポインタ814(Next_Level)
と、その演算がデータを提供するエクスプレッションツ
リーの枝(Src_Active/Dest_acti
ve)を示すフラグ806(または、3項以上のツリー
が使用される場合にはフラグの組)が含まれる。テーブ
ル810には、その演算がソース枝またはデスティネー
ション枝にデータを供給するかどうかを示すフラグ81
6も含まれる。そうである場合には、次のレベルの項目
のSrc_activeまたはDest_Active
フラグ806は、この演算のアクティビティ状態818
が変化した時に、それ相応に調節される。演算は、特定
の組合せにおいてのみデータを供給するので、これを示
すために、別のフラグ812(data_in_*)が
設けられる。フラグ812とSrc/Dest_Act
iveフラグ806の組合せによって、あるレベルのア
クティビティ状態が決定される。さらに、どの演算も、
それ自体のアクティビティ状態が変化した場合には次の
レベルの状態を変更するだけでよいので、ノード・アク
ティブ・フラグ818が、そのような状況を監視するた
めに設けられる。
【0194】したがって、右側の葉ノードについて、P
ush動作と、次の演算レコードのDest_acti
veフラグをアクティブ化することが必要である。左側
の葉ノードについて、デスティネーションがすでにアク
ティブである可能性があることに留意して、辺交差のS
rc_activeフラグをアクティブ化することが必
要である。
【0195】図18Bでは、アクティブ化条件802
に、葉ノードのアクティブ化を決定する塗潰し規則と、
レベル・アクティブ化テーブルについて上で説明した形
で使用される塗潰しカウントが含まれる。クリップ・カ
ウントも、上で説明した形で動作する。辺の交差によっ
て、テーブル810の(ソース)レベルがアクティブ化
される。
【0196】レベルのアクティブ化状態が変化した時に
は、その変化が、Next_Level項目814によ
って指されるレベルに伝播される。Data_is_S
rcフラグ816の状態に応じて、Src_Activ
e/Dest_Activeフラグ806が、次のレベ
ルで変更される。この変更は、次のレベルの状態も変化
する場合に伝播される。テーブル項目には、それぞれ場
合1、2および3の演算が格納される。これは、レベル
・アクティブ化テーブル内のレベルへのポインタとする
か、実際の演算(たとえば、アルファ演算、カラー演
算、塗潰しタイプおよびスタック演算フラグ)とするこ
とができる。その代わりに、演算が必要でない場合に
は、これらをNULLにすることができる。
【0197】あるノード・レベルのアクティブ化状態
は、S∩D ̄op、S∩Dop、S ̄∩Dopのそれぞ
れのdata_inフラグ群812と、そのノード・レ
ベルのSrc/Dest_activeフラグ806に
よって決まる、エクスプレッションツリーの次の演算の
ためのデータがあるかどうかによって決定される。これ
は、このテーブルではNode_Activeフラグ8
18として図示されている。
【0198】この実装の具体的な例を、図19に示され
るエクスプレッションツリー830について、図20A
に示される、対応する初期アクティビティ・テーブル8
20を用いて示す。
【0199】エクスプレッションツリー830は、オペ
ランドA、BおよびCのページへのレンダリングを提供
し、後者は、図示の完全さのために、ツリー830では
右の葉ノード、PAGEとして示されている。PAGE
は、常にアクティブであり、画像出力空間全体を含み、
したがって、アクティビティ・テーブル820から省略
することができる。
【0200】BとCは葉ノードなので、これらは、テー
ブル820の低位レベルを形成し、それぞれが、それぞ
れの演算子の合成スタックへのプッシュを引き起こすこ
とのできるアクティブ化演算804をもたらす。これら
のそれぞれが右側の葉ノードなので、まずCがプッシュ
され、オペランドCに対する演算がないので、S ̄∩D
opはNOPになる。data_in_*opフラグ8
12、Next_Levelフラグ814およびDat
a_is_Srcフラグ816も更新される。オペラン
ドBは、対応する処置をもたらす。
【0201】アクティビティ・テーブル820の次のレ
ベルは、左の葉ノードAとそれに対応する演算子Op2
によって形成される。このレベルのアクティブ化演算8
04は、それぞれが演算の間の差を表す修飾子aまたは
bによってそれぞれが変更されるAop2BであるS ̄
∩DopおよびS∩Dopのそれぞれを用いて更新され
る。演算Op2は、Sのデータを提供するだけであり、
これは、DがアクティブでSがアクティブでない(すな
わちS ̄∩Dop)場合にスタックからBをポップする
アクティビティによって表される。
【0202】テーブル820の次のレベルは、Op1に
関し、アクティブ化演算804でのそれぞれ修飾された
結果a、bおよびcを作る。最後のレベルoverで
は、PAGEが常にアクティブなので、S∩D ̄opと
S ̄∩Dopは、スタックにプッシュされるNOPをも
たらす。単純な交差S∩Dop内だけで、overがア
クティブになる。
【0203】この例について、A、BおよびCが、当初
は非アクティブであり、これらのオぺランドが、その
後、順番にアクティブ化される場合に何が起きるかを検
討する。
【0204】Aが最初にアクティブ化される場合、AO
p2aがこのレベルでアクティブ化され、Src_Ac
tiveフラグ806の設定に反映される。S∩D ̄フ
ラグ812がセットされているので(Bがまだアクティ
ブではないので)、Node_Activeフラグ81
8が、このレベルについてセットされる。Node_A
ctiveの状態が変化したので、Op1レベルのSr
c_Activeフラグ806がセットされる。Dat
a_is_Src816は、AOp2レベルでセットさ
れることに留意されたい。Op1レベルは、Src_A
ctiveと(Dest_Active) ̄を有するの
で(Cがまだアクティブではないので)、Op1aが、
このレベルでアクティブ化される。S∩D ̄がセットさ
れているので、Node_Active818が、Op
1レベルについてセットされる。Node_Activ
e818の状態が変化したので、overレベルのSr
c_Activeフラグ806がセットされる。ove
rレベルはSrc_activeとDest_Acti
veを有する(PAGEが常にアクティブなので)の
で、overはこのレベルでアクティブ化される。S∩
Dがセットされているので、Node_Activeが
セットされ、Node_Activeの状態は変化しな
い。その後、これ以上の処置は不要である。合成スタッ
ク38は、この段階で、テーブル820から確立でき、
図20Bに示されたものになる。
【0205】図20Cに移って、Bが次にアクティブ化
される場合、S∩D ̄がセットされている(いずれにせ
よDは関係ない)ので、このレベルでPush Bがア
クティブ化される。Node_Active818は、
このレベルについてセットされる。Node_Acti
veの状態が変化したので、AOp2レベルのDest
_Activeフラグがセットされる。その後、AOp
2bBがアクティブ化され、AOp2aBが非アクティ
ブ化される。S∩Dがセットされているので、Node
_Activeはセットされたままになり、Node_
Activeの状態は、AOp2aに関しては変化しな
い。これ以上の処置は発生しない。合成スタック38
は、図20Dに示されたものになる。
【0206】図20Eからわかるように、Cが次にアク
ティブ化される場合、このレベルでPush Cがアク
ティブ化される。Sはアクティブであり、Dは無関係な
ので、Node_Active818は、このレベルに
ついてセットされる。Node_activeが変化し
たので、Op1レベルのDest_Activeフラグ
がセットされる。Op1bがアクティブ化されるので、
Op1aは非アクティブ化される。S∩Dのデータがセ
ットされているので、Node_Activeはセット
されたままになる。Op1レベルではNode_Act
iveが変化しないので、これ以上の処置は不要であ
る。合成スタック38は、図20Fに示されたものにな
る。
【0207】この手順は、図19のエクスプレッション
ツリー全体の評価について継続され、したがって、さま
ざまなアクティブ化条件802およびアクティビティ・
インジケータ804による要求に応じて合成スタックに
プッシュすることのできるさまざまな演算が確立される
形で確立されるアクティビティ・テーブル820をもた
らす。この形で、クリッピングまたは実行される他の演
算の種類に無関係に、正しいレベルの正しい演算である
状態で、評価されるエクスプレッションツリーの複雑さ
と無関係に、スタックを維持することができる。重要な
ことに、エクスプレッションツリーの大部分が、表示リ
ストの形成を介して評価されるが、表示リストの生成
は、通常は、クリッピングなどのさまざまなオブジェク
トの演算の変化を説明することができず、これらの演算
は、合成式の評価中に実施することが必要になる。
【0208】さらなるフラグ、辺の交差によってアクテ
ィブ化することのできるsrc_is_leaf_no
de用のフラグと、dest_is_PAGE(常にア
クティブ)用のフラグが、有用になる可能性があること
に、さらに留意されたい。dest_is_PAGEの
場合、S∩D ̄の場合は絶対に発生しないので、これを
無視することが可能である。
【0209】上では、アクティビティ・テーブル820
が、エクスプレッションツリー830の構造に基づいて
どのように構築され、その項目が、ツリー830のさま
ざまなオペランドの変化するアクティブ化を介してどの
ように完了される(すなわち書き込まれる)かを示し
た。テーブル820の具体的な例では、異なるアクティ
ブ化と可能な結果を説明するために、72(=2×2×
3×3×2)個のスタック構造が生じる可能性がある。
この形で、条件802、806、812、814、81
6および818の論理評価が、特定のレベルの適当なス
タック演算として識別される正しいアクティビティ80
4をもたらす。
【0210】代替実装では、独立のテーブルとして構成
されるのではなく、アクティビティ・テーブル820
を、レベル・アクティブ化テーブル530に合併して、
組み合わされたテーブル830を与えることができる。
これによって、データの複製が行われなくなると同時
に、優先順位エンコーダ512および514が正しい辺
優先順位だけではなく、アクティブ化演算も選択できる
ようになり、後者は、モジュール600から導出された
塗潰し色を使用する合成モジュール700による評価の
ために画素合成スタック38に転送(漸進的に)され
る。このような配置を、図20Gに機能的に図示する。
【0211】その代わりに、図20Hに機能的に示され
ているように、アクティビティ・テーブル820が、レ
ベル・アクティブ化テーブル530の前にあってもよ
い。このような場合には、塗潰しカウントとクリップ・
カウントの列を、アクティビティ・テーブル820に含
め、レベル・アクティブ化テーブル530から省略する
ことができる。図20Iに機能的に示されているもう1
つの代替構成では、アクティビティ・テーブル820
が、レベル・アクティブ化テーブル530の後にある。
この場合、塗潰しカウントとクリップ・カウントは、レ
ベル・アクティブ化テーブル530に含まれるので、ア
クティビティ・テーブル820から省略することができ
る。アクティビティ・テーブル820が図20Aに示さ
れるように構成されるいくつかの応用例では、レベル・
アクティブ化テーブル530を省略することができる。
【0212】アクティビティ・テーブル820およびス
タック38に関して上で説明した演算コードは、表示リ
ストから、具体的には命令ストリーム14(図3参照)
から導出される。演算コードは、図3に示された処理ス
テージのパイプラインを介して、他のデータ(たとえば
辺交差、塗潰しデータなど)と共に並列に転送され、画
素合成モジュール700は、優先順位決定、レベル・ア
クティブ化および塗潰し決定の結果として決定される順
序でopコードをスタックに置く。
【0213】画素出力モジュール800の動作を、これ
から説明する。着信メッセージは、画素出力FIFOか
ら読み取られ、これには、画素出力メッセージ、反復メ
ッセージおよびスキャン・ラインの終りメッセージが含
まれ、順番に処理される。
【0214】画素出力メッセージを受け取った時に、画
素出力モジュール800は、画素を記憶し、その画素を
その出力に転送する。反復メッセージを受け取った時に
は、最後に記憶した画素が、反復メッセージからのカウ
ントによって指定される回数だけ、出力898に転送さ
れる。スキャン・ラインの終りメッセージを受け取った
時には、画素出力モジュール800は、そのメッセージ
をその出力に渡す。
【0215】出力898は、必要に応じて、画素画像デ
ータを使用する装置に接続することができる。このよう
な装置には、ビデオ表示ユニットまたはプリンタなどの
出力装置、または、ハード・ディスク、ライン・スト
ア、バンド・ストアまたはフレーム・ストアを含む半導
体RAMなどのメモリ記憶装置、または、コンピュータ
・ネットワークが含まれる。
【0216】ここまでに説明してきたシステムの実施に
伴う困難の1つが、多くの場合に、このシステムが、関
連する不透明度値を有する画素を含むオブジェクトの合
成を適切に処理しないことである。具体的に言うと、い
くつかの状況で、スキャン・ラインに沿った、オブジェ
クトのうちの1つまたは複数がアクティブでない位置に
おいて、重なり合うオブジェクトが不正に合成される。
この実施形態でのその状況は、ポーター−ダフ合成に伴
って生じるので、その特定の合成方式に関して説明す
る。しかし、下で詳細に説明する本発明の態様は、他の
合成方式の下で生じる同様の困難にも適用可能であるこ
とを諒解されたい。
【0217】たとえば、式PAGE←(A in B)
over(C out D)over PAGEは、図
22に示された2進木構造1000として表すことがで
きる。ここで、A、B、CおよびDは、辺、表示優先順
位および不透明度データによって定義される異なるグラ
フィカル・オブジェクトである。この例のレベル・アク
ティブ化テーブル1001を図23に示す。図23で
は、行1002で、図22に示された式のC out
D部分が実施されることがわかる。残念ながら、この構
成を使用すると、Dがある画素で非アクティブの場合
に、out演算が、DではなくPAGEに対して不正に
実行される。Cが不透明でない場合には、これが、レン
ダリング時に視覚的に不正な外見をもたらす。オブジェ
クトが潜在的に1未満の不透明度を有する場合のこの種
の問題を回避するためには、非アクティブ・オブジェク
トが、合成式内でover演算の左側以外の位置に現れ
てはならない。ほとんどのオブジェクトが、それらが現
れるすべてのスキャン・ラインの少なくとも一部で非ア
クティブになるとすると、これは大問題になる可能性が
ある。
【0218】この問題を克服する方法の1つが、透明画
素を使用してオブジェクトを「パッド・アウト」するこ
とである。この形では、各オブジェクトが、効果的に、
合成されるオブジェクトが存在するすべての点に存在す
るので、ポーター−ダフ式が正しく適用される。これを
上の例に適用すると、2進木1000の各葉ノード(す
なわちA、B、CおよびD)は、図24および図25に
示されるように、オブジェクトの対の和集合を囲む境界
ボックスのサイズの透明(ガラス)オブジェクトの上に
(over)そのオブジェクトを置く式に置換される。
【0219】図24では、2つの透明なガラス境界ボッ
クスG1およびG2が示されている。G1は、Aおよび
Bの境界ボックスを表し、G2は、CおよびDの境界ボ
ックスを表す。エクスプレッションツリー1000でこ
れを実施すると、図25に示された変更されたエクスプ
レッションツリー1004がもたらされる。対応するレ
ベル・アクティブ化テーブル1005を図26に示す。
レベル・アクティブ化テーブル1005と変更されたエ
クスプレッションツリー1004から明白になるとお
り、この変更は、各画素に必要なスタック演算の数のか
なりの増加をもたらす。これは、スタック演算が、合成
される画素の対の一方または両方が透明の場合に実行さ
れるからである。最終的に達成される、実際にレンダリ
ングされる出力に関しては、これらの演算は、スタック
資源とプロセッサ時間について比較的浪費的である。
【0220】演算の数を減らす方法の1つは、ガラス・
オブジェクトが合成される葉ノード・オブジェクトを用
いてガラス・オブジェクトをクリップ・アウトすること
である。その場合、葉ノードと透明オブジェクトの間の
over演算は、もはや不要になる。クリッピング動作
が、一般に、複数の合成演算よりプロセッサ集中的でな
いという事実に鑑みて、これは、より効率的なスタック
の操作をもたらす。
【0221】AおよびBによる透明ボックスG1のクリ
ッピングとCおよびDによる透明ボックスG2のクリッ
ピングを使用する、上の例のレベル・アクティブ化テー
ブル1006を、図27に示す。この実装では、1画素
について、複数のover演算を使用してA、B、Cお
よびDがパディングされる場合の12個のスタック演算
と比較して、8つのスタック演算だけが実行されること
に留意されたい。これらのレベルのうちの4つは、クリ
ッピング・レベル999である。しかし、それでも透明
画素を用いる複数の冗長な合成演算が必要であることを
諒解されたい。
【0222】1つまたは複数の重なり合うオブジェクト
が不透明でない場合にポーター−ダフ合成を正しく実施
する好ましい方法を、これから説明する。図28に示さ
れた例を参照すると、演算C out Dは、領域C∩
D ̄、C∩DおよびC ̄∩Dのそれぞれについて1つず
つの、3つの形で表現できる。領域C∩D ̄は、Cによ
って表現できる。というのは、その領域でout演算に
関してDからの寄与がなく、Cが必要だからである。領
域C∩Dでは、CとDの両方がアクティブであり、した
がって、C out D演算を使用する合成が必要であ
る。領域C ̄∩Dでは、CまたはDからの寄与がないの
で、この領域は、その領域内の画素について合成スタッ
クを構築する時に検討する必要がない。
【0223】C out D演算を簡略化した表現を、
図42および図43に示す。図42には、out演算が
実行されるオブジェクトCおよびDが示されている。上
で説明したように、スキャン・ラインは、3つの領域C
∩D ̄、C∩DおよびC∩D ̄に分割できる。この場合
では、Cが不透明でない場合に、領域C∩D ̄内で、o
ut演算がPAGEに対して不正に実行される。
【0224】図43に、前に説明した解決策を示す。オ
ブジェクトのそれぞれが、それがアクティブになる領域
にクリッピングされていることに留意されたい。領域C
∩D ̄は、単にレベルC1によって表され、領域C∩D
は、レベルC1およびD1によって表され、領域C ̄∩
Dは、どちらのレベルからの入力も必要としない。必要
な領域だけへのオブジェクトのクリッピングを制御する
ために特定の演算に固有の必要条件を使用することによ
って、透明のパディング画素がもはや不要になるので、
かなり少ない数の合成演算がもたらされることを諒解さ
れたい。
【0225】この例のクリッピングを実施するためのレ
ベル・アクティブ化テーブル1008を、図29に示
す。前に説明した方法と比較して、レベル・アクティブ
化テーブル1008では、4つの追加レベルが必要であ
ることがわかる。しかし、これら4つの追加レベルのう
ちの3つは、クリッピング・レベル1015であり、こ
れは、通常は合成演算より集中的でない。また、各画素
について作られる実際の合成スタックは、平均して、前
に説明した方法の場合より小さい。これは、合成演算
が、関連する領域内でのみ行われることを保証するため
に、クリッピング演算が使用されているという事実に起
因する。要するに、プロセッサ時間は、最終的な画像に
寄与しない画素の合成に浪費されない。
【0226】非自明(non-trivial)ポーター−ダフ合
成演算子のための合成スタック演算を、図30および図
31に示す。図30に示されたテーブル1010では、
Dがアクティブの場合にはDがすでにスタックの最上部
にあり、合成演算子は、それが適用される領域に従って
分割されると仮定する。アルファ・チャネル(不透明
度)演算は、Sの辺上でアクティブ化し、Dの辺を用い
てクリッピングすることによって、交差領域S∩Dに制
限されることに留意されたい。アスタリスクでマークさ
れた事例では、Dに寄与するオブジェクトのすべてが、
Sの辺によってクリップ・インされる必要がある。
【0227】図31のテーブル1016は、S画素値
が、それがアクティブになる領域内で、すでにスタック
上にある場合の演算を提供する。そのような場合には、
D画素値は、Dもアクティブである次の下位レベルにあ
る。アスタリスクでマークされた事例では、スタックは
不正な状態になり、その状態が発生しないようにするた
めに「アクティブな枝」のオブジェクトを「非アクティ
ブ」な枝のオブジェクトによってクリッピングするか、
最上部の値をスタックからポップするかのいずれかが必
要になる。
【0228】複雑な式の場合、オブジェクトが複数の他
のオブジェクトから構築され、その結果、領域Sおよび
Dの形状を、それらの構築に使用された形状から判定す
る必要が生じる場合がある。このより複雑な事例を実施
するのに必要なステップは、ポーター−ダフ合成演算の
当業者には明白である。
【0229】さまざまな合成演算によって作られる結果
のアクティブ領域を、図32に示されたテーブル101
1に示す。
【0230】好ましい実施形態を使用してレンダリング
のためにエクスプレッションツリーを分析する場合に
は、アプリケーションは、効果的に木の枝ノードのそれ
ぞれのアクティブ領域を決定し、それを木の次の上位ノ
ードに渡す必要がある。図22に示されたエクスプレッ
ションツリーの詳細な分析を、図33ないし図41に関
して、この方針に沿って行う。
【0231】図33に、各ノードに関連する演算から生
じるアクティブ領域に基づく、図22に示されたエクス
プレッションツリー1000の予備分析を示す。図34
を参照すると、A in B式が、アクティビティにお
いてAとBの交差領域に制限されることがわかる。した
がって、オブジェクトAの辺が、オブジェクトBのクリ
ッピングに使用され、その結果、不要な場合にスタック
に色が残されなくなる。同様に、in演算を実行するレ
ベルは、オブジェクトBによる交差領域に制限される。
これを達成するのに必要なスタック演算を、図35に示
す。
【0232】オブジェクトBの辺を使用して両方のレベ
ルをアクティブ化し、オブジェクトAを用いてこの両方
のレベルをクリッピングすることによって、クリッピン
グ・レベルを節約しながら、同一の効果を得ることがで
きる。しかし、エクスプレッションツリーのより上位の
オブジェクトが、この両方のクリッピング・オブジェク
トを必要とする。
【0233】次の枝は、図36に示されるover演算
であり、この図には、2つの枝のアクティブ領域が示さ
れている。検討しなければならない領域を、図37に示
す。図37の右側の箱に囲まれたテキスト1012は、
左側に示される対応する領域1013のそれぞれのスタ
ックの状態を示す。
【0234】後者の2つの場合、over演算の結果が
すでにスタックにある。したがって、交差領域は、さら
に演算が必要な領域だけになる。結果のレベル・アクテ
ィブ化テーブル項目を、図38に示す。オブジェクトC
がレベルO1をアクティブ化し、AおよびBが、それを
領域A∩B∩Cにクリッピングすることがわかる。この
演算全体としては、領域(A∩B)∪C内の画素に寄与
する。
【0235】この領域は、エクスプレッションツリーの
次のノードに渡されるが、そのノードは、最後のove
rであり、これによって、この式がPAGEに合成され
る。2つの枝のそれぞれについて検討しなければならな
い関連領域を図40に示す。図40では、やはり、右側
の箱に囲まれたテキスト1014に、左側に示される対
応するアクティブ領域1015のスタックの状態を示
す。
【0236】和集合演算の画素スタックの正しい動作を
得ることは、多少の労力を必要とする。1つの解決策
は、区域を相互に排他的な区域に分割し、同一の演算の
ために2つのレベルを使用することである。これは、前
のノードの枝のそれぞれのアクティブ領域を使用して、
レベルのうちの1つをアクティブ化することによって行
うことができる。レベルのうちの1つのアクティブ領域
は、他方のレベルのクリップ・アウトに使用される。た
とえば、当業者に諒解されるように、区域Cと区域A∩
B∩C ̄を使用して、(A∩B)∪Cを作ることができ
る。
【0237】この例の式のレベル・アクティブ化テーブ
ルの結果の項目1020を、図41に示す。レベルO2
(オブジェクトCによってアクティブ化される)および
O3(オブジェクトAによってアクティブ化され、Bに
よってクリップ・インされ、Cによってクリップ・アウ
トされる)を組み合わせて、領域(A∩B)∪Cに対す
る最終的なover演算をクリッピングする。
【0238】クリッピング・レベルは、画素の合成に寄
与しないことに留意されたい。寄与するレベルの数、し
たがって、各画素のスタック演算の数は、平均して、レ
ベルが透明画素によってパッド・アウトされる場合の方
法よりかなり少ない。また、所与のスキャン・ライン内
で特定のレベルがアクティブになる可能性があると期待
される画素の数も減る。
【0239】多数のレベルにわたるオブジェクトの合成
も、本明細書に記載の方法の外挿によって可能であるこ
とを、当業者は諒解するであろう。さらに、示されたさ
まざまな操作を、フレームストア・ベース・システムお
よび他のスタック・ベース、ライン・ベースまたはバン
ド・ベースの合成システムを含む異なる合成パラダイム
で使用することができることも諒解されるであろう。
【0240】前述から、本明細書に記載の方法および装
置が、レンダリング処理中の画素画像データの中間記憶
を必要とせずに、洗練されたグラフィック記述言語が必
要とする機能性のすべてを備えたグラフィック・オブジ
ェクトのレンダリングを提供することは、明白であろ
う。
【0241】前述は、本発明の複数の実施形態を記述し
たのみであり、本発明の趣旨および範囲と、ここまでに
付加されたさまざまな態様から逸脱せずに変更を行うこ
とができる。
【図面の簡単な説明】
【図1】好ましい実施形態を組み込まれるコンピュータ
・システムの概略ブロック図である。
【図2】好ましい実施形態の機能データ・フローを示す
ブロック図である。
【図3】好ましい実施形態の画素シーケンシャル・レン
ダリング装置と、関連する表示リストおよび一時ストア
の概略ブロック図である。
【図4】図2の辺処理モジュールの概略機能図である。
【図5】図2の優先順位決定モジュールの概略機能図で
ある。
【図6】図2の塗潰しデータ決定モジュールの概略機能
図である。
【図7A】ソースとデスティネーションの間の画素の組
合せを示す図である。
【図7B】ソースとデスティネーションの間の画素の組
合せを示す図である。
【図7C】ソースとデスティネーションの間の画素の組
合せを示す図である。
【図8】好ましい実施形態の演算を説明するための例と
して使用される、オブジェクトが2つある画像を示す図
である。
【図9A】図8のオブジェクトのベクトル辺を示す図で
ある。
【図9B】図8のオブジェクトのベクトル辺を示す図で
ある。
【図10】図8の画像の複数のスキャン・ラインのレン
ダリングを示す図である。
【図11】図8の画像の辺レコードの配置を示す図であ
る。
【図12A】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12B】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12C】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12D】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12E】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12F】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12G】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12H】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12I】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図12J】図10の例のために図4の配置によって実
施される辺更新ルーチンを示す図である。
【図13A】奇数−偶数塗潰し規則と非ゼロ・ワインデ
ィング塗潰し規則を示す図である。
【図13B】奇数−偶数塗潰し規則と非ゼロ・ワインデ
ィング塗潰し規則を示す図である。
【図14A】X座標の大きな変化がスピル条件にどのよ
うに寄与し、それらがどのように処理されるかを示す図
である。
【図14B】X座標の大きな変化がスピル条件にどのよ
うに寄与し、それらがどのように処理されるかを示す図
である。
【図14C】X座標の大きな変化がスピル条件にどのよ
うに寄与し、それらがどのように処理されるかを示す図
である。
【図14D】X座標の大きな変化がスピル条件にどのよ
うに寄与し、それらがどのように処理されるかを示す図
である。
【図14E】X座標の大きな変化がスピル条件にどのよ
うに寄与し、それらがどのように処理されるかを示す図
である。
【図15A】図5の配置によって実施される優先順位更
新ルーチンを示す図である。
【図15B】図5の配置によって実施される優先順位更
新ルーチンを示す図である。
【図15C】図5の配置によって実施される優先順位更
新ルーチンを示す図である。
【図15D】図5の配置によって実施される優先順位更
新ルーチンを示す図である。
【図15E】図5の配置によって実施される優先順位更
新ルーチンを示す図である。
【図16A】2つの従来技術の辺記述フォーマットと、
好ましい実施形態で使用される辺記述フォーマットを比
較するための図である。
【図16B】2つの従来技術の辺記述フォーマットと、
好ましい実施形態で使用される辺記述フォーマットを比
較するための図である。
【図16C】2つの従来技術の辺記述フォーマットと、
好ましい実施形態で使用される辺記述フォーマットを比
較するための図である。
【図17A】エクスプレッションツリーとして示される
単純な合成式と対応する図を示す図である。
【図17B】エクスプレッションツリーとして示される
単純な合成式と対応する図を示す図である。
【図18A】正確なスタック演算を保証するために構成
されたテーブルを示す図である。
【図18B】図18Aのテーブルの好ましい形態を示す
図である。
【図19】例のエクスプレッションツリーを示す図であ
る。
【図20A】図19の式のアクティビティ・テーブル評
価と、そのような評価の間の対応する合成スタックを示
す図である。
【図20B】図19の式のアクティビティ・テーブル評
価と、そのような評価の間の対応する合成スタックを示
す図である。
【図20C】図19の式のアクティビティ・テーブル評
価と、そのような評価の間の対応する合成スタックを示
す図である。
【図20D】図19の式のアクティビティ・テーブル評
価と、そのような評価の間の対応する合成スタックを示
す図である。
【図20E】図19の式のアクティビティ・テーブル評
価と、そのような評価の間の対応する合成スタックを示
す図である。
【図20F】図19の式のアクティビティ・テーブル評
価と、そのような評価の間の対応する合成スタックを示
す図である。
【図20G】アクティビティ・テーブルと関連モジュー
ルのさまざまな構成を示す図である。
【図20H】アクティビティ・テーブルと関連モジュー
ルのさまざまな構成を示す図である。
【図20I】アクティビティ・テーブルと関連モジュー
ルのさまざまな構成を示す図である。
【図21】複数の合成演算の結果を示す図である。
【図22】オブジェクトA、B、CおよびDに対して一
連のポーター−ダフ合成演算を実施するためのエクスプ
レッションツリーを示す図である。
【図23】図22に示された2進木構造を実施するため
のレベル・アクティブ化テーブルを示す図である。
【図24】透明なガラス・オブジェクトの上に置かれ
た、図22に示された2進木のオブジェクトを示す図で
ある。
【図25】図24に示された配置を実施するための、変
更されたエクスプレッションツリーを示す図である。
【図26】図25のエクスプレッションツリーを実施す
るためのレベル・アクティブ化テーブルを示す図であ
る。
【図27A】透明な箱がA、B、CおよびDによってク
リッピングされる、図24および図25に示された例の
代替のレベル・アクティブ化テーブルを示す図である。
【図27B】透明な箱がA、B、CおよびDによってク
リッピングされる、図24および図25に示された例の
代替のレベル・アクティブ化テーブルを示す図である。
【図28】演算C out Dのエクスプレッションツ
リーを示す図である。
【図29A】図28に示されたクリッピングを実施する
ためのレベル・アクティブ化テーブルを示す図である。
【図29B】図28に示されたクリッピングを実施する
ためのレベル・アクティブ化テーブルを示す図である。
【図30】自明でないポーター−ダフ合成演算子のため
の合成スタック演算を示す図である。
【図31】自明でないポーター−ダフ合成演算子のため
の合成スタック演算を示す図である。
【図32】さまざまな演算子のアクティブ領域を示す図
である。
【図33】式の実施に使用されるステップの予備分析を
含む、図22に示されたものに類似のエクスプレッショ
ンツリーを示す図である。
【図34】図33に示されたエクスプレッションツリー
からのA in B式のアクティブ領域を示す図であ
る。
【図35】図34に示されたin演算を実行するのに必
要なスタック演算を示す図である。
【図36】下のin演算およびout演算からのアクテ
ィブ領域を示す、図33のover演算の詳細を示す図
である。
【図37】図36の式に関連して検討される領域のそれ
ぞれのスタックの状態を示す図である。
【図38】図36および図37に示された演算を実施す
るためのレベル・アクティブ化テーブル項目を示す図で
ある。
【図39】下のover式およびpage式からのアク
ティブ領域を示す、図33のエクスプレッションツリー
からの最終的なover演算を示す図である。
【図40】図39の式で検討される領域を示す図であ
る。
【図41A】図39に示された式を実施するためのレベ
ル・アクティブ化テーブルの結果の項目を示す図であ
る。
【図41B】図39に示された式を実施するためのレベ
ル・アクティブ化テーブルの結果の項目を示す図であ
る。
【図42】アクティブ領域へのクリッピングの実施の前
のC out D演算を示す図である。
【図43】個々のレベルのアクティブ領域へのクリッピ
ングの後のC out D演算を示す図である。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 PP5862 (32)優先日 平成10年9月11日(1998.9.11) (33)優先権主張国 オーストラリア(AU) (31)優先権主張番号 PP9234 (32)優先日 平成11年3月16日(1999.3.16) (33)優先権主張国 オーストラリア(AU) (31)優先権主張番号 PQ0049 (32)優先日 平成11年4月29日(1999.4.29) (33)優先権主張国 オーストラリア(AU) (72)発明者 クリストファー フレイザー オーストラリア国 2113 ニューサウス ウェールズ州、 ノース ライド、 トー マス ホルト ドライブ 1、 キヤノン インフォメーション システムズ リサ ーチ オーストラリア プロプライエタリ ー リミテッド 内 (72)発明者 ケビン ムーア オーストラリア国 2113 ニューサウス ウェールズ州、 ノース ライド、 トー マス ホルト ドライブ 1、 キヤノン インフォメーション システムズ リサ ーチ オーストラリア プロプライエタリ ー リミテッド 内

Claims (75)

    【特許請求の範囲】
  1. 【請求項1】 ラスター画素イメージを形成するべく、
    グラフィックオブジェクトを処理する方法であって、該
    処理は、ラスタライズされた表示順における現在のスキ
    ャンラインのための対応する辺レコードを評価すること
    により、前記グラフィックオブジェクトの辺間の交差順
    序を判断し、後続のスキャンラインのための各辺に関す
    る辺交差値を決定するものであって、該処理は前記辺レ
    コードの処理の間に、 限られた数の処理された辺レコードを順序付けされてい
    ない第1バッファに保持し、順序付け可能な処理済の辺
    レコードが前記第1バッファに加えられのに応じて、順
    序付け可能な前記辺レコードを漸進的に順次に第2バッ
    ファへ送るステップと、 順序付けできない処理済の辺を、第3バッファにおいて
    並べるために該第3バッファへ送るステップと、 前記第2及び第3バッファからの辺レコードを選択的に
    処理し、後続のスキャンラインに対する並べられた交差
    を決定するステップとを備えることを特徴とする方法。
  2. 【請求項2】 前記第3バッファにおける前記辺レコー
    ドの順序付けは、前記第3バッファへ前記辺を追加する
    際になされることを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記辺レコードは、前記第3バッファへ
    挿入され、ソートされることを特徴とする請求項2に記
    載の方法。
  4. 【請求項4】 前記第3バッファ内の辺は、前記現在の
    スキャンラインの処理の完了時に順序付けられることを
    特徴とする請求項3に記載の方法。
  5. 【請求項5】 前記第2及び第3バッファは結合され
    て、前記選択的処理に用いられる第4バッファのそれぞ
    れの部分を形成し、それにより、前記部分からの順序付
    けられた辺が漸進的に比較され、前記処理に対する次の
    変を決定することを特徴とする請求項2の方法。
  6. 【請求項6】 前記現在hのスキャンラインの処理の完
    了時において、前記第2及び第3バッファの内容と前記
    第4バッファの内容をスワップすることを特徴とする請
    求項5に記載の方法。
  7. 【請求項7】 前記第2、第3、第4バッファの各々
    は、そのスタート位置及びエンド位置のポインタを含
    み、前記現在のスキャンラインの終了時に、バッファを
    スワップするために該ポインタをスワップすることを特
    徴とする請求項6に記載の方法。
  8. 【請求項8】 前記第1バッファは、メモリに形成され
    た辺プールを備え、前記方法は、前記メモリに形成され
    た複数のアクティブ辺レコードから、前記現在のスキャ
    ンラインのためのアクティブ辺値を決定し、前記アクテ
    ィブ辺値の各々に対し、対応する辺レコードを前記辺プ
    ールへ送るステップを更に備えることを特徴とする請求
    項1に記載の方法。
  9. 【請求項9】 前記第2バッファは、前記メモリに形成
    される現在辺出力リストを備え、前記方法は、前記アク
    ティブ辺値の各々に対して、前記辺プール内のレコード
    と前記辺レコードの対応する辺レコードを調べ、該辺レ
    コードの順序付けられたものを前記現在辺リストに送る
    ステップを更に備えることを特徴とする請求項8に記載
    の方法。
  10. 【請求項10】 前記第3バッファは、前記メモリ内に
    形成された現在スピル出力リストを備え、前記方法は、
    前記現在のスピルリストへ順次に前記辺プールからの前
    記現在辺リストに並べることのできない辺レコードを送
    るステップを更に備えることを特徴とする請求項9に記
    載の方法。
  11. 【請求項11】 前記方法は、前記スキャンラインの処
    理の完了時において、前記後続のスキャンラインの処理
    のために前記出力リストの対応する一つへ順次に前記辺
    プールからの辺レコードをフラッシュするステップと、
    ここで、このフラッシュに際しては前記出力リストは現
    在辺入力リスト及び現在辺入力スピルリストとしてそれ
    ぞれ割り当てられるものであり、該後続のスキャンライ
    ンに対する前記アクティブ辺値を決定するために前記入
    力リストから順次に辺レコードを前記アクティブ辺レコ
    ードの対応する一つに転送するステップとを備えること
    を特徴とする請求項10に記載の方法。
  12. 【請求項12】 グラフィックオブジェクト描画システ
    ムにおいて、ラスター画素イメージを形成するべくグラ
    フィックオブジェクトを処理する方法であって、該処理
    は、前記グラフィックオブジェクトの辺と前記ラスター
    画素イメージの現在のスキャンラインとの交差の順序を
    決定する第1処理を備え、 前記システムが、 現在のスキャンラインと後続のスキャンラインの各々に
    関する複数の辺レコードと、該辺レコードの各々は少な
    くとも対応するスキャンライン上の対応する辺の画素位
    置の値を保持し、前記現在の辺レコード及び後続の辺レ
    コードの各々は、少なくとも主部分とスピル部分に分割
    され、少なくとも前記現在の辺レコードの主部分はラス
    ター画素順に並べられ、 少なくとも一つの現在のアクティブ辺レコードと、 スピルアクティブ辺レコードと、 制限された所定数の辺レコードを含むプールとを備え、 前記方法が、 (a)前記現在の辺レコードの前記主部分及びスピル部
    分の各々からの第1の辺レコードを対応するアクティブ
    辺レコードに送るステップと、 (b)前記ラスタ画素順において最も低い値を有するア
    クティブ辺レコードを決定し、現在の辺の値及びレコー
    ドとしてその値とレコードを出力するために、前記アク
    ティブ辺レコードの値を比較するステップと、 (c)前記現在の辺レコードを、前記後続のスキャンラ
    インのための対応する辺の値で更新するステップと、 (d)更新された辺の値を前記プール内の辺のああ痛い
    と比較するステップと、ここで、更新された辺の値が前
    記プール内の辺の値より小さい場合に、 (da)前記更新された現在の辺レコードが後続の辺レ
    コードのスピル部分へ送られ、さもなければ、 (db)(dba)最小の辺値を有する辺レコードが前
    記プールから、前記後続の辺レコードの主部分の次のレ
    コードへ送られ、 (dbb)前記更新された辺レコードは、前記サブステ
    ップ(dba)で殻になった前記プールのレコードへ送
    られ、 (dc)更なる辺レコードが、現在の辺レコードの対応
    する部分から更新された辺レコードによって空にされた
    アクティブ辺レコードへ送られ、 (e)前記プール内の前記レコードの各々が占領される
    まで、ステップ(b)乃至(d)を繰り返すステップ
    と、これによって前記プールの最小の辺値レコードが前
    記後続の辺レコードの前記主部分へ送られ、 (f)前記現在のレコードの全てのレコードが更新され
    るまで前記ステップ(b)乃至(e)を繰り返し、次い
    で、前記プールからのレコードを順次に前記後続のレコ
    ードの前記主部分内の次のレコードへフラッシュするス
    テップと、 (g)前記レコードを、前記後続のレコードにおける前
    記スピル部分において、ラスタ画素順にソートするステ
    ップと、 (h)前記後続の辺レコードを前記現在の辺レコードへ
    送るステップと、 (i)前記ラスタ画素イメージの更なるスキャンライン
    の各々に関して、前記ステップ(a)乃至(h)を繰り
    返すステップとを備えることを特徴とする方法。
  13. 【請求項13】 前記ステップ(g)は、ソフトウエア
    ソーティングルーチンにより実行されることを特徴とす
    る請求項12に記載の方法。
  14. 【請求項14】 前記ステップ(da)が実行されたと
    きに、前記ステップ(g)が実行されることを特徴とす
    る請求項12に記載の方法。
  15. 【請求項15】 前記ステップ(h)は、前記現在の辺
    レコードを指すメモリロケーションと、後続の辺レコー
    ドを指すメモリロケーションをスワップすることにより
    実行されることを特徴とする請求項12に記載の方法。
  16. 【請求項16】 前記アクティブ辺レコードは、対応す
    る新しい辺レコードから、現在のスキャンラインで開始
    する辺のレコードを受け取るための新たなアクティブ辺
    レコードを更に含み、前記ステップ(b)は、前記新た
    な辺レコード、現在の辺レコード、スピル辺レコードの
    各々を比較して、最低の値を持つものをもって前記決定
    を行うことを特徴とする請求項12に記載の方法。
  17. 【請求項17】 前記ステップ(d)において、前記変
    更された辺の値は、直後に変更され最後に前記プールへ
    加えられた辺値と比較されることを特徴とする請求項1
    2に記載の方法。
  18. 【請求項18】 ラスター画素イメージを形成するべ
    く、グラフィックオブジェクトを処理する装置であっ
    て、該処理は、ラスタライズされた表示順における現在
    のスキャンラインのための対応する辺レコードを評価す
    ることにより、前記グラフィックオブジェクトの辺間の
    交差順序を判断し、後続のスキャンラインのための各辺
    に関する辺交差値を決定するものであって、 未整列の第1バッファ、第2バッファ及び第3バッファ
    を有するメモリと、 限られた数の処理された辺レコードを順序付けされてい
    ない前記第1バッファに保持し、順序付け可能な処理済
    の辺レコードが前記第1バッファに加えられのに応じて
    順序付け可能な前記辺レコードを漸進的に順次に前記第
    2バッファへ送り、順序付けできない処理済の辺を前記
    第3バッファにおいて並べるために該第3バッファへ送
    り、前記第2及び第3バッファからの辺レコードを選択
    的に処理し、後続のスキャンラインに対する並べられた
    交差を決定するプロセッサとを備えることを特徴とする
    装置。
  19. 【請求項19】 前記第1バッファは、メモリに形成さ
    れた辺プールを備え、前記プロセッサは、前記メモリに
    形成された複数のアクティブ辺レコードから、前記現在
    のスキャンラインのためのアクティブ辺値を決定し、前
    記アクティブ辺値の各々に対し、対応する辺レコードを
    前記辺プールへ送るように構成されることを特徴とする
    請求項18に記載の装置。
  20. 【請求項20】 前記第2バッファは、前記メモリに形
    成される現在辺出力リストを備え、前記プロセッサは、
    前記アクティブ辺値の各々に対して、前記辺プール内の
    レコードと前記辺レコードの対応する辺レコードを調
    べ、該辺レコードの順序付けられたものを前記現在辺リ
    ストに送るように構成されることを特徴とする請求項1
    9に記載の装置。
  21. 【請求項21】 前記第3バッファは、前記メモリ内に
    形成された現在スピル出力リストを備え、前記プロセッ
    サは、前記現在のスピルリストへ順次に前記辺プールか
    らの前記現在辺リストに並べることのできない辺レコー
    ドを送るように構成されることを特徴とする請求項20
    に記載の装置。
  22. 【請求項22】 前記プロセッサは、前記スキャンライ
    ンの処理の完了時において、前記後続のスキャンライン
    の処理のために前記出力リストの対応する一つへ順次に
    前記辺プールからの辺レコードをフラッシュし、ここ
    で、このフラッシュに際しては前記出力リストは現在辺
    入力リスト及び現在辺入力スピルリストとしてそれぞれ
    割り当てられるものであり、該後続のスキャンラインに
    対する前記アクティブ辺値を決定するために前記入力リ
    ストから順次に辺レコードを前記アクティブ辺レコード
    の対応する一つに転送するように構成されることを特徴
    とする請求項21に記載の方法。
  23. 【請求項23】 ラスター画素イメージを形成するべ
    く、グラフィックオブジェクトを処理する装置であっ
    て、該処理は、ラスタライズされた表示順における現在
    のスキャンラインのための対応する辺レコードを評価す
    ることにより、前記グラフィックオブジェクトの辺間の
    交差順序を判断し、後続のスキャンラインのための各辺
    に関する辺交差値を決定するものであって、 限られた数の処理された辺レコードを順序付けされてい
    ない第1バッファに保持し、順序付け可能な処理済の辺
    レコードが前記第1バッファに加えられのに応じて、順
    序付け可能な前記辺レコードを漸進的に順次に第2バッ
    ファへ送る手段と、 順序付けできない処理済の辺を、第3バッファにおいて
    並べるために該第3バッファへ送る手段と、 前記第2及び第3バッファからの辺レコードを選択的に
    処理し、後続のスキャンラインに対する並べられた交差
    を決定する手段とを備えることを特徴とする装置。
  24. 【請求項24】 ラスター画素イメージを形成するべく
    グラフィックオブジェクトを処理するグラフィックオブ
    ジェクト描画システムの一部を形成する装置であって、
    該処理は、前記グラフィックオブジェクトの辺と前記ラ
    スター画素イメージの現在のスキャンラインとの交差の
    順序を決定する第1処理を備え、 前記装置が、 現在のスキャンラインと後続のスキャンラインの各々に
    関する複数の辺レコードと、該辺レコードの各々は少な
    くとも対応するスキャンライン上の対応する辺の画素位
    置の値を保持し、前記現在の辺レコード及び後続の辺レ
    コードの各々は、少なくとも主部分とスピル部分に分割
    され、少なくとも前記現在の辺レコードの主部分はラス
    ター画素順に並べられ、 少なくとも一つの現在のアクティブ辺レコードと、 スピルアクティブ辺レコードと、 制限された所定数の辺レコードを含むプールと、 辺レコード処理のために、 (a)前記現在の辺レコードの前記主部分及びスピル部
    分の各々からの第1の辺レコードを対応するアクティブ
    辺レコードに送り、 (b)前記ラスタ画素順において最も低い値を有するア
    クティブ辺レコードを決定し、現在の辺の値及びレコー
    ドとしてその値とレコードを出力するために、前記アク
    ティブ辺レコードの値を比較し、 (c)前記現在の辺レコードを、前記後続のスキャンラ
    インのための対応する辺の値で更新し、 (d)更新された辺の値を前記プール内の辺のああ痛い
    と比較し、ここで、更新された辺の値が前記プール内の
    辺の値より小さい場合に、 (da)前記更新された現在の辺レコードが後続の辺レ
    コードのスピル部分へ送られ、さもなければ、 (db)(dba)最小の辺値を有する辺レコードが前
    記プールから、前記後続の辺レコードの主部分の次のレ
    コードへ送られ、 (dbb)前記更新された辺レコードは、前記サブステ
    ップ(dba)で殻になった前記プールのレコードへ送
    られ、 (dc)更なる辺レコードが、現在の辺レコードの対応
    する部分から更新された辺レコードによって空にされた
    アクティブ辺レコードへ送られ、 (e)前記プール内の前記レコードの各々が占領される
    まで、ステップ(b)乃至(d)を繰り返し、これによ
    って前記プールの最小の辺値レコードが前記後続の辺レ
    コードの前記主部分へ送られ、 (f)前記現在のレコードの全てのレコードが更新され
    るまで前記ステップ(b)乃至(e)を繰り返し、次い
    で、前記プールからのレコードを順次に前記後続のレコ
    ードの前記主部分内の次のレコードへフラッシュし、 (g)前記レコードを、前記後続のレコードにおける前
    記スピル部分において、ラスタ画素順にソートし、 (h)前記後続の辺レコードを前記現在の辺レコードへ
    送り、 (i)前記ラスタ画素イメージの更なるスキャンライン
    の各々に関して、前記ステップ(a)乃至(h)を繰り
    返す構成を有することを特徴とする装置。
  25. 【請求項25】 ラスター画素イメージを形成するべ
    く、グラフィックオブジェクトを処理する装置のための
    プログラムを格納するコンピュータ可読媒体であって、
    該処理は、ラスタライズされた表示順における現在のス
    キャンラインのための対応する辺レコードを評価するこ
    とにより、前記グラフィックオブジェクトの辺間の交差
    順序を判断し、後続のスキャンラインのための各辺に関
    する辺交差値を決定するものであって、該プログラム
    が、 限られた数の処理された辺レコードを順序付けされてい
    ない第1バッファに保持し、順序付け可能な処理済の辺
    レコードが前記第1バッファに加えられのに応じて、順
    序付け可能な前記辺レコードを漸進的に順次に第2バッ
    ファへ送る保持ステップのコードと、 順序付けできない処理済の辺を、第3バッファにおいて
    並べるために該第3バッファへ送る転送ステップのコー
    ドと、 前記第2及び第3バッファからの辺レコードを選択的に
    処理し、後続のスキャンラインに対する並べられた交差
    を決定する処理ステップのコードとを備えることを特徴
    とするコンピュータ可読媒体。
  26. 【請求項26】 グラフィックオブジェクト描画システ
    ムにおいて、ラスター画素イメージを形成するべくグラ
    フィックオブジェクトを処理するためのコンピュータプ
    ログラム製品を備えたコンピュータ可読媒体であって、
    該処理は、前記グラフィックオブジェクトの辺と前記ラ
    スター画素イメージの現在のスキャンラインとの交差の
    順序を決定する第1処理を備え、該コンピュータ製品
    は、 現在のスキャンラインと後続のスキャンラインの各々に
    関する複数の辺レコードと、該辺レコードの各々は少な
    くとも対応するスキャンライン上の対応する辺の画素位
    置の値を保持し、前記現在の辺レコード及び後続の辺レ
    コードの各々は、少なくとも主部分とスピル部分に分割
    され、少なくとも前記現在の辺レコードの主部分はラス
    ター画素順に並べられ、 少なくとも一つの現在のアクティブ辺レコードと、 スピルアクティブ辺レコードと、 制限された所定数の辺レコードを含むプールと関連し、 前記第1処理が、 (a)前記現在の辺レコードの前記主部分及びスピル部
    分の各々からの第1の辺レコードを対応するアクティブ
    辺レコードに送るステップと、 (b)前記ラスタ画素順において最も低い値を有するア
    クティブ辺レコードを決定し、現在の辺の値及びレコー
    ドとしてその値とレコードを出力するために、前記アク
    ティブ辺レコードの値を比較するステップと、 (c)前記現在の辺レコードを、前記後続のスキャンラ
    インのための対応する辺の値で更新するステップと、 (d)更新された辺の値を前記プール内の辺のああ痛い
    と比較するステップと、ここで、更新された辺の値が前
    記プール内の辺の値より小さい場合に、 (da)前記更新された現在の辺レコードが後続の辺レ
    コードのスピル部分へ送られ、さもなければ、 (db)(dba)最小の辺値を有する辺レコードが前
    記プールから、前記後続の辺レコードの主部分の次のレ
    コードへ送られ、 (dbb)前記更新された辺レコードは、前記サブステ
    ップ(dba)で殻になった前記プールのレコードへ送
    られ、 (dc)更なる辺レコードが、現在の辺レコードの対応
    する部分から更新された辺レコードによって空にされた
    アクティブ辺レコードへ送られ、 (e)前記プール内の前記レコードの各々が占領される
    まで、ステップ(b)乃至(d)を繰り返すステップ
    と、これによって前記プールの最小の辺値レコードが前
    記後続の辺レコードの前記主部分へ送られ、 (f)前記現在のレコードの全てのレコードが更新され
    るまで前記ステップ(b)乃至(e)を繰り返し、次い
    で、前記プールからのレコードを順次に前記後続のレコ
    ードの前記主部分内の次のレコードへフラッシュするス
    テップと、 (g)前記レコードを、前記後続のレコードにおける前
    記スピル部分において、ラスタ画素順にソートするステ
    ップと、 (h)前記後続の辺レコードを前記現在の辺レコードへ
    送るステップと、 (i)前記ラスタ画素イメージの更なるスキャンライン
    の各々に関して、前記ステップ(a)乃至(h)を繰り
    返すステップとを実行するように構成されてなることを
    特徴とするコンピュータ可読媒体。
  27. 【請求項27】 前記処理は、前記イメージの部分を形
    成する少なくとも一つの前記グラフィックオブジェクト
    により定義されるピクセルイメージデータを再生するた
    めの(第2の)処理を備え、該イメージはラスタ化方式
    で描画され、前記方法が、 (j)各タイプの少なくとも一つの特性によって区別が
    可能な、複数のグラフィックオブジェクト塗り潰しタイ
    プを確立するステップと、 (k)描画を要求するグラフィックオブジェクトを受け
    取り、対応する塗り潰しタイプを決定し、該決定された
    塗り潰しタイプを用いて前記グラフィックオブジェクト
    に関連する塗り潰しレコードをアクセスするステップ
    と、 (l)前記塗り潰しレコードにか庵連する塗り潰し処理
    を実行し、前記グラフィックオブジェクトに対応するラ
    スタ化方式における前記画素イメージを決定することを
    特徴とする請求項1または12に記載の方法。
  28. 【請求項28】 前記タイプの一つがラスタイメージタ
    イプであり、前記オブジェクトがラスタイメージタイプ
    オブジェクトを特定する塗り潰しタイプを有する場合、
    前記ステップ(i)は、前記画素イメージデータへのマ
    ッピングを決定するために前記イメージ中の画素位置を
    用いるステップを備え、これにおいて、そのようにマッ
    プされたデータは前記画素位置での出力のために選択さ
    れることを特徴とする請求項27に記載の方法。
  29. 【請求項29】 前記マッピングは、前記ピクセルイメ
    ージデータのアフィン変換を含むことを特徴とする請求
    項27に記載の方法。
  30. 【請求項30】 前記マッピングは、前記ラスタイメー
    ジに対して画素イメージデータのテクスチャマッピング
    を実行することを特徴とする請求項27に記載の方法。
  31. 【請求項31】 描画されるべき前記ラスタイメージに
    おける画素位置はテーブル内のエントリへのアクセスに
    用いられ、該テーブルは、前記グラフィックオブジェク
    ト内で描画されるべき前記画素イメージデータの成分へ
    の参照を含み、前記第2処理は、前記画素イメージデー
    タの部分をアクセスするために前記参照を操作し、該画
    素イメージデータは前記画素位置における前記ラスタイ
    メージの描画された画素値へ寄与するのに用いられるこ
    とを特徴とする請求項27に記載の方法。
  32. 【請求項32】 前記画素イメージデータの寄与は、前
    記ラスタイメージにおいて再生される単一の画素データ
    値を備えることを特徴とする請求項31に記載の方法。
  33. 【請求項33】 前記画素イメージデータの寄与は少な
    くとも一つの画素データ値を備え、該画素データは、前
    記ラスタ化イメージにおいて再生される単一の画素値を
    派生するために、該ラスタイメージ内の少なくとも一つ
    の他のグラフィックオブジェクトから派生した少なくと
    も一つの値と合成されることを特徴とする請求項31に
    記載の方法。
  34. 【請求項34】 前記画素イメージデータの寄与は一つ
    の画素データ値を備え、該画素データは、前記ラスタ化
    イメージにおいて再生される複数の画素値を派生するた
    めに、該ラスタイメージ内の少なくとも一つの他のグラ
    フィックオブジェクトから派生した少なくとも一つの値
    と合成されることを特徴とする請求項31に記載の方
    法。
  35. 【請求項35】 前記マッピングは、前記画素イメージ
    データ内のマッピングされた位置の周りに配置された複
    数の画素イメージデータを補間することを含むことを特
    徴とする請求項28に記載の方法。
  36. 【請求項36】 前記ステップ(k)は、 (ka)オブジェクトの特性に従って並べれらた合成し
    た特性のテーブルから得られるデータより、前記ラスタ
    イメージのスキャンライン上の前記(異なる)画素の各
    々に対応する値のスタックを展開するサブステップを備
    え、ここで、該スタックは該画素値でアクティブなオブ
    ジェクトの数に対応する深さを有しており、 前記ステップ(i)は、 (ia)対応するスタックを用いて前記画素位置でのピ
    クセル値を決定するサブステップを備えることを特徴と
    する請求項27に記載の方法。
  37. 【請求項37】 前記グラフィックオブジェクトの各々
    は、前記オブジェクトの境界の少なくとも一部を定義す
    る少なくとも一つの辺を備えたデータ構造によって記述
    され、前記辺は、線分記述によって記述される複数の線
    分を含み、前記辺の開始及び終了するスキャンライン間
    で延び、少なくとも2つの部分が異なるデータフォーマ
    ットにより定義されることを特徴とする請求項1または
    12に記載の方法。
  38. 【請求項38】 前記線分どうしの接続において、前記
    線分の一つの最初の描画により返される値が、前記線分
    の一つに続くもののために初期決定値として用いられる
    ことを特徴とする請求項37に記載の方法。
  39. 【請求項39】 前記データフォーマットの各々は、前
    記線分のスタート及びエンドを示す識別子を含み、前記
    線分の確定を許容する更なるパラメータを含むことを特
    徴とする請求項37に記載の方法。
  40. 【請求項40】 前記線分は、直行するステップ線分で
    あり、前記更なるパラメータは符号付のXステップ値
    と、符号無しのYステップ値を含むことを特徴とする請
    求項39に記載の方法。
  41. 【請求項41】 前記線分は、スキャンライン方向に対
    して傾斜を有する直線であり、前記更なるパラメータ
    は、続くスキャンラインに対する画素位置の値を派生す
    るために、現在のスキャンラインの画素位置の値に加え
    る1次の値を含むことを特徴とする請求項39に記載の
    方法。
  42. 【請求項42】 前記線分は2次曲線であり、前記更な
    るパラメータは、次のスキャンラインに対する画素位置
    の値を派生するために、現在のスキャンラインの画素位
    置の値に加算するための前記現在のスキャンラインに関
    連する1次の値と、次のスキャンラインにおける1次の
    値を派生するために前記現在のスキャンラインの一次の
    値に加算される2次の値を含むことを特徴とする請求項
    39に記載の方法。
  43. 【請求項43】 前記線分はN次の多項式曲線であり、
    前記更なるパラメータは、現在のスキャンラインの画素
    位置の値を決める現在のスキャンラインに関連する1〜
    N次の値を含み、これらは、次のスキャンラインの画素
    位置を派生するための次のスキャンラインの1〜N−1
    次の値を派生するために加算されることを特徴とする請
    求項39に記載の方法。
  44. 【請求項44】 前記処理は線分の辺を描画する第3処
    理を備え、前記方法は複数の線分データタイプを解釈
    し、一つの線分から、後続の線分に対する画素位置を決
    定するのに用いられる第1の線分の画素位置を終了させ
    ることから生じる隣接する線分へのシームレスな遷移に
    よって特徴付けられる対応するデータタイプで操作する
    ことにより、前記線分の各々に関して前記辺上の画素の
    位置を評価するステップを備えることを特徴とする請求
    項1または12に記載の方法。
  45. 【請求項45】 前記処理は、各々が対応する色と不透
    明度を有する第1と第2のピクセルを合成するための第
    4の処理を備え、該第4の処理が、 (j)前記各画素値を少なくとも2つの領域に分け、第
    1領域を完全に不透明な領域とし、他を完全に透明な領
    域とするステップと、 (k)全貴慮いう行きの各々の間の交差する領域を決定
    し、交差領域の各々に対する不透明度値を派生するステ
    ップと、 (l)合成された画素値に関して色と不透明度とを寄与
    する少なくとも一つの領域を選択するステップと、 (m)所定のラスタ演算にしたがって、選択された領域
    の色を決定するステップと、 (n)選択された領域に対する色−不透明度の積の和に
    より第1の和を形成し、該第1の和を選択された領域の
    不透明度の和で形成される第2の和で除算して、該合成
    画素の色値を派生し、該第2の和を該合成画素の不透明
    度とするステップとを備えることを特徴とする請求項1
    または12に記載の方法。
  46. 【請求項46】 前記第1或いは第2画素値のうちの一
    方の領域は、前記第2或いは大1画素値の他方の領域と
    互いに直交し、ステップ(l)〜(n)が適用される対
    象となる3つの交差領域を定義することを特徴とする請
    求項45に記載の方法。
  47. 【請求項47】 前記合成演算は、前記対象となる領域
    の少なくとも一つを特定し、該特定された対象となる領
    域を前記和において用いることを特徴とする請求項46
    に記載の方法。
  48. 【請求項48】 前記ステップ(j)〜(l)のいずれ
    かが、前記色と不透明度値を正規化するステップを備え
    ることを特徴とする請求項45に記載の方法。
  49. 【請求項49】 前記ステップ(m)は、対応する前記
    領域に対する線引きするために、正規化された不透明度
    値を用いることを含むことを特徴とする請求項48に記
    載の方法。
  50. 【請求項50】 前記処理は、元側画素の色と不透明度
    値(so)と、目的側画素の色と不透明度値(do)を
    合成するための第4処理を備え、該第4処理は、 (j)前記元側画素と目的側画素の各々の色と不透明度
    値を正規化して、完全に不透明な領域{(so),(d
    o)}と、他の完全に透明な領域{(1−so),(1
    −do)}の少なくとも2つの領域を定義するステップ
    と、 (k)目的側画素の領域が元画素の領域に直行して交差
    し、3つの交差領域の各々に対して、 (i)目的側画素の外の元側画素{so×(1−d
    o)} (ii)元側と目的側画素の交差部{so×do} (iii)元側画素の外の目的側画素{(1−so)×d
    o} なる不透明度値を派生するステップと、 (l)元側画素と目的側の交差色(sc×dc)値を所
    定のラスタ演算に従って合成された画素値の不透明度成
    分として決定するステップと、 (m)ropが前記所定のラスタ演算を表すものとし
    て、sc(so×(1−do))、(so×do)(s
    c rop dc)およびdc((1−sc)×do)
    で表される選択された色−不透明度の積の和を用いて、
    前記合成された画素値の不透明度成分を決定することを
    特徴とする請求項1または12に記載の方法。
  51. 【請求項51】 前記色−不透明度の積は、所定の不透
    明度合成演算に従って選択可能であることを特徴とする
    請求項50に記載の方法。
  52. 【請求項52】 前記所定の不透明度合成演算は、前記
    交差領域の各々に対応するフラグを備え、前記和は、対
    応する前記フラグがセットされている前記交差領域のエ
    リアの合計として決定されることを特徴とする請求項5
    1に記載の方法。
  53. 【請求項53】 前記処理は、各々が対応する色と不透
    明度値を有する第1及び第2の画素値を所定の合成演算
    に従って合成し、これにより合成された画素値を形成す
    る第4処理を備え、該第4処理が、 (j)前記各画素値を少なくとも2つの領域に分け、第
    1領域を完全に不透明な領域とし、他を完全に透明な領
    域とするステップと、 (k)全貴慮いう行きの各々の間の交差する領域を決定
    し、交差領域の各々に対する不透明度値を派生するステ
    ップと、 (l)合成された画素値に関して色と不透明度とを寄与
    する少なくとも一つの領域を前記合成演算に従って選択
    するステップと、 (m)所定のラスタ演算にしたがって、選択された領域
    の各々の色を決定するステップと、 (n)前記合成演算の一部である所定の不透明度演算に
    従って、選択された領域に対する色−不透明度の積の和
    により第1の和を形成し、該第1の和を選択された領域
    の不透明度の和で形成される第2の和で除算して、該合
    成画素値の色値を派生し、該第2の和を該合成画素の不
    透明度とするステップとを備え、前記不透明度演算は前
    記領域の各々に対応するフラグを備え、前記第1の和は
    前記フラグがセットされた領域のエリアの和として決定
    されることを特徴とする請求項1または12に記載の方
    法。
  54. 【請求項54】 前記オブジェクトの各々の透明度成分
    についてアカウントするオブジェクト間のラスター演算
    により特徴付けられるグラフィックオブジェクトの合成
    を更に備えることを特徴とする請求項1または12に記
    載の方法。
  55. 【請求項55】 前記処理は、前記グラフィカルオブジ
    ェクト環境に合成表現を適用する第5処理を備え、前記
    合成表現は複数の優先レベルを有し、該第5処理は、各
    優先レベルに関して、昇順の優先順で、 前記優先レベルの少なくとも一つのオペランドに関連す
    る演算から発生するのに有用な複数の代替アクションを
    定義するステップと、 前記優先レベルに対する複数のアクティベーション条件
    に前記代替アクションを関連させるステップと、該アク
    ティベーション条件は各オペランドのアクティビティ状
    態を含み、 次に高い優先レベルへの決定と応用のために前記代替ア
    クションの一つを選択するべく前記アクティベーション
    条件を論理的に結合するステップとを備えることを特徴
    とする請求項1または12に記載の方法。
  56. 【請求項56】 前記アクティベーション条件は、対応
    する条件を示す少なくとも一つのフラグを含み、前記演
    算は、データと、該データを用いる後続の演算のための
    エントリへのポインタと、どのオペランドが該データを
    提供するかを示す少なくとも一つのフラグとを前記対応
    する条件に関して提供することを特徴とする請求項55
    に記載の方法。
  57. 【請求項57】 前記合成表現は、昇順の優先順におい
    て選択された代替アクションを描画することにより評価
    されることを特徴とする請求項55に記載の方法。
  58. 【請求項58】 前記代替アクションの各々はスタック
    演算を備え、該スタック演算は、互いに、スキャンライ
    ン上の2つのオブジェクトの辺の間の画素のスパンに関
    する画素出力値を決定することを特徴とする請求項57
    に記載の方法。
  59. 【請求項59】 前記合成表現は、前記イメージの階層
    的に構造化された表現であることを特徴とする請求項5
    5に記載の方法。
  60. 【請求項60】 前記合成表現は、該合成表現によって
    表された前記イメージを描画するのに要求される画素演
    算の数に関して最適化されることを特徴とする請求項5
    8に記載の方法。
  61. 【請求項61】 前記アクティベーション条件の論理的
    な結合は、前記階層的に構造化された表現を改造するこ
    となく、前記合成表現が評価される方式を改造すること
    を備えることを特徴とする請求項60に記載の方法。
  62. 【請求項62】 前記イメージは、少なくとも画素ベー
    スのイメージ成分を備えることを特徴とする請求項59
    に記載の方法。
  63. 【請求項63】 特定の優先レベルで、完全に不透明な
    グラフィックオブジェクトは、一つまたは複数の、前記
    合成表現におけるより低い優先レベルのオブジェクトを
    排除するべく動作することを特徴とする請求項55に記
    載の方法。
  64. 【請求項64】 前記ステップの少なくとも一つが、前
    記代替アクションと前記アクティベーション条件のテー
    ブルを形成することを含むことを特徴とする請求項54
    に記載の方法。
  65. 【請求項65】 前記処理は、最適化された合成表現を
    形成する第5処理を備え、前記合成表現は前記グラフィ
    ックオブジェクトの階層的に構造化された表現であり、
    前記グラフィックオブジェクトの各々は所定のアウトラ
    インを有し、該第5処理が、 複数の領域に対する表現を決定するステップと、前記領
    域の各々は前記所定のアウトライン或いはその部分の少
    なくとも一つに実質的に続く少なくとも一つの領域アウ
    トラインにより定義され、 前記領域の少なくとも一つに対する少なくとも一つの特
    性に依存して、更なる複数の領域を特定するステップ
    と、ここで、該更なる領域の各々は、関連付けられた合
    成演算を有し、 前記更なる領域と前記関連付けられた合成演算とを論理
    的に結合するステップと、 前記論理的結合を、前記最適化された合成表現を形成す
    るために、前記階層的に構造化された表現のより高いレ
    ベルに適用するステップとを備えることを特徴とする請
    求項1または12に記載の方法。
  66. 【請求項66】 前記ステップの少なくとも一つが、前
    記代替アクションと前記アクティベーション条件のテー
    ブルを形成することを含むことを特徴とする請求項65
    に記載の方法。
  67. 【請求項67】 前記処理は、前記イメージの描画のた
    めに用いられる合成演算のスタックを形成する第5処理
    を含み、該第5処理が、 前記グラフィカルオブジェクトの各々が再生可能な優先
    レベルに従って並べられたテーブルを確立するステップ
    と、ここで、該テーブルは前記優先レベルに対して、 (i)前記優先レベルで少なくとも一つのオペランドと
    関連する演算から生じるのに有用な複数の代替アクショ
    ンのためのエントリと、 (ii)全規格オペランドに対するアクティビティ状態を
    含むアクティビティ条件のためのエントリとを含み、 表示可能なスキャンライン上の2つの隣り合うオブジェ
    クトの辺の間の表示可能な画素のスパンに対する前記エ
    ントリと各スパンのためのエントリとを更新するステッ
    プと、 前記スタックへ昇順の優先度順で送るための前記優先レ
    ベルの各々に関し、前記代替アクションの一つを選択す
    るために、前記アクティベーション条件を解析するステ
    ップとを備えることを特徴とする請求項1または12に
    記載の方法。
  68. 【請求項68】 前記処理は、複数のグラフィックオブ
    ジェクトで形成された前記イメージを描画するのに使用
    する合成スタックを生成する第6処理を備え、該グラフ
    ィックオブジェクトの各々は、少なくとも辺と、他のグ
    ラフィックオブジェクトに対するビューイングの優先度
    とを含む成分により記述され、該第6処理が、 (j)前記オブジェクトの境界とそれらの交差を決定す
    るステップと、 (k)決定された前記交差の各々について、ビューイン
    グの優先度に従って並べられた前記交差においててアク
    ティブなオブジェクトのレベルアクティベーションテー
    ブルを提供するステップと、 (l)アクティブな上側に配されるグラフィックオブジ
    ェクトが、重複領域内で下側に配されるグラフィックオ
    ブジェクトに重複するかどうかを確かめるステップと、 (m)そのような重複が生じた場合に、上側に配される
    グラフィックオブジェクトと下側に配されるグラフィッ
    クオブジェクトの境界を用いてクリッピング演算を実行
    し、重複領域内の上側に配置されるグラフィックオブジ
    ェクト及び/又は下側に配されるグラフィックオブジェ
    クトのクリップバージョン、及び/又は重複領域外の下
    側に配されるオブジェクト及び/又は上側に配されるグ
    ラフィックオブジェクトのクリップバージョンを生成す
    るステップと、 (n)レベルアクティベーションテーブルに、 (na)重複領域内へ配置された、下側及び上側に配さ
    れるグラフィックオブジェクトの領域に対応する一つ又
    は複数の第1のレベル、及び/又は (nb)重複領域外へ配置された、下側及び/又は上側
    に配されるグラフィックオブジェクトの領域に対応する
    一つ又は複数の第2のレベルを加えるステップと、 (o)前記イメージ内の各ピクセルに対し、当該ピクセ
    ルに適切なレベルアクティベーションテーブルのエント
    リに基づいて、合成スタックを決定するステップとを備
    えることを特徴とする請求項1または12に記載の方
    法。
  69. 【請求項69】 前記ステップ(j)は、所定の順序
    で、現在のスキャンラインと交差する前記オブジェクト
    の辺の交差座標を決定するサブステップ(ja)を備え
    ることを特徴とする請求項68に記載の方法。
  70. 【請求項70】 前記ステップ(l)が、重複するグラ
    フィックオブジェクトへ適用する合成演算子を決定する
    サブステップ(la)を備え、 前記ステップ(m)が、前記サブステップ(la)で決
    定された合成演算子に基づいて、上側に配されるオブジ
    ェクト及び/又は下側に配されるオブジェクトの辺を用
    いて、クリッピング演算を実行するサブステップ(m
    a)を備えることを特徴とする請求項68に記載の方
    法。
  71. 【請求項71】 前記サブステップ(na)が、下側に
    配される及び/又は上側に配されるオブジェクトに対す
    る一つ又は複数の前記第2レベルを前記レベルアクティ
    ベーションテーブルに加え、該一つ又は複数の第2レベ
    ルは、前記サブステップ(la)で決定された合成演算
    子に基づいた該レベルアクティベーションテーブルへの
    追加のために選択されることを特徴とする請求項70に
    記載の方法。
  72. 【請求項72】 前記合成演算子は、ポータアンドダフ
    合成演算子であることを特徴とする請求項69に記載の
    方法。
  73. 【請求項73】 前記処理は、複数のグラフィックオブ
    ジェクトで形成された前記イメージを描画するのに使用
    する合成スタックを、レベルアクティベーションテーブ
    ルにおけるエントリに基づいて生成する第6処理を備
    え、該グラフィックオブジェクトの各々は、少なくとも
    辺と、他のグラフィックオブジェクトに対するビューイ
    ングの優先度とを含む成分により記述され、該第6処理
    が、 (j)所定の順序で、前記スキャンラインと交差する前
    記オブジェクトの辺の交差座標を決定するステップと、 (k)決定された前記辺の交差の各々について、前記レ
    ベルアクティベーションテーブルを更新するステップ
    と、該レベルアクティベーションテーブルはビューイン
    グの優先度に従って並べられており、 (l)アクティブな上側に配されるグラフィックオブジ
    ェクトが、重複領域内で下側に配されるグラフィックオ
    ブジェクトに重複するかどうかを確かめるステップと、 (m)そのような重複が生じた場合に、上側に配される
    グラフィックオブジェクトと下側に配されるグラフィッ
    クオブジェクトの辺を用いてクリッピング演算を実行
    し、重複領域内の上側に配置されるグラフィックオブジ
    ェクト及び/又は下側に配されるグラフィックオブジェ
    クトのクリップバージョン、及び/又は重複領域外の下
    側に配されるオブジェクト及び/又は上側に配されるグ
    ラフィックオブジェクトのクリップバージョンを生成す
    るステップと、 (n)レベルアクティベーションテーブルに、 (na)重複領域内へ配置された、下側及び上側に配さ
    れるグラフィックオブジェクトの領域に対応する一つ又
    は複数の第1のレベル、及び/又は (nb)重複領域外へ配置された、下側及び/又は上側
    に配されるグラフィックオブジェクトの領域に対応する
    一つ又は複数の第2のレベルを加えるステップと、 (o)スキャンライン上の各ピクセル位置に対し、当該
    画素位置に適切なレベルアクティベーションテーブルの
    エントリに基づいて、合成スタックを決定するステップ
    とを備えることを特徴とする請求項1または12に記載
    の方法。
  74. 【請求項74】 前記ステップ(m)が、上側に配され
    るグラフィックオブジェクトと下側に配されるグラフィ
    ックオブジェクトの辺を用いてクリッピング演算を実行
    し、重複領域内の上側及び下側に配されるグラフィック
    オブジェクトのクリップバージョンと、該重複領域外の
    下側或いは上側に配されるグラフィックオブジェクトの
    クリップバージョンとを生成することを特徴とする請求
    項73に記載の方法。
  75. 【請求項75】 前記重複するオブジェクトは、非不透
    明であることを特徴とする請求項68に記載の方法。
JP25512399A 1998-09-11 1999-09-09 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置 Expired - Fee Related JP4365950B2 (ja)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
AU5854 1995-10-09
AUPP5859A AUPP585998A0 (en) 1998-09-11 1998-09-11 Unified compositing model for graphic object rendering
AUPP5858A AUPP585898A0 (en) 1998-09-11 1998-09-11 Pixel image objects in graphic object rasterisation
AUPP5862A AUPP586298A0 (en) 1998-09-11 1998-09-11 Sorting arrangements for parallel edge rasterisation
AUPP5854A AUPP585498A0 (en) 1998-09-11 1998-09-11 Seamless object encoding for rasterised rendering
AUPP9234A AUPP923499A0 (en) 1999-03-16 1999-03-16 Node activation in binary, tertiary and higher order expression trees
AU5858 1999-04-29
AUPQ0049A AUPQ004999A0 (en) 1999-04-29 1999-04-29 Clipping objects in stack-based compositing
AU0049 1999-04-29
AU5859 1999-04-29
AU9234 1999-04-29
AU5862 1999-04-29

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006246138A Division JP4366387B2 (ja) 1998-09-11 2006-09-11 画像処理装置及び方法

Publications (3)

Publication Number Publication Date
JP2000149035A true JP2000149035A (ja) 2000-05-30
JP2000149035A5 JP2000149035A5 (ja) 2006-11-02
JP4365950B2 JP4365950B2 (ja) 2009-11-18

Family

ID=27542967

Family Applications (2)

Application Number Title Priority Date Filing Date
JP25512399A Expired - Fee Related JP4365950B2 (ja) 1998-09-11 1999-09-09 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
JP2006246138A Expired - Fee Related JP4366387B2 (ja) 1998-09-11 2006-09-11 画像処理装置及び方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2006246138A Expired - Fee Related JP4366387B2 (ja) 1998-09-11 2006-09-11 画像処理装置及び方法

Country Status (2)

Country Link
US (2) US6483519B1 (ja)
JP (2) JP4365950B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006018842A (ja) * 2004-06-30 2006-01-19 Canon Inc グラフィックオブジェクトを描画する方法
US7864197B2 (en) 2002-10-30 2011-01-04 Canon Kabushiki Kaisha Method of background colour removal for porter and duff compositing
US8339664B2 (en) 2008-05-15 2012-12-25 Canon Kabushiki Kaisha Image processing method, image processing apparatus, and control method thereof
US10555009B2 (en) 2016-12-12 2020-02-04 Canon Kabushiki Kaisha Encoding device, encoding method, decoding device, decoding method, and generation method

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPP771798A0 (en) 1998-12-14 1999-01-14 Canon Kabushiki Kaisha Overlapping edge blends and other texture mapped regions
AUPP923799A0 (en) * 1999-03-16 1999-04-15 Canon Kabushiki Kaisha Method for optimising compilation of compositing expressions
US7126600B1 (en) * 2000-08-01 2006-10-24 Ati International Srl Method and apparatus for high speed block mode triangle rendering
US6756994B1 (en) * 2000-08-07 2004-06-29 Canon Kabushiki Kaisha Method and apparatus for handling secondary dependencies
EP1187066A3 (en) * 2000-09-01 2004-04-21 Sony Computer Entertainment Inc. Method and apparatus for image enlargement/reduction
US7286138B2 (en) * 2001-05-08 2007-10-23 Microsoft Corporation Discontinuity edge overdraw
AUPR860901A0 (en) * 2001-10-31 2001-11-29 Canon Kabushiki Kaisha Activating a filling of a graphical object
AUPS134202A0 (en) * 2002-03-25 2002-05-09 Canon Kabushiki Kaisha System and method for optimizing halftoning printer performance
US7418664B2 (en) * 2002-04-03 2008-08-26 Microsoft Corporation Application sharing single document sharing
US7028266B2 (en) * 2002-04-05 2006-04-11 Microsoft Corporation Processing occluded windows during application sharing
US8756513B1 (en) 2002-04-23 2014-06-17 Microsoft Corporation Document viewing mechanism for document sharing environment
US7293243B1 (en) * 2002-05-22 2007-11-06 Microsoft Corporation Application sharing viewer presentation
JP2003346136A (ja) * 2002-05-23 2003-12-05 Canon Inc 画像処理装置およびその方法
US20040227767A1 (en) * 2002-06-20 2004-11-18 Alberto Baroncelli Vector graphics circuit accelerator for display systems
US7423655B1 (en) * 2002-06-24 2008-09-09 Adobe Systems Incorporated Revealing clipped portion of image object
US7355609B1 (en) * 2002-08-06 2008-04-08 Apple Inc. Computing visible regions for a hierarchical view
AU2002951651A0 (en) * 2002-09-25 2002-10-10 Canon Kabushiki Kaisha Apparatus for printing using non-overlapping graphic objects
CA2515417C (en) 2003-02-11 2009-04-28 Research In Motion Limited Display processing system and method
US7088870B2 (en) * 2003-02-24 2006-08-08 Microsoft Corporation Image region filling by example-based tiling
US6987520B2 (en) * 2003-02-24 2006-01-17 Microsoft Corporation Image region filling by exemplar-based inpainting
AU2003903448A0 (en) * 2003-06-26 2003-07-17 Canon Kabushiki Kaisha A method for tracking depths in a scanline based raster image processor
JP4183082B2 (ja) * 2003-09-26 2008-11-19 シャープ株式会社 3次元画像描画装置および3次元画像描画方法
JP2005107780A (ja) * 2003-09-30 2005-04-21 Sony Corp 画像混合方法および混合画像データ生成装置
AU2004233516B2 (en) * 2003-11-28 2008-07-31 Canon Kabushiki Kaisha Tree-based compositing system
US7538770B2 (en) * 2003-11-28 2009-05-26 Canon Kabushiki Kaisha Tree-based compositing system
US7403661B2 (en) * 2004-02-12 2008-07-22 Xerox Corporation Systems and methods for generating high compression image data files having multiple foreground planes
AU2005200948B2 (en) * 2004-03-09 2008-03-06 Canon Kabushiki Kaisha Compositing list caching for a raster image processor
US7586500B2 (en) * 2004-09-24 2009-09-08 Canon Kabushiki Kaisha Dynamic render algorithm selection
JP4566772B2 (ja) * 2005-02-14 2010-10-20 キヤノン株式会社 画像処理装置、画像処理方法、及びプログラム
JP4419876B2 (ja) * 2005-03-14 2010-02-24 富士ゼロックス株式会社 画像処理装置
AU2005201930B2 (en) * 2005-05-06 2009-02-19 Canon Kabushiki Kaisha Simplification of alpha compositing in the presence of transfer functions
US20070085860A1 (en) * 2005-10-13 2007-04-19 Honeywell International Inc. Technique for improving the readability of graphics on a display
US7965299B2 (en) * 2005-10-31 2011-06-21 Canon Kabushiki Kaisha Implementing compositing operations on images
US7969604B2 (en) * 2005-11-30 2011-06-28 Adobe Systems Incorporated Systems and methods for printing artwork containing transparency
US7583410B1 (en) 2005-12-13 2009-09-01 Adobe Systems Incorporated System to create image transparency in a file generated utilizing a print stream
US8085275B1 (en) * 2005-12-20 2011-12-27 Nvidia Corporation System and method for low-overhead push buffer jumps
EP1826723B1 (en) * 2006-02-28 2015-03-25 Microsoft Corporation Object-level image editing
US20070216685A1 (en) * 2006-03-15 2007-09-20 Microsoft Corporation Scene write-once vector and triangle rasterization
US20070216696A1 (en) * 2006-03-16 2007-09-20 Toshiba (Australia) Pty. Limited System and method for document rendering employing bit-band instructions
JP4157569B2 (ja) * 2006-05-11 2008-10-01 株式会社東芝 描画装置、描画方法及び描画プログラム
US20080158254A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Using supplementary information of bounding boxes in multi-layer video composition
US7928980B2 (en) * 2007-07-19 2011-04-19 Analytical Graphics Inc. Method for visualizing data clouds using color and opacity blending
US20090091564A1 (en) * 2007-10-03 2009-04-09 Raju Thevan System and method for rendering electronic documents having overlapping primitives
US20090096792A1 (en) * 2007-10-15 2009-04-16 Ati Technologies Ulc Fill mode determination in vector graphics
US8920236B2 (en) 2007-11-02 2014-12-30 Bally Gaming, Inc. Game related systems, methods, and articles that combine virtual and physical elements
AU2008202364B2 (en) * 2008-05-28 2011-04-21 Canon Kabushiki Kaisha Scan converting a set of vector edges to a set of pixel aligned edges
JP5136645B2 (ja) * 2008-08-12 2013-02-06 富士通株式会社 電子ペーパ端末装置、画像表示制御プログラム、および画像表示制御方法
US8285034B2 (en) 2009-08-26 2012-10-09 Bally Gaming, Inc. Apparatus, method and article for evaluating a stack of objects in an image
DE102009042235A1 (de) * 2009-09-18 2011-04-07 Diehl Aerospace Gmbh Verfahren zur Darstellung von mehreren sich mindestens teilweise überlagernden Objekten
AU2009225336B2 (en) * 2009-10-13 2011-08-04 Canon Kabushiki Kaisha Method of compositing variable alpha fills supporting group opacity
KR101635006B1 (ko) * 2010-01-22 2016-07-01 삼성디스플레이 주식회사 광원의 휘도 제어 방법 및 이를 수행하기 위한 표시 장치
US20110193871A1 (en) * 2010-02-07 2011-08-11 Microsoft Corporation Rendering multi-layered image
CN102376099B (zh) * 2010-08-19 2013-09-11 北大方正集团有限公司 一种改善矢量图形填充效果的方法及系统
AU2013211450A1 (en) 2013-07-30 2015-02-19 Canon Kabushiki Kaisha Fixed memory rendering
US10545657B2 (en) 2013-09-03 2020-01-28 Apple Inc. User interface for manipulating user interface objects
KR102238651B1 (ko) 2014-04-23 2021-04-09 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.
EP3161603B1 (en) 2014-06-27 2019-10-16 Apple Inc. Manipulation of calendar application in device with touch screen
EP2985735B1 (en) 2014-08-11 2019-12-04 Samsung Electronics Co., Ltd Method and apparatus for performing tile-based path rendering
KR102354989B1 (ko) * 2015-04-14 2022-01-24 삼성전자주식회사 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
KR102426667B1 (ko) 2015-06-23 2022-07-28 삼성전자주식회사 경로 렌더링에서 에일리어싱을 방지하는 방법 및 장치.
KR102426669B1 (ko) 2015-08-03 2022-07-28 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.
DK201670595A1 (en) 2016-06-11 2018-01-22 Apple Inc Configuring context-specific user interfaces
KR102618560B1 (ko) 2016-06-15 2023-12-27 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치
US10431000B2 (en) * 2017-07-18 2019-10-01 Sony Corporation Robust mesh tracking and fusion by using part-based key frames and priori model

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4815009A (en) * 1987-04-21 1989-03-21 Xerox Corporation Algorithm for filling an image outline
CH685691A5 (de) * 1991-12-27 1995-09-15 Charles Bosshard Notausrüstung für Kraftfahrzeuge.
US5444835A (en) * 1993-09-02 1995-08-22 Apple Computer, Inc. Apparatus and method for forming a composite image pixel through pixel blending
AUPM822394A0 (en) * 1994-09-16 1994-10-13 Canon Inc. Object based rendering system
US5818456A (en) * 1996-04-30 1998-10-06 Evans & Sutherland Computer Corporation Computer graphics system with adaptive pixel multisampler
US5831627A (en) * 1996-06-27 1998-11-03 R/Greenberg Associates System and method for providing improved graphics generation performance using memory lookup
US6008813A (en) * 1997-08-01 1999-12-28 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Real-time PC based volume rendering system
US6300955B1 (en) * 1997-09-03 2001-10-09 Mgi Software Corporation Method and system for mask generation
US6421460B1 (en) 1999-05-06 2002-07-16 Adobe Systems Incorporated Blending colors in the presence of transparency

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7864197B2 (en) 2002-10-30 2011-01-04 Canon Kabushiki Kaisha Method of background colour removal for porter and duff compositing
JP2006018842A (ja) * 2004-06-30 2006-01-19 Canon Inc グラフィックオブジェクトを描画する方法
US8339664B2 (en) 2008-05-15 2012-12-25 Canon Kabushiki Kaisha Image processing method, image processing apparatus, and control method thereof
US10555009B2 (en) 2016-12-12 2020-02-04 Canon Kabushiki Kaisha Encoding device, encoding method, decoding device, decoding method, and generation method

Also Published As

Publication number Publication date
US7046253B2 (en) 2006-05-16
US6483519B1 (en) 2002-11-19
JP4365950B2 (ja) 2009-11-18
JP4366387B2 (ja) 2009-11-18
JP2006338692A (ja) 2006-12-14
US20030016221A1 (en) 2003-01-23

Similar Documents

Publication Publication Date Title
JP4365950B2 (ja) 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
JP4343344B2 (ja) ラスタ形式のグラフィックオブジェクトを用いたイメージの高速レンダリング方法
US6961067B2 (en) Reducing the number of compositing operations performed in a pixel sequential rendering system
US7714865B2 (en) Compositing list caching for a raster image processor
JP4630482B2 (ja) 表現ツリーを生成する装置及びラスタ画素イメージを描画する装置
JP3797666B2 (ja) グラフィックオブジェクトの塗りつぶしをアクティブ化する方法および装置
US7538770B2 (en) Tree-based compositing system
US7551173B2 (en) Pixel accurate edges for scanline rendering system
AU744091B2 (en) Processing graphic objects for fast rasterised rendering
AU760826B2 (en) Rendering graphic object based images
AU2005200948B2 (en) Compositing list caching for a raster image processor
AU743218B2 (en) Fast renering techniques for rasterised graphic object based images
AU779154B2 (en) Compositing objects with opacity for fast rasterised rendering
AU2004200655B2 (en) Reducing the Number of Compositing Operations Performed in a Pixel Sequential Rendering System
AU2005201868A1 (en) Removing background colour in group compositing
AU2005201929A1 (en) Rendering graphic object images
AU2002301643B2 (en) Activating a Filling of a Graphical Object
AU2004231232B2 (en) Pixel accurate edges for scanline rendering system
AU766452B2 (en) Method and apparatus for calculating Boolean combinations of regions in a plane
AU2005201931A1 (en) Rendering graphic object images
AU2004233469A1 (en) Rendering linear colour blends
AU2004237873A1 (en) State table optimization in expression tree based compositing
AU2004231233A1 (en) Render Time Estimation
AU2004233516A1 (en) Tree-based compositing system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060911

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060911

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20060911

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080804

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090706

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: 20090803

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090824

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

Free format text: PAYMENT UNTIL: 20120828

Year of fee payment: 3

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: 20120828

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130828

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees