(57)【要約】      （修正有）【課題】オブジェクトベース画像を走査線順に一度に一画素描画するための装置であり、オブジェクトの合成回数を削減する。【解決手段】  装置２０は、一つ又は二つのオブジェクトの隣接するエッジ間の画素連の先端画素の処理中に合成メッセージのセットを生成するため、その画素連の後続する画素の処理中にセットから合成メッセージの縮小セットを生成する、最適化モジュール５５０から成っている。装置２０は更に、画素連の先端画素を合成することに加え、先端画素の合成結果又は部分結果を格納する画素合成モジュール７００からも成る。画素合成モジュール７００は、合成メッセージのその縮小セットと、先端画素に後続する画素連を合成するために、その格納された結果又は部分結果を用いる。【選択図】    図３
2004318832.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトベース画像を走査線順に一度に一画素描画する装置であって、
オブジェクトベース画像を合成するための合成メッセージ数を最小化する最適化モジュールで、
オブジェクトの隣接するエッジ間の画素連の先端画素に対し、合成メッセージシーケンスの一つ以上の合成メッセージ内に、一つ以上の合成メッセージの合成結果を画素連の先端画素に後続する各画素の合成に使用するために格納するよう指示するための第１データを設定する第１ユニットと、
画素連の先端画素に後続する各画素に対し、合成メッセージシーケンスから縮小した合成メッセージセットを生成する第２ユニットとを備え、
前記第２ユニットは、
画素連の先端画素に後続する各画素に対し、合成メッセージの縮小セットを生成するサブユニットと、
画素連の先端画素に後続する各画素に対し、縮小セットの一つ以上の合成メッセージ内に、画素連の先端画素に後続する各画素の合成に使用するため、格納された合成結果を取り出すよう指示するための第２データを設定するためのサブユニットと
を備える最適化モジュールと、
現在走査中の画素に対し、合成メッセージに従って、カラーと不透明度の合成結果を生成するための合成モジュールとを備え、
前記合成モジュールは画素連の先端画素に対し、カラーと不透明度を、合成演算の順序に従って生成し、そして前記先頭画素に後続する画素連中の各画素のカラーと不透明度を、前記縮小セットと前記取り出された合成結果に従って生成することを特徴とする装置。
【請求項２】
前記合成モジュールは、現在走査された画素に対し合成メッセージに従ってカラーと不透明度の合成結果を生成するスタックを備えることを特徴とする請求項１に記載の装置。
【請求項３】
前記各合成メッセージは、合成命令、関係するオブジェクトのカラーと不透明度を表すデータ、及びカラーと不透明度が走査線に沿って一定か否かを表すデータとから成ることを特徴とする請求項２に記載の装置。
【請求項４】
前記第１ユニットは、
スタックの予測スタック深度が所定の深度になっており、且つこれまでにそれらの関係する第１データを設定された現在の合成メッセージとすべての合成メッセージが、走査線に沿ってカラーと不透明度が一定であるオブジェクトと関連付けられている場合に、現在処理中の合成メッセージの第１データを設定するサブユニットを備えることを特徴とする請求項３に記載の装置。
【請求項５】
前記合成メッセージの縮小セットが、前記第１データを設定された先端画素の最後の合成メッセージに対応する合成メッセージと、前記第１データが設定されていない合成メッセージに対応するシーケンスのそれに続く合成メッセージとから成ることを特徴とする請求項４に記載の装置。
【請求項６】
前記縮小セットの一つ以上の合成メッセージ内に前記第２データを設定するための前記サブユニットが、前記第１データを設定された前記先端画素の最後の合成メッセージに対応する合成メッセージ内に前記第２データを設定するサブユニットを備えることを特徴とする請求項５に記載の装置。
【請求項７】
前記合成命令がスタック演算とカラーと不透明度の演算子から成り、その第１ユニットは、
現在の合成メッセージとこれまでに第１データを設定された合成メッセージが走査線をまたがって一定のカラーと不透明度を有するオブジェクトに関連付けられており、所定のスタック演算子でないスタック演算子から成っている場合には、現在の合成メッセージの第１データを設定するサブユニットを備えることを特徴とする請求項３に記載の装置。
【請求項８】
前記合成結果が、スタックの上限値であることを特徴とする請求項２に記載の装置。
【請求項９】
前記第１データが、合成結果を格納しているスタック状態を格納するよう指示することを特徴とする請求項２に記載の装置。
【請求項１０】
前記第１ユニットが、現在の合成メッセージが走査線に沿って変動するカラーと不透明度を有するオブジェクトに関連付けられている画素連の先端画素に対する最初の合成メッセージである場合に、現在の合成メッセージの第１データを設定するサブユニットを備えることを特徴とする請求項９に記載の装置。
【請求項１１】
前記合成メッセージの縮小セットが、
前記第１データを設定された先端画素の最後の合成メッセージに対応する合成メッセージと、
前記第１データを設定されていないそれらの合成メッセージに対応するシーケンスの後続する合成メッセージと
から成ることを特徴とする請求項１０に記載の装置。
【請求項１２】
前記縮小セットの一つ以上の合成メッセージ内に前記第２データを設定するためのサブユニットが、
前記第１データを設定された最後の合成メッセージに対応する合成メッセージ内に前記第２データを設定するためのサブユニットを備えることを特徴とする請求項１１に記載の装置。
【請求項１３】
前記第１ユニットが、現在の合成メッセージが所定値の予測スタック深度に関連付けられており、且つ走査線に沿って一定のカラーと不透明度を有し、所定タイプのカラーとアルファ演算子とから成る合成メッセージのサブシーケンスの一つである場合には、現在の合成メッセージの前記第１データを設定するためのサブユニットを備えることを特徴とする請求項３に記載の装置。
【請求項１４】
前記所定タイプのカラーとアルファ演算子は連帯関係にあることを特徴とする請求項１３に記載の装置。
【請求項１５】
前記第１データを設定するサブユニットが、現在の合成メッセージが所定値の予測スタック深度に関連付けられており、且つスタック演算子と所定タイプのカラーとアルファ演算子を有している場合には、現在の合成メッセージの第１データを加えて設定することを特徴とする請求項１４に記載の装置。
【請求項１６】
前記合成メッセージの縮小セットが、
前記サブシーケンスの仲間でなく、前記第１データを設定されていない先端画素のそれらの合成メッセージに対応するシーケンスの合成メッセージと、
前記第１データを設定された先端画素の最後の合成メッセージに対応する合成メッセージと
から成ることを特徴とする請求項１４に記載の装置。
【請求項１７】
前記縮小セットの一つ以上の合成メッセージ内に前記第２データを設定する前記サブユニットが、前記第１データを設定された最後の合成メッセージに対応する合成メッセージ内に、前記第２データを設定するサブユニットを備えることを特徴とする請求項１３に記載の装置。
【請求項１８】
前記第１ユニットが、前記現在の合成メッセージが所定値の予測スタック深度に関連付けられており、且つ前記現在の合成メッセージが走査線に沿ってカラーと不透明が一定であり、表現ツリーの有効なブランチの一部である合成メッセージのサブシーケンスの一つである場合には、現在の合成メッセージの前記第１データを設定するためのサブユニットを備えることを特徴とする請求項３に記載の装置。
【請求項１９】
前記合成メッセージの縮小セットが、
少なくとも一つの合成メッセージに対し第１データを設定され、予測スタック深度毎に前記第１データを設定された最後の合成メッセージに対応する合成メッセージと、
前記第１データを設定された最後の合成メッセージに後続する、前記第１データが未設定の合成メッセージに対応するシーケンスの合成メッセージと
から成ることを特徴とする請求項１８に記載の装置。
【請求項２０】
縮小セットの一つ以上の合成メッセージ内に前記第２データを設定するためのサブユニットが、各スタック深度に対して第１データが設定された少なくとも一つの合成メッセージに対して、前記第１データを設定された最後の合成メッセージに対応する合成メッセージ内に前記第２データを設定するためのサブユニットを備えることを特徴とする請求項１８に記載の装置。
【請求項２１】
オブジェクトベース画像を走査線順に一度に一画素描画する方法であって、
オブジェクトベース画像を合成するための合成メッセージ数を最小化する最適化工程で、
オブジェクトの隣接するエッジ間の画素連の先端画素に対し、合成メッセージシーケンスの一つ以上の合成メッセージ内に、一つ以上の合成メッセージの合成結果を画素連の先端画素に後続する各画素の合成に使用するために格納するよう指示するための第１データを設定する設定工程と、
画素連の先端画素に後続する各画素に対し、合成メッセージシーケンスから縮小した合成メッセージセットを生成する生成工程とを備え、
前記生成工程は、
画素連の先端画素に後続する各画素に対し、合成メッセージの縮小セットを生成する生成サブ工程と、
画素連の先端画素に後続する各画素に対し、縮小セットの一つ以上の合成メッセージ内に、画素連の先端画素に後続する各画素の合成に使用するため、格納された合成結果を取り出すよう指示するための第２データを設定するための設定サブ工程と
を備える最適化工程と、
現在走査中の画素に対し、合成メッセージに従って、カラーと不透明度の合成結果を生成する合成工程とを備え、
前記合成モジュールは画素連の先端画素に対し、カラーと不透明度を、合成演算の順序に従って生成し、そして前記先頭画素に後続する画素連中の各画素のカラーと不透明度を、前記縮小セットと前記取り出された合成結果に従って生成することを特徴とする方法。
【請求項２２】
装置読み取り可能な記録媒体に記録された装置読み取り可能なプログラムコードを実行することで、オブジェクトベース画像を走査線順に一度に一画素描画する方法を実行するデータ処理装置を制御する為の、前記プログラムコードから成るコンピュータプログラム製品であって、
前記方法は、
オブジェクトベース画像を合成するための合成メッセージ数を最小化する最適化工程で、
オブジェクトの隣接するエッジ間の画素連の先端画素に対し、合成メッセージシーケンスの一つ以上の合成メッセージ内に、一つ以上の合成メッセージの合成結果を画素連の先端画素に後続する各画素の合成に使用するために格納するよう指示するための第１データを設定する設定工程と、
画素連の先端画素に後続する各画素に対し、合成メッセージシーケンスから縮小した合成メッセージセットを生成する生成工程とを備え、
前記生成工程は、
画素連の先端画素に後続する各画素に対し、合成メッセージの縮小セットを生成する生成サブ工程と、
画素連の先端画素に後続する各画素に対し、縮小セットの一つ以上の合成メッセージ内に、画素連の先端画素に後続する各画素の合成に使用するため、格納された合成結果を取り出すよう指示するための第２データを設定するための設定サブ工程と
を備える最適化工程と、
現在走査中の画素に対し、合成メッセージに従って、カラーと不透明度の合成結果を生成する合成工程とを備え、
前記合成モジュールは画素連の先端画素に対し、カラーと不透明度を、合成演算の順序に従って生成し、そして前記先頭画素に後続する画素連中の各画素のカラーと不透明度を、前記縮小セットと前記取り出された合成結果に従って生成することを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像オブジェクトベース画像の描画に関するもので、特に、本発明は画素の順序だった描画システムにおいて実行される合成処理の回数削減に関するものである。
【背景技術】
【０００２】
コンピュータアプリケーションがデバイスに印刷及び／又は表示用のデータを送る場合、ページの中間記述がPost Script又はPCLなどのページ記述言語によってしばしばデバイスのドライバソフトに与えられるが、それは印刷されるラスタ画像というよりもページ上に描画されるオブジェクトの記述情報を提供するものである。同等のものとして、画像オブジェクトの記述セットが、Microsoft Windows（登録商標） GDI又はUnix（登録商標） X-IIのような画像インタフェースに関数呼び出しの形で供給されることもある。ページは一般的にオブジェクトベースの画像システム(又はラスタ画像プロセッサ)によって印刷及び／又は表示用に描画される。
【０００３】
これらのオブジェクトベース画像システムの多くは、当業者にフレームストア又はページバッファーとして知られる大きなメモリ領域を使用して、その後の印刷及び／又は表示用のページ若しくはスクリーンの画素ベース画像を格納する。一般的には、画像オブジェクトのアウトラインは計算、フィルされ、フレームストアに書き込まれる。二次元の画像に対しては、他のオブジェクトの前面に現れるオブジェクトは背面のオブジェクト上のフレームストアに書き込まれ、そうすることによって、画素毎に背景を置き換える。これは当業者には「ペインターのアルゴリズム」として知られている。オブジェクトは優先度を最後列から最前列のオブジェクトの順に検討され、典型的には、各オブジェクトは走査線順にラスタされ、画素は各走査線に沿って順序付けられた連の形で、フレームストアに書き込まれる。幾つかの画像インタフェースでは、一つ以上の画像オブジェクトとフレームバッファー内に既に描画された画素間の、論理或いは四則演算を指定し行うことを可能にする。このような事例では、原理は同じままであり、オブジェクト(或いはオブジェクト群)は走査線の順序でラスタ化され、そして指定された演算結果は各走査線に沿った配列でフレームストアに書き込まれる。
【０００４】
この技法には本質的に二つの問題がある。その第１は、それがフレームストアの全画素に対して高速のランダムアクセスを必要とすること。これは、新オブジェクトのそれぞれが、フレームストアのどの画素にも影響を及ぼすからである。この理由により、フレームストアは通常半導体のランダムアクセスメモリ（RAM）に格納される。高解像のカラープリンタにとってRAMの必要容量はきわめて大きく、概ね１００メガバイトを超え、コスト高で、かつ高速処理が困難である。第２の問題は、多くの画素がペイント(描画)され、後列のオブジェクトによってオーバーペインティング（重ね描画）されること。これらの画素を前列のオブジェクトでペイントすることは時間の無駄遣いである。
【０００５】
大容量フレームストア問題克服の一つの方法にはバンディングの使用がある。バンディング法を使用すれば、メモリ内にはある時点で、フレームストアの一部だけが存在することになる。描かれるオブジェクトのすべては「ディスプレイリスト」に維持されるが、それはオブジェクトをページ上に描くために要求される情報の内的表現である。ディスプレイリストは上記のオブジェクト順序で検討される。バンド内に保持されているページの一部に収まるこれらの画素演算のみが実際には実行される。ディスプレイリストにあるすべてのオブジェクトの描画が終わると、バンドはプリンタ(或いは中間記憶媒体)に送られ、処理はページの次のバンドに対して繰り返される。しかし、この技法には代償がある。例えば、描画中のオブジェクトは各バンドごとに一回の頻度で何度も再考されなければならない。バンドの数が増えるにつれ、描画を要求するオブジェクトの繰り返し検査回数も増える。また、バンディング法はオーバーペインティングのコスト問題を解決してはいない。
【０００６】
他の幾つかの画像システムでは画像を走査線順序で検討する。そのうえ、ページ上の全オブジェクトはディスプレイリストに維持される。各走査線上で、その走査線と交差するオブジェクトは優先度順に従って検討され、それぞれのオブジェクトについて、オブジェクトエッジと走査線の交点間の画素全長はラインストアにフィルされる。この技法は大容量フレームストアの問題を克服しているが、オーバーペインティングの問題を依然課題として残している。
【０００７】
他の画像システムでは、大容量フレームストア問題とオーバーペインティング問題の両方を克服するため、画素順次描画法を使用している。これらのシステムにおいては、各画素はラスタ順に生成される。ここでもまた、描かれるすべてのオブジェクトはディスプレイリスト内に維持される。各走査線上で、その走査線と交差するオブジェクトのエッジは、走査線との交点の昇順に従って維持される。これらの交点或いはエッジ交差は順々に検討され、ディスプレイリスト内のオブジェクトの活動を指示するフィールド配列のトグル付けに使用される。オブジェクトペインティングの動作毎に、走査線上に関心の対象となる一つの活動フィールドが存在する。またそれまでに生成されたデータを必要としない動作を指示するフィールドもまた在る。検討された各エッジペア間の各画素のカラーデータが、それは最初のエッジと次のエッジ間に並んでいるが、優先度エンコーダを使用して、どちらの演算がカラーを生成するために要求されるかを決定し、そして両エッジにまたがる画素全長に対し、それらのみの演算を実行するために、活動フラグ上に生成される。次の走査線の準備として、各エッジの交点の座標は各エッジの性質に従って更新され、各エッジはその走査線との交点の昇順に並べ替えられる。任意の新エッジもまた、エッジのリストに併合される。
【０００８】
画素順次描画法を使用する画像システムは、フレームストア又はラインストアが無く、不必要なオーバーペインティングが無く、そしてオブジェクトの優先度が、優先度エンコーダによって、N（Nは優先度の番号）回というより一定回数に取り扱える、という大きな利点を備えている。
【０００９】
しかし、それでもなお、いくつかの異なるオブジェクトからのカラーを描画済み画素に組み込むためには、数回の合成演算を行うことがたびたび必要であり、これは描画処理全体にとっては大きな隘路を形成している。
【発明の開示】
【課題を解決するための手段】
【００１０】
本発明の目的は現存技法の一つ以上の短所を克服するか或いは少なくとも改善することにある。
【００１１】
本発明の一つの実施態様に従って、オブジェクトベース画像を走査線順に一度に一画素描画する装置であって、：オブジェクトベース画像を合成するための合成メッセージ数を最小化する最適化モジュールで、：１つもしくは２つのオブジェクトの隣接するエッジ間の画素連の先端画素に対し、合成メッセージセットの一つ以上の合成メッセージ内に、一つ以上の合成メッセージの合成結果を画素連の先端画素に後続する各画素の合成に使用するために格納するよう指示するための第１データを設定する第１ユニットと、；画素連の先端画素に後続する各画素に対し、合成メッセージセットから縮小した合成メッセージセットを生成する第２ユニットとを備え、前記第２ユニットは、：画素連の先端画素に後続する各画素に対し、合成メッセージの縮小セットを生成するサブユニットと、；画素連の先端画素に後続する各画素に対し、縮小セットの一つ以上の合成メッセージ内に、画素連の先端画素に後続する各画素の合成に使用するため、格納された合成結果を取り出すよう指示するための第２データを設定するためのサブユニットとを備える最適化モジュールと、；現在走査中の画素に対し、合成メッセージに従って、カラーと不透明度の合成結果を生成するための合成モジュールとを備え、前記合成モジュールは画素連の先端画素に対し、カラーと不透明度を、合成演算のセットに従って生成し、そして前記先頭画素に後続する画素連中の各画素のカラーと不透明度を、前記縮小セットと前記取り出された合成結果に従って生成することを特徴とする。
【００１２】
本発明の別の実施態様に従って、オブジェクトベース画像を走査線順に一度に一画素描画する方法であって、オブジェクトベース画像を合成するための合成メッセージ数を最小化する最適化工程で、：１つもしくは２つのオブジェクトの隣接するエッジ間の画素連の先端画素に対し、合成メッセージセットの一つ以上の合成メッセージ内に、一つ以上の合成メッセージの合成結果を画素連の先端画素に後続する各画素の合成に使用するために格納するよう指示するための第１データを設定する設定工程と、；画素連の先端画素に後続する各画素に対し、合成メッセージセットから縮小した合成メッセージセットを生成する生成工程とを備え、前記生成工程は、：画素連の先端画素に後続する各画素に対し、合成メッセージの縮小セットを生成する生成サブ工程と、；画素連の先端画素に後続する各画素に対し、縮小セットの一つ以上の合成メッセージ内に、画素連の先端画素に後続する各画素の合成に使用するため、格納された合成結果を取り出すよう指示するための第２データを設定するための設定サブ工程とを備える最適化工程と、；現在走査中の画素に対し、合成メッセージに従って、カラーと不透明度の合成結果を生成する合成工程とを備え、前記合成モジュールは画素連の先端画素に対し、カラーと不透明度を、合成演算のセットに従って生成し、そして前記先頭画素に後続する画素連中の各画素のカラーと不透明度を、前記縮小セットと前記取り出された合成結果に従って生成することを特徴とする。
【００１３】
発明のその他実施態様の特徴も開示される。
【発明を実施するための最良の形態】
【００１４】
付属図面のいずれかを参照する場合はステップ及び／又は特徴に対して、同一の参照番号が付けられ、異なる意図が生じない限り、この説明上は、同一機能又は動作を有する。
【００１５】
画素順次描画システム１のより良い理解のため、簡潔なシステムの概要説明を１.０項で行う。次に、２.０項で第３者ソフトウエアアプリケーションと画素順次描画装置２０間を結ぶインタフェース用のドライバソフトの説明をする。３.０項では画素順次描画装置２０の概説を行う。追って明らかになるように、画素順次描画装置２０は命令実行モジュール３００、エッジトラッキングモジュール４００、優先度決定モジュール５００、最適化モジュール５５０、フィルカラー決定モジュール６００、画素合成モジュール７００、画素出力モジュール８００から成っている。これらのモジュールの簡潔な概要説明を３.１項から３.７項で行う。最適化モジュール５５０と画素合成モジュール７００のより詳細な説明は、次に４.０項から４.５項と５.０項に続く。
【００１６】
この発明の一般原理は、画素順次描画システムにおいて実行される合成演算の回数削減に役立つ。これは最適化モジュール５５０と画素合成モジュール７００による好適なシステムによって実現しており、それについては４.０項、４.１、４.２、４.３、４.４、４.５、及び５.０項で更に詳細に説明する。
【００１７】
１.０ 画素順次描画システムの概要
図１は、コンピュータのグラフィックオブジェクト画像の描画と、提示用に構成されたコンピュータシステム１を、図式的に解説したものである。そのシステムは、システムランダムアクセスメモリ（RAM）３と結合されたホストプロセッサ２を含み、それは不揮発性記憶ハードディスクドライブ又は類似のデバイス５と、揮発性記憶半導体RAM４を含んでいる。システム１はまた、一般的に半導体ROM７上に構築され、多くの場合コンパクトディスクデバイス（CD ROM）８によって増強できる、システムのリードオンリーメモリ（ROM）６を含む。システム１は、例えばビデオ表示ユニット（VDU）又はプリンタのどちらか一方、或いは両方のような、ラスタ方式で動作する画像表示用の何かの手段１０を組み込むこともまたできる。
【００１８】
上記のシステム１の構成要素は、バスシステム９を経由して相互接続されており、IBM PC／ATタイプパソコンと、そこから発展した実施態様である、SUNのSparcstations等のように当業者に周知のコンピュータシステムの通常動作モードで動作できる。
【００１９】
また図３に示すように、バス９に接続する画素順次描画装置２０が、本発明の好ましい実施態様において、システム１からバス９経由で命令とデータを供給され、画像のオブジェクトベース記述から導かれた画素ベース画像を、順次描画するように構成されている。装置２０は、オブジェクト記述の描画のために、一般的には半導体RAMから構成される専用の描画ストア装置３０を備えることが好ましいが、システムRAM ３を使っても良い。
【００２０】
画素順次描画装置は一般的に言えば次のような実施態様で動作する。描画されるジョブは、画素順次描画装置に供給するため、第３者ソフトウエアによってドライバソフトに与えられる。描画のジョブは、典型的にはページ記述言語或いは標準画像APIへの関数呼び出しシーケンスで行われ、それはページ上の画像構成オブジェクトを、最後列から最前列のオブジェクトまで、描画ジョブによって定義された方法で描画するよう定義する。ドライバソフトは描画ジョブを中間描画ジョブに変換し、それは次に画素順次描画装置に送られる。画素順次描画装置は、画素に対するカラーと不透明度情報を、ラスタ走査順に順次生成する。走査され処理中の任意の画素で、画素順次描画装置は、現在走査された画素で描画されアクティブなオブジェクトのみを合成する。画素順次描画装置は、その画素がオブジェクトの境界内にあれば、オブジェクトが走査された画素でアクティブであると判定する。画素順次描画装置はこれをそのオブジェクトに関連付けられているフィルカウンタを参照して行う。フィルカウンタはその画素がオブジェクトの境界内にあるか否かを示すフィルカウントを維持する。画素順次描画装置がオブジェクトのエッジに出会うと、フィルカウンタはエッジの方向に応じてフィルカウントを増減する。画素順次描画装置はそのとき、現在の画素がオブジェクトの境界内にあるか否かを、フィルカウントと所定の巻き上げカウントルールに従って判定できる。画素順次描画装置はそのオブジェクトに関連付けられているフラッグによってアクティブオブジェクトが描画されているか否かを判定する。このオブジェクトに結び付いたフラッグは、そのオブジェクトが下位順のオブジェクトを被覆するか否かを示す。つまり、このフラッグはそのオブジェクトが半透明か否か、透明ならばアクティブな下位順のオブジェクトが現在の画素のカラーと不透明度に寄与するか否かを示す。透明でなければ、このフラッグはオブジェクトが透明であることを示し、その場合は、アクティブ下位順オブジェクトは現在走査されている画素のカラーと不透明度に何の寄与もしないことを示す。画素順次描画装置は、もしそれが最上位順のアクティブオブジェクトであれば、或いはそのオブジェクト上のすべてのアクティブオブジェクトが透明であるフラッグセットを有していれば、オブジェクトは描画されていると判定する、画素順次描画装置は次にこれらの描画されたアクティブオブジェクトを合成し、現在走査中の画素に対するカラーと不透明度を決め出力する。
【００２１】
ドライバソフトは、ページに対応して、エッジトラッキングモジュールに送るため、オブジェクトのエッジを定義するエッジ情報の抽出もまた行う。ドライバソフトは、優先度決定モジュールに送られる、オブジェクトの表現ツリーの線形化されたテーブル（以下優先度特性状態テーブルと呼ぶ）とそれらの合成演算もまた生成する。優先度特性状態テーブルは、ページ上のオブジェクト毎に一つのレコードを有している。更に、各レコードは、フィルテーブル内の対応するオブジェクトをフィルするための、アドレス指示器を格納するフィールドを含んでいる。このフィルテーブルは、ドライバソフトによっても生成され、対応するオブジェクトに対するフィルを含んでおり、フィル決定モジュールに送られる。優先度特性状態テーブルはフィルテーブルと共にエッジ情報が無く、オブジェクトが無限大に広がっているオブジェクトを効果的に表現する。エッジ情報はエッジトラッキングモジュールに送られ、それはラスタ走査順の各画素に対して、現在走査中の画素と交わる任意のオブジェクトのエッジを決定する。エッジトラッキングモジュールは、この情報を優先度決定モジュールに渡す。優先度特性状態テーブルの各レコードはカウンタを内蔵しており、それがそのレコードの対応するオブジェクトに関連付けられているフィルカウントを維持している。優先度決定モジュールは各画素をラスタ走査順に処理する。初期には、すべてのオブジェクトに関連付けられているフィルカウントはゼロであり、従ってすべてのオブジェクトは非アクティブ状態にある。優先度決定モジュールは、その画素と交わるエッジに出会うまで、各画素の処理を続ける。優先度決定モジュールはそのエッジのオブジェクトのフィルカウント値を更新し、そこでそのオブジェクトはアクティブ状態になる。優先度決定は、このような方法でオブジェクトのフィルカウントを続け、オブジェクトのアクティブ化と非アクティブ化を行う。優先度決定モジュールは、これらのアクティブオブジェクトが描画されているかどうかの判定もまた行い、その結果、これらが現在走査中の画素に対し寄与するかの決定をする。寄与する場合は、画素決定モジュールは、画素合成モジュールに対し、優先度特性状態テーブル内にこれらの描画されたアクティブオブジェクトに対して、指定された合成演算に従って、合成結果のカラーと不透明度を、現在走査中の画素に対し生成するよう最終的に命令する一連のメッセージを生成する。これらの一系列のメッセージは、その時点では、実際のフィルテーブルに対するアドレスを除き、フィル決定モジュールがオブジェクトのカラーと不透明度を決定するために使用する、そのオブジェクトに対するカラーと不透明度情報を含んでいない。
【００２２】
説明の都合上、最後列から最前列に並んだオブジェクトのオブジェクト順序におけるオブジェクトの位置（即ちレベル）は、ここでは、オブジェクトの優先度と呼ぶ。好適には、同じフィルと合成演算を有し、且つオブジェクトの順序において隣接するシーケンスを形成するオーバーラップしていない複数のオブジェクトは、同一優先度を有するものとして指定されることが好ましい。最も頻繁には、オブジェクト一つについて一つの優先度（即ちレベル）が要求されるが、しかし、幾つかのオブジェクトが幾つかの命令を要求することもあり、その結果、そのオブジェクトは幾つもの優先度（即ち多段レベル）を有していることもある。例えば、或るカラーフィルを有する一つの文字は、そのカラーフィルを有する第１レベルにバウンディングボックス（B）、第２レベルにその文字の形状を与える１ビットのビットマップ（S）、第３レベルにカラーフィル値を有する同じバウンディングボックス（B）で表すことができ、そこで多段レベルがカラー特性を生成するために合成される（（Ｂ  ｘｏｒ  Ｐａｇｅ）  ａｎｄ  Ｓ）ｘｏｒ  Ｂ。
【００２３】
画素順次描画装置は、別オブジェクトの形状を修正するために、クリップオブジェクトもまた用いている。画素順次描画装置はそのクリップについて関連するクリップカウントを、現在の画素がクリップ領域内にあるかを決定するのと類似の方法で、フィルカウントに維持する。
【００２４】
追って明らかになるように、隣接するエッジ間でカラーと不透明度が一定である画素連が存在する。画素順次描画装置は、その連の先端画素に対するカラーと不透明度を合成し、後続する画素においては、前に合成したカラーと不透明度をそれ以上の合成をすることなく再生成し、それによって全体としての合成演算回数を減らすことができる。画素連が一つ以上の優先度レベルで変動するカラー及び不透明度を有する状況ではこの技法は使えない。しかしながら、本発明の好ましい実施態様では、後者の場合でも、以下に更に詳細に説明するように、合成演算回数を最小化することができる。
【００２５】
２.０ ソフトウエアドライバの概要
ソフトウエアプログラム（以下ドライバと呼ぶ）は、第３者アプリケーションソフトによってそれに供給されるデータから、画素順次画像描画装置２０に対する命令とデータを生成するために、ホストプロセッサー２にロードされ実行される。その第３者アプリケーションはPostScripやPCLのような、ページ上に描画されるオブジェクトの標準記述言語の形式か、又はWindows（登録商標） GDI若しくはX-IIのような、標準ソフトウエアインタフェースを通じたドライバへの関数呼び出しの形で、データを供給することができる。
【００２６】
ドライバソフトは、オブジェクトに関連付けられたデータ（その第３者アプリケーションによって供給された）を、そのオブジェクトのエッジ、オブジェクトのページ上にペイントする動作又は演算、及びオブジェクトのエッジの内側に入る画素をフィルする為の、カラーと不透明度に区分する。
【００２７】
ドライバソフトは各オブジェクトのエッジを、Y軸方向に単調増加するエッジに区分し、次いでそのオブジェクトの各区分されたエッジを、下記に説明されるエッジモジュールに適した形式のセグメントに分割する。分割されたエッジはそれらの出発点のX値、次いでY値によってソートされる。同じY値から出発するエッジ群は、X値でソートされたままの状態に留まり、描画がそのY値に到達すると、エッジモジュールの読み取りに適した新エッジリストを作るため、一緒にコンカチネートされる。
【００２８】
ドライバソフトは、ペインティングオブジェクトと関連する動作を優先度順にソートし、優先度決定モジュール（以下に説明）に関連するデータ構造をロードする命令を生成する。この構造には、各オブジェクトがエッジによってどのようにアクティブ化されるかのトポロジを記述するフィルルール用のフィールド、ペイントされつつあるそのオブジェクトと結び付いたフィルタイプ用のフィールド、及び現在のオブジェクトの下位レベルデータが、演算に要求されるか否かを識別するためのフィールドを含んでいる。また、ここにはクリップカウントと呼ぶ、オブジェクトを、クリッピングオブジェクト、つまり、それ自体はフィルされないがページ上の他のオブジェクトのフィリングを可能にしたり不可能にしたりするオブジェクト、として識別するフィールドがある。
【００２９】
ドライバソフトは、オブジェクトをどのようにフィルするかを記述するデータ構造(フィルテーブル) もまた備え、そのフィルテーブルは、優先度決定モジュール内のそのデータ構造によってインデクス化されている。これは、優先度決定モジュール内の数レベルが、同一フィルデータ構造を参照できるようにする。
【００３０】
ドライバソフトは、上記データを、描画システムの読み取り可能な形式で、データをロードし画素を描画する命令を含むジョブに組み立て、その組み立てられたジョブを描画システムに転送する。これは、周知の各種技法の一つを使って、描画システムとそのメモリの配置構成に応じて、実行することができる。
【００３１】
３.０ 画素順次描画装置の概要
さて、図２について、本発明の好ましい実施態様の機能データの流れ図を示す。図２の機能の流れ図は、画像オブジェクトのこれらのパラメタ記述に使われるホストプロセッサー２によって生成され、および或いは、適切な場合には、システムRAM３に格納されるかシステムROM６から引き出され、画素順次描画装置２０によって画素ベース画像の描画をすると解釈されるのに適切な方法によって使用される、オブジェクトの画像記述１１から始まる。例えば、オブジェクト画像記述１１は、エッジを持ったオブジェクトを、表示面上の或る点から他の点までを横切る直線エッジ（単純ベクトル）、或いは二次元オブジェクトが直行線を含む複数のエッジによって定義される直交エッジフォーマットなどの幾つかのフォーマットで取り込むことができる。更に多くのフォーマット、オブジェクトが連続曲線で定義されるのもまた適切、これらには二次の多項式の断片、単純曲線が幾つかのパラメタで記述できる、二次曲線を一つの出力スペースに乗算をせずに描画できる。更なるデータ形式三次元スプライン曲線とその類型もまた使用できる。一つのオブジェクトは多くの異なるエッジタイプの混合を含むことができる。一般的にすべてのフォーマットに共通なものは、各ライン（直線か曲線かを問わず）の始点と終点の識別子であり、一般的に、これらは走査線番号によって識別され、その結果、曲線がそこに描画される特定の出力スペースを定義する。
【００３２】
例えば図１６Ａは、セグメントを充分に記述し描画するために、二つのセグメント６０１と６０２に分割することを要求される、先行技術によるエッジ６００のエッジ記述を示している。これは、先行技術によるエッジ記述では二次形式を通じて簡単に計算できる反面、変曲点６０４に対応できないから生じるものである。従って、エッジ６００はエッジ終点６０３、６０４、と６０４、６０５をそれぞれ有する二つの区分されたエッジとして取り扱われる。図１６Bは終点６１１、６１２と制御点６１３、６１４を持つ三次スプライン曲線６１０を示している。このフォーマットは三次多項式の数値計算を要求し、それ故に計算時間の負荷が高くなる。
【００３３】
図１６Ｃと１６Ｄは、好ましい実施態様に適切なエッジの例を示す。好ましい実施態様においては、エッジは一つの実体とみなされ、必要ならば、異なるフォーマットで記述することのできるエッジセクションの輪郭を描くために分割される。その目的は各分割部分の記述の複雑性を最低レベルに抑えることにある。
【００３４】
図１６Ｃには、単体エッジ６２０は、走査線AとM間にまたがるものとして図解されている。或るエッジはstart_x、start_y、エッジの次セグメントを指すアドレスを含む一つ以上のセグメント記述、及びエッジを限るために使用する末端セグメントを含む幾つかのパラメタによって記述される。好ましい実施態様に従って、エッジ６２０は、三つのステップセグメント、一つのベクトルセグメント、並びに一つの二次式セグメントを有するものとして記述される。ステップセグメントは、xステップ値とyステップ値を有するものとして単純に定義される。図解の３ステップについては、セグメントの記述は[０, ２]、[+２, ２]、[+２, ０]となる。xステップ値はサイン付けによってステップの方向が示され、またｙステップ値の方向は不等辺の増加値のラスタ走査方向になるため常にサイン付けがないことに注目されたい。次のセグメントは、ｓｔａｒｔ＿ｘ（Ｘ）、ｓｔａｒｔ＿ｙ（Ｙ）、ｎｕｍ＿ｏｆ＿ｓｃａｎｌｉｎｅｓ（ＮＹ）、傾き（ＤＸ）のパラメタを要求する典型的ベクトルセグメントである。この例では、ベクトルセグメントがエッジ６２０の中間セグメントであり、start_xとstart_yは、それらが前のセグメントから生起しているので、除くことができる。パラメタnum_of_scanlines（NY）は、ベクトルセグメントが続く走査線の線数を示している。傾き値（DX）はサイン付けされており、現在の走査線のx値を示すために、前の走査線のｘ値が加算されており、この場合にはDX = +１になる。次のセグメントは、ベクトルセグメントのそれに対応する構造を有する二次式セグメントであるが、それは、セグメントの傾きを変えるためのサイン付けもされDXに加算される第２補助値（DDX）も有している。
【００３５】
図１６Dは、好ましい実施態様に従った、セグメントの傾き変化率を変えるために、DDXに加算されるサイン付きの第３補助値（DDDX）の加算を除き、二次式セグメントに対応する記述を有する三次曲線の例を示している。その他多くの補助値もまた実行できる。
【００３６】
上記から、エッジセグメントを記述する複数のデータフォーマットを扱う能力は、複雑で計算時間が割高な数学演算をせずに、エッジ記述と評価の簡易化をはかることにあることが明らかであろう。対照的に、図１６Aの先行システムにおいては、すべてのエッジは、直交形式か、ベクトル形式か、二次式であるかを問わず、二次形式による記述が要求される。
【００３７】
好ましい実施態様の動作は、二つの画像オブジェクト、具体的には半透明な青色三角形８０が不透明な赤色長方形９０の上に描画され、それによって後者を部分的に被覆していると分る図８に示した画像７８の単純な描画の例について説明する。見られるように長方形９０は、多くの画素位置（X）と走査線位置（Y）の間に定義されるサイドエッジ９２、９４、９６、９８から成っている。エッジ９６と９８は走査線上に形成されている（従ってそれと平行）ため、長方形９０の実際のオブジェクト記述は、図９Aに見られるように、サイドエッジ９２と９４のみに基づいて行うことができる。この関連で、エッジ９２は画素位置(４０，３５)から始まり、ラスタ方向にスクリーン上の画素位置(４０,１０５)まで伸びている。同じように、エッジ９４は画素位置(１６０,３５)から位置(１６０,１０５)に伸びている。長方形画像オブジェクト９０の水平部分は、エッジ９２からエッジ９４へ、単にラスタ方式の走査をするだけで得ることができる。
【００３８】
青色三角形オブジェクト８０は、しかし、それぞれ三角形の頂点を定義するベクトルとみられる三つのオブジェクトエッジ８２、８４、８６によって定義されている。エッジ８２と８４は画素位置(１００,２０)から始まり、それぞれ、画素位置(１７０,９０)と(３０,９０)に伸びているのが見られる。エッジ８６は、それら二つの画素位置間を、従来型のラスタ方向である左から右に伸びている。この特例では、エッジ８６は上記のエッジ９６と９８のように水平的なので、エッジ８６の定義付けは必須ではない。エッジ８２と８４の記述に使われる画素の始点と終点位置に加え、これらの各エッジは、それに結び付いた傾き、この場合 +１と -１、をそれぞれ有している。
【００３９】
図２に戻ると、画像システム１は、画像オブジェクトの記述に必要なデータの識別を終えると、ディスプレイリスト生成ステップ１２を実行する。
【００４０】
ディスプレイリスト生成１２は、ROM６とRAM３を付帯するホストプロセッサー２上で実行するソフトウエアドライバとして実施することが好まれる。ディスプレイリスト生成１２は、周知の画像記述言語、画像ライブラリ呼び出し,又はその他の特定アプリケーションのフォーマットのどれか一つ以上によって表現された、オブジェクトの画像記述をディスプレイリストに変換する。ディスプレイリストは、一般的にはRAM４内に構築されるが,代替的に描画ストア３０内にも構築可能な、ディスプレイリストストア１３に典型的に書き込まれる。図３に見られるように、ディスプレイリストストア１３は、幾つかの構成要素、その一つは指示ストリーム１４、もう一つはエッジ情報１５、更にはそれが適当な場合、ラスタ画像の画素データ１６を含めることができる。
【００４１】
指示ストリーム１４には、任意の特定画像の中に望みの特定画像オブジェクトを描画するために、画素順次描画装置２０によって読み取られ、命令として解釈されるコードが含まれる。図８に示した画像例についていえば、指示ストリーム１４は次の形をとることができる：
（１）  走査線２０まで描画する（何もしない）、
（２）  走査線２０で二つの青色エッジ８２と８４を加える、
（３）  走査線３５まで描画する、
（４）  走査線３５で二つの赤色エッジ９２と９４を加える、
（５）  最後まで描画する。
【００４２】
同様に、エッジ情報１５は図８の例では次を含むことができる：
（ｉ）      エッジ８４は画素位置１００、エッジ８２は画素位置１００から始まる
（ｉｉ）    エッジ９２は画素位置４０から、エッジ９４は画素位置１６０から始まる
（ｉｉｉ）  エッジ８４は７０走査線、エッジ８２は７０走査線続く
（ｉｖ）    エッジ８４は傾き= -１、エッジ８４は傾き=+１を有する
（ｖ）      エッジ９２は傾き= ０、エッジ９４は傾き=０を有する
（ｖｉ）    エッジ９２と９４はそれぞれ７０線の走査が続く
上記の命令ストリーム１４、エッジ情報１５とその各々がその中で表現される方法の例から、図８の画像７８について、画素位置（X）と走査線値（Y）は画像７８が描画される個々の出力スペースを定義していることが理解されよう。その他の出力スペースの設定は、しかし、本発明の情報開示による原理を使うことによって実現可能になる。
【００４３】
図８はラスタ画像の画素データを含んでいない、従って、この特性については後述するが、ディスプレイリスト１３のストア１６には何も格納する必要がない。
【００４４】
ディスプレイストア１３は画素順次描画装置２０によって読み取られるが、これは一般的には集積回路として実施される。画素順次描画装置２０は、ディスプレイリストを、別のデバイス、例えば、プリンタ、表示機、或いはメモリストアに転送可能な、ラスタ画素のストリームに変換する。
【００４５】
好ましい実施態様では、画素順次描画装置２０を集積回路として記述しているが、それは、ホストプロセサ２のような汎用プロセサ上で実行される、相当するソフトウエアモジュールとして実施することも可能である。
【００４６】
図３は、画素順次描画装置２０、ディスプレイリストストア１３、一時描画ストア３０の機器構成を示している。画素順次描画装置２０の処理ステージ２２は、指示実行器３００、エッジ処理モジュール４００、優先度決定モジュール５００、最適化モジュール５５０、フィルカラー決定モジュール６００、画素合成モジュール７００、及び画素出力モジュール８００を備えている。処理動作は一時ストア３０を使用するが、それは上記に注書きしたように、ディスプレイリストストア１３と同じようなデバイス(例えば磁気ディスク或いは半導体RAM)を共用するか、またはスピード最適化の理由から、個々のストアとして実施することもできる。エッジ処理モジュール４００は、エッジレコードストア３２を、走査線を次々と繰り越すエッジ情報を維持するために使用する。優先度決定モジュール５００は、優先度特性状態テーブル３４を各優先度情報と走査線の描画中のエッジ交点に関する各優先度の現状を維持するために使う。フィルカラー決定モジュール６００は、フィルデータテーブル３６を、特定位置に在る特定優先度のフィルカラーを決定するために要求される情報を維持するために使う。画素合成モジュール７００は、画素合成スタック３８を、カラーが多くの優先度からその値を決定するために要求される出力画素の決定を行う間、中間結果を維持するために使う。
【００４７】
上に詳細に説明したディスプレイリストストア１３とその他のストア３２〜３８は、RAM或いはその他の任意のデータ記憶技術を使っても実施することが可能である。図３の実施態様に示された処理ステップは、処理パイプライン２２の形態をとっている。この場合、そのパイプラインのモジュールは、画像データの異なる部分を、以下に述べるように、両者間に流れる命令と並行して一度に実行できる。別の実施態様では、以下に述べる各命令は、川下のモジュールが命令の処理を終了するまで、川上の処理を一時停止して川下のモジュールに行われる、同期化された転送制御の形態をとることができる。
【００４８】
３.１  命令実行機の概要
命令実行機３００は、命令ストリーム１４から命令を読み取り処理して、その命令を、出力３９８を通じ、パイプライン２２内の他のモジュール、４００、５００、５５０、６００、７００に転送するメッセージにフォーマット化する。本発明の好ましい実施態様では、その命令ストリーム１３には、次の命令を含むことができる。
【００４９】
LOAD_PRIORITY_PROPERTIES：この命令は、優先度特性状態テーブル３４にロードされるデータと、そのデータがロードされるそのテーブル内のアドレスに結び付けられている。この命令が命令実行機３００に出会うと、命令実行機３００は、優先度特性状態テーブル３４内の指定位置に、そのデータの格納メッセージを送り出す。これは、このデータを含むメッセージをフォーマット化し、それを処理パイプライン２２の川下の、格納動作を実行する優先度決定モジュール５００に渡すことで成し遂げられる。
【００５０】
LOAD_FILL_DATAフィルデータロード：この命令は、フィルデータテーブル３６にロードされるオブジェクトに結び付いたフィルデータと、そのデータがロードされるテーブル内のアドレスに結び付いている。この命令が命令実行機３００に出会うと、命令実行機３００は、フィルデータテーブル３６の指定アドレスに、そのデータを格納するためのメッセージを送り出す。これは、このデータを含んでいるメッセージをフォーマット化し、それを、処理パイプライン２２川下の、格納動作を実行するフィルカラー決定モジュールに渡すことによって成し遂げられる。
【００５１】
LOAD_NEW_EDGES_AND_RENDER：この命令は、次の走査線が描画されると描画処理に呼び出される、新エッジ１５のディスプレイリストストア１３内のアドレスと結び付いている。この命令が命令実行機に受け取られると、命令実行機３００はこのデータを含むメッセージをフォーマット化し、それをエッジ処理モジュール４００に渡す。エッジ処理モジュール４００は、エッジレコードストア３２に新エッジのアドレスを格納する。その指定されたアドレスでのエッジは、それらの開始走査線との交点座標上で、次の走査線が描画される前にソートされる。別の実施態様では、それらは画素順次描画装置２０によってソートされる。
【００５２】
SET_SCANLINE_LENGTH：この命令は、各描画済み走査線内に生成される画素数と結び付いている。この命令が命令実行機３００に受け取られると、命令実行機３００は、その値をエッジ処理モジュール４００と画素合成モジュール７００に渡す。
【００５３】
SET_OPACITY_MODE：この命令はフラグに結び付いており、画素合成演算が不透明度チャネル（アルファチャネルとしても周知の技術）を使用するかどうかを表示する。この命令が命令実行機３００に受け取られると、命令実行機３００はそのフラグ値を画素合成モジュール７００に渡す。
【００５４】
SET_BUF：この命令は、画素順次描画装置２０によって使われている外部メモリバッファのアドレスを設定する。少なくとも、エッジ処理モジュール４００の入力、出力、及びスピルバッファは、外部記憶装置に格納されることが好ましい。
【００５５】
命令実行機３００は、典型的に、命令をマップし、それらを各種のモジュールに渡すため、パイプライン動作にデコードする、マイクロコード状態遷移機械によって作られる。代替的には相当するソフトウエア処理を使うこともできる。
【００５６】
３.２  エッジトラッキンッグモジュールの概要
図４についてエッジ処理モジュール４００の走査線描画中の動作を説明する。走査線描画の最初の条件は、エッジレコードの三つのリストが使用可能であることである。これらのリストのどれか又はすべてが空白であることもある。これらのリストとは、エッジ情報１５から取得されLOAD_NEW_EDGES_AND_RENDER命令によって設定された新エッジを含む新エッジリスト４０２、前の走査線から繰り越されたエッジレコードを含む主要エッジリスト４０４、及び前の走査線から繰り越されたエッジレコードをもまた含むスピルエッジリスト４０６である。
【００５７】
今度は図１２Aに転じ、そのようなエッジレコードのフォーマット示すと、それは次を含んでいる。
【００５８】
（ｉ）    現在の走査線交点座標（ここではＸ座標と呼ぶ）
（ｉｉ）  このエッジの現在セグメントに何本の走査線が続く（ある種の装置ではこ
れはYリミットとして表示されることがある）かのカウント（ここでNYと呼ぶ）、
（ｉｉｉ）  このエッジレコードのX座標に、各走査線の後ろに加算される値（ここで
はDXと呼ぶ）、
（ｉｖ）  優先度番号（P）或いは優先度番号リストに対するインデクス（P）
（ｖ）  リスト内の次エッジセグメントのアドレス(addr)、
（ｖｉ）  p、o、u、c、dとマーク付けされた幾つかのフラグ。フラグｄはエッジがクリッピンッグカウンタかフィルカウンタのどちらを動かすかを決める。フラグuはフラグカウンタがエッジによって増分されるか減分されるかを決定する。残りのフラグは、本発明に必須ではないので、これ以上の説明は省略する。
【００５９】
そのようなフォーマットは、ベクトルと直交配列エッジを収容することができる。そのフォーマットはまた、ここでDDXと呼ばれる更なるパラメタもまた含むことができ、それは、このエッジレコードのDX値に各走査線の後に加算される値である。後者は二次曲線から成るエッジの描画を可能にする。更なるパラメタ、例えばDDDX、を加えれば、そのような実施態様が三次曲線に対応するようにすることもできる。幾つかのアプリケーションでは、三次ベジェスプライン曲線、６項多項式(すなわちDDDDDDXまでの)のようなものが要求されることもある。フラグ(u)は、エッジによって、巻上げカウントを増分するか又は減分するかを指示する。巻上げカウントはフィルカウンタ内に格納され、現在走査中の画素が、問題のオブジェクトの内側か外側のどちらに入るかを判定する。図８Aのエッジ８４と９４の例では、走査線２０に対応するエッジレコードは、図８Bのテーブルに示したように読み取ることができる。
【００６０】
この説明において、描画処理によって生成されつつある走査線に沿って画素から画素へステップする座標は、X座標と呼び、走査線から走査線へとステップする座標はY座標と呼ぶ。各エッジリストはゼロかそれを超えるレコードをメモリ内に隣接して含んでいることが好ましい。ポインタチェーンの使用を含む、他の記憶装置による実施態様も可能である。三つのリスト、４０２、４０４及び４０６内の各レコードは、走査線の交点（X）座標順に並べられている。これは、典型的には、エッジ情報を含めてメッセージを受け取るエッジ入力モジュール４０８によって最初に管理されながら、命令実行機３００からソート処理によって取得することができる。ソート条件を、各走査線交点座標の整数部分だけが有効とみなすように緩めることは可能である。また、ソート条件を更に、各走査線交点座標を、現在の描画処理によって生成される最小と最大のX座標にクランプ留めするように緩めることもできる。適切な場合は、エッジ入力モジュール４０８は、パイプライン２２の川下にある、モジュール５００、６００及び７００に、出力４９８経由でメッセージをリレーする。
【００６１】
エッジ入力モジュール４０８は、三つのリスト、４０２、４０４、４０６のそれぞれに対する参照を維持しており、それらからエッジデータを受け取る。これらの各参照値は、走査線の処理開始点の各リストの最初のエッジを参照するように初期設定されている。その後は、エッジ入力モジュール４０８は、三つの参照されたエッジレコードの一つから、選択されたレコードが三つの参照レコードの中で最小のX座標を持つものであるように、エッジレコードを選択する。もし、二つ以上のXレコードが等しいときは、それぞれはどの様な順序で処理されてもよく、対応するエッジ交点は次の方法で出力される。そのレコードを選択するのに使われたその参照値は、それからそのリストの次のレコードに進められる。いま選択されたばかりのエッジは、メッセージにフォーマット化され、エッジ更新モジュール４１０の一つに送られる。また、そのエッジの或るフィールド、特に現在のX、優先度番号と方向フラグは、メッセージにフォーマット化され、優先度決定モジュール５００に、エッジ処理モジュール４００の出力４９８として転送される。実施態様としては、ここに説明されたものより数の多い或いは少ないリストを使用することも可能である。
【００６２】
エッジを受け取ると、エッジ更新モジュール４１０は、何本の走査線が現在セグメントに続くかのカウントを減分する。もし、そのカウントがゼロに到達すると、新セグメントが次セグメントアドレスによって指示されたアドレスから読み取られる。セグメントは、
（ｉ）      そのセグメントが読み取られたら、現在のX座標に直ぐ加算する値
（ｉｉ）    そのエッジに対する新しいDX値
（ｉｉｉ）  そのエッジに対する新しいDDX値
（ｉｖ）    その新セグメントに何本の走査線が続いているかの新しいカウントを特定することが好ましい。
【００６３】
もし、次のセグメントが指示されたアドレスでなければ、そのエッジではそれ以上の処理は行われない。そうでなければ、エッジ更新モジュール４１０は、エッジの次走査線のX座標を計算する。これは一般的に、現在のX座標値をとり、それにDX値を加算することで行われる。DX値は、取り扱われているエッジタイプが適切であれば、それにDDX値を加えてもよい。エッジは次に、二つ以上のエッジレコードの配列であるエッジプール４１２の空いているスロットのどれかに書き込まれる。もし、空いたスロットが無ければ、エッジ更新モジュール４１０はスロットが使えるようになるのを待つ。エッジレコードがエッジプール４１２に書き込まれると直ちに、エッジ更新モジュール４１０は、４１６経由でエッジ出力モジュール４１４に、新しいエッジがエッジプール４１２に加えられたとの信号を送る。
【００６４】
走査線の描画のための初期条件として、エッジ出力モジュール４１４は、次の主エッジリスト４０４’と次のスピルエッジリスト４０６’のそれぞれに対する参照を持っている。これらの参照のそれぞれは、最初は空白の、リスト４０４’と４０６’が築き上げられる場所に初期設定されている。エッジプール４１２にエッジが加えられたことの信号４１６を受け取ると、エッジ出力モジュール４１４は、加えられたばかりのエッジが、次の主エッジリスト４０４’(もしあれば)に最後に書き込まれたエッジよりも小さいX座標値を持っているかどうかの判定を行う。もし、これが真ならば、そのエッジは、主エッジリスト４０４に順序付け基準を犯すことなく追加できないので、「スピル」が生じたといわれる。スピルが生じると、好ましくはソートされた次のスピルエッジリスト４０６’を維持する方法で、エッジは次のスピルエッジリスト４０６’に挿入される。例えば、これは挿入ソーティングルーチンを使用して達成できる。何かの実施態様では、そのスピルは、極端に大きなX座標値のような、その他の条件によって生じることがある。
【００６５】
もし、エッジプール４１２に加えられたエッジが、次の主エッジリスト４０４’（もしあれば）に書き込まれた最後のエッジより大きいか等しいX座標値をもっており、かつエッジプール４１２内に未使用のスロットがなければ、エッジ出力モジュール４１４はエッジプール４１２から最小のX座標値をもつエッジを選び、そのエッジを処理中に拡張しながら次の主エッジリスト４０４’に加える。エッジプール４１２内のそのエッジによって占められたスロットはそこでフリーであるとのマーク付けが行われる。
【００６６】
いったん、エッジ入力モジュール４０８が、その入力リスト４０２、４０４と４０６の三つすべてからすべてのエッジを読み取り転送を終えれば、それは、走査線の最終が到達されたというメッセージをフォーマット化し、優先度決定モジュール５００とエッジ更新モジュール４１０の双方に送る。そのメッセージを受け取ると、エッジ更新モジュール４１０は、それが今実行中の処理の終了を待ち、それからそのメッセーをエッジ出力モジュール４１４に転送する。そのメッセージを受け取ると、エッジ出力モジュール４１４は、残りすべてのエッジレコードをエッジプール４１２から次の主エッジリスト４０４’にX座標順に書き込む。その後、次の主エッジリスト４０４’と主エッジリスト４０４への参照は、エッジ入力モジュール４０８とエッジ出力モジュール４１４間で交換され、類似の交換が次のスピルエッジリスト４０６’とスピルエッジリスト４０６に対して実行される。このようにして、次に続く走査線の初期条件値が設定される。
【００６７】
次のスピルエッジリスト４０６’を、そこへのエッジレコードの挿入後直ちにソートするよりも、そのようなエッジレコードは、単にリスト４０６’に加え、現在のスピルリスト４０６への交換が次の走査線のエッジラスタ化中にアクティブになる前に、リスト４０６’を最終走査線でソートさせることもできる。
【００６８】
上記から、エッジ交差メッセージは優先度決定モジュール５００に走査線と画素順に送られ（つまり、それらは先ずY上、次いでX上に順序付けられる）、各エッジ交差メッセージはそれが該当する優先度でラベル付けがなされていることが推論できよう。
【００６９】
図１２Ａは、エッジ処理モジュール４００によって、エッジのセグメントが受け取られたとき創生される、アクティブエッジレコード４１８の具体的な構造を示している。もし、エッジの最初のセグメントがステップ（直交）セグメントのときは、最初のセグメントがアクティブ化されたエッジのX位置を取得できるよう、エッジのX値は「X-step」と呼ばれる変数に加算される。そうでなければ、エッジのX値が使用される。Xstep値はエッジのセグメントデータから取得され、その次のセグメントエッジレコードのX位置を取得するために、次のセグメントのXedge値にいったん加算される。これは新しいエッジレコード内のエッジはXedge+Xstepによってソートされるということを意味する。最初のセグメントのXstepは従って、エッジのソートを簡単化するためにゼロとするのが良い。最初のセグメントのY値はアクティブエッジレコード４１８のNYフィールドにロードされる。アクティブエッジのDXフィールドは、ベクトル又は二次セグメントのDXフィールド識別器からコピーされ、ステップセグメントのためにゼロに設定される。図１２Ａに見られるuフラグは、セグメントが上方向き（図１３Ａに関する説明を参照）であれば設定される。ｄフラグはエッジが直接のクリッピングオブジェクトとして使われた場合に、対応するクリッピングレベルなしに設定され、閉曲線に適用される。セグメントの実際の優先度レベル或いはレベルアドレスは、新エッジレコードの対応するフィールドからアクティブエッジレコード４１８のレベルフィールドにコピーされる。セグメントリストの次のセグメントのアドレスは、新エッジレコードの対応するフィールドから、アクティブエッジレコード４１８のセグメントアドレスフィールド（segment addr）にコピーされる。セグメントアドレスは、エッジレコードの終りを指示するためにもまた使用することができる。
【００７０】
図１２Ａから、他のデータ構造でも実施は可能であり、必要であること、例えば、多項式による実行が使われる場合、が理解されよう。一つの代替データ構造においては、「segment addr」フィールドはセグメントリスト内の次のセグメントのアドレスであるか、セグメントが二次式であれば、セグメントDDX値からコピーされたものかのどちらかである。後者の場合は、データ構造はセグメントが二次式セグメントであれば設定されるｑフラグを持ち、そうでなければクリアされる。更なるバリエーションとして、セグメントのアドレスとDDXフィールドは、異なるフィールドに区分でき、代替的実施法の条件を満たすために、追加のフラグが提供される。
【００７１】
図１２Ｂは上記の実施態様中のエッジレコードの機械でエッジ処理モジュール４００に使用されているものを示している。新しいアクティブエッジレコード４２８、現在のアクティブエッジレコード４３０とスピルアクティブエッジレコード４３２はエッジプール４１２を補完するものである。図１２Bに見られるように、レコード４０２、４０４、４０６、４０４’及び４０６’は、或る一回に描画されているエッジの数によって動的にサイズを変動する。各レコードは限界値を含み、それは新エッジリスト４０２の例では、LOAD_EDGES_AND_RENDER命令に組み込まれたSIZE値によって決定される。そのような命令に出合うと、SIZEはチェックされ、もし非ゼロであれば、新エッジレコードのアドレスがロードされ、リスト４０２、４０４、４０６、４０４’及び４０６’のそれぞれのサイズを限る限界値が計算される。
【００７２】
好ましい実施態様例では配列と対応するエッジレコードを取り扱うのためのポインタを使用しているが、他の例えば連結リストのような実施法も使用することができる。他の実施法はハードウエアでもソフトウエアベースでも或いはそれらの組合せでも構わない。
【００７３】
図８Ａに示した画像７８の具体的描画を次に、図１０に示した走査線３４、３５、３６関連して説明する。この例では、次の走査線に対応する新X座標の計算は、図１２C〜１２Iでは、エッジポール４１２のレジスタ４２８、４３０、４３２の一つから取り出された出力エッジ交差の表示について議論の正確性を期すため省略してある。
【００７４】
図１２Ｃは、上記の走査線３４の描画（半透明青色三角形８０の頭部）終了時におけるリストの状態を示している。走査線３４においては新しいエッジはなく、したがってリスト４０２は空白白であることに注意されたい。主エッジリスト４０４と次の主エッジリスト４０４’のそれぞれは、エッジ８２と８４のみを含んでいる。リストのそれぞれは、対応するポインタ４３４、４３６、４４０を備え、走査線３４が完了すれば、対応するリスト中の次の空白レコードを指示する。リストはまた、限界値ポインタ４５０を含んでおり、対応するリストの終わりをポイントするのに要求される、アステリスク（＊）記号によって示されている。もし連結リストが使われていたなら、連結リストが対応する機能を実行する空白ポインタの終結指示器を含んでいるので、そのようなものは要求されなかっただろう。
【００７５】
上に触れたとおり、各走査線の開始点で次の主エッジリスト４０４’と主エッジリスト４０４は交換され、新エッジが新エッジリストの内に受け取られる。残りのリストはクリアされ、ポインタのそれぞれは各リストの最初の内容メンバに設定される。走査線３５の開始に対して、好ましい実施態様ではそのとき図１２Dに見られるように現れる。図１２Dに明らかなように、そのレコードは図１０から、エッジ９２、９４、８４及び８２に対応していると見られる、四つのアクティブエッジを含んでいる。
【００７６】
今度は、図１２Eについて説明すると、描画が始まると、新エッジレコード４０２の最初のセグメントはアクティブエッジレコード４２８にロードされ、主エッジリスト４０４とスピルエッジリスト４０６の最初のアクティブエッジレコードはそれぞれレコード４３０と４３２にコピーされる。この例では、スピルエッジリスト４０６は空白であり、従って何のロードも行われない。レコード４２８、４３０、４３２内のエッジのX位置が次に比較され、最小のX位置を持つエッジにエッジ交差が出力される。この場合は、発生エッジは、エッジ９２に対応するその優先度値と共に出力される。ポインタ４３４、４３６、４３８は次にリストの次のレコードに向けて更新される。
【００７７】
エッジ交差が出力されたエッジは、次に更新され（この場合はその位置にDX=０を加算して）、エッジプール４１２に、この例では、三つのエッジレコードを維持するために、更新され、バッファーされる。そこから出力されたエッジが立ち上がるリスト（この例ではリスト４０２）の次の記入欄は対応するレコード（この例ではレコード４２８）にロードされる。これが図１２Fに見られる。
【００７８】
更に、図１２Fから明らかなように、レジスタ４２８、４３０、４３２間の比較は、次の適切なエッジ交差（X=８５,P=２）として出力される最小X値を持つエッジを再び選択する。加えて、選択された出力エッジは更新され、エッジプール４１２に加えられ、すべての適切なポインタは増分される。この場合更新された値はX ← X + DXで与えられ、８４ = ８５ - １として評価される。同じく見られるように、新エッジポインタ４３４がこの例では新エッジリスト４０２の最後に移される。
【００７９】
図１２Gにおいて、最小の現在X値を持っていると識別された次のエッジは、再びエッジ交差（X = １１５, P = ２）として出力される、レジスタ４３０から取得されたその値である。そのエッジの更新は、示されたように、エッジプール４１２に加えられる値と共に再び生じる。今回は、エッジプール４１２は満杯で、そこから最小のX値を持つエッジが選択され、出力リスト４０４’に出力され、対応する限界ポインタがそれに従って移動されるのが分かる。
【００８０】
図１２Hに見られるように、次の最低のエッジ交差はレジスタ４２８からのそれで、出力は（X=１６０ P=１）になる。エッジプール４１２は再び更新され、次に小さいX値が出力リスト４０４’に向かって出力される。
【００８１】
走査線３５の最終で、図１２１に見られるように、エッジプール４１２の内容は出力リスト４０４’に最小X値の順に洗い流される。図１２Jに見られるように、次の主エッジリスト４０４’と主エッジリスト４０４は、次の走査線３６の描画を見込んで、それらのポインタを交換することにより交換される。交換後、図１２Jから主エッジリスト４０４の内容がX位置の順に並んだ走査線３６上にある全てのエッジを含んでおり、それによって描画を容易にするそれらの便利なアクセスを許していることが見られる。
【００８２】
通常は、新しいエッジはエッジ処理モジュール４００によってX位置の増加順に受け取られる。新エッジが到着すると、その位置が更新され（次に描画される走査線のために計算される）、これは次の更なるアクションを決定する。
【００８３】
（ａ）  更新位置が線４９８上の最後のX位置の出力以下であれば、新エッジは主スピルリスト４０６に挿入分類され対応する限界レジスタが更新される
（ｂ）  そうでなければ、もしスペースがあれば、それはエッジプール４１２の中に維持される。
【００８４】
前記から明らかなように、エッジプール４１２はリストの更新を次のラスタ化された走査線を見込んで整然と助けている。更に、エッジプール４１２のサイズはより多くの順序付けられていないエッジに対応するため変動できる。しかし、エッジプール４１２は実際上は、一般的には処理スピードと画像処理システムに使える記憶容量によって、限界を持つことが理解されよう。極限の意味では、通常ならば次の出力エッジリスト４０４’に挿入分類されるための更新されたエッジを要求するエッジプール４１２は省略することができる。しかし、好ましい実施態様では、上記のスピルリストの使用を通じる通常の発生事態としては、この状況は避けられている。スピルリストの準備は好ましい実施態様を実際的なサイズのしかしかなり複雑なエッジ交差をソフトウエア集約的なソート手順に頼ることなく実施することを可能にしている。エッジプールとスピルリストが共に複雑なエッジ交差に十分対応できない例は少ないが、それらの場合はソート法を使うことができる。
【００８５】
スピルリスト手順が何処で使用されるかが、三つの任意のエッジ６０,６１,６３が任意のエッジ６２と走査線AとB間の相対位置で交わっている例を図１４Aに示す。更に実際に表示された走査線A,Bのそれぞれに対する画素位置６４が示されており、それは画素位置をCからJにまたがっている。上記の例では、エッジプール４１２が三つのエッジレコードを維持するために、そのような実施態様だけでは、図１４Aに示された隣接する走査線間に生じる、三つのエッジ交点を収容するには不十分であることが明白である。
【００８６】
図１４Ｂは走査線上のエッジ６０,６１,６３描画後のエッジレコードの状態を示している。エッジ交差Hは最新の発生例でありエッジプール４１２は次の走査線、線Bに対して更新されたそれぞれエッジ６０,６１,６３に対応するX値、E,G,Iで満杯である。エッジ６２は現在アクティブなエッジレコード４３０にロードされエッジプール４１２が満杯なので、エッジ６０に対応する、最低のX値が出力エッジリスト４０４’に出力されている。
【００８７】
図１４Ｃでは、次のエッジ交差が出力され（X=Jエッジ６２に対し）、対応する更新値、この例では走査線Bに対してX=C、が決定されている。最新更新値X=Cが、出力リスト４０４’にコピーされた最近値X=Eより小さいので、現在のエッジレコードとその対応する新更新値は出力スピルリスト４０６’に直接転送される。
【００８８】
図１４Ｄは走査線Bの始まりで、主要及び出力リストとそれらの対応するスピル構成要素が交換されているのが見られるエッジレコードの状態を示している。最初に出力されたエッジを決定するため、エッジ６０が現在アクティブなエッジレジスタ４３０にロードされ、エッジ６２がスピルアクティブなエッジレジスタ４３２にロードされる。X値は比較され、最小のX値（X=C）を持つエッジ６２が出力され、更新され、エッジプール４１２にロードされる。X値は比較され、最小のX値（X=C）を持つエッジ６２が出力され、更新され、そしてエッジプール４１２にロードされる。
【００８９】
エッジの発生と更新は主エッジリスト４０４の残っているエッジに対して続けられ、走査線の最終で、エッジプール４１２は図１４Eに示された状況を顕すために流しだされる。そこではエッジ６０から６３のそれぞれが次の走査線上の描画のために、適切に整列されていること、正しく出力され走査線B上に描画されているのが見られる。
【００９０】
前記から明らかなように、スピルリストは、複雑なエッジ交差状況が存在するときは、エッジのラスタ化順序を維持することを可能にする。更に、リストのサイズがダイナミックに変動することから、エッジ交点数の大きな変化と複雑性は、例外的に複雑なエッジ交点を除くすべての場合に、ソート手順の必要なく、取り扱うことができる。
【００９１】
好ましい実施態様では、エッジプール４１２は八つのエッジレコードを維持するためにサイズ調整され、リスト４０４、４０４’はそれぞれのスピルリスト４０６、４０６’と共に５１２バイトの基準サイズ(最低)を持っており、ダイナミックに変動し、それによって複雑なエッジ交差要求を有する大きな画像を扱うのに充分な範囲を供給する。
【００９２】
３.３  優先度決定モジュールの概要
図５に関して、今度は、優先度決定モジュール５００の動作を説明する。優先度決定モジュール５００の主要機能は、現在走査中の画素に対して寄与するオブジェクトを決定し、それらの寄与オブジェクトをそれらの優先度レベルに従って整列し、画素合成モジュール７００に命令するカラー合成メッセージを生成し、現在の画素に対して要求されるカラーと不透明度値を生成するため、順序付けられたオブジェクトを合成することである。
【００９３】
優先度決定モジュール５００は、エッジ処理モジュール４００から入力メッセージ４９８を受け取る。これらの入力メッセージは、load priority data message、load fill data message、edge crossing message、end of scanline messageを含むことができる。これらのメッセージは、優先度更新モジュール５０６によって読み取られる前に、入力順出力（FIFO）バッファー５１８を通過する。そのFIFOバッファー５１８は、エッジ処理モジュール４００と優先度決定モジュール５００の動作の連結解除の働きをする。FIFO５１８は、エッジ処理モジュール４００からの受け取りが可能で、エッジ交差の全走査線を一回の働きで転送できるよう、サイズ調整されるのが好ましい。そうすることは、優先度決定モジュール５００に、同一画素（X）位置での多数のエッジ交差を、正しく取り扱うことを可能にする。
【００９４】
優先度決定決定モジュール５００は、優先状態テーブル５０２と優先度データテーブル５０４へのアクセス向きに適合されている。これらのテーブルは各優先度の情報を維持するために使用される。優先度状態と優先度データテーブル５０２と５０４は、図３が示すように、一つのテーブル３４に統合されることが好ましい。代替的には、これらのテーブル５０２、５０４は別個に維持できる。
【００９５】
優先度特性状態テーブル３４は、図１８に示されているように、優先度レベル毎に、少なくとも次のフィールドを含んでいることが好ましい。
【００９６】
（ｉ）  この優先度が、偶数・奇数フィルルール又は非ゼロ巻上げルールの適用によって内部対外部の状態を判定するか否かを指示するフィルルールフラグ（FILL_RULE_IS_ODD_EVEN）、
（ｉｉ）  この優先度が交差される都度、フィルルールによって指示された方法で修正される、現在のフィルカウントを格納するためのフィルカウンタ（FILLCOUNT）、
（ｉｉｉ）  この優先度がクリッピング又はフィリングに使用されるか否かを指示するクリッパフラグ（CLIPPER）、
（ｉｖ）  クリッパフラグセットを有するエッジに対し、そのクリッピングタイプが「クリップイン」か「クリップアウト」のどちらかを記録するクリップタイプフラグ（CLIP_OUT）、
（ｖ）  現在のクリップカウントを、この優先度を果たすクリップインタイプ域が入
場・退場された時、この優先度を果たすクリップアウトタイプ域が入場・退場された時増減される、クリップカウンタ（CLIP_COUNT）、
（ｖｉ）  この優先度が「要下位」と呼ぶその下位優先度レベルの計算を先に
要求するか否かのフラグ（NEED_BELOW）、
（ｖｉｉ）  この優先度のフィルが格納されているアドレスを指示するフィルテーブル
アドレス（FILL_INDEX）、
（ｖｉｉｉ）  フィルタイプ（FILL_TYPE）、
（ｉｘ）  ラスタ演算コード（COLOR_OP）、
（ｘ）  三つのフラグ、(LAO_USE_D_OUT_S,LAO_USE_S_OUT_D, LAO_USE_S_ROP_D)から成るアルファチャネル演算コード（ALPHA_OP）、
（ｘｉ）  スタック演算コード（STACK_OP）、
（ｘｉｉ）  この優先度のカラーが、与えられたYに対して、一定か否かを記録するここでは[x-independent]フラグと呼ぶフラグ（X_INDEPENDENT）、(xiii) 他の優先度についての情報（ATTRIBUTES）。
【００９７】
クリッピングオブジェクトは周知の技術であり、或る特定の新オブジェクトを表示するためではなく、画像内の別オブジェクトの形を修正するための働きをする。クリッピングオブジェクトは各種の視覚効果をあげるため点滅することもまたできる。例えば、図８Aのオブジェクト８０は、クリッピングオブジェクト８０の優先度下位にあるオブジェクト９０のその部分を除くため、オブジェクト９０上で働くクリッピングオブジェクトとして配置することができる。これは、クリッピングの境界内で、他の方法ではオブジェクト９０の不透明度によって被覆される、オブジェクト９０の下位にある任意のオブジェクト若しくは画像を顕示させる効果を持つことができる。CLIPPERフラグは、優先度がクリッピングオブジェクトであるか否かを識別するために使われる。また、CLIPフラグは優先度がクリップインかクリップアウトかを、CLIP COUNTはFILL COUNTと同じような方法で現在の画素がクリップ域の内側にあるか否かを判定するために使用される。
【００９８】
図１３Aと１３Bは、オブジェクトを活性化するための、偶数奇数と非ゼロ巻上げルールを実演している。使用される適切なルールはフィルルールフラグFILL_RULE_IS_ODD_EVENにより決定される。
【００９９】
非ゼロ巻上げルール上、図１３Aは、オブジェクト７０のエッジ７１と７２が、エッジがそれぞれ下向きか上向きかに応じて、どうやって理論的な方向を割り当てられるかを図解している。閉境界を作るため、エッジは境界の周りに数珠つなぎにつながっている。フィルルール（追って適用し説明される）上、エッジに与えられる方向はセグメントが定義される順序とは独立である。エッジセグメントは、それらが追跡される順に、描画の方向に対応しながら定義される。
【０１００】
図１３Bは、二つの下向きエッジ７３と７６、並びに三つの上向きエッジ７４、７５、７７を有する単体のオブジェクト（星型五角形）を示している。偶数奇数ルールは、各エッジが問題の走査線によって交差されるとFILLCOUNT内に２進値を単にトグル付けし、そのようにして、効果的にオブジェクトのカラーを点（活性化）・滅（不活性化）することによって動作する。非ゼロ巻上げルールは、交差されているエッジの方向に左右されるフィルカウンタFILLCOUNTに、格納された値を増減分する。図１３Bでは、最初の二つのエッジ７３と７６は走査線に出会ったとき下向きであり、従ってこれらのエッジの横断線はフィルカウンタをそれぞれ+１、+２に増分する。走査線に出会った次の二つのエッジ７４と７７は上向きであり、従ってフィルカウントFILLCOUNTをそれぞれ+１,０減分する。非ゼロ巻上げルールは、フィルカウンタFILLCOUNTがゼロでなければ、オブジェクトのカラーを点じ(活性化する)、フィルカウンタFILLCOUNTがゼロであれば、オブジェクトのカラーを滅する(非活性化する)ことによって動作する。
【０１０１】
優先度のためのNEED_BELOWフラグは、ドライバソフトによって立てられ、画素生成システムに、問題の優先度以下のアクティブ優先度はいずれも、そのフラグが設定されていない限り、描画中の画素に寄与しないことを伝えるために使われる。そのフラグは、適切な場合、最終結果の画素値に他には何ら寄与しない余計な合成演算を防止するためクリアされる。
【０１０２】
ラスタ演算コード（ＣＯＬＯＲ＿ＯＰ）、アルファチャネル演算（ＡＬＰＨＡ＿ＯＰ）及びスタック演算（STACK_OP）は一緒に、優先度がアクティブで描画されているとき、各画素上で画素合成モジュール７００によって実行される、画素動作（PIXEL_OP）を形成する。
【０１０３】
テーブル３４に内蔵されている情報のほとんどは、ドライバソフトからの命令によってロードされることが好ましい。特に、フィルルールフラグ、クリッパフラグ、クリップタイプフラグと要下位フラグ、フィルテーブルアドレス、フィルタイプ、ラスタ演算コード、アルファチャネル演算コード、スタック演算コード、X独立フラグ、その他の属性、はこのような方法で取り扱われることが好ましい。一方、フィルカウンタとクリップカウンタは初期値がゼロであり、優先度決定モジュール５００によって、エッジ交差メッセージに対応して変更される。
【０１０４】
優先度決定モジュール５００は、優先度がもしその画素がその優先度に適合する境界エッジの内側にあれば、その画素に対するフィルルールとその優先度に対するクリップカウントに従って、優先度は或る画素でアクティブであると判定する。優先度は、もしそれが最上位のアクティブ優先度であるか、又はそれより上のすべてのアクティブ優先度が、それらの対応する要下位フラグを有していれば描画される。このようにして画素値は、描画された優先度のフィルデータだけを使用して、生成することができる。オブジェクトの優先度は、オブジェクトの位置（即ちレベル）を、最後列から最前列の順に指定することに注目することが重要である。同一のフィルと合成演算を有する、オーバーラップせずかつ隣接するシーケンスを形成するオブジェクトは同一優先度を有すると指定されることが好ましい。これは、フィルテーブル内のメモリスペースを効果的に節約する。更に、オブジェクトの対応するエッジレコードは、対応するフィルと合成演算を参照するのに、対応する優先度だけを参照すれば済む。
【０１０５】
さて図５に戻ると、優先度更新モジュール５０６は、それまでに処理を終えた走査線の交点座標までを記録しているカウンタ５２４を維持している。これは、優先度更新モジュール５０６の現在Xと呼ばれる。走査線の開始の初期値はゼロである。
【０１０６】
FIFO５１８の始めで受け取られたエッジ交差メッセージを調べ、優先度更新モジュール５０６はその現在X値とエッジ交差メッセージ内のX交点値を比較する。もし、エッジ交差メッセージ内のX交点値が優先度更新モジュール５０６の現在X値と等しいか小さければ、エッジ交差メッセージを処理する。エッジ交差メッセージ処理は二つのフォームで行われ、「通常エッジ処理」（以下に説明）は、エッジ交差メッセージの中に、優先度によって指示された結合テーブル３４の優先度状態テーブル５０２のレコードがこれはクリッパ優先度ではないというクリッパフラグを有していれば使用され、そうでなければ「クリップエッジ処理」（以下に説明）が実行される。
【０１０７】
「通常エッジ処理」は、エッジ交差メッセージとその優先度によって指示される結合テーブル３４のレコードフィールドに対し、
（i）  現在優先の現在フィルカウントに注目しつつ、
（ii）  （a）もし現在優先度値のフィルルールが偶数・奇数であれば、フィルカウントをその現在値がゼロでなければゼロと設定、そうでなければそれに任意の非ゼロ値を設定するか
（ｂ）  もし現在優先度値のフィルルールが非ゼロの巻き上げであれば、フィルカウントを増減分（エッジ方向フラグに応じて）し、そして
(iii)  新フィルカウントを注目されたフィルカウントと比較し、もし一方がゼロで他方が非ゼロであれば、「アクティブフラグ更新」(以下に説明)動作を現在の優先度上に実行する、ステップを含んでいる。
【０１０８】
幾つかの実施態様では、各エッジ交差メッセージの中に複数の優先度を置くよりも、各優先度に対し、別のエッジ交差メッセージを使用することもある。
【０１０９】
アクティブフラグ更新動作は、第１に、現在の優先度に対し新アクティブフラグを立てることを含んでいる。アクティブフラグは、もしその優先度状態テーブル５０２内の優先度のフィルカウントが非ゼロで、優先度のクリップカウントがゼロであれば非ゼロであり、そうでなければ、アクティブフラグはゼロである。アクティブフラグ更新動作の第２ステップは、決定されたアクティブフラグを、アクティブフラグ配列５０８に、現在優先度によって指示された位置に格納し、それから、もし優先度状態テーブル内の現在優先度値に対して要下位フラグがゼロであれば、不透明アクティブフラグ配列５１０内の、現在優先度によって指示された位置にもまた格納することである。
【０１１０】
「クリップエッジ処理」は、エッジ交差メッセージ内の最初の優先度によって指示される優先度状態テーブルレコードのフィールドに関して、
（i）    現在の優先度のフィルカウントに注目し、
（ii）  （a）もし、現在優先度値のフィルルールが偶数・奇数であれば、フィルカウントを、現在非ゼロであればゼロに設定し、それ以外であればそれを任意の非ゼロ値に設定するか、
（b）  もし、現在優先度値のフィルルールが非ゼロ巻き上げであれば、フィルカウントを増減分（エッジ方向フラグに応じて）するかのどちらかをし、そして
（iii）  新フィルカウントを注目されたフィルカウントと比較し、クリップデルタ値を
（a）もし、新フィルカウントと注目されたフィルカウントの両方がゼロか、又は新フィルカウントと注目されたフィルカウントの両方が非ゼロであれば、ゼロ値に、
（b）  もし、現在優先度のクリップタイプフラグがクリップアウトで注目されたフィルカウントがゼロでかつ新フィルカウントが非ゼロ、又は現在優先度のクリップタイプフラグがクリップインで注目されたフィルカウントが非ゼロでかつ新フィルカウントがゼロであれば、プラス１に、どちらでもなければ、
（c）  マイナス１に、設定し、そして
（iv）  エッジ交差メッセージの最初に続く優先度の個々に対し、その後続する優先度によって指示された、優先度状態テーブル内のレコードのクリップカウントに決定されたクリップデルタ値を加算し、もし、クリップカウントが非ゼロからゼロに、又はゼロから非ゼロに動いていれば、アクティブフラグ更新動作を、上記のように、その後続する優先度上に実行するステップを含んでいる。各クリップカウントの初期値は前記のLOAD_PRIORITY_PROPERTIES命令によって設定されていることに注目されたい。クリップカウントは、典型的にクリップイン優先度の番号に初期設定されており、それは各優先度に影響を与える。
【０１１１】
幾つかの実施態様では、優先度をクリップと結び付ける代わりに、エッジ交差メッセージ内に与えられる、すべての優先度のクリップカウントを直接に増減分する。この技法は、例えば、クリップの形が単純で複雑なフィルルールの適用を要求しないときに使用することができる。この特定の適用業務においては、エッジによって制御されるレベルのクリップカウントは、上向きのエッジに対して増分されるか、又は下向きのエッジに対して減分される。時計針の逆順に描かれた単純な閉曲線はクリップイン、時計針の正順に描かれた単純な閉曲線はクリップアウトの働きをする。
【０１１２】
エッジ交差メッセージ内のX交点値が優先度更新モジュール５０６の現在のX値より大きいときは、優先度更新モジュール５０６は、エッジ交差メッセージ内のX交点値と現在X間の差異である何画素生成するかのカウントを形成し、このカウントを優先度生成メッセージにフォーマット化し、接続５２０経由で、優先度生成モジュール５１６に送る。優先度更新モジュール５０６は、そこで、与えられた数の画素の処理が終了したことを指示する優先度生成モジュール５１６からの信号５２２を待つ。信号５２２を受け取ると、優先度更新モジュール５０６はその現在Xをエッジ交差メッセージのX交点値に設定し、上に説明したように処理を続ける。
【０１１３】
優先度生成メッセージ５２０を受け取ると、優先度生成モジュール５１６は、それが供給されたカウントによって指示された回数、「画素優先度生成動作」（以下に記載）を行い、それによって、信号５２２に優先度更新モジュール５０６に動作を終えたことを伝える。
【０１１４】
各画素優先度生成動作は最初に、不透明アクティブフラグ配列５１０上の優先エンコーダー５１４（例えば４０９６から１２ビットの優先度エンコーダー）を使用して、最高の不透明アクティブフラグの優先度値を決定する。この優先度（もしあれば）は、優先度データテーブル５０４をインデクス化するためと、そう参照されたレコードの内容が、優先度生成モジュール５１６からフィル優先度メッセージ出力５９８に形成され、最適化モジュール５５０経由でフィルカラー決定モジュール６００に伝送されるために使用される。更に、優先度が前のステップで決定されていれば（つまり、少なくとも一つの不透明アクティブフラグが設定されていれば）、決定された優先度は維持され、「現在の優先度」と呼ばれる。もし、何も優先度が決定されなければ、現在の優先度はゼロに設定される。優先度生成モジュール５１６はそれから、アクティブフラグ配列５０８上の修正済み優先度エンコーダー５１２を、現在優先度より大きな最低アクティブフラグを判定するために繰り返し使用する。そのように決定された優先度は（もしあれば）、優先度決定テーブル３４をインデクス化するのに使用され、そしてそう参照されたレコードの内容はフィル特性メッセージに形成される。このフィル優先度メッセージは、フィルカラー決定モジュール６００に、最適化モジュール５５０経由で５９８に送られ、そして決定された優先度は現在の優先度を更新するために使用される。このステップは優先度がもう決定されなくなるまで（つまり、アクティブフラグ内に、現在優先度値より大きい優先度フラグ付けが何もない）、繰り返される。それから、優先度生成モジュール５１６は終端画素メッセージを形成し、それをフィルカラー決定モジュール６００に送る。優先度決定モジュール５００は、その次に、フィル優先度メッセージの別シリーズを同様に生成するために次の画素に進む。
【０１１５】
さて図２２Aに転じ、優先度決定モジュール５００によって、或る単体画素に対して生成された、そのようなフィル優先度メッセージ２２００別シリーズを示してある。上記のように、これらのフィル優先度メッセージ２２０２はSTART_OF_PIXEL命令によって先行されている。フィル優先度メッセージ２２０２は最劣後の描画されたアクティブ優先度レベルから始まる優先順に送られる。現在画素に対しフィル優先度メッセージ２２０２がもはやなくなると、優先度決定モジュール５００はEND_OF_PIXELメッセージ２２０６を送る。
【０１１６】
これらのフィル優先度メッセージ２２０２は少なくとも次のフィールドを含んでいることが好ましい：
(i)  メッセージをフィル優先度メッセージとして識別する識別子FILL_PRTY ２２０４。このコードは、結合テーブル３４内の対応するレコードに合せたインデクスLEVEL_INDEXと、このフィル優先度メッセージは、同じフィル優先度メッセージを含む画素連の先端画素に属するかどうかを指示するFIRST_PIXELをもまた含んでいる。優先度決定モジュール５００は、エッジ交差メッセージによって指示された様に、エッジによって交差されたそれらすべての現在走査された画素のフィル優先度メッセージに対しFIRST_PIXELコードをアサートする。FIRST_PIXELコードは、現在走査された画素のすべてのフィル優先度メッセージに対し、もしエッジ交差メッセージによって指示された様に、その画素に交差しているエッジがなければ、非アサートされる。
【０１１７】
(ii)  フィルテーブルアドレスFILL_INDEX
(iii)  フィルタイプFILL_TYPE
(iv)  ラスタ演算コードCOLOR_OP
(v)  アルファチャネル演算コードAlpha_OP
(vi)  スタック演算コードSTACK_OP
(vii)  与えられたYに対し、この優先度のカラーが、ここで「X独立」フラグと呼ぶ、定数か否かをレコードするフラグX_IND。このフラグはこの優先度に対するカラーが一定であればアサートされる。
【０１１８】
フィル優先度メッセージに対するフィールド(ii)から(vii)の値は、結合テーブル３４内の対応レコードから取り出される。
【０１１９】
優先度生成モジュール５１６は、或るシーケンスの先端画素を処理する間に、フィルカラー決定モジュール６００に転送する、各フィル優先度メッセージのX独立フラグの値に注目することが好まれる。もし、すべての転送されたメッセージがX独立フラグの値を指定されていれば、隣接するすべてのエッジ交点間の画素長内のすべての後続するメッセージは、カウント-１のたった一個の繰り返し指定によって置き換えることができる。これは、繰り返しメッセージを作り、フィルカラー決定モジュール６００に、このシーケンス内のすべての更なる処理に代えて、送ることによって行われる。気付かれるように、隣接するすべてのエッジ交点間の画素長内のすべての後続するすべてのフィル優先度メッセージがX独立フラグの値を指定されていれば、その画素スパン内の画素のカラーと不透明度は一定ということである。従ってこれらの場合には、画素合成モジュール７００は、要求される一定のカラーと不透明度を生成しこれを画素出力モジュール８００に渡すためには、画素長内の先端画素を合成するだけでよい。そうすれば、生成された繰り返し命令は画素出力モジュール８００に送られ、それは、画素長内のすべての後続する画素に対し、先端画素のカラーと不透明度から、一定のカラーと不透明度を再生する。このような方法で、画素合成モジュール７００によって行われる合成演算回数は削減される。
【０１２０】
上記の基本動作に対する別の好ましい特徴としては、優先度生成モジュール５１６は最高の不透明度優先度をコネクション５２２経由で優先度更新モジュール５０６に各エッジ交差メッセージの後に送るということがある。優先度更新モジュール５０６はこれをストア５２６内に維持する。優先度決定モジュール５０６はそうすれば、メッセージ内のX交点が現在X値より大きいという単純なテストに代えて、メッセージ内のX交点が現在X値より大きく、少なくともメッセージ内のレベルの一つは最高の不透明度優先度よりも大きいか等しいかを、フィル優先度メッセージを生成する前にテストすることになる。こうすることにより、より少ない画素優先度決定演算回数が可能になり、より長い繰り返しシーケンスを生成することができる。
【０１２１】
上記の優先度更新手順は、図８A、９A、９Bに示された画像オブジェクトの例を使用し、走査線３５に対し、図１２Cから１２Jから見られるエッジ交差を使って、図１５Aから１５Eに見られる様に解説することができる。
【０１２２】
図１５Aから１５Eは優先度テーブル５０２と５０４の動作を示しており、それは、好ましい実施態様では、配列５０８、５１０とエンコーダー５１２、５１４と一緒に、優先度決定テーブル３４と呼ぶ単一の結合テーブル３４（図１８参照）に併合されている。
【０１２３】
図１５Aに見られるように、エッジ交差メッセージは走査線順にエッジ処理モジュール４００から受け取られ、テーブル３４にロードされるが、後者は優先順に配列されている。エッジ交差メッセージは、この例では、エッジ横断線の非ゼロ巻上げルールに従って、増加方向を含んでいる。優先テーブル３４内に何の入力も設定しないことは可能である。
【０１２４】
図３４に説明されている優先度決定テーブルは、フィルカウントのための列の入力を含んでおり、それは非ゼロ巻上げルール或いは、適切な場合は、偶数-奇数ルールに従って、エッジから決定される。要下位フラグは優先度の一特性であり、LOAD_PRIORITY_PROPERTIES命令の部分として設定されている。要下位はテーブル３４がロードされるとすべての優先レベルに対して設定される。「クリップカウント」や「フィルインデクステーブル」のような列も使うことができるが、この例では、説明を簡明にするため省略してある。どのレベルもアクティブでないときは入力はゼロに設定される。更に、配列５１０と５０８の値は、後続するエッジ交差を受け取った後で、テーブル３４から更新される。
【０１２５】
図１５Aから、便宜上、数多くのレコードが、説明を簡明にするため省力してあることが明らかである。前に説明した様に、テーブル３４の内容は、優先度決定モジュール５００に使用されない場合、フィルカラー決定モジュール６００のそれぞれに画素生成のため、そして、画素合成モジュール７００に合成演算のためにメッセージとして伝送される。
【０１２６】
走査線３５（図１２E）に対する最初のエッジ交差が、P=１に対して、フィルカウントは非ゼロ巻上げルールによって、そのエッジの値に更新されるのを、図１５Aに示す。このレベルに対する「要下位」フラグは、問題のオブジェクトが不透明なので、ドライバソフトによってゼロに設定されている。
【０１２７】
テーブル３４の前状態が設定されていないので、配列５１０と５０８は未設定のままに留まり、優先度エンコーダー５１４は優先度の出力が不可能になっている。これは、「オブジェクトなし」(例P=０)に対し、カウントn=４０（画素）を出力する優先度生成モジュール５１６によって、走査線３５の最初の空白部分と解釈される。
【０１２８】
図１５Bは、図１２Fのエッジ交差が受け取られたときの実施態様を示している。フィルカウントが更新される。配列５１０と５０８はそれから、テーブル３４からの以前の最高値に設定される。この時、モジュール５１６は、不透明赤色オブジェクト９０のエッジ９６が半透明三角形８０と交差する前の状態を表すカウントn=４５、P=１を出力する。
【０１２９】
図１５Cは、図１２Gのエッジ交差が受け取られたときの実施態様を示している。フィルカウントが、非ゼロ巻き上げルールのために、下降向きに調整されていることに注目されたい。現在エッジ交差を受け取る前に有効なオブジェクトが不透明でないことから、修正優先度エンコーダー５１２が優先度P=２を最高のアクティブレベルとして選択するために使用され、n=(１１５-８５)=３０画素に対する現在値として出力される。
【０１３０】
図１５Dは図１２Hのエッジ交差が受け取られたときの実施態様を示している。P=２に対し前に変更された「要下位」がアクティブ配列５０８に転送されており、従って優先度エンコーダーに、n=(１６０-１１５)=４５画素に対して値P=１を出力することを可能にしていることに注目されたい。
【０１３１】
図１５Eは、図１２Iのエッジ交差が受け取られたときの結果、n=(１８０-１６０)=２０画素に対しP=０の出力を供給していることを示している。
【０１３２】
そういうものとして、優先度決定モジュール５００は、画素のカウントと、走査線のすべての画素に対応する優先度表示値を出力する。
【０１３３】
３.４  最適化モジュールの概要
パイプラインの次のモジュールは最適化モジュール５５０である。このモジュール５５０は、単一のカラーと命令に結合できる命令群（即ちフィル優先度メッセージ）を検索し、それは、画素連の先端画素について、一度計算され、画素合成モジュール７００のレジスタ内に格納することができる。後続する画素については、カラーと命令は、毎回計算されるのではなく、レジスタから復元できる。例えば、或る画素に対する合成結果のカラーが画素連にまたがってx独立である状況では、最適回路はREPEAT PIXELメッセージを、後続画素に対する合成結果のカラーを復元できる合成モジュール７００に送ることができる。このようにして最適化モジュールは合成モジュールによって実行される合成演算の回数を減らす。連の先端画素が或る特定レベルでx従属であるときは、REPEAT PIXELメッセージは使用できない。しかし、最適化モジュールは、以下の４.０項から４.５項及び５.０項に更に詳細に示すように、未だ合成演算の回数を減らすことができる。
【０１３４】
３.５  フィルカラー決定モジュールの概要
今度は、図６によって、フィルカラー決定モジュール６００の動作を説明する。優先度決定モジュール５００からの入力メッセージ５９８は、フィルデータ設定メッセージ、繰り返しメッセージ、フィル優先度メッセージ、終端画素メッセージ、最終走査線メッセージを含んでおり、最初にフィル検索制御モジュール６０４に渡る。フィル検索制御モジュール６０４は、フィルカラー決定モジュール６００の各種構成要素によって使用するため、X現在位置カウンタ６１４とY現在位置カウンタ６１６を維持する。
【０１３５】
最終走査線メッセージを受け取ると、フィル検索制御モジュール６０４は、X現在位置カウンタ６１４をゼロに設定し直し、Y現在位置カウンタ６１６を増分する。最終走査線メッセージは次に画素合成モジュール７００に渡される。
【０１３６】
フィルデータ設定メッセージを受け取ると、フィル検索制御モジュール６０４は、データをフィルデータテーブル３６の指定位置６０２に格納する。
【０１３７】
繰り返しメッセージを受け取ると、フィル検索制御モジュール６０４は、X現在位置カウンタ６１４を、繰り返しメッセージからのカウントによって増分する。繰り返しメッセージは、次に画素合成モジュール７００に渡される。
【０１３８】
終端画素メッセージ２２０２を受け取ると、フィル検索制御モジュール６０４は再びX現在位置カウンタ６１４を増分し、その終端画素メッセージは次に画素合成モジュール７００に渡される。
【０１３９】
フィル優先度メッセージを受け取ると、フィル検索制御モジュール６０４は、次を含む動作を行う。
【０１４０】
(i)  フィル優先度メッセージからのフィルタイプは、テーブル３６内のレコードサイズを選択するために使用される。
【０１４１】
(ii)  フィル優先度メッセージからのフィルテーブルアドレスと上に決定されたレコードサイズは、フィルデータテーブル３６からのレコードを選択するため使用される。
【０１４２】
(iii)  フィル優先度メッセージからのフィルタイプは、フィルカラーの生成を行うため、サブモジュールを選定し決定する。サブモジュールはラスタ画像モジュール６０６、フラットカラーモジュール６０８、線形ランプカラーモジュール６１０、不透明度タイルモジュール６１２を含むことができる。
【０１４３】
(iv)  決定されたレコードは、選択されたサブモジュール６０６〜６１２に供給される。
【０１４４】
(v)  選択されたサブモジュール６０６〜６１２は、受け取ったデータを、カラーと不透明度値を決定するために使用する。
【０１４５】
(vi)  決定されたカラーと不透明度は、カラー合成メッセージ２２０８を形成するためにフィルカラーメッセージ内の残っている情報、つまりラスタ動作コード、アルファチャネルコード、スタック演算コードと結合され、それは画素合成モジュール７００に接続６９８経由で送られる。
【０１４６】
こうして、図２２Aと２２Bに示したように、先端画素メッセージ２２０１から始まり、フィル優先度メッセージ２２０２、終端画素メッセージ２２０６に続くメッセージシーケンス２２００は、先端画素メッセージ２２０１から始まり、カラー合成メッセージ２２０８、終端画素メッセージ２２０６へと続くメッセージシーケンス２２１２に変換される。これらのカラー合成メッセージ２２０２は、次の例外を除き、フィル優先度メッセージ２２０２と同一フィールドを含んでいることが好ましい。
【０１４７】
(i)  メッセージをカラー合成メッセージと識別するコードCLR_CMP ２２１０。このCLR_CMPコードは、結合テーブル３４内の対応するレコードに対するインデクスをもまた含んでいる
(ii)  優先度のカラーと不透明度値を内蔵するカラーと不透明度フィールド。後者は優先度メッセージのフィルインデクスとフィルフィルタイプフィールドを置き替える
(iii)  STOREとRESTOREビット。これらのビットは最適化モジュール５５０によって加算されるもので、以下に詳説される。
【０１４８】
好ましい実施態様においては、決定されたカラーと不透明度は赤、緑、青であり、不透明度は８ビットの精度で通常の方法で画素当たり３２ビットに４倍長化する。しかし、シアン、マジェンタ、イエロー及び黒は暗黙の不透明度で４倍長化される、或いは周知の他の多くのカラー表現法の一つを代替的に用いてもよい。以下の説明では赤、緑、青、及び不透明度が使われるが、その他の場合にも応用することができる。
【０１４９】
今度は、ラスタ画像モジュール６０６、フラットカラーモジュール６０８、線形ランプカラーモジュール６１０及び不透明度タイルモジュール６１２の動作を説明する。フラットカラーモジュール６０８は、受け取ったレコードを三つの８ビットカラー構成要素(典型的に赤、緑、青構成要素として解釈される)と８ビットの不透明度値（典型的に指定カラーによって被覆される画素の部分測度として解釈される、ゼロは被覆無し、すなわち完全透明、２５５は完全な被覆状態、すなわち完全な不透明）を内蔵している固定フォーマットのレコードとして解釈する。このカラーと不透明度値は接続６９８経由で直接出力され、決定されたカラーと不透明度をそれ以上の処理をすることなく形成する。
【０１５０】
線形ランプカラーモジュール６１０は、受け取ったレコードを、三つのカラーと結び付いた定数cx、cy、ｄと、一つの不透明度構成要素の、四セットを内蔵する固定フォーマットレコードとして解釈する。これら四セットのそれぞれに対し、合成結果の値ｒは、三つの定数を、現在Xカウントx、Yカウントyと結合することにより、次式を使って計算される。
【０１５１】
ｒ＝ｃｌａｍｐ（ｃｘ＊ｘ＋ｃｙ＊ｙ＋ｄ）
ここに、関数ｃｌａｍｐは次のように定義される。
【０１５２】
｛        ２５５  ２５５＜ｘ
ｃｌａｍｐ（ｘ）＝｛［ｘ］  ０＜＝ｘ＜＝２５５
｛        ０      ｘ＜０
そうして生成された四つの演算結果は、一つのカラーと不透明度値に形成される。
【０１５３】
このカラーと不透明度値は、接続６９８経由で直接に出力され、追加処理をすることなく決定されたカラーと不透明度を形成する。
【０１５４】
不透明度タイルモジュール６１２は、受け取ったレコードを、三つの８ビットカラー構成要素、８ビット不透明度値、整数Xフェーズ、(px)、Yフェーズ、(py)、Xスケール、(sx)、Yスケール、(sy)、及び６４ビットマスクを内蔵した固定フォーマットレコードとして解釈する。これらの値は、ディスプレイリスト生成に起源があり、典型的にはソースページ記述内に内蔵されている。ビットマスク内のビットアドレス、aは次式によって決定される。
【０１５５】
ａ = ((x／２sx + px)mod８) + ((y／２sy + py)mod８)x８
ビットマスクのアドレス「a」に在るビットが調べられる。もし調べたビットが１であれば、そのレコードからのカラーと不透明度はモジュール６１２の出力に直接コピーされ、決定されたカラーと不透明度を形成する。もし調べたビットがゼロであれば、三つのゼロ構成要素値とゼロ不透明度値を有するカラーが形成され、決定されたカラーと不透明度として出力される。
【０１５６】
ラスタ画像モジュール６０６は、受け取ったレコードを、六つの定数a、b、ｃ、d、tx、ty；サンプル抽出されるラスタ画像画素データ１６の各ラスタ線内のビット数(bpl)の整数カウント；及び画素タイプを内蔵する固定フォーマットとして解釈する。画素タイプは、ラスタ画像画素データ内の画素データ１６が次の一つとして解釈されるべきか否かを指示する。
【０１５７】
(i)  画素当たり１ビットの黒色画素と白色不透明画素
(ii)  画素当たり１ビットの不透明黒色又は透明画素
(iii)  画素当たり８ビットのグレースケール不透明画素
(iv)  画素当たり８ビットの黒色不透明スケール画素
(v)  画素当たり２４ビットの不透明三色カラー構成要素画素
(vi)  画素当たり３２ビットの三色カラー構成要素+不透明画素
その他の各種フォーマットも使用可能である。
【０１５８】
ラスタ画像モジュール６０６は、画素タイプ指示器を画素サイズ(bpp)をビット数で決定するために使用する。そこで,ラスタ画像画素データ１６内のビットアドレスaは、次式を有すると計算される。
【０１５９】
a = bpp * [a * x + c * y + tx] + bpl * [b * x + d * y + ty]
レコード６０２から画素タイプに従って解釈された画素は、ラスタ画像画素データ１６内の計算されたアドレス「a」から持って来られる。画素は必要なときは、三つの８ビットカラー構成要素と８ビットの不透明度構成要素を持つように拡張される。「拡張される」ということは、例えば、画素当たりグレイスケールの不透明ラスタ画像から、赤色、緑色、青色構成要素のそれぞれに当てられた、サンプル抽出された８ビットの値を有しているはずで、不透明度構成要素は完全不透明に設定されるということを意味している。これはそのうえ、画素合成モジュール７００に対する決定されたカラーと不透明度出力６９８を形成する。
【０１６０】
その結果、表示可能なオブジェクト内の有効なラスタ画素データは、メモリ１６内の画素画像データに対する、マッピングの決定を通じて取得される。これは、実際上、ラスタ画素データのオブジェクトベース画像へのアファイン変換を実行することであり、画像ソースからの画素データを、画像オブジェクトとの合成ができるフレームストアに変換する、周知の技法よりも効率的に実行することになる。
【０１６１】
上記に対する好ましい特徴として、ラスタ画像画素データ１６内の画素間の補間はオプションとして、次式に従い、最初に中間の演算結果ｐとｑを計算することによって実行できる。
【０１６２】
p = a*x + c*y + tx
q = b*x + d*y + ty
次にラスタ画像画素データ１６内のビットアドレス、a００、a０１、a１０とこれら四画素のすべては次式に従って決定される。
【０１６３】
a００ = bpp*[p] + bpl*[q]
a０１ = a００ + bpp
a１０ = a００ + bpl
a１１ = a００ + bpl + bpp
次に、結果の画素構成要素値ｒは、カラーと不透明度構成要素毎に、次式に従って、決定される。
【０１６４】
r = interp(interp(get(a００),get(a０１),p),interp(get(a１０),get(a１１),p)q)
ここに関数interpは次のように定義される。
【０１６５】
interp(a,b,c) = a + (b-a)*(c-[c])
上記方程式において、[value] = floor(value) の表現は、フロア演算の少数部分の切り捨てを意味している。
【０１６６】
Get関数は、与えられたビットアドレスの、ラスタ画像画素データ１６からサンプル抽出した現在の画素構成要素の値を返す。何かの画像タイプの何かの構成要素に対しては、これは暗黙値であることに注意されたい。
【０１６７】
上記に合った好ましい特徴として、画像のタイル化を、現在のXとYカウンタ、６１４、６１６から受け取ったレコードから読み取ったタイルサイズで、上記方程式式内のx値とy値を使い、モジュラス演算によって実行することがオプションとしてできる。
【０１６８】
更に多くのそのようなフィルカラー生成サブモジュールも実施可能である。
【０１６９】
３.６  画素合成モジュールの概要
今度は、画素合成モジュール７００の動作説明に移る。画素合成モジュールの主要機能は、現在走査中の画素にアクティブに寄与する、それらの描画されたオブジェクトの、優先度すべてのカラーと不透明度値を合成することにある。
【０１７０】
画素合成モジュール７００は、コンピュータグラフィック誌、１９８４年版１８巻３号、２５３〜２５９ページに記載のPorter,T  Duff,T共著の「デジタル画像の合成」に説明されている、合成への接近法の修正形態を実施することが好ましい。Porter & Duffの合成演算例は図２１に示されている。しかし、そのような接近法は、それが合成によって形成された交点地域内のソースカラーと宛先カラーしか取り扱えず、その結果、交点外の透明度の影響に対応できないことに欠陥がある。好ましい実施態様はこれを、オブジェクトに完全な透明画素を、効果的に埋め込むことで克服している。従って、全域が実質的に交点域になり、信頼性の高いPorter & Duffの合成演算を実行できる。この埋め込みは、追加の透明オブジェクト優先度を結合テーブルに加えることにより、ドライバソフトレベルで達成できる。これらのPorter & Duff合成演算は以下に図２０A、２０B及び１９を使って更に詳細に説明されるように、適切なカラー演算を用いて実行できる。
【０１７１】
合成される画像は、表現ツリーに基づいていることが望まれる。表現ツリーは画像を形成するために要求される合成演算を説明するために使用され、典型的には葉のノード、単項、二項ノードを含む、複数のノードから成っている。葉ノードは表現ツリーの最外部ノードであり、子孫ノードを持たず、画像のソース的構成要素を表している。単項ノードは、単項演算子以下の、ツリー部分から出てくる画素データを修正する演算を表している。二項ノードは典型的に左右のサブツリーに枝分かれする。そのなかで、各サブツリー自体が少なくとも一つの葉ノードを構成する表現ツリーである。表現ツリーの一例を図１７Cに示す。図１７Cに示された表現ツリーは、三つのオブジェクトA、B及びC、並びにページを表す四つの葉から成っている。図１７Cの表現ツリーはまた、Porter & DuffのOVER演算を表す、二項ノードから成っている。従って、その表現ツリーは、オブジェクトAがオブジェクトBの上に合成され、その結果がオブジェクトCの上に合成され、その結果が次にページ上に合成された一つの画像を表している。
【０１７２】
次に図１７Aと１７Bに転じ、表現ツリー内の典型的な二項合成演算を示す。この二項演算子は、ソースオブジェクトsrcが左ブランチ上にあり、宛先オブジェクト(dest)が右ブランチにある、ソースオブジェクト(src)と宛先オブジェクト(dest)上で動作する。その二項演算は典型的にPorter & Duff合成演算である。域src∩destはページ上でソースオブジェクトと宛先オブジェクトが交わる(つまり両方がアクティブな)域、域src∩destはsrcオブジェクトだけがアクティブな域、域src∩destはdestオブジェクトだけがアクティブな域を表している。
【０１７３】
表現ツリーの合成演算は画素合成スタック３８によって実行される。その中で表現ツリーの構造が画素合成スタック３８上の適切なスタック演算によって実行される。
【０１７４】
今度は、図２３Aに転じ、画素合成モジュール７００を、一つの実施態様に従って更に詳細に示す。画素合成モジュール７００は、入力メッセージをフィルカラー決定モジュール６００から受け取る。これらの入力メッセージは、繰り返しメッセージ、カラー合成メッセージ(図２２B参照)、終端画素メッセージ及び最終走査線メッセージを含んでおり、順次処理される。
【０１７５】
画素合成モジュール７００は、入力メッセージをデコードするためのデコーダ２３０２、入力カラー合成メッセージ内に内蔵されているカラーと不透明度値を合成するための合成機２３０４から成る。画素合成モジュール７００は、スタック３８上に、演算結果として得られたカラーと不透明度値を置くスタック制御機２３０６と、合成結果のカラーと不透明度値を格納させるための出力FIFO７０２からもまた成っている。
【０１７６】
画素合成モジュール７００の演算中に、デコーダ２３０２は、カラー合成メッセージを受け取ると、ラスタ演算COLOR_OPとアルファチャネル演算コードALPHA_OPを抽出し、それらを合成機２３０４に渡す。デコーダ２３０２は、スタック演算STACK_OPと、カラー合成メッセージのカラーと不透明度値COLOR,ALPHAの抽出もまた行い、それらをスタック制御機２３０６に渡す。典型的に、画素合成モジュール７００は、カラー合成メッセージからのラスタ演算とアルファチャネル演算に従って、カラー合成メッセージからのカラーと不透明度を、画素合成スタック３８からポップしたカラーと不透明度と結合する。それは次にその結果を画素合成スタック３８上にプッシュバックする。より一般的には、スタック制御機２３０６は指定されたスタック演算に従って、ソースカラー値(src)と宛先(dest)カラー値と不透明度値を形成する。もしこの時点で、或いは画素合成スタックのポップ中に、画素合成スタック３８が空白と判れば、不透明白色値がエラー指示なしに使用される。これらのソースカラーと宛先カラーと不透明度は次に合成機２３０４に使用可能になり、それは、COLOR_OPとALPHA_OPコードに従って合成演算を実行する。結果（答）のカラーと不透明度はスタック制御機２３０６に使用可能になり、それはその結果をスタック３８上に、STACK_OPコードに従って格納する。これらのスタック演算は、以下にもっと詳細に説明する。
【０１７７】
画素合成モジュール７００の演算中に、もしデコーダ２３０２が終端画素メッセージを受け取れば、それは次に、値スタック制御機２３０６に、画素合成スタック３８からカラーと不透明度値をはじき出すように命令する。もしスタック３８が空白であれば、不透明白色値が使用される。結果のカラーと不透明度値はそれから画素出力メッセージに形成され、それは画素出力FIFO７０２に転送される。もしデコーダ２３０２が繰り返しメッセージ又は最終走査線メッセージを受け取ると、デコーダ２３０２は合成機２３０４と値スタック制御機２３０６を回避し(示されていない)、そのメッセージを画素出力FIFO７０２に、それ以上の処理をせずに転送する。
【０１７８】
図２３Aに見られるように、中間値レジスタ２３１０は、デコーダ２３０２とスタック制御機２３０６にアクセスできる。スタック３８からの値はレジスタ２３１０内に格納され、以下に更に詳細に説明されるように、後にスタック３８に復元される。図２３Bには別の実施態様がみられ、そこでレジスタ２３１０は、積算器と積算値レジスタ２３２０に置き換えられている。積算器２３２０の機能は４.５項でもっと詳細に説明する。
【０１７９】
図２４A、B、C、及びDは、画素合成スタック３８上の演算を、カラー合成メッセージの各種スタック演算命令STACK_OPのそれぞれに対して示している。
【０１８０】
図２４Aは画素合成スタック３８上の標準演算STD_OP２３５０を示し、そこではソースカラーと不透明度 (dest)がカラー合成メッセージから取得され、宛先カラーと不透明度 (dest)が画素合成スタックの天辺からポップされる。ソースカラーと不透明度 (src)は現在演算用の現在カラー合成メッセージ内の値から、宛先カラーと不透明度 (dest)はスタック３８の天辺からポップする値から取られる。合成機２３０４によって実行されたCOLOR_OP演算の結果はスタック３８にプッシュバックされる。
【０１８１】
図２４Bは画素合成スタック３８上のNO_POP_DESTスタック演算を示す。ソースカラーと不透明度 (src)は、現在演算用の現在カラー合成メッセージ内の値から取られ、宛先カラーと不透明度 (dest)は、スタック３８の天辺から読み取られている。合成機２３０４によって実行されたCOLOR_OP演算の結果は、スタック３８の天辺にプッシュされる。
【０１８２】
図２４CはPOP_SRCスタック演算を示し、そこではソースカラーと不透明度は、スタックの天辺から読み取られ、宛先カラーと不透明度はスタック下方の次レベルからポップしている。合成機２３０４によって実行されたCOLOR_OP演算の結果は、スタックの天辺にプッシュされる。
【０１８３】
図２４DはKEEP_SRCスタック演算を示している、そこではソースカラーと不透明度は、スタックの天辺から読み取られ、宛先カラー値と不透明度値はスタック下方の次レベルからポップしている。合成機２３０４によって実行されたCOLOR_OP演算の結果は、スタックの天辺にプッシュされる。
【０１８４】
その他のスタック演算も、本発明の精神から逸脱することなく、使用することができる。
【０１８５】
合成機２３０４がソースカラー (src)と不透明度を宛先カラー (dest)と不透明度と結合する方法が、図７Aから７Cを参照しながら次に説明される。この説明上、カラーと不透明度値は、たとえそれらが典型的に０〜２５５の範囲内の８ビット値として格納されていても、０〜１の範囲（即ち基準化されている）に入ると考えられる。二つの画素を一緒に合成する上で、各画素は、一方は完全に不透明、他方は完全に透明で、不透明度値がこれら二つの域の割合を示す、二つの域に分けられているとみなされる。図７Aは、図に示されていない何かの三構成要素カラー値と不透明度値(so)を持つソース画素７０２を示している。ソース画素７０２の影付けされた域は、画素７０２の完全不透明部７０４を表している。同様に、図７A内の影付けされていない部分は、ソース画素７０２の完全透明と考えられるその比率７０６を表している。図７Bは何かの不透明度値、（do）、を有する宛先画素７１０を表している。宛先画素７１０の影付けされた域は画素７１０の完全不透明部分７１２を表している。同様に、画素７１０は完全透明部分７１４を有している。ソース画素７０２と宛先画素７１０の不透明域は結合の目的上は、互いに直交していると考えられる。これら二つの画素のオーバレイ７１６が図７Cに示されている。関心のある三つの域が存在し、それらはso*(１−do)域を有する宛先７１８外のソース、so*do域を有する宛先７２０に交差するソース、(１−so)*do域を有するソース７２２外の宛先を含んでいる。これら三域の各カラー値は概念的に独立して計算される。ソース外宛先域７１８はそのカラー値をソースカラー値から直接に取っている。宛先外ソース域７２２はそのカラー値を宛先カラー値から直接に取っている。ソース交点宛先域７２０はカラーをソースと宛先カラー値の結合から取っている。
【０１８６】
ソースと宛先カラー値の結合過程は、上記に論じた他の演算と区別され、ラスタ演算と呼ばれ、画素合成メッセージからラスタ演算コードによって指定されたように、関数の集まりの一つである。好ましい実施態様に含まれているラスタ演算のいくつかを図１９に示す。各関数は、ソースと宛先カラー値のカラー構成要素の各ペアに、結果のカラー内に類似の構成要素を得るために、適合される。その他多くの関数も実施可能である。
【０１８７】
合成画素メッセージからのアルファチャネル演算もまた、ソースと宛先カラー値の結合中に考慮される。アルファチャネル演算は、LAO_USE_D_OUT_S、LAO_USE_S_OUT_D、LAO_USE_S_ROP_Dを使って実行され、それぞれの関心のある域(１-so)*do、so*(１-do)、及びso*doを、ソース画素７０２のオーバーレイ７１６と宛先画素７１０内に識別する。
【０１８８】
領域のそれぞれに、もし対応するフラグが設定されていなければゼロ、そうでなければ区画の区域である域不透明度値が形成される。
【０１８９】
合成結果の不透明度は区域不透明度の合計から形成される。合成結果のカラーの各構成要素は区域カラーと区域不透明度の各ペアの積和を合成結果の不透明度で割り算することにより形成される。
【０１９０】
図２０に示したように、Porter & Duff演算は、両演算数共にアクティブである保証があれば、適当なALPHA_OPフラグ結合とラスタ演算子COLOR_OPによって形成される。テーブルの読み取られ方から、もし一方の演算子のみがアクティブでなければ、計算は実行されないか又は間違った演算子で実行されるかのどちらかになる。従って、Porter & Duff演算を使って結合されようとするオブジェクトは透明画素で、計算中に両オブジェクトを被覆する領域に埋め込まれなければならない。他の透明演算もPorter & Duff演算と同じようにして、COLOR_OPのような異なる二項演算を使って、形成することができる。
【０１９１】
カラーと不透明度の演算結果はスタック制御回路に送られ、画素合成スタック３８上にプッシュされる。しかしながら、もしスタック演算がSTACK_KEEP_SRCならば、ソース値はカラー合成メッセージがプッシュされる前にスタック上にプッシュされる。
【０１９２】
終端画素メッセージに出合うと、スタックの天辺のカラーと不透明度値は画素出力メッセージに形成され、画素出力モジュールに送られる。繰り返し画素メッセージは画素合成モジュールを通って画素出力モジュールに渡される。
【０１９３】
３.７  画素出力モジュールの概要
今度は、画素出力モジュール８００の動作を説明する。入力メッセージは画素出力FIFOから読み取られるが、それには画素出力メッセージ、繰り返しメッセージ、最終走査線メッセージが含まれ、順次処理される。
【０１９４】
画素出力メッセージを受け取ると、画素出力モジュール８００はその画素を格納し、またその画素を出力に転送する。繰り返しメッセージを受け取ると、最後に格納された画素は、出力８９８に、繰り返しメッセージからのカウントによって指定された回数だけ転送される。走査線の最終メッセージを受け取ると画素出力モジュール８００はそのメッセージをその出力に渡す。
【０１９５】
出力８９８は、画素の画像データを用いるどんなデバイスにも接続できる。そのようなデバイスは、ビデオ表示ユニット若しくはプリンタのような出力デバイス、又はハードディスク、ライン、バンド若しくはフレームストアを含む半導体RAMのようなメモリ格納装置、又はコンピュータネットワークを含んでいる。しかしながら、前記から明らかなように、画像オブジェクトの描画を、高機能の画像記述言語によって要求されるフル機能で、描画処理中に画素画像データの中間格納を必要としないで供給する、技法と装置が説明される。
【０１９６】
４.０  最適化モジュールの概要
パイプライン内で、優先度決定モジュール５００の後の次のモジュールは最適化モジュール５５０である。最適化モジュール５５０は、フィル決定と画素合成モジュール６００と７００それぞれに送るフィル優先度メッセージとカラー合成メッセージ数の最小化を捜し求め、その結果、画素合成モジュール７００によって実行される合成演算回数の削減がもたらされる。
【０１９７】
最適化モジュール５５０は、これを単一のカラーと不透明度に結合できるフィル優先度メッセージ群を捜し求め、、結合計算を一回で済ませ、画素連の先端画素処理中に、画素合成モジュール７００内のレジスタに格納することで成し遂げる。後続する画素については、カラーと不透明度は、都度計算されるというよりも、レジスタから復元される。
【０１９８】
前述したように、隣接エッジ交点間の画素連の先端画素の、転送されたフィル優先度メッセージのすべてが、x独立フラグをアサートされる場合がある。これらの場合には、その画素連のすべての後続するフィル優先度メッセージは、カウント-１の単一繰り返し仕様に置き換えることができる。そうすれば、画素合成モジュール７００は、要求される一定のカラーと不透明度を生成し画素出力モジュール８００に渡すためには、画素連の先端画素だけを合成すればよい。生成された繰り返しコマンドは、それから画素出力モジュール８００に渡され、画素連の先端画素のカラーと不透明度から、その画素連のすべての後続する画素に対する一定のカラーと不透明度を復元する。このような方法で合成演算は画素連の後続する画素には要求されなくなり、その結果、画素合成モジュール７００によって実行される合成演算回数は削減することができる。
【０１９９】
一つ以上の隣接エッジ間の画素連の先端画素において、転送されたフィル優先度メッセージ内の、x独立フラグがアサートされない、その他多くの場合がある。例えば、フィル優先度メッセージと結び付いたオブジェクトの一つがビットマップであり、その結果、カラーと不透明度が画素連にまたがって変動することがある。これらの場合、最適化モジュール５５０は、画素連の先端画素のフィル優先度メッセージ群にx独立フラグをアサートされたものを識別し、この情報を画素合成モジュールに渡すと、それは次にそれらの結合されたカラーと不透明度を計算し、それをレジスタに格納する。後続する画素については、カラーと不透明度は、都度計算されるというよりレジスタに復元され、それ故に、合成演算回数の削減につながる。
【０２００】
最適化モジュール５５０は、幾つかの異なる方法で実施でき、その幾つかの方法を今度は説明する。図２５〜２９の図式的なブロック図は、ハードウエアによる五つの実施態様を説明している。
【０２０１】
これに関して、次の最適化モジュールの第１、第２、第３及び第５の実施態様のそれぞれは、図２３Aに示した画素合成モジュールと一緒に使用することが意図されていることに注目されたい。他方、最適化モジュールの第４の実施態様は、図２３Bに示したように、画素合成モジュールと一緒に使用することが意図されている。
【０２０２】
４.１  最適化モジュールの第１実施態様
次に図２５に転じ、最適化モジュール５５０のブロック図が第１実施態様に従って示されている。最適化モジュール５５０は入力として、優先度決定モジュール５００によって送られたメッセージを順次受け取り、それらを入力シフトレジスタ２５１０内に一度に一つづつ格納する。これらのメッセージは先端画素、フィル優先度、終端画素及び繰り返しメッセージ、その他を含むことができる。図２５は例としてフィル優先度メッセージが入力シフトレジスタ２５１０に格納された状態を示している。最適化モジュール５５０は、これらのメッセージを、入力、出力レジスタ２５１０と２５３２が後続するクロックサイクルで同一メッセージを内蔵しているような方法で、出力シフトレジスタ２５３２に渡す。出力レジスタ２５３２は、フィル優先度メッセージでないメッセージのすべてと、後に説明するように、フィル優先度メッセージのいくつかだけをフィル決定モジュール６００に出力する。これらの出力シフトレジスタ２５３２から出力されたフィル優先度メッセージは、STOREとRESTOREと呼ぶ２ビットを加えて修正される。図２５はそのような修正されたフィル優先度メッセージが出力シフトレジスタ２５３２に格納された状態を例示している。これらのSTOREとRESTOREビットは初期値として非アサートされている。
【０２０３】
前記の通り、フィル優先度メッセージは、フィル決定モジュール６００内で、フィルインデクスとフィルタイプを対応するカラーと不透明度値に置き換えることにより、カラー合成メッセージに変換されている。これらのSTOREとRESTOREビットを含むカラー合成メッセージは次に、画素合成モジュール７００に送られる（図２３A）。
【０２０４】
次に図２３Aに転じると、STOREビットの目的は、アサートされたとき、画素合成モジュール７００にスタック３８の天辺のコピーを、STOREビットを有するフィル優先度メッセージに結び付いた合成演算を終えた後に、中間値レジスタ２３１０内に格納するよう命令することである。画素合成モジュール７００は、STOREビットが非アサートされているときスタックのコピーを格納しない。RESTOREビットの目的は、アサートされているとき、画素合成モジュール７００に、中間値レジスタ２３１０（図２３A）内の内容をスタック３８の天辺（図２３A）にコピーするよう命令することである。画素合成モジュール７００はRESTOREビットが非アサートされているときは中間値レジスタ２３１０内の内容をスタックにコピーしない。
【０２０５】
図２５に戻って、最適化モジュール５５０は、入力レジスタ２５１０内フィル優先度メッセージに内蔵されているスタック演算タイプをデコードするためのデコーダ２５０２から成っている。具体的には、デコーダ２５０２は、フィル優先度メッセージに内蔵されているスタック演算がNO_POP_DESTかPOP_SRCスタック演算のどちらであるかを判定する。デコーダ２５０２はカウンタ２５０４に繋げられており、スタック演算がNO_POP_DESTかPOP_SRCスタック演算のどちらかであるとき、カウンタに知らせる。カウンタ２５０４は画素メッセージ（示されていない）の始めに応じて１に初期設定されており、入力レジスタ２５１０内に格納された後続するフィル優先度メッセージ内の、各NO_POP_DESTスタック演算に対して増分し、各POP_SRCスタック演算に対し減分する。カウンタ２５０４の現在値は、現在フィル優先度メッセージの決定されたスタック演算を実行する結果として生成される、画素合成モジュール７００内のスタック３８のスタック深度を判定する。カウンタ２５０４は、現在のフィル優先度メッセージのスタック演算が実際に実行される前に、現在のフィル優先度メッセージと結び付いたスタック演算から結果する、スタック３８の厚みを予測することに注目することが重要である。カウンタ２５０４はこれを、フィル優先度メッセージ内のスタック演算によって生成された、スタック深度の連続カウントを維持することによってなしている。
【０２０６】
カウンタ２５０４は、カウンタ２５０４が１に増減分する、つまり、予測されたスタック深度が１であると検知する、比較器２５０６に繋がれている。比較器２５０６がカウントは１であると検知すると、それは第１の入力をANDゲート２５０８にアサートする。
【０２０７】
最適化モジュール５５０は、入力レジスタ２５１０に現在格納されつつあるメッセージがフィル優先度メッセージであるか、先端画素メッセージか、終端画素メッセージか、などを判定するためのデコーダ２５１４からも成る。ラッチ２５１２経由で、デコーダ２５１４は、現在入力レジスタ２５１０に格納されつつあるフィル優先度メッセージが画素連の先端画素と結び付いているか、また、結合テーブル３４内の対応するレコードに合せたインデクスがそのフィル優先度メッセージに結び付いているかも判定する。デコーダ２５１４はこの情報をメッセージ内に内蔵されている識別コードによって判定する。例えば、各フィル優先度メッセージは、メッセージをフィル優先度メッセージであると識別する識別コードFILL_PRTYを内蔵している。このコードは、結合テーブル３４内の対応するレコードに合せたインデクスLEVEL_INDXと、このフィル優先度メッセージが画素連の先端画素に属するかどうかを指示するコードFIRST_PIXELをも含んでいる。
【０２０８】
最適化モジュール５５０は、RSラッチ２５１２からも成り、それは、デコーダ２５１４が、入力レジスタ２５１０に格納されたメッセージが終端画素メッセージであると判定すると、設定し直される。ラッチ２５１２は、ｘ従属フィル優先度メッセージが入力レジスタ２５１０内で最初に出合うと設定される。ラッチ２５１２は設定し直し状態で前記のANDゲート２５０８に向けて第２入力をアサートし、設定状態のときはANDゲート２５０８に向けて第２入力を非アサートする。
【０２０９】
最適化モジュール５５０は、第１・第２入力を有する更なるANDゲート２５２２からも成る。ANDゲート２５２２の第１入力はANDゲート２５０８の出力に繋がれてあり、第２入力はデコーダ２５１４に繋がっている。デコーダ２５１４は、ANDゲート２５２２の第２入力に、入力レジスタ２５１０に現在格納されつつあるフィル優先メッセージが画素連の先端画素と結び付いているか否かを判定すると、アサートする。
【０２１０】
ANDゲート２５２２の出力は、出力レジスタ２５３２に現在格納されつつある、フィル優先度メッセージ内にSTOREビット命令を設定するために使われる。このようなやり方で、最適化モジュール５５０は、もし
（１）  入力と出力レジスタ２５１０と２５３２内のメッセージが、画素連の先端画素に結び付いているフィル優先度メッセージであるとき、
（２）  カウンタ２５０４が現在カウント１を有し、従って予測されたスタック３８の深度が１であるとき、
（３）  現在格納されたフィル優先度メッセージを含め、最後の終端画素メッセージ以来、これまでに処理されたフィル優先度メッセージのすべてがｘ独立であるとき、このSTOREビット命令をアサートする
最適化モジュール５５０は、画素連の後続する画素に寄与する、最低のフィル優先度メッセージのインデクスを格納するレジスタ２５２４からも成っている。フィル優先度メッセージは最適化モジュールに優先度の下位から上位順に転送されていることに注目することが重要である。あるオブジェクトの優先度は、オブジェクトの最後列から最前列に至る順序において、そのオブジェクトの位置（即ちレベル）を指定する。ある画素に寄与している各オブジェクトに対応するフィル優先度メッセージは最適化モジュール５５０に、最後列（最劣後）から最前列（最優先）の順で、転送される。最適化モジュール５５０はフィル決定モジュール６００に、画素連の先端画素に結び付いているフィル優先度メッセージのすべてを渡すが、しかし、その連の後続する画素の処理中は、そのフィル優先度メッセージの幾つかだけを渡す。具体的には、画素連の先端画素処理中に渡されたフィル優先度メッセージグループの同一サブグループフィル優先度メッセージは、その連の後続する各画素の処理中にパスされる。レジスタ２５２４は、画素連の後続する画素の処理中に送られた、このサブグループの最低優先度メッセージに対応する、結合テーブル３４内のレコードにインデクスを格納する。
【０２１１】
レジスタ２５２４内のこのインデクスの格納は次のような方法で達成される。デコーダ２５１４は、入力レジスタ２５１０に格納された識別メッセージをデコードし、もしそれがフィル優先度メッセージであれば、この識別器から、そのフィル優先度メッセージに結び付いた結合テーブル３４内のレコードのレベルインデクスLEVEL_INDXを取得する。このレベルインデクスLEVEL_INDXはレジスタ２５２４の入力に送られる。もしANDゲート２５２２の出力がこのフィル優先度メッセージに対しSTOREビット命令をアサートすれば、それはレジスタ２５２５も、現在そのレジスタの２５２４入力上にあるレベルインデクスLEVEL_INDXを格納するよう設定する。このようにして、レジスタ２５２４はその中に、そのSTOREビット命令をアサートされた、現在入力レジスタ２５１０と２５３２に格納されているフィル優先度メッセージのレベルインデクスを格納し終える。もし更なるフィル優先度メッセージが現在画素に対して入力と出力レジスタ２５１０と２５３２に格納され、その優先度メッセージがそのSTOREビット命令をアサートされているならば、現在レジスタに格納されているレベルインデクスはその更なるフィル優先度メッセージと結び付いたレベルインデクスによって上書きされることに注目されたい。
【０２１２】
他方、もしデコーダ２５１４が入力レジスタ内のメッセージは先端画素メッセージであり次のメッセージは画素連の先端画素と結び付いたフィル優先度メッセージであると識別すれば、デコーダはANDゲート２５２６の両入力にアサートし、それは次いでレジスタ２５２４を設定し直す。
【０２１３】
これまでに説明した最適化モジュール５５０の回路は主として画素連の先端画素に結び付いた一つ以上のフィル優先度メッセージに結び付いたSTORE命令を設定することに関心を向けてきた。最適化モジュール５５０のこれからの説明は主として画素連の後続する画素と結び付いた一つ以上のフィル優先度メッセージのサブグループに結び付いたRESTORE命令の設定に関連するものである。
【０２１４】
最適化モジュールは更に、現在レジスタ２５２４に格納されているレベルインデクスを、現在入力レジスタ２５１０内に格納されつつあるフィル優先度メッセージのレベルインデクスと比較する比較器２５３０から成っている。レベルインデクスが同一であれば、比較器２５２０はANDゲート２５２０への第１入力をアサートする。加えて、もしデコーダ２５１４が現在入力レジスタ２５１０に格納されているフィル優先度メッセージは画素連の先端画素と結び付いていると判定すれば、デコーダ２５１４はANDゲート２５２０の反転した第２入力をアサートし結果としてANDゲート２５２０を非アサートする。そうでなければ、それはANDゲート２５２０の逆転した第２入力を非アサートする。ANDゲート２５２０はアサートされれば、RESTOREビットに対し現在出力レジスタ２５３２に格納されているフィル優先度メッセージの命令をアサートする。
【０２１５】
このような方法でANDゲート２５２０は、もし、
（１）  入力と出力レジスタ２５１０と２５３２内のメッセージが、画素連の先端画素に後続する画素に結び付いているフィル優先度メッセージであり、かつ
（２）  入力と出力レジスタ２５１０と２５３２内に現在格納されつつあるフィル優先度メッセージのレベルインデクスが、STOREビット命令をアサートされた最高の（最優先の）レベルインデクスを有する画素連の先端画素に後続する画素に結び付いているそのフィル優先度メッセージのレベルインデクスと等しければ、RESTOREビット命令をアサートする。
【０２１６】
最適化モジュールは更に、現在レジスタ２５２４内に格納されているレベルインデクスを、現在入力レジスタ２５１０内に格納されつつあるフィル優先度メッセージのレベルインデクスと比較する、更なる比較器２５２８から成る。現在入力レジスタ２５１０に格納されつつあるフィルメッセージのレベルインデクスが、レジスタ２５２４内に現在格納されているインデクスと等しいか大きければ、比較器はORゲート２５１８の第１入力をアサートする。
【０２１７】
ORゲート２５１８の目的は、出力レジスタ２５３２に内蔵されているメッセージの出力を可能にすることにある。このような方法で、画素連の先端画素に後続する画素に結び付き、そのインデクスがレジスタ２５２４に現在格納されていると等しいか大きいとき、すべてのフィル優先度メッセージは、出力可能になる。この出力可能になったフィル優先度メッセージは、フィル決定モジュール６００に渡される。出力可能とならなかった残りのフィル優先度メッセージはフィル決定モジュール６００に渡されない。また、フィル優先度メッセージでないメッセージも、フィル決定モジュール６００に出力可能である。
【０２１８】
デコーダ２５１４に戻ると、デコーダ２５１４は現在入力レジスタ２５１０に格納されつつあるメッセージ内の識別器を読み取り、このメッセージがフィル優先度メッセージであるか否かを判定する。そのメッセージがフィル優先度メッセージでなければ、デコーダ２５１４はORゲート２５１８の逆転入力を非アサートし、それは今度はORゲート２５１８にアサートし、それがまた出力レジスタ２５３２内に内蔵されているメッセージの出力を可能にする。このようなやり方で、フィル優先度メッセージでないすべてのメッセージは出力可能となりフィル決定モジュール６００に渡される。
【０２１９】
同様に、デコーダ２５１４が、入力レジスタ２５１０に現在格納されつつあるメッセージは画素連の先端画素に結び付いたフィル優先度メッセージであると判定すれば、デコーダはORゲート２５１８に別の入力をアサートする。ORゲート２５１８はアサートされ今度は出力レジスタ２５３２に内蔵されているメッセージの出力を可能とする。このような方法で、画素連の先端画素に結び付いた、すべてのフィル優先度メッセージは出力可能となり、フィル決定モジュール６００に渡される。
【０２２０】
次に、図２５に関して最適化モジュール５５０の動作を説明する。
【０２２１】
或る画素連の始点では、カウンタ２５０４は１に設定され、ラッチ２５１２は設定し直され、レジスタ２５２４はゼロに設定し直されている。
【０２２２】
画素連の各フィル優先度メッセージが最適化モジュール５５０を通過すると、スタック演算はデコーダ２５０２によってデコードされる。もしスタック演算がNO_POP_DESTであれば、カウンタ２５０４は、そのような演算が画素合成モジュール７００によって実行されるとスタック３８の深度を１増やすので、増分される。もしスタック演算がPOP_SRCであれば、カウンタ２５０４は、そのような演算がスタックの深度を１減らすので、減分される。そうでなければ、カウンタ２５０４によって何の動きもとられない。また、X独立フラグがチェックされ、もし非アサートされていれば、ラッチ２５１２がアサートされる。ラッチ２５１２は終端画素メッセージに出会うまでアサートを維持される。
【０２２３】
連の先端画素上に、各フィル優先度メッセージが最適モジュール５５０から抜け出ていくとき、STOREビットはスタック深度カウンタが１に等しい演算をアサートされ、X従属ラッチ２５１２は非アサートされる。STOREビットがアサートされると、最後に格納されたレベルのインデクスを内蔵しているレジスタ２５２４は現レベルのインデクスに上書きされる。
【０２２４】
STOREビットがフィル優先度メッセージ内でアサートされ、そのメッセージがカラー合成メッセージとして、フィル決定モジュール６００経由で画素合成モジュール７００に渡されると、それは、画素合成モジュール７００に、中間値レジスタ２３１０の中に、合成スタックの天辺の値を、演算が実行された後で、格納させる。その結果、最後に格納された値は、画素合成モジュール７００内のX従属データでの最初の演算の前に、一枚の深度のスタック上の最後の値になる。また、或る演算に対しSTOREビットがアサートされていれば、次の寄与演算のレベルインデクスはレジスタ２５２４内に格納される。
【０２２５】
フィル優先度メッセージのすべてが川下のモジュールに渡されると（終端画素メッセージによって指示されて）、ラッチ２５１２は設定し直される。
【０２２６】
画素連の先端画素に後続する画素について、もし後続する画素と結び付いているフィル優先度メッセージがレジスタ２５２４内に格納されているインデクスより大きいか或いは等しいインデクス有していれば、そのフィル優先度メッセージはフィル決定モジュール６００に渡される。しかし、もしフィル優先度メッセージ内のインデクスがレジスタ２５２４内に現在格納されているインデクスより小さければ、フィル優先度メッセージはフィル決定モジュール６００に渡されない。更に、もしフィル優先度メッセージがレジスタ２５２４内に格納されているインデクスと等しければ、最適化モジュール５５０はフィル優先度メッセージ内のRESTOREビットにこのメッセージをフィル決定モジュール６００に渡す前にアサートする。このRESTOREビットは画素合成メッセージ７００に中間値レジスタ２３１０（図２３A）の内容をスタック３８（図２３A）の天辺にコピーするよう命令する。
【０２２７】
図２５のハードウエア構成はフィル優先度メッセージのSTOREとRESTOREビットをマニュピレートする。STORE上に活動する構成要素は第１機能ユニット、RESTOREビット上に活動する構成要素は第２機能ユニットとみなされる。
【０２２８】
今度は図３０Aと３０Bに転じ、それらに画素連の先端画素に対する典型的なフィル優先度メッセージの元シーケンスと後続する画素に対するフィル優先度メッセージの最適化モジュール５５０によって第１装置にしたがって最適化された最適シーケンス間の比較を示す。
【０２２９】
図３０Aは、隣接するエッジ間の画素連の先端画素に対して、最適化モジュール５５０によって出力された、フィル優先度メッセージ３００１から３００８の典型的なシーケンスを示している。フィル優先度決定モジュール５００によって、画素連の各画素に対して、生成されたフィル優先度メッセージのシーケンスと最適化モジュール５５０に送られたものは同一であることを認識することが重要である。
【０２３０】
最適化モジュール５５０は、画素連の先端画素に対するフィル優先度メッセージのすべてを、フィル決定モジュール６００に渡す。更に、それは二つの追加ビットSTOREとRESTOREを付加する。連の先端画素の処理中に、最適化モジュールは、もしカウンタ２５０４が現在カウント１を有しており、したがってスタック３８の予測深度が１であり、かつ、現在のフィル優先度メッセージを含みこれまで現在画素に対して処理されたフィル優先度メッセージのすべてがX独立であれば、STOREビットをアサートする。
【０２３１】
今度は図３０Aに転じる。連の先端画素のフィル優先度メッセージ３００１〜３００８は、最適化モジュール５５０に送られ、最劣後から最優先の順序で渡される。つまり、フィル優先度メッセージ３００１〜３００８は、３００１、３００２、３００３、３００４、３００５、３００６、３００７、３００８の順で、最適化モジュール５５０に送られ渡される。従って、カウンタ２５０４は、フィル優先度メッセージ３００１〜３００８のそれぞれに対し、１、２、２、１、２、２、１、１のカウントを有していることが分る。また、フィル優先度メッセージ３００１〜３００６は、現在のフィルメッセージを含みこれまでに処理されたフィル優先度メッセージのすべてがX独立である、という基準を満たしている。従って、STOREビットはフィルメッセージ３００１と３００４に対してアサートされる。RESTOREビットは、連の先端画素に結び付いたフィルメッセージ３００１〜３００８のすべてに対して非アサートされる。
【０２３２】
連の先端画素に結び付いたこれらのフィル優先度メッセージ３００１〜３００８は、フィル決定モジュール６００に渡され、カラー合成メッセージに変換され、次いで画素合成モジュール７００に送られる。画素合成モジュール７００は、STOREビットをアサートされたカラー合成メッセージを受け取ると、スタック３８の天辺を、画素合成メッセージの合成演算の終了後、中間値レジスタ２３１０にコピーする。それぞれSTOREビットをアサートされたカラー合成メッセージのシーケンスを受け取ると、画素合成モジュール７００は、中間値レジスタ内に前に格納された値を、後続するカラー合成メッセージに結び付いたスタック３８のコピーで上書きする。この具体例では、中間値レジスタ２３１０は、フィル優先度メッセージ３００４と結び付いた合成演算終了後の結果となる、スタック３８の天辺のコピーを内蔵している。
【０２３３】
次に図３０Bに転じ、そこに最適化モジュール５５０によって連の先端画素に後続する各画素の処理中に渡された、フィル優先度メッセージを示す。先ず第１に、レジスタ２５２４（図２５）は、連の先端画素のフィル優先度メッセージを送り出した後で、フィル優先メッセージ３００４のレベルインデクスを内蔵していることに注目されたい。したがって、シフトレジスタ２５３２の出力は、連の後続する画素に対するフィル優先度メッセージが、これらのフィル優先度メッセージのインデクスがレジスタ２５２４内に格納されたインデクスより大きいか等しいときにのみ、送り出しが可能となる。このようにして、最適化モジュール５５０はこの具体例においては、連の後続する画素に対し、フィル優先度メッセージ３００４〜３００８だけを渡す。最適化モジュール５５０は、フィル優先度メッセージ３００４のRESTOREビット命令もまた、この命令のレベルインデクスがレジスタ２５２４（図２５）内に格納されたレベルインデクスと等しいので、アサートする。STOREビット命令は連の先端画素に後続する画素と結び付いたすべてのフィル優先度メッセージに対し非アサートされる。
【０２３４】
最適化モジュール５５０は、フィル優先度メッセージのSTOREとRESTOREビットのみをマニュピレートし、フィル優先度メッセージ他のフィールドを無変更のままにすることに注目されたい。
【０２３５】
これらのフィル優先度メッセージ３００４〜３００８は、連の先端画素に後続する各画素に対し、最適化モジュール５５０によって、フィル決定モジュール６００に渡される。フィル決定モジュールはこれらのフィル優先度メッセージを対応するカラー合成メッセージに変換し、次に画素合成モジュール７００に送る。画素合成モジュール７００は、RESTOREビットをアサートされた、カラー合成メッセージを受け取ると（例えば３００４）、中間値レジスタ２３１０内に格納されたカラーと不透明度値をスタックの天辺にコピーする。画素合成モジュール７００は、次に通常の方法で、フィル優先度メッセージ３００５〜３００８に対応するカラー合成メッセージ内に内蔵されている命令に従って、先へ進む。
【０２３６】
こうして、X独立合成演算群についての合成結果のカラーと不透明度は、連の先端画素処理中に完成され格納され、連の後続する画素の処理中に取り出されることが分る。
【０２３７】
４.２  最適化モジュールの第２実施態様
今度は図２６に転じ、最適化モジュール５５０のブロック図を示してあるが、これは第２実施態様に従って、第１実施態様の接近法に対する第２実施態様の接近法を提供するものである。最適化モジュール５５０は第２実施態様に従い、フィル優先度メッセージを渡し、RESTOREビット命令フィル優先度メッセージ内に、第１実施態様と実質同じ方法で設定するので、モジュールのその部分の詳細説明は省略する。これに関して、第２実施態様の第１実施態様と同じ参照番号を有する部分は、第１実施態様と同じ方法で動作する。更に、これら第１及び第２実施態様の双方と一緒に使われる画素合成モジュール７００は同じ機能を有し、同じ方法で動作する。
【０２３８】
最適化モジュール５５０は、第２実施態様に従い、フィル優先度メッセージ内のSTOREビットに第１実施態様のそれとは異なる方法で命令をアサートする。この例では、デコーダ２６０２は現在入力レジスタ２５１０に格納されているフィル優先度メッセージ内のスタック動作がNO_POP_DESTであるかどうかを判定し、もしそうならばORゲート２６０４の第１入力をアサートする。最適化モジュール５５０はまたフィル優先度メッセージのx独立フラグの状態をORゲート２６０４の逆入力に供給する。ORゲート２６０４の出力はRSラッチ２６０６のS入力に与えられる。更に、デコーダ２５１４からのEND_OF_PIXELメッセージはRSラッチ２６０６のR入力に与えられる。ラッチ２６０６のQ出力は、ANDゲート２５２２の１入力に与えられ、デコーダ２５１４はANDゲート２５２２の他の入力にFIRST_PIXELメッセージも与える。
【０２３９】
このようにしてこの実施態様ではラッチ２６０６は画素の始めにおいて初期に非アサートされ、NO_POP_DESTスタック動作、又は、その画素の処理中にフィル優先度メッセージ内のX従属演算数に出合うと、ラッチ２６０６がアサートされる。もしラッチ２６０６がアサートされず、画素が連の先端画素である場合は、STOREビットがアサートされ、レジスタ２５２４が設定される。ラッチ２６０６が連の先端画素に対してアサートされると、それはその画素に対してはアサートされ続け、連のその先端画素に対して、もはやSTOREビットとレジスタ２５２４の設定をしない。
【０２４０】
この第２の実施態様においては、STOREとRESTOREビット命令の決定は、第１実施態様内でのSTOREとRESTOREビット命令の決定と異なっている。この結果、最適化モジュール５５０によって、第２実施態様の後続する画素中に従って渡されたフィル優先度メッセージは、第１実施態様とは異なることがある。
【０２４１】
図３１Aと３１Bに転じ、そこに画素連の先端画素に対するフィル優先度メッセージの典型的なオリジナルシーケンスと、後続する画素に対して、最適化モジュール５５０によって、第２実施態様に従って最適化されたフィル優先度メッセージの、シーケンス間の比較を示す。
【０２４２】
図３１Aに転じ、連の先端画素のフィル優先度メッセージ３１０１から３１０８は最適化モジュール５５０に送られ、それによって、最劣から最優先の順に渡される。つまり、フィル優先度メッセージ３１０１〜３１０８は、３１０１、３１０２、３１０３、３１０４、３１０５、３１０６、３１０７、３１０８の順で、最適化モジュール５５０に渡される。このようにしてSTOREビット命令は、X独立でNO_POP_DESTスタック演算を内蔵しない最優先のフィル優先度メッセージに対し、アサートされることが見てとれる。一旦フィル優先度メッセージのNO_POP_DESTスタック演算又はX従属演算数に出合うと、これに結び付いたSTOREビットは非アサートされ、残りのフィル優先度メッセージに対し優先順に非アサートされる。このようにして、STOREビットはフィルメッセージ３１０１と３１０２に対しアサートされる。RESTOREビットは連の先端画素に結び付いた３１０１から３１０８のすべてのフィルメッセージに対し非アサートされる。
【０２４３】
今度は図３１Bに転じ、そこに最適化モジュール５５０によって、連の先端画素に後続する各画素の処理中に渡されたフィル優先度メッセージを示す。先ず、連の先端画素のフィル優先度メッセージを送り出した後でレジスタ２５２４（図２６）はフィル優先度メッセージ３１０２のレベルインデクスを内蔵していることに注目されたい。この結果、シフトレジスタ２５３２の出力は後続する画素のフィル優先度メッセージの送り出しが、これらのフィル優先度メッセージのインデクスがレジスタ２５２４内に格納されたインデクスより大きいか等しい場合にのみ、できるようになる。従って、最適化モジュール５５０は、この具体例においては、連の後続する画素に対し、フィル優先度メッセージ３１０２〜３１０８のみを渡す。最適化モジュール５５０は、この命令のレベルインデクスがレジスタ２５２４（図２６）内に格納されたインデクスと等しいので、RESTOREビットにも命令をアサートする。STOREビットの命令は連の先端画素に後続する画素と結び付いたすべてのフィル優先度メッセージに対して非アサートされる。
【０２４４】
このような方法で、X独立な合成演算群の合成結果のカラーと不透明度は完成し、連の先端画素処理中に画素合成モジュール内のレジスタに格納され、連の後続する画素処理中に使用のため取り出される。
【０２４５】
４.３  最適化モジュールの第３実施態様
別の代替法は、X独立動作に出会うとスタック全体の状態を格納し、連の後続する画素についてこのストアからスタックを復元することである。これは、ハードウエアの実施態様において、それが多数のチップ上の高速メモリやレジスタを要求するとはいえ、より非制限的である。
【０２４６】
もし、画素合成モジュール７００内に充分なレジスタ又はメモリセルが使用可能であれば、スタックの状態は、X従属演算の最初の出現前に格納することができる。これはスタック深度が、状態の格納が実行されるとき１でなければならないという要件の緩和を可能にする。この場合、最適化段階でのカウンタは要求されないが、画素合成モジュールの複雑性は著しく増大する。
【０２４７】
今度は図２７に転じ、最適化モジュール５５０のブロック図を第３の実施態様に従って示すが、これは第１・第２実施態様とは別の接近法を実施するものである。
【０２４８】
最適化モジュール５５０は、第３実施態様に従ってフィル優先度メッセージを渡し、第１・第２実施態様と実質同じ方法で、フィル優先度メッセージ内にRESTOREビット命令を設定する。そこで、モジュールのその部分の詳細説明は省略する。これに関して、第３実施態様の第１実施態様と同じ参照番号を有する部分は第１実施態様と同じ動作をする。
【０２４９】
最適化モジュール５５０は第３実施態様に従って、フィル優先度メッセージ内に、第１・第２実施態様とは異なる方法で、STOREビット命令をアサートする。この例では、最適化モジュール５５０はフィル優先度メッセージのｘ独立フラグをRSラッチ２７０２の逆S入力とNORゲート２７０４の第１入力に出力する。ラッチ２７０２のQ出力はNORゲート２７０４の第２入力に送られる。デコーダ２５１４は、ラッチ２７０２を、終端画素メッセージに出合うと、そのR入力経由で、設定し直す。このようなやり方で、ラッチ２７０２は画素の最初のx独立フィル優先度メッセージに出合った後で、終端画素に出会って設定し直されるまで、アサートされた状態を維持する。こうして、画素連の先端画素に結び付いたｘ従属フィル優先度メッセージに出合うと、STOREビット命令はアサートされる。
【０２５０】
ラッチ２７０２は、STOREビット命令が任意の画素連に対し一回だけアサートされることを確実にするために使われている。
【０２５１】
この第３実施態様においては、STOREとRESTOREビット命令の決定は、第１・第２実施態様のSTOREとRESTOREビット命令の決定とは異なっている。従って、最適化モジュール５５０によって後続する画素の処理中に第２実施態様に従って渡されたフィル優先度メッセージは、第１・第２実施態様とは異なることがある。
【０２５２】
最適化モジュール５５０のこの実施態様と一緒に使われる画素合成モジュール７００は、STOREビット命令に応じてスタックの格納ができるよう修正されている。特に中間値レジスタ２３１０は、スタックのコピーがこれらのレジスタに格納できるように、何セットものレジスタに置き換えられている。
【０２５３】
画素合成モジュール７００は、STOREビット命令をアサートされたカラー合成メッセージを受け取ると（フィル優先度メッセージから導かれた）、合成スタックの状態をレジスタセット内に格納する。画素連の終点までの後続画素毎に、スタックは、任意の合成演算が実行される前に、その格納状態に初期設定されている。こうして、スタック格納命令前の演算は、後続する画素に対しては実行される必要がない。
【０２５４】
もし、ラッチ２７０２がアサートされ、レジスタ２５２４が最低のアクティブレベルに等しければ、そのような最適化は不可能である。この場合、その画素連に対するすべての寄与演算は、連の後続画素毎に川下のモジュールに送られる。
【０２５５】
今度は図３２Aと３２Bに転じ、連の先端画素に対するフィル優先度メッセージの典型的なオリジナルシーケンスと最適化モジュール５５０によって第３実施態様に従って最適化された後続画素に対するフィル優先度メッセージの最適化シーケンスの比較を示してある。この具体例では、連(図３２A)の先端画素に対するフィル優先度メッセージは、STOREビット命令を除いて、図３０Aに示したそれらのものと同一であることに注目されたい。
【０２５６】
今度は図３２Aに転じ、連の先端画素のフィル優先度メッセージ３２０１〜３２０８は、最適化モジュール５５０に送られ、それによって、最劣後から最優先の順で渡される。即ち、フィル優先度メッセージ３２０１〜３２０８は、最適化モジュール５５０に送られ、それによって、３２０１、３２０２、３２０３、３２０４、３２０５、３２０６、３２０７、３２０８の順で渡される。このようにして、最初に出会う、x従属でその他ではない、フィル優先度メッセージに対し、STOREビット命令がアサートされるのが理解される。したがって、STOREビットはフィルメッセージ３２０７に対しアサートされる。RESTOREビットは連の先端画素と結び付いたすべてのフィルメッセージ３２０１から３２０８に対して非アサートされる。
【０２５７】
図３２Bに転じて、連の先端画素に後続する各画素の処理中に最適化モジュール５５０によって渡されるフィル優先度メッセージを示す。第１に、連の先端画素のフィル優先度メッセージを送り出した後のレジスタ２５２４（図２５）はフィル優先度メッセージ３２０７のレベルインデクスを内蔵していることに注意されたい。従って、シフトレジスタ２５３２の出力は、連内後続画素に対するフィル優先度メッセージが、これらのフィル優先度メッセージのインデクスがレジスタ２５２４に格納されているインデクスより大きいか等しいときにのみ送り出し可能になる。このようにして、この具体例において最適化モジュール５５０は、連内後続画素に対し、フィル優先度メッセージ３２０７〜３２０８のみを渡す。最適化モジュール５５０は、この命令のレベルインデクスがレジスタ２５２４（図２７）内に格納されているレベルインデクスと等しいので、RESTOREビットフィル優先度メッセージ３２０７の命令もアサートする。連の先端画素に後続する画素に結び付いているすべてのフィル優先度メッセージに対し、STOREビットの命令は非アサートされる。
【０２５８】
画素合成モジュール７００のこの実施態様と結合して使われる実施は、第１・第２実施態様と結合して使われる画素合成モジュール７００とは異なることに注意されたい。後者においては、RESTOREビット命令を内蔵しているカラー合成メッセージ（フィル優先度メッセージから導かれた）は、画素合成モジュール７００の中間値レジスタ２３１０の内容をスタック３８に取り出し、それから次のカラー合成メッセージの合成演算の実行に進む。他方、最適化モジュール７００の第３実施態様と結合して使われる画素合成モジュール７００は、レジスタセット内のスタック状態をスタック３８に取り出し、次に現在のカラー合成メッセージと結び付いている合成演算を実行する。
【０２５９】
このような方法で、一群のX独立合成合成結果のカラーと不透明度の演算結果は完成し、連の先端画素処理中に、画素合成モジュール内のレジスタに格納し、連の後続する画素の処理中に使用するため取り出すことができる。
【０２６０】
４.４  最適化モジュールの第４実施態様
最適化モジュール５５０の第４実施態様は、x独立カラーの結合演算のシーケンスが一回の演算で最適化できるように、フィル優先度メッセージ内の結合的な合成演算を判定する。幾つかのレジスタが、一つの演算のストリーム内で、x独立演算の幾つかの連が最適化できるように、画素合成モジュール内の中間データを格納するために使用可能である。この実施態様では、x従属演算の存在は、最適化可能演算セットが縮小されるとしても、すべての演算が結合的であることはなく、シーケンス内のすべての演算が最適化可能であるためには同一に違いないので、後続する演算の最適化を妨げない。にもかかわらず、Porter & DuffのOVER演算は結合的であり、透明演算が支持されているシステムにおいては、OVERはもっとも普通に見られる演算である。
【０２６１】
もし、或る演算が(AopB)opC = Aop(BopC)のように結合的であれば、そのような演算が実行されるシーケンスは、x独立な演算を最初に実行するように変更可能である。一つ以上のx独立な演算シーケンスの演算結果は、その場合、後続する画素内で使用されるレジスタに格納することができる。そのような任意の連に対して、結合演算子は数多くあるとしてもそれらは一般的に混合できないので、演算子は同一でなければならない。最適化可能であるためには、結合演算の連は完全な部分式でなければならない、従ってそれは始めと同じようなスタック深度をもって終わるはずである。
【０２６２】
ここでASS_OPと表示する、或る特定の結合演算子を識別するために、比較が使われ、アルファとカラー演算子の可能な組合せのリストから選ばれている。ASS_OP演算はハードワイヤードされていてもレジスタ内に格納されていてもよいが、ソフトウエアドライバにどちらの演算子を使うかの判定を可能にする。
【０２６３】
今度は図２８に転じ、第４実施態様に従った、最適化モジュール５５０のブロック図を示す。最適化モジュール５５０は、入力として優先度決定モジュール５００によって順次送られたメッセージを受け取り、それらを入力シフトレジスタ２８１０に一度に一つづつ格納する。これらのメッセージは先端画素、フィル優先度、終端画素、繰り返しメッセージなどを含むことができる。図２８には、例として入力シフトレジスタ２８１０に格納されたフィル優先度メッセージを示す。最適化モジュール５５０は、これらのメッセージも、入力・出力レジスタ２８１０と２８４８がクロックサイクル順に同一メッセージを内蔵するような方法で、出力シフトレジスタ２８４８に渡す。出力レジスタ２８４８は、フィル優先度メッセージでないメッセージのすべてと、フィル優先度メッセージの幾つかのみを、追って説明するように、フィル決定モジュール６００に出力する。出力シフトレジスタ２８４８から出力されたそれらのフィル優先度メッセージは、STORE、RESTORE、ACC_ENと呼ぶ、三つのビットを付加することにより修正される。図２８は、出力レジスタ２８３６に格納された、そのような修正されたフィル優先度メッセージの例を示している。STORE、RESTORE、ACC_ENビットは非アサートされた状態で初期設定されている。
【０２６４】
これまでに説明したように、フィル優先度メッセージは、フィル決定モジュール６００内でフィルインデクスとフィルタイプを対応するカラーと不透明度値に置き換えることによって、カラー合成メッセージに変換される。これらのSTORE、RESTORE、ACC_ENビットを含むカラー合成メッセージは次に、図２３Bに示す画素合成モジュール７００に送られる。
【０２６５】
図２８に戻って、最適化モジュール５５０は、入力レジスタ２８１０に格納されているメッセージが先端画素メッセージ、終端画素メッセージ、或いはフィル優先度メッセージのどれかを判定する、デコーダ２８１４を含んでいる。デコーダ２８１４はそれらに対応する２進信号START_OF_PIXEL、END_OF_PIXEL、FILL_PRTYを出力する。メッセージがフィル優先度メッセージであれば、デコーダ２８１４は、そのフィル優先度メッセージが画素連の先端画素に結び付いているかもまた判定し、２進信号FIRST_PIXELを出力する。デコーダ２８１４は、フィル優先度メッセージ内に内蔵されている優先度レベルインデクスも判定し、そのインデクスを表すデータLEVEL_INDXを出力する。
【０２６６】
最適化モジュール５５０は更に、フィル優先度メッセージ内に内蔵されたスタック演算のタイプをデコードするための、入力レジスタ２８１０に連結したデコーダ２８０２を一部として含んでいる。具体的には、デコーダ２８０２は、フィル優先度メッセージ内に内蔵されているスタック動作がNO_POP_DESTかPOP_SRCスタック動作のどちらかを判定する。
【０２６７】
デコーダ２８０２はカウンタ２８０４に繋がっており、スタック動作がNO_POP_DESTかPOP_SRCスタック動作のどちらかであると、カウンタ２８０４に知らせる。カウンタ２８０４は、デコーダ２８１４（示されていない）から受け取るSTART_OF_PIXEL信号に対応し、１に初期設定されている。そこで、カウンタ２８０４は、入力レジスタ２８１０に格納された後続するフィル優先度メッセージ内の、各NO_POP_DESTスタック動作に対して増分され、各POP_SRCスタック動作に対して減分される。カウンタ２８０４の現在値は、現在のフィル優先度メッセージの判定されたスタック演算を実行する結果生成される、画素合成モジュール７００内のスタック３８のスタック深度を決定する。カウンタ２８０４は、現在のフィル優先度メッセージのスタック演算が実際に実行される前に、現在のフィル優先度メッセージと結び付いたスタック演算から結果する、スタック３８の深度を予測することに注目することが重要である。カウンタ２８０４はこれを、フィル優先度メッセージ内のスタック動作によって生成されたスタック深度の走行中カウントを維持することによって行う。
カウンタ２８０４の出力は比較器２８１２の第１入力と繋がっている。比較器２８１２の他の入力は、所定のスタック深度の値R１を格納するレジスタ２８１４に繋がっている。カウンタ２８０４は、シフトレジスタ２８１０を通して入力されたフィル優先メッセージのシーケンスに対応して、予測されたスタック深度を増減分し、比較器２８１２は予測されるスタック深度が何時R１と等しくなるかを判定する。スタック深度がR１と等しくなると、比較器２８１２はANDゲート２８１６の第１入力とANDゲート２８２４の第１入力をアサートする。
【０２６８】
最適化モジュールは、一つの入力がシフトレジスタ２８１０に繋がり、もう一つがレジスタ２８１８に繋がって、現在シフトレジスタ２８１０に内蔵されているフィル優先度メッセージの現在のcolor_opとalpha_op演算を、レジスタ２８１８に格納されているcolor_opとalpha_op演算ASS_OPと比較するための比較器を内部に含んでいる。それらが同一であれば、比較器２８２０はANDゲート２８２２の第１入力をアサートする。
【０２６９】
ANDゲート２８２２は二つの入力、比較器２８２０の出力に繋がっている第１入力、シフトレジスタ２８１０に繋がっている第２入力を有する。シフトレジスタ２８１０は、この第２入力に、現在レジスタ２８１０に格納されているフィル優先度メッセージはx独立か否かを指示する２進信号を出力する。この結果、ANDゲート２８２２は、現在シフトレジスタ２８１０に格納されているフィル優先度メッセージのcolor_opとalpha_op演算がASS_OPと同一で、かつフィル優先度メッセージがx独立であるときにアサートされる。ANDゲート２８２２の出力は、ANDゲート２８３４の第１１入力とANDゲート２８２４の第２入力に繋がっている。
【０２７０】
ANDゲート２８２４は二つの入力を有している。これまで説明してきたように、第１は比較器２８１２の出力に繋がっており、第２入力はANDゲート２８２４の出力と繋がっている。こうして、ANDゲート２８２２は、現在シフトレジスタ２８１０に格納されているフィル優先度メッセージのcolor_opとalpha_op演算がASS_OPと同一で、かつ、フィル優先度メッセージがx独立で、予測されたスタック深度がR１に等しいときアサートされる。ANDゲート２８２４の出力はRSラッチ２８３０のS入力とORゲート２８２６の第１入力に繋がっている。
【０２７１】
RSラッチ２８３０のR入力は、終端画素メッセージEND_OF_PIXELを出力する、デコーダ２８１４のその出力に繋がっている。こうして、ラッチ２８３０は各終端画素で設定し直され、最適化モジュール５５０が、次の画素に対して、color_opとalpha_op演算がASS_OPと同一で、かつ予測されたスタック深度がR１に等しい、x独立のフィル優先度メッセージと最初に出合うと設定される。ラッチ２８３０のQ出力はANDゲート２８４０の第１入力に繋がり、ラッチ２８３０のQ出力はORゲート２８２８の第１出力に繋がっている。
【０２７２】
最適化モジュール５５０は、シフトレジスタ２８１０に繋がる、合成演算が真正プッシュ演算か否かを判定するための、更なる比較器２８２１を含んでいる。具体的には、比較器２８２１は、
[STACK_OP = NO_POP_DEST
&&COLOR_OP = LCO_COPYPEN
&&LAO_USE_SOUTD = SET
&&LAO_USE_SROPD = SET]
か否かを判定し、これがそれに該当すればORゲート２８２６の第２入力にアサートする。
【０２７３】
ORゲート２８２６は二つの入力を有し、その第１入力はANDゲート２８２４の出力に、第２入力は比較器２８２１に繋がっている。最適化モジュール５５０は更に、二つの入力、一つはラッチ２８３０のQ出力に繋がり、他方の入力はORゲート２８２６の出力に繋がった、ORゲート２８２８から成っている。ORゲート２８２８の出力は更なるラッチ２８３２の逆S入力に繋がっている。RSラッチ２８３２のR入力は、終端画素メッセージEND_OF_PIXELを出力するデコーダ２８１４のその出力に繋がっている。
【０２７４】
こうして、ラッチ２８３２のQ出力は、スタック深度R１を有する結合的、x独立のフィル優先度メッセージシーケンスに最初に出会うまで強制的にアサートされ、次に、予測されたスタック深度R１と結び付いた最初の非結合的、x従属のフィル優先度メッセージに出会うと非アサートされる。
【０２７５】
ラッチ２８３２のQ出力は、ANDゲート２８３４の第２入力に繋がっており、その出力は今度はANDゲート２８１６の第２入力に繋がっている。
【０２７６】
このようなやり方でSTOREビットは、もし
(１)  入力と出力レジスタ２８１０と２８４８内のメッセージが画素連の先端画素と結び付いたフィル優先度メッセージであるとき、
(２)  そのメッセージが予測されたスタック深度R１を有しているとき、
(３)  そのメッセージが、x独立で、ASS_OPのそれと同一のcolor_opとalpha_op演算を有する、フィル優先度メッセージシーケンスの一つであるとき、命令がアサートされる。しかしながら、唯一の例外として、そのシーケンスが、そのシーケンス内の最初のフィル優先度メッセージに続いて、メッセージに演算子STACK_OP = NO_POP_DEST && COLOR_OP = LCO_COPYPEN && LAO_USE_SOUTD = SET && LAO_USE_SROPD = SETを有する、フィル優先度メッセージを含むことがある。この特別なフィル優先度メッセージは、ソース値の純粋なスタックプッシュを生成する演算子の結合からなり、STOREビットをアサートされたフィル優先度メッセージのシーケンス内に含まれていることがある。そのシーケンスは、スタック深度に関係なく、x従属な値又は非結合的な演算子を有するフィル優先度メッセージに出合うと終わる。
【０２７７】
今度は図２８に戻り、RSラッチ２８３０のQ出力は、ANDゲート２８４０に繋がっている。ANDゲート２８４０は二つの入力を備えており、他方の入力は２進信号FIRST_PIXELを出力するデコーダ２８１４のその出力に繋がっている。従って、ANDゲート２８４０とACC_ENN命令ビットは、フィル優先度メッセージが、画素連の先端画素に結び付いた、結合演算子ASS_OPと予測されたスタック深度R１を有する、最初のx独立のフィル優先度メッセージであるときにアサートされる。後続するフィル優先度メッセージの連が終わると、ラッチ２８３０は、x従属フィル優先度メッセージに出会うか又は非結合的演算子に出会うかのどちらかの理由で使用不能化され、その結果ACC_EN命令ビットが非アサートされる。
【０２７８】
最適化モジュール５５０は更に、デコーダ２８１４のLEVEL_INDX出力に繋がったデータライン、ANDゲート２８４０の出力に繋がった書き込み可能ライン、ANDゲート２８３８に繋がった設定し直しラインを備えたレジスタ２８５２からも成っている。ANDゲート２８３８は、それぞれSTART_OF_PIXELとFIRST_PIXELメッセージを出力する、デコーダ２８１４の出力に繋がる二つの入力を備えている。デコーダ２８１４がSTART_OF_PIXELメッセージとそれに続くFIRST_PIXELメッセージに出合うと、ANDゲート２８３８はアサートされ、レジスタ２８５２は空白に設定される。ANDゲート２８４０がアサートされると、現在シフトレジスタ２８１０に格納されているフィル優先度メッセージのレベルインデクスは、レジスタ２８５２に格納される。このような方法で、レジスタ２８５２は、結合演算子ASS_OPと予測されたスタック深度R１を有する、画素連の先端画素に結び付いた最初のx独立フィルメッセージのレベルインデクスを内蔵する。即ち、レジスタ２８５２は、STOREビット命令をアサートされたシーケンス内の最初のフィル優先度メッセージのレベルインデクスを内蔵している。
【０２７９】
最適化モジュール５５０は更に、デコーダ２８１４のLEVEL_INDX出力に繋がったデータライン、ANDゲート２８３６の出力に繋がった書き込み可能ライン、ANDゲート２８３８に繋がった設定し直しラインを備えたレジスタ２８３７からも成っている。デコーダ２８１４が START_OF_PIXELメッセージとそれに続くFIRST_PIXELメッセージに出合うと、ANDゲート２８３８はアサートされ、レジスタ２８３７は空白に設定される。ANDゲート２８３６がアサートされると、現在シフトレジスタ２８１０に格納されているフィル優先度メッセージのレベルインデクスは、レジスタ２８３７に格納される。このような方法で、レジスタ２８３７は、STOREビット命令をアサートされたシーケンス内の最後のフィル優先度メッセージのレベルインデクスを内蔵している。ANDゲート２８３８はデコーダ２８１４のFIRST_PIXEL出力とANDゲート２８１６の出力の二つの入力を備えている。
【０２８０】
最適化モジュール５５０は更に、比較器２８４４をもまた含んでいる。比較器２８４４はレベルレジスタ２８３７に繋がった一入力とLEVEL_INDX信号を出力するデコーダ２８１４の出力に繋がるもう一つの入力を備えている。その比較器は、現在シフトレジスタ２８１０に格納されているフィル優先度メッセージのレベルインデクスLEVEL_INDXと、現在レジスタ２８３７に格納されているレベルインデクスを比較する。これらのレベルインデクスが同一であれば、比較器２８４４はANDゲート２８５０の第１入力をアサートする。ANDゲート２８５０の第２（逆数の）入力は、デコーダ２８１４のFIRST_PIXEL出力である。ANDゲート２８５０の出力はレジスタ２８４８のRESTOREビットをアサートする。こうして、RESTOREビットは、現在ビットが画素連の先端画素でなく、比較器２８４４の出力がアサートされているときアサートされる。
【０２８１】
最適化モジュール５５０はそのうえ、比較器２８４２を含んでいる。比較器２８４２は、現在シフトレジスタ２８１０に格納されている、フィル優先度メッセージのLEVEL_INDXを出力する、出力デコーダ２８１４に繋がる一つの入力を備えている。比較器２８４２は、レジスタ２８５２に繋がるもう一つの入力をもまた備えている。比較器２８４２は、現在シフトレジスタ２８１０に格納されているフィル優先度メッセージのレベルインデクスLEVEL_INDXと、現在レジスタ２８５２に格納されているレベルインデクスを比較する。現在、シフトレジスタ２８１０に格納されているフィル優先度メッセージのレベルインデクスが、レジスタ２８５２に格納されているレベルインデクスより小さいか等しければ、比較器２８４２はORゲート２８５４をアサートする。
【０２８２】
最適化モジュール５５０はそのうえ更に、比較器２８４６を有する。比較器２８４６は現在シフトレジスタ２８１０に格納されている、フィル優先度メッセージのLEVEL_INDXを出力する、出力デコーダ２８１４に繋がる一つの入力を備えている。比較器２８４６はレジスタ２８３７に繋がるもう一つの入力をもまた備えている。比較器２８４６は、現在シフトレジスタ２８１０に格納されているフィル優先度メッセージのレベルインデクスLEVEL_INDXと、現在レジスタ２８３７に格納されているレベルインデクスを比較する。現在、シフトレジスタ２８１０に格納されているフィル優先度メッセージのレベルインデクスが、レジスタ２８３７に格納されているレベルインデクスより大きいか等しければ、比較器２８４６はORゲート２８５４をアサートする。
【０２８３】
ORゲート２８５４は四つの入力、FILL_PRTY２進信号を出力するデコーダ２８１４の出力に向けた第１の逆数入力と、比較器２８４２、２８４４、２８４６にそれぞれ繋がっている第２、第３、第４の入力から成る。ORゲート２８５４の目的は、出力シフトレジスタ２８４８に内蔵されたメッセージの出力を可能にすることである。このような方法で、レジスタ２８３７に格納されたレベルインデクスより大きいか等しいレベルインデクス、又はレジスタ２８５２に格納されたレベルインデクスより小さいか等しいレベルインデクスを有する、連の先端画素に後続する画素のすべてのフィル優先度メッセージは出力が可能になる。出力可能になったフィル優先度メッセージは、フィル決定モジュール６００に渡される。出力可能になっていない残りのフィル優先度メッセージは、どれもフィル決定モジュール６００に渡されない。そしてまた、フィル優先度メッセージでないものも、フィル決定モジュール６００に渡すことが可能になる。
【０２８４】
今度は、第４実施態様に従った、最適化モジュール５５０の動作説明を行う。最初のフィル優先度メッセージが、x独立結合演算を有する連の先端画素に出合うと、画素合成モジュール７００（図２３B）の積算器２３２０は使用可能になり、カラー値をロードされる。もし、後続するレベルがx独立で結合演算を内蔵していれば、その演算は積算値上に、主スタック３８上と併せて実行される。積算値は、もしスタック深度が最初の結合演算のオリジナルスタック深度と同一であれば、画素合成モジュール７００（図２３B）の積算器２３２０内の一時レジスタに格納される。
【０２８５】
連が終わると、x従属フィルデータに出会うか、非結合演算に出会うかのどちらか理由で、画素合成モジュール７００（図２３B）の積算メカニズム２３２０は使用禁止される。最後に格納された積算値は、後続する画素上、最後に格納されたレベルと画素の始端間の演算を置き換えるために使用可能である。こうして、後続する画素について、フィルカラー決定モジュール６００のためにフィル優先度メッセージを生成するとき、積算器２３２０からこの値を復元する命令が、最適化の済んだ命令のシーケンスに代わって使用される。この復元命令はカラー合成メッセージに含めてあり、画素合成モジュール７００（図２３B）に渡され、そこで、復元された値は、デコーダによって識別された結合演算を使用して画素に合成される。
【０２８６】
結合演算子はそのコードからか、又は優先度決定モジュール５００内の各レベルにフラグを加えそのレベルの結合演算子の存在を指示することにより、識別することができる。第２のオプションは、優先度決定テーブルを構築するとき、ソフトウエアプログラムに結合演算子の連を識別するための柔軟性を与え、ソフトウエアが最適化されつつあるオブジェクト群がばらばらであることを識別できるという条件付きながら、異なる演算の最適化を可能にする。
【０２８７】
複雑性が増す犠牲を伴うが、各画素について数個の連の結合演算を格納することはできる。それは単に、各連に対し中間値を格納するための十分なレジスタを備えることと、各連が識別されたとき、その中に積算データを格納するレジスタを判定することができるように、増分されるカウンタを備える問題である。現実の世界においては、しかし、これは余分のハードウエアコストをかけるに値するほど頻繁に要求されることは少ない。
【０２８８】
次に図３３Aと３３Bに転じ、画素連の先端画素に対するフィル優先度メッセージの典型的オリジナルシーケンスと、最適化モジュール５５０により第４実施態様に従って最適化された、後続する画素のフィル優先度メッセージの最適化されたシーケンスの比較を示す。
【０２８９】
図３３Aは、最適化モジュール５５０により、隣接するエッジ間の画素連の先端画素に対して出力された、フィル優先度メッセージ３３０１〜３３０８の典型的シーケンスを示している。優先度決定モジュール５００によって生成された、画素連の各画素に対するフィル優先度メッセージのシーケンスと、最適化モジュール５５０に送られたそれとは、同一であると分かることが重要である。
【０２９０】
最適化モジュール５５０は、連の先端画素に対するフィル優先度メッセージのすべてをフィル決定モジュール６００に渡す。加えて、それは三つの追加ビット、STORE、ACC＿EN、RESTOREを付加する。連の先端画素の処理中に、最適化モジュール５５０は、もしそのメッセージが、結合的ASS_OP演算子を有するx独立のフィル優先度メッセージで、スタック深度R１（この例では１に設定されている）と結び付いているメッセージシーケンスの一つであれば、STOREビットをアサートする。そのシーケンスは、x従属値又は非結合値を有するフィル優先度メッセージに出合うと終わる。しかし、唯一の特別な例外において、そのシーケンスは、シーケンス内の最初のフィル優先度メッセージに続くフィル優先度メッセージに、演算子STACK_OP = NO_POP_DEST&&COLOR_OP = LCO_COPYPEN&&LAO_USE_SOUTD = SET&&LAO_USE_SROPD = SETを有するメッセージを含むことがある。この特別なフィル優先度メッセージは、ソース値の純粋なスタックプッシュを生成し、STOREビットアサートされているフィル優先度メッセージのシーケンス内に含まれている、演算子の結合から成っている。
【０２９１】
今度は図３３Aに転じ、連の先端画素に対するフィル優先度メッセージ３３０１〜３３０８は最適化モジュール５５０に送られ、それによって最劣後から最優先の順に渡される。即ち、フィル優先度メッセージ３３０１〜３３０８は最適化モジュール５５０に送られ、それによって３３０１、３３０２、３３０３、３３０４、３３０５、３３０６、３３０７、３３０８の順で渡される。こうして、カウンタ２８０４はフィル優先度メッセージ３３０１〜３３０８のそれぞれに対し、１、１、１、１、２、２、１、１のカウントを有していることが分る。そしてまた、フィル優先度メッセージ３３０２〜３３０７はX独立であり、フィル優先度メッセージ３３０２〜３３０４、３３０６、３３０７は結合的ASS_OPである。こうして、STOREビットアサートされているフィル優先度メッセージのシーケンスは３３０２〜３３０４、３３０７となる。フィル優先度メッセージ３３０５は特別例外のフィル優先度メッセージであり、優先度メッセージ３３０６は結合的ASS_OPであるとしても、フィル優先度メッセージ３３０５、３３０６はそれらに２のスタック深度を有し、それ故にそれらのSTORE命令ビットをアサートされないことに注目されたい。そのうえ、STOREビットをアサートされたフィル優先度メッセージのシーケンスは、x従属なフィル優先度メッセージ３３０８で終わる。更にまた、ACC_ENビット命令は、STOREビット命令をアサートされた（即ち３３０２）シーケンス内の最初のフィル優先度メッセージに対してアサートされ、連の先端画素に結び付いている残りのフィル優先度メッセージに対して続くことも分る。RESTOREビットは連の先端画素に結び付いている３３０１〜３３０８のすべてのフィルメッセージに対し非アサートされる。
【０２９２】
図３３Bに転じ、最適化モジュール５５０によって連の先端画素に後続する各画素の処理中に渡されたフィル優先度メッセージを示す。先ず、レジスタ２８５２（図２８）は、連の先端画素のフィル優先度メッセージを送り出した後、フィル優先度メッセージ３３０２のレベルインデクスを内蔵していることに注目されたい。そしてまた、レジスタ２８３７（図２８）は、連の先端画素のフィル優先度メッセージを送り出した後、フィル優先度メッセージ３３０７のレベルインデクスを内蔵していることに注目されたい。従って、シフトレジスタ２８４８の出力は、これらのフィル優先度メッセージがレジスタ２８３７に格納されたインデクスより大きいか等しいインデクスを有するときか、又はレジスタ２８５２内に格納されたインデクスより小さいか等しいインデクスを有するときにのみ、連の後続する画素に対するフィル優先度メッセージの送り出しを可能にされる。こうして、この特例における最適化モジュール５５０は、連の後続する画素に対し、フィル優先度メッセージ３３０１、３３０７、３３０８だけを渡すことになる。最適化モジュール５５０は同様に、この命令のレベルインデクスがレジスタ２８３７（図２８）内に格納されたレベルインデクスと等しいときに、フィル優先度メッセージ３３０７のRESTOREビット命令をアサートする。STOREビット命令は、連の先端画素に後続する画素に結び付いているすべてのフィル優先度メッセージに対し、非アサートされる。
【０２９３】
最適化モジュール５５０は、STORE、ACC_EN、RESTOREビットのみをマニュピレートし、フィル優先度メッセージの他のフィールドは変更なしのままにすることに注目されたい。
【０２９４】
これらのフィル優先度メッセージ３３０１、３３０７、３３０８は、最適化モジュール５５０によって、連の先端画素の各後続画素に対して、フィル決定モジュール６００に渡される。フィル決定モジュールは、これらの優先度メッセージを、対応するカラー合成メッセージに変換し、画素合成モジュール７００に送る。
【０２９５】
こうして、X独立な合成演算群の合成結果のカラーと不透明度は完成され、連の先端画素の処理中に格納され、連内後続画素の処理中に取り出される。
【０２９６】
４.５  最適化モジュールの第５実施態様
第５の実施態様に従った最適化モジュール５５０は、ツリー式（即ち、宛先がツリーのブランチに繰り返されていない）として記載できる演算に関係している。この状況において、画素合成モジュール（図２３A）は、レジスタにX独立なツリーの一ブランチの演算結果を格納し、後続画素については、ブランチをレジスタから復元するように適合させてある。ツリーノードの一ブランチのX従属データの存在は、他のブランチの最適化のきっかけとなる。もし、或るノードの両ブランチがX独立であるときは、ツリーのさらに上位置によりよい最適化が得られ、もし或るノードの両ブランチがX従属であれば、そのノード上では最適化は得られないことに注目されたい。
【０２９７】
もし、或る画素連の画像記述がツリー表現式で書き表せれば、ツリーのブランチがX独立である場合、そのブランチは一度計算され、この演算結果をその連内後続画素についてのブランチに代えて使用することができる。より一般的には、PUSH演算と、これらの演算結果をプッシュ値と結合する、対応するPOR_SRC演算間のすべての演算が、もし：
・  X独立であり、かつ
・  プッシュ値を含まなければ
これらの演算は一度計算すれば、その演算結果を、連内後続画素についてこれらの演算をする代わりに使用することができる。そのようなシーケンスには、NO_POP_DEST、KEEP_SRC、POP_SRC演算もまた含めることができ、上記の二つの条件がオリジナルのプッシュ値に関して当てはまるならば、そのような任意のシーケンスは最適化により除去できることに注目されたい。
【０２９８】
今度は図２９に転じ、第５実施態様に従って、最適化モジュール５５０のブロック図を示してある。図示した最適化モジュール５５０はスタック深度Nに対するものである。ハードウエアは、一レベルにプッシュ値を含む演算はスタックの更に下位レベルのプッシュ値には影響しないので、可能なスタック深度毎に繰り返しを要求する。そのようなスタックの上位レベルでの演算は、従って、より下位レベルスタック深度でのX独立データの最適化を妨げない。
【０２９９】
最適化モジュール５５０は、入力として優先度決定モジュール５５０によって送られたメッセージを受け取り、それらを、前記の実施態様に関して説明した入力と出力のレジスタに対するやり方と同じように、入力と出力レジスタ２９１０と２９４８に格納する。出力シフトレジスタ２９１０から出力されたフィル優先度メッセージは、１系列のビットSTORE_０、STORE_１…、STORE_Nと１系列のビットRESTORE_０、RESTORE_１…、RESTORE_Nを付加することにより修正される。
【０３００】
図２９はそのような、出力シフトレジスタ２９４８に格納された、修正されたフィル優先度メッセージの例を示すSTORE_NとRESTORE_Nビットだけを図解してある。STORE_xとRESTORE_xビットは非アサートに初期設定されている。図２９に示した最適化モジュール５５０の回路はSTORE_xとRESTORE_xビットだけを修正してあることに注目されたい。図２９に示したと同じような繰り返し回路は、０からN-１間の他のすべてのxに対して、他の残っているSTORE_xとRESTORE_xビットすべてを修正するために含めることができる。
【０３０１】
STORE_xとRESTORE_xビット命令の目的は、第１・第２実施態様に関して前に説明したそれと似たようなものである。しかしながら、違いは、ツリー表現式のx独立ブランチは一度計算されれば、中間レジスタ２３１０（図２３A）にSTORE_xビット命令によって格納され、後続画素の処理中の合成演算に使うために、RESTORE_x命令ビットによって取り出されることである。
【０３０２】
今度は図２９に戻り、最適化モジュール５５０は、入力レジスタ２９１０に格納されているメッセージがstart_of_pixelか、end_of_pixelか、或いはまたフィル優先度メッセージかを判定し、それぞれの２進信号をSTART_OF_PIXEL、END_OF_PIXEL、FILL_PRTYに出力するデコーダ２９１４からもまた成っている。メッセージがフィル優先度メッセージであれば、デコーダ２９１４は、そのフィル優先度メッセージが画素連の先端画素に結び付いているかもまた判定し、２進信号FIRST_PIXELを出力し、そしてフィル優先度メッセージに内蔵されている優先度レベルインデクスを決め、そのインデクスを表すデータLEVEL_INDXを出力する。
【０３０３】
最適化モジュール５５０は、入力レジスタ２９１０内のフィル優先度メッセージに内蔵されているスタック演算のタイプをデコードするための、入力レジスタ２９１０に繋がったデコーダ２９０２を更に含んでいる。具体的には、デコーダ２９０２は、フィル優先度メッセージに内蔵されているスタック演算がNO_POP_DESTかPOP_SRCスタック演算のどちらかを判定する。
【０３０４】
デコーダ２９０２は、カウンタ２９０４に繋がっており、スタック演算がNO_POP_DESTかPOP_SRCスタック演算のどちらかであるときそのカウンタに知らせる。カウンタ２９０４は、デコーダ２９１４（示されていない）から受け取るSTART_OF_PIXEL信号に対応して１に初期設定されている。カウンタ２９０４は、各NO_POP_DESTスタック演算に対して増分され、入力レジスタ２９１０内に格納されている、後続フィル優先度メッセージ内の各POP_SRCスタック演算に対して減分される。カウンタ２９０４の現在値は、現在のフィル優先度メッセージの決定されたスタック演算を実行する結果生成される、画素合成モジュール７００内のスタック３８のスタック深度を判定する。カウンタ２９０４は、現在のフィル優先度メッセージのスタック演算が実際に実行される前に、現在のフィル優先度メッセージに結び付いたスタック演算の結果生じるスタック３８の深度を予測することに注目することが重要である。カウンタ２９０４は、これを、そのフィル優先度メッセージのスタック演算の走行カウントを維持することにより行う。
【０３０５】
カウンタ２９０４は、カウンタ２９０４があらかじめ決定されたスタック深度Nに対し増減分するとき、つまり予測スタック深度がNであるときを検知する比較器２９１２に繋がっている。比較器２９１２の出力はANDゲート２９１８の第１入力に繋がっているが、それについては以下に論ずる。カウンタ２９０４は、予測スタック深度がNより大きいときを検知する比較器２９１６にもまた繋がっている。
【０３０６】
比較器２９１２は、カウントがNに等しいと検知すると、ANDゲート２９０６の第１入力にアサートする。さらに、デコーダ２９０２は、スタック演算がPOP_SRCスタック演算であると検知すると、ANDゲート２９０６の第２入力にアサートする。こうして、ANDゲート２９０６は、カウント= Nでかつスタック演算がPOP_SRCのときアサートされる。
【０３０７】
最適化モジュールは更にRSラッチ２９０８もまた含み、それはEND_OF_PIXEL信号（デコーダ２９１４によって取得される）によりR入力経由で設定し直され、S入力経由でANDゲート２９０６によって設定される。こうして、RSラッチ２９０８のQ出力は、Nがスタック深度Nに増分されるまで、常に非アサートされる。RSラッチ２９０８のQ出力はANDゲート２９１８の逆数第２入力に繋がっている。
【０３０８】
最適化モジュール５５０は、入力レジスタ２９１０のフィル優先度メッセージの合成演算が表現ツリーの有効なブランチであるブランチに所属しているか否かを判定する、デコーダ２９２０からもなる。それはこれを２進信号INVOLVES_PUSHEDを生成することにより行う。ここに
（STACK_OP = NO_POP_DEST）&& (COLOR_OP = LCO_COPYPEN)、
又は
（STACK_OP = STD_OP）、
又は
（STACK_OP = POP_SRC）に対し、
INVOLVES_PUSHED = FALSE (ゼロ) である。
【０３０９】
２進信号INVOLVES_PUSHEDが偽(ゼロ)であれば、そのブランチは有効なブランチであり、従って最適化に適し、そうでなければそのブランチは無効で最適化には適しない。
【０３１０】
デコーダ２９２０は、ANDゲート２９２２の第１入力に繋がっており、そこへINVOLVES_PUSHED信号を供給する。更に、比較器２９１６はANDゲート２９２２の逆数第２入力に繋がっている。こうして、ANDゲート２９２２はINVOLVED_PUSHEDが真でカウント＜= Nであるときアサートされる。ANDゲート２９２２の出力はANDゲート２９２４の逆数第１入力に繋がっている。更に、ANDゲート２９２４はシフトレジスタ２９１０に繋がった第２入力を備えている。ANDゲート２９２４は入力レジスタに格納されているフィル優先度メッセージがx独立でかつ次の条件が真でない：INVOLVED_PUSHED = TRUE、かつカウント ＜= Nのとき、アサートされる。ANDゲートの出力はANDゲート２９１８の第３入力に繋がっている。
【０３１１】
最適化回路５５０は設定し直し入力Rと逆数設定S入力を有するRSラッチ２９２８からもまた成っている。RSラッチ２９２８はR入力経由でORゲート２９２６によって設定し直され、逆S入力経由で、ANDゲート２９２４によって設定される。ORゲート２９２６の第１入力は比較器２９１２の出力に繋がっており、ORゲート２９２６の第２入力はデコーダ２９１４に繋がっている。ORゲート２９２６は入力レジスタ２９１０に格納されたメッセージがend_of_pixelメッセージかカウント = Nのどちらかであればアサートされる。従って、ラッチ２９２８はフィル優先度メッセージがx従属でかつINVOLVED_PUSHED = TRUEでカウント ＜= Nであるとき、設定される。ラッチ２９２８のQ出力は、ANDゲート２９１８の第４入力に繋がっている。更に、ANDゲート２９１８はデコーダ２９１４に繋がった(示されていない)第５入力を有し、そこでは２進信号FIRST_PIXELがその第５入力に送られる。
【０３１２】
このようなやり方で、最適化モジュール５５０は、もし、
(１)  入力と出力レジスタ２９１０と２９４８内のメッセージが画素連の先端画素と結び付いたフィル優先度メッセージであり、
(２)  カウンタ２９０４が現在カウントNを有し、従って予測されたスタック３８の深度がNであり、
(３)  (a)レジスタ２９１０と２９４８のフィル優先度メッセージが、画素メッセージの終り以来、これまでに出会った最初のフィル優先度メッセージがX独立であり、又はもしそうでなければ
（ｂ）  前記最初のx独立なフィル優先度メッセージ以来、これまでに処理されたフィル優先度メッセージのすべてがX独立であり、かつ
(４)  格納されたフィル優先度メッセージが有効なブランチの一部であれば（即ち、INVOLVES_PUSHED=FALSE）、このSTORE_Nビット命令をアサートする。
【０３１３】
最適化モジュール５５０は、ANDゲート２９１８に繋がった第１入力と、FIRST_PIXEL信号を出力するデコーダ２９１４の出力に繋がった第２入力を備えた、ANDゲート２９３０からも成る。ANDゲート２９３０は、シフトレジスタ２９１０と２９４８に内蔵されたメッセージが画素連の先端画素のフィル優先度メッセージであり、かつそのフィル優先度メッセージに結び付いたSTORE_Nビット命令がアサートされているとき、アサートされる。
【０３１４】
最適化モジュール５５０は更に、LEVEL_INDXデータを出力するデコーダ２９１４のその出力に繋がったデータ入力ラインと、ANDゲート２９３０の出力に結び付いた書き込み可能ラインと、ANDゲート２９５０に繋がった設定し直しラインを備えたレジスタ２９３２からも成る。ANDゲート２９５０はそれぞれSTART_OF_PIXELとFIRST_PIXELメッセージを出力するデコーダ２９１４の出力部に繋がった二つの入力を備えている。デコーダ２９１４がSTART_OF_PIXELと後続するFIRST_PIXELメッセージに出合うと、ANDゲート２９５０はアサートされ、レジスタ２９３２はNullに設定される。更に、レジスタ２９３２は、ANDゲート２９３０がアサートされると、シフトレジスタ２９１０と２９４８に格納されたフィル優先度メッセージのLEVEL_INDXデータを格納する。こうして、レジスタ２９３２は、以前の何時でも、そのSTORE_Nビット命令をアサートされた、最後のフィル優先度メッセージのLEVEL_INDXを格納している。
【０３１５】
最適化モジュール５５０は、ANDゲート２９２４に繋がった第１入力を備えたANDゲート２９２７と比較器２９１２に繋がった第２入力からも成る。ANDゲート２９２７はSTORE_Nビット命令がアサートされているとき、アサートされる。
【０３１６】
最適化モジュール５５０は更に、LEVEL_INDXデータを出力するデコーダ２９１４のその出力部に繋がったデータ入力を備えたレジスタ２９３４からも成る。レジスタ２９３４は、ANDゲート２９５０のその出力にも繋がっており、START_OF_PIXEL信号と後続のFIRST_PIXEL信号に出合うと、レジスタ２９３４をNullに設定し直す。レジスタ２９３４はANDゲート２９２７がアサートされると、現在出力されたLEVEL_INDXデータを格納する。このようなやり方で、レジスタ２９３４は最初のSTORE BIT命令ビットをアサートされた連内最初のその画素のフィル優先度メッセージのLEVEL_INDXデータを格納する。つまり、レジスタ２９３２はそのSTORE_Nビットをアサートされた最後のフィル優先度メッセージのレベルインデクスを格納するのに対し、レジスタ２９３４は、連の先端画素に対し、そのSTORE_Nビットをアサートされた最初のフィル優先度メッセージのレベルインデクスを格納する。
【０３１７】
最適化モジュール５５０は更に、比較器２９３６からも成る。比較器２９３６は、レベルレジスタ２９３２と繋がった一入力とLEVEL_INDX信号を出力するデコーダ２９１４のその出力に繋がったもう一つの入力から成っている。比較器はシフトレジスタ２９１０に現在格納されているレベルインデクスLEVEL_INDXとレジスタ２９３２に現在格納されているレベルインデクスを比較する。これらのレベルインデクスが同じであれば比較器２９３６はANDゲート２９５０の第１入力のアサートを行う。
【０３１８】
ANDゲート２９５０は、デコーダ２９１４のその出力と繋がった、FIRST_PIXEL信号を出力する第２の逆数入力もまた備えている。こうして、ANDゲート２９５０は、RESTORE_Nビット命令を、レジスタ２９３２内に現在格納されているレベルインデクスと同じレベルインデクスを有する、画素連の先端画素に後続するそのフィル優先度メッセージに対しアサートする。
【０３１９】
最適化モジュール５５０は更に、比較器２９３８からも成る。比較器２９３８は、シフトレジスタ２９１０内に現在格納されているフィル優先度メッセージのLEVEL_INDXを出力する、出力デコーダ２９１４と繋がった一つの入力から成っている。比較器２９３８はレジスタ２９３２に繋がったもう一つの入力からも成る。比較器２９３８は、シフトレジスタ２９１０に現在格納されているフィル優先度メッセージのレベルインデクスLEVEL_INDXと、レジスタ２９３２内に現在格納されているレベルインデクスを比較する。シフトレジスタ２９１０に現在格納されているフィル優先度メッセージのレベルインデクスがレジスタ２９３２内に現在格納されているレベルインデクスより大きいか等しければ、比較器２９３６は、ORゲート２９４６をアサートし、それは今度はORゲート２９５２をアサートする。
【０３２０】
最適化モジュール５５０はそのうえ更に比較器２９４０からも成る。比較器２９４０はシフトレジスタ２９１０内に現在格納されているフィル優先度メッセージのLEVEL_INDXを出力する、出力デコーダ２９１４と繋がった一つの入力を含んでいる。比較器２９４０はレジスタ２９３４に繋がったもう一つの入力からも成る。比較器２９４０は、シフトレジスタ２９１０に現在格納されているフィル優先度メッセージのレベルインデクスLEVEL_INDXと、ラッチ２９３４内に現在格納されているレベルインデクスを比較する。シフトレジスタ２９１０に現在格納されているフィル優先度メッセージのレベルインデクスがレジスタ２９３４内に現在格納されているレベルインデクスより小さいか等しければ、比較器２９３６は、ORゲート２９４６をアサートし、それは今度はORゲート２９５２をアサートする。
【０３２１】
ORゲート２９５２は三つの入力、ORゲート２９４６と繋がった第１入力、FIRST_PIXEL信号を出力するデコーダ２９１４の出力と繋がった第２の入力、FILL_PRTY信号を出力するデコーダ２９１４の出力と繋がった第３の逆数入力から成る。ORゲート２９５２の目的は、出力レジスタ２９４８に内蔵されているメッセージの出力を可能にすることである。このような方法で、レジスタ２９３２内に格納されたレベルインデクスより大きいか等しいレベルインデクスを有するか、又はレジスタ２９３４に格納されたレベルインデクスより小さいか等しいレベルインデクスを有する、連の先端画素に後続するすべてのフィル優先度メッセージは出力を可能とされる。出力可能となったフィル優先度メッセージはフィル決定モジュール６００に渡される。出力可能になっていない残されたフィル優先度メッセージはフィル決定モジュール６００に渡されない。そのうえ、フィル優先度メッセージでないものもフィル決定モジュール６００に渡すことが可能になる。
【０３２２】
今度は、第５実施態様に従った最適化モジュールの動作について説明する。先端画素に対するフィル優先度メッセージが処理されると、カウンタ２９０４はスタック深度を監視するために使われ、比較器２９１２はスタック深度がNに等しいと出力可能になる。スタック演算と画像演算はデコーダ２９２０によってスタック演算がプッシュ値（つまり、INVOLVES_PUSHED=FALSE）を含むかどうかを判定するためデコードされる。結果として生じるSTORE_Nビット命令は、スタック深度がNより大きいと、スタック深度がNに戻るとき、より高いスタック深度でのX独立データが最適化から除かれるように不能化される。
【０３２３】
STORE_N信号はアサートされ始め、カラー値がx独立で、かつNより小さい予測スタック深度でのプッシュ値を含む演算に出会わなければアサートされ続ける。もし予測されたスタック深度がNを超えて増えれば格納は不能化されるが、上記のどちらの条件も生じなければ、再び格納可能化できる。そのうえ、STORE_N信号がアサートされ始めたときの優先度レベルはレジスタ２９３４に格納され、STORE_N信号が非アサートされているときの優先度レベルはレジスタ２９３２に格納される。
【０３２４】
STORE_N信号は、スタック３８の天辺の値を中間値レジスタ２３１０(図２３A参照)にレベルNで格納させる。この実施態様に従った中間値レジスタ２３１０は、スタック深度N毎に一つの入力から成っている。やがて明らかになるように、ある特定レベルのxに対するSTORE_X信号がないときはレジスタ２３１０のレベルxでの入力には何の値も格納されない。
【０３２５】
STORE_N信号は、そのレベルの格納された値の存在を指示するために、REG_N_USEDラッチ２９０８によってラッチされる。POP_SRCを有するフィル優先度メッセージが次にスタック深度=Nに出会うと、REG_N_USEDラッチ２９０８はレベルNに対するレジスタへの格納をSTORE_Nを不能化することにより不能化し、そしてPOP_SRC前の最後の値は上書きできなくなる。自身のSTORE_xビット命令をアサートされた最初のフィル優先度メッセージはレジスタ２９３４内のレベルデータの存在によって指示され、自身のSTORE_xビット命令をアサートされた最後のフィル優先度メッセージはレジスタ２９３２内のレベルデータの存在によって指示される。後続する画素に対しては、これらの最初と最後間のフィル優先度メッセージの演算結果は、レベルNで、中間値レジスタ２３１０内に格納された値に置き換えることができる。こうして、後続する画素の合成モジュールに対して合成命令を生成するとき、この値をレベルNに対して中間値レジスタ２３１０から復元する命令は、フィル優先度メッセージのシーケンスに代えて使用され、それらは最適化から除かれる。格納された値はカラー、不透明度、スタック演算が実行される前にスタック上にプッシュされる。
【０３２６】
今度は図３４Aと３４Bに転じ、画素連の先端画素に対するフィル優先度メッセージの典型的オリジナルシーケンスと、最適化モジュール５５０によって、第５実施態様に従って最適化された、後続画素に対するフィル優先度メッセージのシーケンスを示す。
【０３２７】
図３４Aは、隣接するエッジ間の画素連の先端画素に対して最適化モジュール５５０によって出力されたフィル優先度メッセージ３４０１〜３４１０の典型的シーケンスを示す。優先度決定モジュール５００によって生成された、画素連の各画素に対するフィル優先度メッセージのシーケンスと、最適化モジュール５５０に送られたそれとは同じものであることを認識することが重要である。
【０３２８】
最適化モジュール５５０は、画素連の先端画素に対するフィル優先度メッセージのすべてをフィル決定モジュール６００に渡す。更に、それは六つの追加ビットSTORE_０、STORE_１、STORE_２、とRESTORE_０、RESTORE_１、RESTORE_２（後の三つは図３４Aに、前の三つは図３４Bに示されていない）を付加する。STORE_０、STORE_１、STORE_２ビット命令はカウンタ２９０４がスタック深度をそれぞれ１、２、３と初期設定したの繰り返し回路に対応するものである。RESTORE_xビット命令に対しても同様である。
【０３２９】
連の先端画素の処理中に、最適化モジュールは上記のテスト条件に従ってSTORE_Nビットをアサートする。
【０３３０】
今度は図３４Aに転じ、連の先端画素のフィル優先度メッセージ３４０１〜３４１０は、最適化モジュール５５０に送られ、それによって、最劣後から最優先の順に渡される。つまり、フィル優先度メッセージ３４０１〜３４１０は、最適化モジュール５５０に送られ、それによって、３４０１、３４０２、３４０３、３４０４、３４０５、３４０６、３４０７、３４０８、３４０９、３４１０の順に渡される。
【０３３１】
最初に、初期設定されたスタック深度１とSTORE_０命令を検討する。カウンタ２９０４はこうして、フィル優先度メッセージ３４０１〜３４１０それぞれに対し、カウント１、１、１、２、２、２、３、２、１、１を有していることが確かめられる。そのうえ、フィル優先度メッセージ３４０１、３４０２は、フィル優先度メッセージがX独立フィル優先度メッセージの最初の連続した連であるという基準を満たしている。フィル優先度メッセージ３４０４〜３４０９は、そのスタック深度でx従属なフィル優先度メッセージが存在するため、前記のテスト条件を満たさないことに注目されたい。更に、フィルメッセージ３４０１〜３４０６と３４０８〜３４１０はINVOLVED_PUSHED=FALSEという基準を満たしていることが分る。従って、フィルメッセージ３４０１と３４０２に対するSTORE_０ビット命令（即ちスタック深度１）は、スタック深度１に対してアサートされる。同じ方法で、STORE_１ビット命令（スタック深度２）は、フィルメッセージ３４０４〜３４０６と３４０８に対してアサートされることが分る。そのうえ、STORE_２（即ちスタック深度３）は何もアサートされないことが分る。RESTORE_xビットは、連の先端画素に結び付いたフィルメッセージ３００１〜３００８に対し非アサートされるが、図３４Aには示されていない。
【０３３２】
これらの連の先端画素に結び付いたフィル優先度メッセージ３４０１〜３４１０は、フィル決定モジュール６００に渡され、カラー合成メッセージに変換され、次に画素合成モジュール７００に送られる。画素合成モジュール７００は、STORE_xビットをアサートされたカラー合成メッセージを受け取ると、スタック３８の天辺を、中間値レジスタ２３１０のレベルxへ、画素合成メッセージの合成演算完了後にコピーする。それぞれが同レベルのSTORE_xビットをアサートされたカラー合成メッセージのシーケンスを受け取った場合は、画素合成モジュール７００は中間値レジスタ内に格納された以前の値を、後続カラー合成メッセージと結び付いたスタック３８のコピーで上書きする。この具体例では、中間値レジスタ２３１０は、レベル１（スタック深度１に対応する）に、フィル優先度メッセージ３４０２に結び付いた合成演算の完了後に結果として生じる、スタック３８の天辺のコピーを内蔵している。中間値レジスタ２３１０は、レベル２（スタック深度２に対応）に、フィル優先度メッセージ３４０８に結び付いた合成演算の完了後に結果として生じる、スタック３８の天辺のコピーもまた内蔵している。
【０３３３】
今度は図３４Bに転じ、連の先端画素に後続する各画素の処理中に最適化モジュール５５０によって渡されるフィル優先度メッセージを示す。先ず、レジスタ２９３２（図２９）は後続画素処理中に、そのストアビットをアサートされた連内最後のフィル優先度メッセージ３４０２のレベルインデクスを内蔵していることに注目されたい。そしてまた、レジスタ２９３４（図２９）は、後続画素処理中に、そのストアビットをアサートされた連内最初のフィル優先度メッセージ３４０２のレベルインデクスを内蔵していることに注目されたい。従って、シフトレジスタ２９４８の出力は、これらのフィル優先度メッセージのインデクスが、レジスタ２９３２と２９３４に格納されているレベルインデクスの中間かそれに等しいインデクスレベルを有しているときにのみ、連内後続画素のフィル優先度メッセージの送り出しを可能化される。こうして、最適化モジュール５５０は、この具体例においては、連内後続画素に対して、フィル優先度メッセージ３４０２、３４０３、３４０８〜３４１０のみを渡すことになる。最適化モジュール５５０は、このフィル優先度メッセージのレベルインデクスがレジスタ２９３２（図２９）に格納されているレベルインデクスと等しいので、フィル優先度メッセージ３４０２のRESTORE_０ビット命令もまたアサートする。同じ方法で、最適化モジュール５５０は、フィル優先度メッセージ３４０８のRESTORE_１ビット命令もまたアサートする。
【０３３４】
STORE_xビット命令は、連の先端画素に後続する画素と結び付いたすべてのフィル優先度メッセージに対して非アサートされる。最適化モジュール５５０は、フィル優先度メッセージのSTORE_xとRESTORE_xビットだけをマニュピレートし、フィル優先度メッセージの他のフィールドは変更無しのままにしておくことに注目されたい。
【０３３５】
これらのフィル優先度メッセージ３４０２、３４０３、３４０８、３４０９、３４１０は、最適化モジュール５５０によって、連の先端画素に後続する各画素に対し、フィル決定モジュール６００に渡される。フィル決定はこれらのフィル優先度メッセージを対応するカラー合成メッセージに変換し、次に画素合成モジュール７００に送る。画素合成モジュール７００は、RESTORE_xビットをアサートされたカラー合成メッセージ（例３４０２）を受け取ると、中間値レジスタ２３１０にそのレベルxで格納されたそのカラーと不透明度値をスタックの天辺にコピーする。画素合成モジュール７００は、次に、通常の方法で、フィル優先度メッセージ（例３４０３、３４０８、３４０９、３４１０）に対応するカラー合成メッセージに内蔵されている命令に従って進む。
【０３３６】
前記実施態様の更なる変形版において、装置は実施態様の機能を実行するモジュールとサブモジュールとして配置することができる。
【０３３７】
そのうえの更なる変形版としては、前記装置の二つ以上を結合することが可能である。
【０３３８】
そのまた更なる実施態様としては、最適化モジュール５５０は、優先度決定モジュール５００内に、結合テーブル３４からのフィル優先度メッセージの縮小セットを直接生成する目的を持って、組み込まれる。このような方法で、フィル優先度メッセージのスループットは減らされる。
【０３３９】
５.０  合成モジュール
合成モジュール７００は、優先度決定モジュール５００からフィルカラー決定モジュール６００経由で自身に渡されたカラー合成メッセージを受け取り、color_opとそのメッセージのアルファフィールドに指定されたカラーと不透明度演算と、そのメッセージのスタック演算フィールド内に指定されたスタック演算を実行する。
【０３４０】
合成モジュール７００は、最適化されたシーケンスの中間結果格納のために使用されるレジスタを含み、最適化回路５５０によって発信されるメッセージに従って、これらのレジスタに格納・復元されるメッセージを受け入れることが好ましい。
【０３４１】
第１実施態様に従った最適化モジュール５５０は、図２３Aに示したように、画素合成モジュール７００と一緒に使われる。この場合、STOREビットを設定されたカラー合成メッセージは、合成モジュール７００（図２３A）に、カラー合成メッセージ内に指定されたカラー、不透明度、及びスタック演算を実行する前に、スタック３８の天辺の値をレジスタ２３１０に格納させる。逆に、RESTOREビットを設定されたカラー合成メッセージに出合うと、このレジスタ２３１０内の値は、カラー合成メッセージ内に指定されたカラー、不透明度、及びスタック演算を実行する前に、レジスタ２３１０からスタック３８の天辺へコピーされる。第２実施態様に従った最適化モジュール５５０は、図２３Aに示したように、画素合成モジュール７００と一緒にもまた使用され、同様なやり方で動作する。
【０３４２】
第３実施態様に従った最適化モジュール５５０は、図２３Aに示したように、一つの修正を加えて、画素合成モジュール７００と一緒に使用される。この修正において、画素合成モジュール７００は、一レジスタ２３１０に代わるレジスタのセットから成る。この場合、STORE命令ビットをアサートされたカラー合成メッセージは、合成モジュール７００に、カラー合成メッセージ内に指定されたカラー、不透明度、スタック演算を実行する前に、スタック３８の状態をレジスタのセットへ格納させる。逆に、RESTORE命令ビットをアサートされたカラー合成メッセージに出合うと、スタック３８は、カラー合成メッセージ内に指定されたカラー、不透明度、スタック演算を実行する前に、これらのレジスタセットに格納されていた元の状態に戻される。
【０３４３】
第４実施態様に従った最適化モジュール５５０は、図２３Bに示したように、画素合成モジュール７００と一緒に使用される。この場合、結合演算の存在は、スタック自身の上のカラー合成メッセージ内に指定されたカラー、不透明度、スタック演算の実行に加えて、積算器２３２０上のこの演算の実行のきっかけとなる。もしSTOREビットをアサートされたカラー合成メッセージに出合うと、積算器の値は積算器２３２０の一時レジスタに格納される。逆に、RESTOREビットをアサートされたカラー合成メッセージに出合うと、一時レジスタ２３２０内の値は現在の宛先値と合成され、カラー合成メッセージ内に指定されたカラー、不透明度、スタック演算はその後で実行される。多数の一時レジスタを使用する場合は、格納・復元されるレジスタのインデクスは、カラー合成メッセージ内に含めることができる。
【０３４４】
第５実施態様に従った最適化モジュール５５０は、図２３Aに示したように、幾つかの修正を加えて、画素合成モジュール７００と一緒に使用される。レジスタ２３１０は、異なる優先度でのカラーと不透明度値のリストを格納するために適合される。この場合、優先度決定モジュール５００から生成されたカラー合成メッセージは、使用されるレジスタ２３１０のxレベルに対応するSTORE_xビットを含んでいる。STORE_xビットをアサートされたカラー合成メッセージは、スタック３８の天辺の値を、カラー合成メッセージ内に指定されたカラー、不透明度、スタック演算が実行された後で、カラー合成メッセージ内に指定されたレベルxでレジスタ２３１０に格納させる。RESTORE_Xビットをアサートされたカラー合成メッセージは、その格納された値を、カラー合成メッセージ内に指定されたカラー、不透明度、スタック演算が実行された後で、スタックの天辺にプッシュさせる。
【０３４５】
これらの最適化のそれぞれは、画素単位で実行しなければならない幾つかのカラー合成メッセージを、スタックの値又は状態を復元するために、単一のカラー合成メッセージに置き換える（平均して）。こうして、各画素に同じ合成演算の実行を要求する画素連に出合うと、これらの最適化は、実行しなければならない画素当たりの処理量を縮小し、合成する画素をより少ない演算回数で行うことを、平均して、可能にすることになる。最適化の方法の選択は主に、或る特定のシステム設計に許容できる複雑さの程度に左右される。
【０３４６】
当業者にはこれらの最適化法のどれも、この発明の原理から逸脱しないで、画素順次描画装置の実施態様をソフトウエアにより行うことができることが明白であろう。
【０３４７】
これまでに説明した、コンピュータシステム１によって実施される本発明の好ましい処理法は、特定の制御の流れから成っている。本実施態様には、本発明の精神或いは範囲から逸脱することなく、異なる制御の流れを使用するその他多くの変形版がある。更に、好ましい実施態様のステップの一つ以上は、順次ではなく並行的に実行することも可能である。
【産業上の利用可能性】
【０３４８】
上記から、説明した実施態様はコンピュータグラフィクスと印刷業への応用が可能であることは明らかである。
【０３４９】
これまでの説明は、本発明の幾つかの実施態様を説明しただけに過ぎず、それに対する修正および又は変更は本発明の精神と範囲から逸脱することなくでき、本実施態様は説明を目的としたものであって限定するものではない。
【図面の簡単な説明】
【０３５０】
【図１】好ましい実施態様を組み込んだコンピュータシステムを表す概略ブロック図である。
【図２】好ましい実施態様の機能データの流れを示すブロック図である。
【図３】好ましい実施態様の画素順次描画装置と結び付いたディスプレイリストと一時ストアを示す概略ブロック図である。
【図４】図３のエッジ処理モジュールの概略機能表現図である。
【図５】図３の優先度決定モジュールの概略機能表現図である。
【図６】図３のフィルカラー決定モジュールの概略機能表現図である。
【図７Ａ】ソースと宛先間の画素組み合わせの図解である。
【図７Ｂ】ソースと宛先間の画素組み合わせの図解である。
【図７Ｃ】ソースと宛先間の画素組み合わせの図解である。
【図８Ａ】好ましい実施態様の動作説明のための一例として使用された二つのオブジェクト画像の図解である。
【図８Ｂ】図８Ａに示した二つのオブジェクト画像の幾つかのエッジレコードの表である。
【図９Ａ】図８Ａに示したオブジェクトのベクトルエッジの図解である。
【図９Ｂ】図８Ａに示したオブジェクトのベクトルエッジの図解である。
【図１０】図８Ａの画像の数本の走査線の描画図解である。
【図１１】図８Ａの画像のエッジレコードの配列の表現である。
【図１２Ａ】図４のエッジ処理モジュール４００によって生成されたアクティブエッジレコードのフォーマットの表現である。
【図１２Ｂ】図４のエッジ処理モジュール４００に使用されたエッジレコードの配列の表現である。
【図１２Ｃ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１２Ｄ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１２Ｅ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１２Ｆ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１２Ｇ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１２Ｈ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１２Ｉ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１２Ｊ】図８Ａの例に対する図４の配列で実行されるエッジ更新ルーチンの図解である。
【図１３Ａ】偶数奇数と非ゼロ巻上げフィルルールの図解である。
【図１３Ｂ】偶数奇数と非ゼロ巻上げフィルルールの図解である。
【図１４Ａ】ｘ座標の大きな変化がスピル条件にどう寄与するか、またそれらはどう処理されるかの図解である。
【図１４Ｂ】ｘ座標の大きな変化がスピル条件にどう寄与するか、またそれらはどう処理されるかの図解である。
【図１４Ｃ】ｘ座標の大きな変化がスピル条件にどう寄与するか、またそれらはどう処理されるかの図解である。
【図１４Ｄ】ｘ座標の大きな変化がスピル条件にどう寄与するか、またそれらはどう処理されるかの図解である。
【図１４Ｅ】ｘ座標の大きな変化がスピル条件にどう寄与するか、またそれらはどう処理されるかの図解である。
【図１５Ａ】図５の態様によって実行される優先度フィリイングルーチンの図解である。
【図１５Ｂ】図５の態様によって実行される優先度フィリイングルーチンの図解である。
【図１５Ｃ】図５の態様によって実行される優先度フィリイングルーチンの図解である。
【図１５Ｄ】図５の態様によって実行される優先度フィリイングルーチンの図解である。
【図１５Ｅ】図５の態様によって実行される優先度フィリイングルーチンの図解である。
【図１６Ａ】二つの先行技術によるエッジ記述フォーマットと、好ましい装置に使用されたそれとの比較を提供するものである。
【図１６Ｂ】二つの先行技術によるエッジ記述フォーマットと、好ましい装置に使用されたそれとの比較を提供するものである。
【図１６Ｃ】二つの先行技術によるエッジ記述フォーマットと、好ましい装置に使用されたそれとの比較を提供するものである。
【図１６Ｄ】二つの先行技術によるエッジ記述フォーマットと、好ましい装置に使用されたそれとの比較を提供するものである。
【図１７Ａ】表現ツリーとして図解された単純な合成式と対応する表現の例示である。
【図１７Ｂ】表現ツリーとして図解された単純な合成式と対応する表現の例示である。
【図１７Ｃ】表現ツリーの例示である。
【図１８】図３の優先度決定モジュールの優先度特性状態テーブルの表現である。
【図１９】数種のラスタ動作のテーブルである。
【図２０Ａ】主要な合成演算と対応するラスタ動作と不透明度フラグのテーブル例示である。
【図２０Ｂ】主要な合成演算と対応するラスタ動作と不透明度フラグのテーブル例示である。
【図２１】数種の合成演算結果の表現である。
【図２２Ａ】優先度決定モジュール５００によって生成された一系列のフィル優先度メッセージの例示である。
【図２２Ｂ】フィルカラー決定モジュール６００によって生成された一系列のカラー合成メッセージの例示である。
【図２３Ａ】図３の画素合成モジュールの一つの実施態様に従った機能表現の図解である。
【図２３Ｂ】図３の画素合成モジュールの別の実施態様に従った機能表現の図解である。
【図２４Ａ】図３の画素合成モジュール７００に各種スタック演算コマンドに対してスタック上で実行される演算の例示である。
【図２４Ｂ】図３の画素合成モジュール７００に各種スタック演算コマンドに対してスタック上で実行される演算の例示である。
【図２４Ｃ】図３の画素合成モジュール７００に各種スタック演算コマンドに対してスタック上で実行される演算の例示である。
【図２４Ｄ】図３の画素合成モジュール７００に各種スタック演算コマンドに対してスタック上で実行される演算の例示である。
【図２５】第１実施態様に従った最適化モジュール５５０のブロック図の例示である。
【図２６】第２実施態様に従った最適化モジュール５５０のブロック図の例示である。
【図２７】第３実施態様に従った最適化モジュール５５０のブロック図の例示である。
【図２８（ａ）】第４実施態様に従った最適化モジュール５５０のブロック図の例示である。
【図２８（ｂ）】第４実施態様に従った最適化モジュール５５０のブロック図の例示である。
【図２９（ａ）】第５実施態様に従った最適化モジュール５５０のブロック図の例示である。
【図２９（ｂ）】第５実施態様に従った最適化モジュール５５０のブロック図の例示である。
【図３０Ａ】第１実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３０Ｂ】第１実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３１Ａ】第２実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３１Ｂ】第２実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３２Ａ】第３実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３２Ｂ】第３実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３３Ａ】第４実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３３Ｂ】第４実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３４Ａ】第５実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図３４Ｂ】第５実施態様に従った、最適化モジュール５５０の先端画素に対するフィル優先度メッセージのオリジナルシーケンスと、後続画素に対するフィル優先度メッセージの最適シーケンスの比較である。
【図１】
2004318832.tif 000003
【図２】
2004318832.tif 000004
【図３】
2004318832.tif 000005
【図４】
2004318832.tif 000006
【図５】
2004318832.tif 000007
【図６】
2004318832.tif 000008
【図７Ａ】
2004318832.tif 000009
【図７Ｂ】
2004318832.tif 000010
【図７Ｃ】
2004318832.tif 000011
【図８Ａ】
2004318832.tif 000012
【図８Ｂ】
2004318832.tif 000013
【図９Ａ】
2004318832.tif 000014
【図９Ｂ】
2004318832.tif 000015
【図１０】
2004318832.tif 000016
【図１１】
2004318832.tif 000017
【図１２Ａ】
2004318832.tif 000018
【図１２Ｂ】
2004318832.tif 000019
【図１２Ｃ】
2004318832.tif 000020
【図１２Ｄ】
2004318832.tif 000021
【図１２Ｅ】
2004318832.tif 000022
【図１２Ｆ】
2004318832.tif 000023
【図１２Ｇ】
2004318832.tif 000024
【図１２Ｈ】
2004318832.tif 000025
【図１２Ｉ】
2004318832.tif 000026
【図１２Ｊ】
2004318832.tif 000027
【図１３Ａ】
2004318832.tif 000028
【図１３Ｂ】
2004318832.tif 000029
【図１４Ａ】
2004318832.tif 000030
【図１４Ｂ】
2004318832.tif 000031
【図１４Ｃ】
2004318832.tif 000032
【図１４Ｄ】
2004318832.tif 000033
【図１４Ｅ】
2004318832.tif 000034
【図１５Ａ】
2004318832.tif 000035
【図１５Ｂ】
2004318832.tif 000036
【図１５Ｃ】
2004318832.tif 000037
【図１５Ｄ】
2004318832.tif 000038
【図１５Ｅ】
2004318832.tif 000039
【図１６Ａ】
2004318832.tif 000040
【図１６Ｂ】
2004318832.tif 000041
【図１６Ｃ】
2004318832.tif 000042
【図１６Ｄ】
2004318832.tif 000043
【図１７Ａ】
2004318832.tif 000044
【図１７Ｂ】
2004318832.tif 000045
【図１７Ｃ】
2004318832.tif 000046
【図１８】
2004318832.tif 000047
【図１９】
2004318832.tif 000048
【図２０Ａ】
2004318832.tif 000049
【図２０Ｂ】
2004318832.tif 000050
【図２１】
2004318832.tif 000051
【図２２Ａ】
2004318832.tif 000052
【図２２Ｂ】
2004318832.tif 000053
【図２３Ａ】
2004318832.tif 000054
【図２３Ｂ】
2004318832.tif 000055
【図２４Ａ】
2004318832.tif 000056
【図２４Ｂ】
2004318832.tif 000057
【図２４Ｃ】
2004318832.tif 000058
【図２４Ｄ】
2004318832.tif 000059
【図２５】
2004318832.tif 000060
【図２６】
2004318832.tif 000061
【図２７】
2004318832.tif 000062
【図２８（ａ）】
2004318832.tif 000063
【図２８（ｂ）】
2004318832.tif 000064
【図２９（ａ）】
2004318832.tif 000065
【図２９（ｂ）】
2004318832.tif 000066
【図３０Ａ】
2004318832.tif 000067
【図３０Ｂ】
2004318832.tif 000068
【図３１Ａ】
2004318832.tif 000069
【図３１Ｂ】
2004318832.tif 000070
【図３２Ａ】
2004318832.tif 000071
【図３２Ｂ】
2004318832.tif 000072
【図３３Ａ】
2004318832.tif 000073
【図３３Ｂ】
2004318832.tif 000074
【図３４Ａ】
2004318832.tif 000075
【図３４Ｂ】
2004318832.tif 000076
【外国語明細書】
2. Title of the Invention
Reducing the Number of Compositing Operations Performed in a Pixel Sequential Rendering System
3. Detailed Description of Invention
2004318832.tif 000077
2004318832.tif 000078
2004318832.tif 000079
2004318832.tif 000080
2004318832.tif 000081
Detailed Description of the Preferred Embodiments
2004318832.tif 000082
2004318832.tif 000083
2004318832.tif 000084
2004318832.tif 000085
2004318832.tif 000086
2004318832.tif 000087
2004318832.tif 000088
2004318832.tif 000089
2004318832.tif 000090
2004318832.tif 000091
2004318832.tif 000092
2004318832.tif 000093
2004318832.tif 000094
2004318832.tif 000095
2004318832.tif 000096
2004318832.tif 000097
2004318832.tif 000098
2004318832.tif 000099
2004318832.tif 000100
2004318832.tif 000101
2004318832.tif 000102
2004318832.tif 000103
2004318832.tif 000104
2004318832.tif 000105
2004318832.tif 000106
2004318832.tif 000107
2004318832.tif 000108
2004318832.tif 000109
2004318832.tif 000110
2004318832.tif 000111
2004318832.tif 000112
2004318832.tif 000113
2004318832.tif 000114
2004318832.tif 000115
2004318832.tif 000116
2004318832.tif 000117
2004318832.tif 000118
2004318832.tif 000119
2004318832.tif 000120
2004318832.tif 000121
2004318832.tif 000122
2004318832.tif 000123
2004318832.tif 000124
2004318832.tif 000125
2004318832.tif 000126
2004318832.tif 000127
2004318832.tif 000128
2004318832.tif 000129
2004318832.tif 000130
2004318832.tif 000131
2004318832.tif 000132
2004318832.tif 000133
2004318832.tif 000134
2004318832.tif 000135
2004318832.tif 000136
2004318832.tif 000137
2004318832.tif 000138
2004318832.tif 000139
2004318832.tif 000140
2004318832.tif 000141
2004318832.tif 000142
2004318832.tif 000143
2004318832.tif 000144
2004318832.tif 000145
2004318832.tif 000146
2004318832.tif 000147
2004318832.tif 000148
2004318832.tif 000149
2004318832.tif 000150
2004318832.tif 000151
2004318832.tif 000152
2004318832.tif 000153
2004318832.tif 000154
2004318832.tif 000155
2004318832.tif 000156
2004318832.tif 000157
2004318832.tif 000158
2004318832.tif 000159
2004318832.tif 000160
2004318832.tif 000161
2004318832.tif 000162
2004318832.tif 000163
2004318832.tif 000164
2004318832.tif 000165
2004318832.tif 000166
2004318832.tif 000167
2004318832.tif 000168
2004318832.tif 000169
2004318832.tif 000170
4. Brief Description of the Drawings
2004318832.tif 000171
2004318832.tif 000172
2004318832.tif 000173
2004318832.tif 000174
1. What is claimed is
2004318832.tif 000175
2004318832.tif 000176
2004318832.tif 000177
2004318832.tif 000178
2004318832.tif 000179
2004318832.tif 000180
2004318832.tif 000181
abstract
2004318832.tif 000182
2004318832.tif 000183
2004318832.tif 000184
2004318832.tif 000185
2004318832.tif 000186
2004318832.tif 000187
2004318832.tif 000188
2004318832.tif 000189
2004318832.tif 000190
2004318832.tif 000191
2004318832.tif 000192
2004318832.tif 000193
2004318832.tif 000194
2004318832.tif 000195
2004318832.tif 000196
2004318832.tif 000197
2004318832.tif 000198
2004318832.tif 000199
2004318832.tif 000200
2004318832.tif 000201
2004318832.tif 000202
2004318832.tif 000203
2004318832.tif 000204
2004318832.tif 000205
2004318832.tif 000206
2004318832.tif 000207
2004318832.tif 000208
2004318832.tif 000209
2004318832.tif 000210
2004318832.tif 000211
2004318832.tif 000212
2004318832.tif 000213
2004318832.tif 000214
2004318832.tif 000215
2004318832.tif 000216
2004318832.tif 000217
2004318832.tif 000218
2004318832.tif 000219
2004318832.tif 000220
2004318832.tif 000221
2004318832.tif 000222
2004318832.tif 000223
2004318832.tif 000224
2004318832.tif 000225
2004318832.tif 000226
2004318832.tif 000227
2004318832.tif 000228
2004318832.tif 000229
2004318832.tif 000230
2004318832.tif 000231
2004318832.tif 000232
2004318832.tif 000233