JP2005516315A - オブジェクトグラフィックスの変化からの効率的な表示更新 - Google Patents

オブジェクトグラフィックスの変化からの効率的な表示更新 Download PDF

Info

Publication number
JP2005516315A
JP2005516315A JP2003564824A JP2003564824A JP2005516315A JP 2005516315 A JP2005516315 A JP 2005516315A JP 2003564824 A JP2003564824 A JP 2003564824A JP 2003564824 A JP2003564824 A JP 2003564824A JP 2005516315 A JP2005516315 A JP 2005516315A
Authority
JP
Japan
Prior art keywords
data
frame
fill
run
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003564824A
Other languages
English (en)
Other versions
JP4154336B2 (ja
JP2005516315A5 (ja
Inventor
ティモシー, メリック ロング,
ステファン, エドワード イーコブ,
スコット ブラッドリー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2005516315A publication Critical patent/JP2005516315A/ja
Publication of JP2005516315A5 publication Critical patent/JP2005516315A5/ja
Application granted granted Critical
Publication of JP4154336B2 publication Critical patent/JP4154336B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

オブジェクトグラフィックエレメント(1000,1020)から一連のラスター画像フレームを描画するための方法、装置及びプログラムが開示される。少なくとも一つの古いフィルラン(A1,A2,A3,A4)が第1のフレーム(A)を描画する間に保持される。保持されたフィルランは、後続のフレーム(b)のために要求される少なくとも一つの新しいフィルラン(B1,B2,B3,B4)と比較される。少なくとも一つの新しいフィルラン(B1,B4)に関して、新しいフィルランの少なくとも一部の画素データの生成が抑制され、第1のフレームから保持された画素が代わりに使用される。

Description

本特許明細書は著作権保護の対象となる内容を含む。著作権の所有者は、関連する特許庁のファイルからの本特許明細書或いは資料を検討を目的として複製することに異議を唱えるものではないが、他のいかなる場合にも全ての著作権を保有するものである。
技術分野
本発明はオブジェクトグラフィックエレメントをラスタピクセルイメージに描画する技術に関する。特に、オブジェクトグラフィックエレメントの変化が生じる場合の効率的なフレームストアの更新に関する。
大部分のオブジェクトベースのグラフィックシステムは、画素ベースイメージのページ或いは画面を保持するのに、フレームストア或いはページバッファを利用する。オブジェクトの外形が計算され、内部が満たされ、フレームストアに書き込まれる。2次元のグラフィックスのために、オブジェクトはイメージの特定のz−レベルで出現する。他のオブジェクトの前方に現れるオブジェクトは、単純に、背景となるオブジェクトの書き込みの後にフレームストアに書き込まれることにより、画素単位をベースとして背景オブジェクトを置き換えていく。これは、ペインターズアルゴリズム(Painter's Algorithm)として本技術分野において公知のものである。そのようなオブジェクトは、最も背景側のオブジェクトから前方側のオブジェクトへと優先順に考慮される。典型的には、各オブジェクトはスキャンライン順にラスタライズされ、画素は各スキャンラインに沿って順番にフレームストアに書き込まれる。
この技術の問題点は、ペイントされた(すなわち描画された)多くの画素が、後のオブジェクトによって重複してペイントされることである。従って、そのような、先のオブジェクトに関してなされた画素のペインティングは、時間とコンピューティングリソースの浪費の要因となる。
上述したような重複ペインティングの問題を解決する技術がある。一つの技術では、画素は、オブジェクト単位をベースとするのではなく、全体画像ベースでラスター順に生成される。各スキャンライン上で、当該スキャンラインに交差する全てのオブジェクトのエッジがそのスキャンライン内の交差の座標を増加させる順に保持される。これらの交差ポイント、即ちエッジ交差は、順番に考慮され、アクティブフラグの配列をトグルさせるのに使用される。スキャンライン上の注目の各オブジェクト優先度に対して一つのアクティブフラグがある。考慮されるエッジ対によってそれらの間の画素のスパン(範囲)が決定され、そのエッジ対の間に存在する各ピクセルのカラーデータがプライオリティエンコーダを用いて(或いは、ソフトウエアによって実現する場合はそれと等価なソフトウエアルーチンによって)生成される。プライオリティエンコーダはアクティブフラグに関して動作し、どのプライオリティが最高であるかを判断する。そして、そのプライオリティに関連するペイントを、2つのエッジの間のスパンの画素のために用いる。次のスキャンラインの準備において、各エッジの交差の座標が、各エッジの性質に従って更新される。例えば、単純な直線ベクトルに関して、次のスキャンラインの交差の座標を得るためにデルタx値が交差の現在の座標に加算される。この更新の結果ミス−ストアになる隣接エッジは互いに入れ替えられる。新しいスキャンライン上でスタートするオブジェクトの新しいエッジもまた、エッジのリストにマージされる。この技術は、その開発者によって、クイセルアルゴリズム(Quixel Algorithm)と呼ばれている。
クイセルアルゴリズムは、重複ペインティングがないという重要な利点を有する。更に、ハードウエアによる実施においては、オブジェクト優先度は、オーダーNタイムではなく(Nはプライオリティの数)、一定のオーダータイムで扱われる(典型的には1クロックサイクル)。ソフトウエアによる実施においてさえも、時折発生するデータ依存の例外、すなわちlogNタイムはあるが、プライオリティは典型的には一定時間で扱われ得る。これらの特性はクイセルアルゴリズムに、特に、重複するオブジェクトが存在する場合に、グラフィックオブジェクトのセットをラスタイメージへ変換するための周知のペインターズアルゴリズムに対して大きなスピードの利点を与える。
対話型のグラフィックシステムにおいては、CRTあるいはLCD画面のような表示に対してリフレッシュされるフレームストアを維持することは一般的である。そのようなシステムにおいて、表示上で表されるイメージは典型的には高フレームコヒーレンスを有する。すなわち、1つのフレームはその次のフレームと非常に似通っている。典型的には、ディスプレイ上のイメージに寄与するオブジェクトグラフィックエレメントの一部分の集合のみが連続するフレーム間において変化する。コンピュータ的に負荷の大きい、画素の描画作業に関して実行が必要な量を最小化するために、フレーム間の高いコヒーレンスの利点を用いるべく、多くの技術が開発された。
グラフィックオブジェクトの集合によってディスプレイをリフレッシュするのにペインターズアルゴリズムを用いる場合、これらの技術は、典型的には表示に寄与するオブジェクトグラフィックスにおいて生じた相違の監視を含む。バウンディングボックス或いはより複雑な境界の記述はその相違の比較により生成され得る。それによってディスプレイ領域を、グラフィックオブジェクトの変化に対して変化せずに残るエリアと、変化してリフレッシュが必要な領域とに区切る。そして、オブジェクトグラフィックエレメントが描画される。しかし、典型的には、リフレッシュ領域の完全に外にあるオブジェクトは、排除され、画素の生成はリフレッシュ領域内でのみ生じる。
この技術はディスプレイのリフレッシュ時間を大きく減少することができるが、依然としていくつかの不具合を有する。たとえば、一般に、大きなオブジェクトの小さい部分が変化することがある。実際に変化した領域を決定するためにオブジェクトの内部解析をすることはコンピュータにとって多大な負荷であり、そのため、過剰に大きなリフレッシュ領域が見積もられてしまう。更に、その大部分の画素に対して最終イメージにおいて変化のないオブジェクトグラフィックエレメントに変更が加えられることがある。例えば、大きな赤い矩形を数画素動かす場合、大部分の画素は赤いままである。繰り返すが、そのようなケースを検出するための全オブジェクトの内部解析はコンピュータにとって多大な負荷であり、過剰に大きなリフレッシュ領域が用いられる。同様な厄介な状況はよく起こることである。これらの技術は依然として、ペインターズアルゴリズムが有する、重複ペイントの非効率性という問題を抱えている。
説明はしなかったが、そのような技術は、重複ペイントの非効率性を軽減するために、クイゼルアルゴリズムに適用できる。しかし、それらはなお他の課題を有している。
本発明の目的は、既知の構成の1つ又は複数の欠点を実質的に解消或いは改善することにある。
本発明の第1の観点によって提供される方法は、オブジェクトグラフィック要素から一連のラスター画像フレームを描画する方法であって、少なくとも一つの古いフィルランが第1のフレームの描画の間に保持され、前記保持されたフィルランが後続のフレームのための少なくとも一つの新しいフィルランと比較され、少なくとも一つの新しいフィルランにおいて当該新しいフィルランの少なくとも部分に対する画素データの生成を抑制し、代わりに、前記第1のフレームから保持された画素を用いる。
また、好ましくは、前記保持されたフィルランの記述は順番付けられたリストに格納される。更に好ましくは、前記保持されたフィルランの記述の数は、第1のフレームの完全な再生に必要な数よりも少なく制限される。
本発明の第2の観点によれば、各々が複数の画素を有する複数のラスター画像のフレームを描画する方法であって、
(a)第1のフレームを描画し、該第1のフレームの画素のフィルランを記述する第1のデータを保持する工程と、
(b)前記第1のフレームの画素を更新するために第2のフレームを描画する工程とを有し、前記第2のフレームを描画する工程は、
(ba)前記第2のフレームの画素のフィルランを記述する第2のデータを決定する工程と、
(bb)前記第2のデータを前記第1のデータと比較する工程と、
(bc)前記比較の結果、異なる画素値であった場合に、前記第2のデータを用いて新しい画素を生成し、前記第1のフレームの画素を上書きする工程とを備える方法が提供される。
更に本発明の他の観点によれば、上述した方法のいずれかを実施するコンピュータプログラムが記録されたコンピュータ可読媒体を含むコンピュータプログラムプロダクトが提供される。
本発明の他の態様も開示されている。これらは画素のランを用いた最適化されたサーバ構成や、高速なレンダリングのためにそのような最適化されたデータをサーバから受信するように構成された遠隔デバイスを含む。
上述した目的は、好ましくは、クイセルアルゴリズムを改良することにより達成される。そのような改良は、第1のフレームの描画の間に、あるランの画素フィルのランの情報が保持される。そして、次のフレームの描画の間に、これらのランは、その新しいフレームを生成するのに用いられる新しい画素フィルのランの情報と比較される。その比較の結果が、既に描画されたフレームに存在するがそのスパンがその要求された値を既に有することを示す場合、これらのスパンの画素のフィル動作が回避される。また、画素フィルラン情報の新しいリストは後続のフレームに対して処理が繰り返されるように保持される。
1つ又はそれ以上の図面において同一の参照番号が付されたステップ及び/又は機構が参照されるが、それらのステップ及び/又は機構は、特に断りのない限り、本発明の目的に対して同一の機能或いは動作をするものでである。
図1は、従来技術における、上述のクイセルアルゴリズムに基づく描画装置100を示す。図1において、グラフィックオブジェクト記述102は、ディスプレイリストコンパイラモジュール110に入力される。ディスプレイリストコンパイラモジュール110は、個々のグラフィックオブジェクトを解釈し、描画を要求された個々のイメージの1つ又はそれ以上のディスプレイリスト112をコンパイルして格納する。典型的に、画像は表示可能なシーケンスを形成し、それにより、グラフィックオブジェクトシーンのアニメーションを表現する。表示可能なシーケンスが形成されると、各ディスプレイリスト122は、一連のフレームの1つを提供するために描画される。描画において、エッジ追跡モジュール120は、アクティブエッジのリスト122を決定するために、最初にディスプレイリスト112内の描画中のイメージを形成するオブジェクトを調べる。典型的には、エッジのアクティビティがラスタースキャン順に決定され、z−レベルアクティベーションモジュール130に提供される。z−レベルアクティベーションモジュール130は、各スキャンライン上で交差する各エッジについて、描画されたイメージにおける特定のスキャンライン上の、隣接するエッジ対の間のスパンにおいてアクティブなオブジェクトを決定する。これは、典型的に、テーブル132の補助を用いて決定される。テーブル132内のスパンに関るエントリに対して、オブジェクトはそれらの優先度或いはz−オーダーでランク付けされる。テーブル132における最高位の不透明オブジェクトが、z−オーダーに関して下位にあたる全てのオブジェクトを排除するために動作する。そして、そのオブジェクトは、高位オーダーの透明オブジェクトともに、そのスパンに関して、フィル生成モジュール140に出力される。モジュール140は、モジュール130から出力された各オブジェクトに関してフィルカラーを見出すためにテーブル142を調べる。合成モジュール150は、スパンを横切る種々のオブジェクトに対するフィル値から、実際の画素値を合成するべく動作する。そのスパンの画素値は、フレームストア160に出力される。次のスキャンラインへ移動する前に、描画はスキャンライン上の各スパンについてなされ、この処理は、フレームストアがディスプレイに出力される画素データのフレームで満たされるまで行われる。
図2は、本実施形態に従った処理210を含むように図1の構成が変更された状態の描画部200を示す。この好ましい実施形態を、本明細書では「シンクライアントイメージングエンジン(thin client imaging engine)」或いは「TCIE」と称する。図2において、ランカリングモジュール210と、それに関連して保持されたランリスト220が、描画処理におけるz−レベルアクティベーションモジュール130とフィル生成モジュール140の間に挿入される。定性的には、ランカリングモジュール210は図10に示される様式で動作する。以下、これを説明する。
図10は三角形1000により形成されるイメージを示す。三角形1000は三角形1020と部分的に重なり、重なった部分を覆っている。三角形1000はエッジ1002,1004及び1006によって形成され、三角形1020はエッジ1022,1024,1026によって形成される。図には、第1のフレームにおけるスキャンラインがAで示されている。このスキャンラインは、イメージの左周辺とエッジ1002の間のスパンA1、エッジ1002と1006の間のスパンA2、エッジ1006と1026の間のスパンA3、そしてエッジ1226とイメージの右周辺との間のスパンA4を有する。スパンA1〜A4の各々のラン長(ランレングス)は、注目しているスキャンラインとのそれぞれのエッジのX交差から数学的に決定されてもよい。
後続の第2のフレームにおいて、三角形1000は、エッジ1006を置き換える新たなエッジ1010によって、図10に示すように形状を変える。その結果として、エッジ1004の延長1008が現れる。第2のフレームにおける同一のスキャンラインをBとする。スキャンラインBは、左外周とエッジ1002の間のスパンB1、エッジ1002と1010の間のスパンB2、エッジ1010と1026の間のスパンB3、及びエッジ1026と右外周との間のスパンB4を有する。スパンB1〜B4の各々のランレングスは上述のようにして決定される。
ランカリングモジュール210は、まず最初のフレームに対して、スパンA1,A2,A3およびA4の種々の詳細をリスト220内に保持するべく動作する。次のフレームの同じスキャンラインを処理するときに、ランカリングモジュール210はフレームストア160内の当該スキャンラインの画素値を決めるのに用いられる。それらの画素値はスパンのあらゆる変化により変更されることが要求される。これはスパンB1,B2,B3およびB4とランリスト220に格納されたそれらとの比較を通じてなされる。スパンは好ましくはそれらが生成された順序、すなわちラスタ順で処理される。この例において、スパンB1はA1と比較される。これらは一致するので、スパンB1はイメージの変化に何等寄与せず、現在のレンダリングから破棄されることになる。一方、スパンA1はフレーム格納部160に格納されているためにそのまま表示され続け、次のフレームの処理のためにランリスト220に維持される。本説明において、スパンの破棄をカリングと称し、スパンの維持をコンスーミングと称する。
次に、スパンB2はスパンA2と比較される。これらは同じスタート位置を有するが、B2の方が長い。したがってA2はコンスーミングされ、A2に対応するB2の部分はカリングされる。そしてエッジ1006と1010の間のスパンを表す新たなスパンB21を生成する。次に、B21がA3と比較され、相違が見出される。したがって、B21はレンダリングのためにフィル生成モジュール140へ渡され、ランリスト220に格納される。A3はB21よりも長いので、リスト220におけるA3の表現は、エッジ1010と1026の間のスパンであるA31へと縮められる。
次に、スパンB3がスパンA31と比較される。これらは同じエンドポイントを有するので、B3はカリングされ、A31はコンスーミングされる。次にスパンB4がA4と比較される。これらは同一であるため、B4がカリングされ、A4はコンスーミングされる。
図10の例では、イメージの部分を形成するオブジェクトが変化したが、その変化はランカリングモジュール210によって解釈され、注目のスキャンラインの部分だけを実際にレンダリングするコトを必要とさせる。本例において、その部分は、エッジ1006と1010との間のスパンである。こうして、スキャンライン上の多数の画素にのためのフィル生成と合成を回避することができ、それによりレンダリングスピードの改善が図られる。
図1と図2の構成は、図3に示すような汎用コンピュータシステム300を用いて実現することができる。その場合、図1、図2に示したプロセスは、コンピュータ300内で稼動するアプリケーションプログラムのようなソフトウエアで実施することができる。特に、図1と図2の処理ステップは、コンピュータによって実行されるソフトウエアのインストラクションによって実現される。ソフトウエアは2つの別の部分に分けられる。一方の部分はレンダリング処理を実行し、他の部分は後者とユーザの間のユーザインターフェースを管理する。これらのパーツはさらにプロセスを実現するソフトウエアコードのモジュールと、上述した、或いは後述されるようなメソッドに分けられる。ソフトウエアは、コンピュータ可読媒体に格納され得る。コンピュータ可読媒体としては、たとえば、以下に説明する格納デバイスが含まれる。ソフトウエアは、コンピュータ可読媒体からコンピュータへロードされ、コンピュータによって実行される。そのようなソフトウエアあるいはコンピュータプログラムが記録されたコンピュータ可読媒体は、コンピュータプログラムプロダクトである。コンピュータにおけるそのコンピュータプロダクトの使用は、グラフィックオブジェクトの動画レンダリングのための有利な装置をもたらす。
コンピュータシステム300は、コンピュータモジュール301、キーボード302およびマウス303のような入力デバイスと、プリンタ315およびディスプレイデバイス314を含む出力デバイスを有する。変調−復調(モデム)トランシーバデバイス316は、通信ネットワーク320との間の通信のためのコンピュータモジュール301によって使用される。モデム316は、たとえば、電話回線321もしくは他の機能メディアを介して接続可能である。モデム316はインターネットおよびローカルエリアネットワーク(LAN)あるいはワイドエリアネットワーク(WAN)のような他のネットワークシステムへのアクセスを取得するのに用いることができる。この例において、ネットワーク320は移動電話のハンドセット350に接続する。ここで、このハンドセットは、画素ベースの比較的大きいディスプレイ画面352を有する。コンピュータモジュール301は、いくつかの実施形態において、ネットワーク320において動作可能なサーバコンピュータをあらわす。
コンピュータモジュール301は、典型的には、少なくとも1つのプロセッサユニット305、たとえば半導体ランダムアクセスメモリ(RAM)とリードオンリメモリ(ROM)で形成されたメモリユニット306、および入出力インターフェースを含む。入出力インターフェースは、ビデオインターフェース307や、キーボード302やマウス303、また、オプションとしてのジョイスティック(不図示)を含むI/Oインターフェース313や、モデム316のためのインターフェース308を含む。格納デバイス309が提供され、それは典型的にはハードディスクドライブ310とフロッピー(登録商標)ディスクドライブ311を含む。磁気テープドライブ(不図示)も利用可能である。典型的には、データの不揮発性ソースとしてCD−ROMドライブ312が提供される。コンピュータモジュール301の構成要素305〜313は、典型的には相互に接続されたパス304を介して、当業者には既知の、コンピュータシステム300の動作の一般的なモードで通信する。上述した構成を実現し得るコンピュータの例としては、IBM−PCコンパチブル、サンスパークステーション、あるいはそれらから展開されたコンピュータシステム等が挙げられる。
典型的には、アプリケーションプログラムは、ハードディスクドライブ310に常駐し、その実行時にプロセッサ305によって読まれ、制御される。プログラムの中間的な格納、およびネットワーク320からフェッチされたあらゆるデータの格納は、半導体メモリ306を用いて、場合によってはハードディスク310と共同して達成され得る。いくつかの例において、アプリケーションプログラムはCD−ROMあるいはフロッピー(登録商標)ディスクにエンコードされてユーザに提供され、対応するドライブ312あるいは311を介して読み取られる。あるいは、アプリケーションプログラムは、モデムデバイス316を介してネットワーク320からユーザによって読み取られてもよい。なお、ソフトウエアは、他のコンピュータ可読媒体からコンピュータシステム300へロードされ得る。そのようなコンピュータ可読媒体は、たとえば、磁気テープ、ROMあるいは集積回路、光磁気ディスク、コンピュータモジュール301と他のデバイスとの間の無線あるいは光/赤外線伝送チャンネル、PCMCIAのようなコンピュータ可読カード、インターネットやイントラネットのようなネットワークを含み、また、それによってEメール伝送およびウエブサイト等に記録された情報とが含まれる。上記は適切なコンピュータ可読媒体の好例に過ぎず、他のコンピュータ可読媒体も利用可能である。
あるいは、図1、図2の構成は、オブジェクトベースレンダリングの機能またはサブ機能を実行する1つまたは複数の集積回路のような専用のハードウエアで実現されてもよい。そのような専用のハードウエアはグラフィックプロセッサ、あるいは1つまたはそれ以上のマイクロプロセッサと関連するメモリを含むことができる。
図4は、シンクライアントイメージングエンジン(thin client imaging engine、TCIE)410を含む、レンダリングシステム400のデータフローを示す。TCIE410は、2つのメイン機能ユニットを有する。第1の機能ユニットは、ディスプレイリストコンパイラ420であり、第2の機能ユニットは、レンダリングエンジン430である。ディスプレイリストコンパイラ420は、複数の命令を収容するメモリ454、複数のオブジェクトを収容するメモリ456及び複数のフィルを収容するメモリ458に格納されたディスプレイオブジェクトデータをフェッチし解釈する。メモリ454,456,458はRAM306によって実現され、それらに格納されるコンテンツはホストプロセッサ450によって生成される。また、ホストプロセッサ450は、TCIE410との間でコントロールデータやステータスデータをやり取りする。
図5Aから図5Cは、図5Cにおいて表示されるオブジェクトの例を示し、そのコンポーネントエッジを図5Aに示し、図5Bにフィルスタイルを示す。オブジェクトは、2次元ディスプレイプリミティブである。それらは、複数のエッジリストによってメモリに記述され、各エッジリストは複数の座標によって記述される。座標は新たな描画位置と直線を記述する。新たな描画位置は、単一の座標で記述され、直線は座標のペアによって記述される。直線は線のスタートポイントとエンドポイントを定義する2つの座標を用いる。曲線は、2次のベジェ曲線を用いて実施することができ、この場合、第1の座標はベジェ曲線のスタートポイントを定義し、第2の座標は制御点を定義し、第3の座標はベジェ曲線のエンドポイントを定義する。エッジリストの座標は、一連の相対的ステップとして格納される。これは、格納に必要なメモリ量を低減し、また、エッジの方向を決定する。エッジリストは、集団によってある形状の外形を現す。オブジェクトは、それら自身の座標空間を有し、それゆえ、それらに独自の起点を有し、そこからエッジは相対的に描画される。図5Aにおいて、ポイント502は“家”オブジェクトの起点を表す。オブジェクトは常に2つの付加的な特別にマークされた境界座標を含む。それら2つの境界座標は他の座標とは異なり、オブジェクトの部分をどのように表示するかといったことを記述するものではなく、その中にすべての描画エッジを含むバウンディングボックス(境界箱)を示すものである。第1の境界座標は、バウンディングボックスの左上隅を特定し、第2の境界座標はバウンディングボックスの右下隅を定義する。
フィルは、オブジェクトのエッジリストの部分集合によって囲まれたディスプレイの部分をどのように色づけするかを記述するのに用いられるディスプレイプリミティブである。たとえば、基本フィルは赤のようなべた色を記述する。各エッジリストには2つのフィルが関連付けられている。第1のフィルはそのエッジリストの描画方向に対して左側に描かれ、第2のフィルはそのエッジリストの描画方向に対して右側に描かれる。フィルの主なスタイルは、単純色、複数色によって表現されるリニアブレンド(linear blend)、複数色によって表現されるラジアルブレンド(radial blend)、あるいはビットマップイメージである。これらのフィルスタイルのすべては、透明チャンネルをサポートする。なお、エッジがその左および右側の両方においてフィルを参照しない場合、フィル=0の値が用いられる。
図5A〜5Cにおいて、エッジ504は、左フィル=2、右フィル=0の直線エッジベクトルである。エッジ506は左フィル=3、右フィル=2の直線エッジベクトルである。エッジ508は左フィル=2、右フィル=1の直線エッジベクトルであり、エッジ510は左フィル=0、右フィル=1の直線エッジベクトルである。
図4に戻り、メモリ454に格納されたインストラクション(命令)は、メモリ456に格納されたオブジェクト462がいつ、どのように出力デバイス470に描画されるかを記述する。ディスプレイリストコンパイラ420は、命令によって指示されたとおりにオブジェクトのデータを処理し、この処理の結果をディスプレイリストデータ422として、レンダリングエンジン430による利用のためにメモリ440に配置する。レンダリングエンジン430は、ディスプレイリストデータ422を画素に変換する。画素は、フレームストア(例えば160)に送られる。フレームストア160は連続的に、CRTあるいはLCDのような物理的なディスプレイ470に関連してリフレッシュされる。
図6Aおよび図6Bは、システム400をより詳細に示す図であり、左側にディスプレイリストコンパイラ420の機能モジュールが、右側にレンダリングエンジン430が示している。角を丸めて示したボックスがメモリ手段を表すのに用いられている。図6Aの左側において、メモリ手段454,456,458はそれぞれ複数の命令460、オブジェクト462、フィル464を格納する。これらは図4に示したとおりである。
一つの実施形態において、機能モジュールは、パイプライン構成のハードウエアプロセスとして実施され、各モジュールは上流のモジュールからメッセージを受信するためのファーストインファーストアウト(FIFO)バッファを実現する。ハードウエア開発の当業者には、ハードウエアプロセスのパイプライン化により、連続的にそのような処理を通過するデータのスループットを最大にできるということは周知である。また、好ましい実施形態において、TCIE400は、図3のプロセッサ305のような、汎用プロセッサ上で動作するソフトウエアとして実施される。この場合、機能モジュールは、一つあるいは複数のスレッドにより実行されるプログラム機能として実施され、メッセージは、同期関数コールとして、あるいは共有メモリに関連するインタースレッド信号として実施されることになる。以下、ディスプレイデータが通過する順に従って各機能モジュールについて説明する。
図6A、図6Bにおいて、命令実行モジュール500は、ディスプレイオブジェクトデータをフェッチし、解析する役割を担う。モジュール500は、ホストプロセッサ450から直接命令を受信してもよいし、あるいは、ホストプロセッサ450の命令によりメモリ454から命令をフェッチしてもよい。TCIE410の具体的な実施形態で実行される命令のいくつかの例について、以下に説明する。
INST_PLACE_OBJECTは、TCIE410に対し、出力デバイス470上にオブジェクトを描画することを命令する。INST_PLACE_OBJECTのパラメータは、描画されるべきオブジェクトへの参照と、当該オブジェクトのディスプレイリスト上における所望の位置、スケールおよび向きを特定する変換マトリクスを含む。命令実行モジュール500が、INST_PLACE_OBJECTコマンドを実行するときは、参照されるオブジェクトのエッジをメモリ456からシーケンシャルに読み、エッジデータをそれらの関連する左右のフィルデータへの参照とともに変換モジュール502へ送る。命令実行モジュール500も、(INST_PLACE_OBJECTの)変換マトリクスパラメータをオブジェクトエッジと一緒に変換モジュール502へ送る。
INST_WRITE_FILLは、命令実行モジュール500に対し、グラフィックオブジェクトのためのフィルデータを格納するメモリ514内の定められた位置へフィルタデータ464を書き込むように指示する命令である。レンダリングエンジン430は、エンジン430がフレームストア160への画素のストリームを生成するときに、そのフィルデータ532を用いる。INST_PLACE_OBJECTが出力ディスプレイデバイス470にオブジェクトを配置するために実行されるとき、当該オブジェクトのエッジによって参照されるあらゆるフィルデータは、INST_WRITE_FILLへの事前のコールという手段によってあらかじめメモリ514へ書き込まれていなければならない。
しばしば、INST_PLACE_OBJECT命令は、出力ディスプレイデバイス470上に、オブジェクトをオーバーラップするように配置することがある。すなわち、これは、出力デバイス470のピクセルの部分集合が、グラフィカルオブジェクトに対するフィルデータを格納するメモリ514内の、複数のフィルデータ532によって決定される出力色を有するという状況を表す。このような場合が生じると、出力ディスプレイデバイス470上で観察されるときに、いくつかのオブジェクトが他のオブジェクトの前方あるいは後方に現れることが予想される。TCIE410は、z−レベルテーブル516,518を実施して、これを容易にする。ここで、各フィルデータ508は、z−レベルテーブル516,518内のz−レベル510に関連付けられているる。z−レベル510の各々には、固定の、ユニークな優先度が与えられ、z−レベルテーブルにおいて最低の優先度から最高の優先度へと並べられる。また、各z−レベル510は、当該z−レベル510の色を定義するフィルデータを参照する。こうして、テーブル516,518の低位置のz−レベルによって参照されるフィルデータ508は、高位置を有するz−レベル510によって参照されるフィルデータ508の後方または下方に現れるように描画されることになる。INST_WRITE_FILL命令は、命令実行モジュールに、フィルデータ508にz−レベル510を関連付けさせる。
INST_SHOW_FRAMEは、命令実行モジュール500が異なる命令をフェッチすること及び/又は処理することを、出力ディスプレイデバイス470が新しいフレームのためのディスプレイデータを要求するまで停止させるのに用いられる命令である。
以下のTCIE機能モジュールの説明においては、ディスプレイのスキャンラインに沿ったピクセル−ピクセル間のステップをX座標とし、スキャンライン−スキャンライン間のステップをY座標とする。
データが渡される次の機能モジュールは変換モジュール502である。変換モジュール502は、命令実行モジュール500から受信した変換マトリクスを、やはり命令実行モジュールから受信したエッジの座標に適用する。変換モジュール502によって処理された後、エッジはディスプレイ空間におけるスタートのX,Y座標と、エンドのX,Y座標によって記述され、それらの左右のフィルデータへの参照とともにフィルタモジュール504へ渡される。
フィルタモジュール504は、変換モジュール502によって渡された、表示に全く影響しないすべてのエッジを破棄する。表示に影響しないエッジとは、エッジが水平であるか、或いはすべての座標が表示境界の外側に存在するという理由により表示に影響しないものである。また、いくつかのエッジは、部分的にのみ表示に影響する。表示境界の外側にスタート座標を有し、表示境界の内側にエンド座標を有するエッジは、ある中間の座標(すなわち、当該エッジが画面の境界を横切る位置)にて表示内へ入り込み、表示に出現することになる。そのようなエッジに対しては、フィルタモジュール504はそのエッジの新たなスタート座標を計算する。ここで、新たなスタート座標は、エッジが画面に入る上記中間座標に等しくなる。フィルタモジュール504は、エッジに縦方向フラグを付与する。そして、エッジのスタートのY座標がエッジのエンドのY座標よりも常に低くなるようにするために、必要に応じてスタート座標とエンド座標を入れ替える。例えば、スタート座標(5,22)、エンド座標(8,4)でフィルタモジュールに入ったエッジは、4が22よりも小さいので、フィルタモジュールによってそのスタート座標とエンド座標が入れ替えられる。縦方向フラグは座標の入れ替えが生じたエッジに対して、それらのエッジが上方向に進むエッジであることを示すためにセットされる。このステップは、レンダリングエンジン430がこの方法で表されるエッジに頼るので、必要となる。縦方向フラグは、また、そのエッジによって参照されるフィルデータがそのエッジの正しい側(左と右)に関連するように維持されるためにも重要である。
ディスプレイリストコンパイラ420の次のモジュールは、ソートモジュール506である。ソートモジュール506はフィルタモジュール504からエッジを受け取る。受け取られたエッジは、最初にそれらのスタートのYの表示位置によってソートされ、ついで、それらのスタートのXの表示位置によってソートされる。ソートされたエッジ512は、内部メモリ手段440に配置され、そこからレンダリングエンジン430によって読み出され、処理される。エッジは内部メモリ手段440内に設けられたフレームエッジバッファ524,526の部分に書き込まれる。出力データの現在のフレームを記述するのに用いられるすべてのエッジは、レンダリングエンジン430が必要とする前に、フレームエッジバッファ524,526に存在していなければならない。フレームエッジバッファ524,526は、好ましくはダブルバッファにより実施される。ディスプレイリストコンパイラ402がエッジを処理し、第1のフレームエッジバッファ524に並べる間に、レンダリングエンジン430は、ディスプレイリストコンパイラ420によって事前に準備された第2のフレームエッジバッファ526からディスプレイ出力を生成することができる。次いで、現在のフレームに対するディスプレイデータの出力を完了すると、フレームエッジバッファ524,526は入れ替わり、レンダリングエンジン430は、次のフレームのためにディスプレイリストコンパイラ420によって提供されたエッジの処理を開始できるようになる。
レンダリングエンジン430は、フレームのためのエッジがフレームエッジバッファ524,526にスキャン順で書き込まれていることを要求する。スキャン順とは、ディスプレイデバイスがそのディスプレイデータを受け取りリフレッシュする順番である。ここでは、本説明のために、スキャン順とはディスプレイの左上隅の位置、すなわち左上隅の画素から始まるものとする。本例のスキャン順においては、そこからディスプレイ画素の最上行を左から右へ進み、ディスプレイの右上隅の画素に到達する。そして、最上行の次の行の左端の画素へと続き、再び左から右へと進む。スキャン順は、このような形態で、最終の画素に到達するまで継続する。ここで、最終画素は、ディスプレイの最下行の右端となる。このようなスキャン順はしばしばラスタースキャン順と呼ばれる。
ソートモジュール506は好ましくはバケットラディックス−ソーティングアルゴリズム(bucket radix-sorting algorithm)を用いて、フレームに対するすべてのエッジを、それらのスタート座標がスキャン順となるように、内部メモリ手段440に並べる。ソフトウエア又はハードウエア開発の当業者は、ラディックス−ソーティングアルゴリズムがエレメントをN回(ここでNはソートされるべきエレメントの数)で順番に並べることに気づくであろう。ラディックスソーティングアルゴリズムは、有効なメモリ手段に依存して、すべてのエレメントを通して1回以上の反復を要求する。ソートの最初の反復を、ソートモジュールがフレームのためのエッジを受信している間に実行することができる。一つの実施形態において、エッジは、DRAMを用いて実現される内部メモリ手段440内でソートされる。
レンダリングエンジン430を通じたディスプレイデータの流れは、エッジ処理モジュール548から始まる。特定のフレームのために必要なディスプレイ出力を集合的に記述するエッジ540の一次資源は、ディスプレイリストコンパイラ420によってフレームエッジバッファメモリ524,526に準備された、ソート済みエッジのリストである。
これらのリスト中の各エッジ540は、以下のデータフィールドを含む。
●スタートのX座標;
●スタートのY座標;
●エンドのY座標;
●前のX及びY座標(又はスキャンライン)から、新しいY座標(又はスキャンライン)に対応するエッジの新しいX座標を決定するために用いられる一つ以上のパラメータ。これは例えば、1つのスキャンラインを横切る直線エッジのX座標に加算された場合に次のスキャンライン(下のライン)に対する当該エッジのX座標を生成するデルタX値である。曲線エッジの場合は、そのようなパラメータが複数用いられる;
●フィルタモジュール504によって用意された縦方向フラグ;
●リスト中の次のエッジのアドレス;
●左右フィルのz−レベルへの参照。
エッジ処理モジュール548は、2つのエッジのソースを有する。1つは上述のようなメモリ524,526である。もう1つのエッジソースは、エッジ処理モジュール548によって維持される、アクティブエッジバッファ(2の1)を含むメモリ522,523である。これらの使用とエッジ処理モジュール548の全体的な動作について図7A、図7Bを参照して以下に説明する。図7A,図7Bは、エッジ処理モジュール548を実現するソフトウエアによって実行される処理ステップを表す。
描画されるべき各フレームについて、エッジ処理モジュール548は、ディスプレイ470の下へ向かって、スキャンラインからスキャンラインへ(行から行へ)の繰り返しにより動作する。モジュール548は、フレームエッジバッファ524,526あるいはスタティックエッジバッファ528,530内のいずれかのエッジが現在のスキャンラインと交差する位置を計算する。各交差のX位置が、その交差するエッジの左右のフィル参照とともにz−レベルアクションモジュール550に渡される。
図7A、図7Bは、一つのスキャンラインに対するエッジ処理モジュール548の動作を示す。その処理は、エントリポイント700からスタートする。ステップ702では、スタティックエッジバッファ528,530が空であるかどうかを調べる。空であれば、ステップ704において、フレームエッジバッファ524が空かどうかを調べる。空であれば、ステップ716において、アクティブエッジバッファ522,523が空かどうかを調べる。これらのソースのいずれにもエッジが存在しない場合は、現在のスキャンラインと交差するエッジが存在し得ないことが明らかである。したがって、当該スキャンラインに対するエッジ処理を終了し、本方法をステップ724で完了する。フレームエッジバッファ524,526は、スキャン順でリストされるようにエッジを格納しているので、その中のいずれかのエッジが現在のスキャンラインと交差するならば、それらはこれらのリストの次の有効なエッジとなる。スタティックバッファ528,530において、エッジが存在する場合は、ステップ706にて、フレームエッジバッファ524,525についてエッジの存在が調べられる。ステップ706でエッジが存在しない場合、ステップ712で、スタティックエッジバッファ528,530において次のエッジとなるべき次のエッジがセットされる。ステップ706でフレームエッジバッファ524,526にエッジが存在する場合は、ステップ708に進み、フレームエッジバッファ524,526内の次のエッジのスタート座標と、スタティックエッジバッファ528,530における次のエッジが比較される。その座標のほうが大きい場合、ステップ708から上述のステップ712に進む。そうでない場合は、次のエッジがステップ710で、フレームエッジバッファ524,526からのものにセットされる。ステップ710及び712の各々から続くステップ714では、スタートY座標が現在のスキャンラインに対応するY座標よりも大きいかどうかを判断する。大きい場合、当該エッジは現在のスキャンラインとは交差せず、後の(すなわち下方の)スキャンラインでの処理のためにバッファに残され、処理はステップ716へ進む。他の場合、エッジは現在のスキャンラインと交差し、処理は、ステップ718へ進む。エッジがほぼ平行でない限り、そのエッジのエンドY座標よりも大きいY座標に対応する最初のラインに至るまで、そのエッジは後続の(下の)スキャンラインと交差する。当該エッジと次のスキャンラインが交差するかどうかの判断処理を促進するために、エッジ処理モジュール548は、エッジが以降“アクティブエッジ”と記述されるものとなるようそのエッジのフォーマットを変換する。アクティブエッジは、スタートX、Y座標とエンドY座標を表すデータを有するのではなく、少なくとも現在X座標とエンドY座標を表すデータを有する。アクティブエッジの現在Y座標は、暗に、現在のスキャンラインのY座標でもある。アクティブエッジは、エッジ処理モジュール548が現在のスキャンライン上の現在X座標から次のスキャンラインに対する当該エッジのX座標を算出可能にするデータ(例えば、デルタX)を含んでもよい。
エッジ処理モジュール548が後続のスキャンラインに向かって下方へ続くエッジからアクティブエッジを生成するとき、このアクティブエッジは、次のスキャンラインに対する処理において用いられるアクティブエッジのリストへ追加される。アクティブエッジバッファ522,523は、このリストを格納するために用いられる。アクティブエッジバッファはダブルバッファであり、次のスキャンラインのために生成されるアクティブエッジのリストを含む第1バッファ522と、前のスキャンラインの処理中に現在のスキャンラインのために既に生成されたアクティブエッジのリストを含む第2バッファ523とを備える。フレームエッジバッファ524,526内のエッジと同様に、アクティブエッジのリストはスキャン順に並ぶ。
エッジ処理モジュール548が、エッジのソースにかかわらず、スキャン順で交差を処理することは重要である。このため、現在のスキャンラインを横切るフレームエッジバッファ524,526からのエッジは、より小さいX座標で交差するアクティブエッジがアクティブエッジバッファ522,523の中に存在しなくなるまでは処理されない。ステップ718と720はこのテストを実行する。そして、そのときだけ、ステップ728において、フレームエッジバッファ524,526からのエッジが新たなアクティブエッジに変換される。スタティックエッジバッファ528,530及びフレームエッジバッファ524,526の各々が空であるという場合においては、次のアクティブエッジをバッファ522,523から直接に派生してもよい。
大部分のスキャンラインに対して、当該スキャンラインを横切るエッジのみが、前のスキャンラインから画面下方へ継続したエッジとなる。その意味において、すべての交差するエッジが、前のスキャンラインにより生成されたアクティブエッジバッファ522,523に端を発する場合もある。このような状況においては、ステップ714の結果がNOとなるか、あるいは702と704の両方の結果がYESとなるかのいずれかとなる。
ステップ722あるいは728から次の交差が決定されると、対応するアクティブエッジからのデータの部分集合がステップ730において、レンダリングエンジン430の次のモジュールに渡される。そして、そのアクティブエッジは、ステップ732で、エンドY座標をチェックすることにより、次のスキャンラインに続くかどうかを見るためにテストされる。アクティブエッジが続く場合、ステップ734において、アクティブエッジの現在X座標が、後続のスキャンラインのために再計算される。そして、アクティブエッジは、次のスキャンラインのためのアクティブエッジバッファに置かれる。本エッジ処理は、次のスキャンラインのために、ステップ732及び734の各々から、ステップ700のスタートへと戻る。
このスキャンラインからスキャンラインへエッジのX座標を追跡する処理は、しばしば、“エッジ追跡(edge tracking)”と呼ばれる。好ましい実施において、エッジは直線として記述される。直線のエッジを追跡するためには、シンプルな、エッジ毎のデルタXの調整が各スキャンラインに適用される。
アクティブエッジはスキャン順で処理されるが、ステップ734においてなされる新しい現在Xの計算の結果、このアクティブエッジが、このスキャンライン上で既に処理されたアクティブエッジよりも小さい値の位置を有するようになる可能性がある。この状況の例を、図8に示す。図8に示されるように、2つの破線で示された水平線は、出力ディスプレイのスキャンラインを表し、上の破線は、エッジ処理モジュール548によって現在処理中のスキャンライン(Current Scan Line)を表し、下の破線は次に処理されるスキャンライン(Next Scan Line)を表す。図8では、3つのアクティブエッジ、すなわち、アクティブエッジA(Active Edge A)、アクティブエッジB(Active Edge B)、アクティブエッジC(Active Edge C)が示されており、それぞれ交差点A(Intersect A)、交差点B(Intersect B)、交差点C(Intersect C)で現在のスキャンラインと交差する。アクティブエッジの現在Xフィールドは交差の位置を示す。すべてのエッジのソースはスキャン順となっているので、エッジ処理モジュールもz−レベルアクティベーションモジュール550への出力をスキャン順に生成する。このことは望ましいことである。しかし、エッジ処理モジュール548が、次のスキャンライン上の交差(交差A’(Intersect A')、交差B’(Intersect B')、交差C’(Intersect C'))に対応するアクティブエッジに関して新たな現在X値を計算すると、アクティブエッジCはアクティブエッジA及びアクティブエッジBと交差しているため、これらのエッジのスキャン順は失われてしまう。したがって修正されたアクティブエッジが、それらが次のスキャンラインのためのアクティブエッジバッファに配置される前に再格納することを要求する。図8の例において、次のスキャンラインのためのアクティブエッジバッファ522,523におけるアクティブエッジの望ましい順序は、最初にアクティブエッジC、次にアクティブエッジA、そして最後にアクティブエッジBである。これを克服するために、エッジ処理モジュール548は、修正されたアクティブエッジをソートバッファ(不図示であるが、バッファ522から530に対応した方法で実施される)に、それらがスキャン順となるように挿入する。ソートバッファ内のアクティブエッジのリストは、次のスキャンラインのためのアクティブエッジバッファ522,523へ送られる。ステップ730において、エッジ処理モジュール548によってz−レベルアクティベーションモジュール550に渡されるXメッセージを形成するアクティブエッジデータの部分集合は以下のものを含む。
●アクティブエッジのX座標(それが現在のスキャンラインと交差する位置)
●アクティブエッジと関連するフィルz−レベルへの参照
●アクティブエッジの縦方向インディケータ。
z−レベルアクティベーションモジュール550は、フィルバッファ514内のどのフィルデータ532が出力ディスプレイ画素の色に寄与するかを判断するためのz−レベルアクティベーションテーブル560を維持するために、エッジ処理モジュール548から渡されたエッジ交差のデータを用いる。出力ディスプレイ画素のストリームは、レンダリングエンジン430によってスキャン順で生成される。スキャンラインとエッジとの各交差は、スキャン順で生成されるときに、要求される出力色が変化することになる表示座標を表すことになる。以下の説明において、“領域”とは、1つの交差から次の交差の間のスキャンラインの座標の間隔に対応する。あらゆる領域の画素データは、z−レベルアクティベーションテーブル560のz−レベルによって参照される1つ又は複数のフィルデータ(フィルスタイル)によって決定される。z−レベルアクティベーションテーブル560の各z−レベルのデータは、カウントフィールドに対応するフィルデータ532への参照を含む。カウントフィールドは符号付である。カウントフィールドの使用について図9A,図9Bを参照して、以下、説明する。
z−レベルアクティベーションモジュール550は、ステップ900で、エッジ処理モジュール548からメッセージを受信すると、ステップ902において示されるように、そのメッセージによって参照されるz−レベルのカウントフィールドがメッセージの縦方向インディケータに依存して加減算される。TCIE410は、“(非ゼロ)ワインディングカウンティングフィルルール((none-zero) winding counting fill rule)”を用いて、フィルデータのどのz−レベルが出力画素に寄与するかを判断する。或いは、“奇数/偶数”又は“ネガティブ”のような他のフィルルールを用いるこもできる。ここでは、z−レベルは、当該z−レベルのフィルデータがレンダリングエンジン430によって現在生成されている出力画素に寄与すべく要求される場合に、アクティブであるとして説明されている。各スキャンラインに対する処理のはじめに、すべてのz−レベルのためのカウントフィールドは0にセットされる。z−レベルは、z−レベルアクティベーションテーブル560内の対応するカウントが加算或いは減算されて、正あるいは負の値になったときにアクティブとなり、ゼロに戻るまでアクティブ状態を維持する。後続の画素の領域にどのフィルz−レベルが寄与するかを判断するのに重要なのは、アクティブ/インアクティブになるz−レベルに対するディスプレイ座標のみである。したがって、メッセージデータをレンダリングエンジン530の次のモジュール(すなわち、ランカリングモジュール522)に渡す必要があるのは、z−レベルのカウントフィールドがゼロと非ゼロの間を変化するときのみである。
受信されたメッセージの縦方向インディケータが、ステップ902で“下方向”であると判断される場合、当該メッセージのデータによって参照されるz−レベルのカウントフィールドは、ステップ904でインクリメントされる。また、ステップ902でメッセージが“上方向”であると判断された場合、当該メッセージのデータにより参照されるz−レベルはステップ906でデクリメントされる。その後、図9A,9Bからわかるように、フローチャートは2つの実質的なミラーイメージパス(mirror-image paths)に分けられ、ステップ928で合流する。
具体的には、ステップ904に続くステップ908は、左のz−レベルの0から1への変化をテストする。左のz−レベルが0から1へ変化しているのであれば、ステップ910において、当該z−レベルに対するONメッセージをXメッセージの一部として出力に付加する。ステップ908で否と判定された場合、或いは、ステップ910の処理を終えた後は、ステップ916において右z−レベルメッセージに対するテーブル中のカウントフィールドをデクリメントする。そして、ステップ920において、右z−レベルの1から0への変化をテストする。右z−レベルが1から0へ変化したのであれば、ステップ924において、当該z−レベルに対するOFFメッセージを出力に付加する。ステップ920で否と判定された場合、或いは、ステップS924の処理を終えた後は、ステップ928において、入力メッセージのディスプレイ座標とともに、z−レベルON/OFFメッセージをランカリングモジュール552に出力する。このデータは、表示のためのピクセルランを記述したものとなる。
相補的な方法で、ステップ912が、左z−レベルの非ゼロ(例えば1)からゼロへの変化をテストする。ゼロへ変化したならば、ステップ914に進み、当該z−レベルに対するOFFメッセージをメッセージの一部として出力に付加する。ステップ912において否と判定された場合、或いは、ステップ914の処理の後は、ステップ918において、右z−レベルメッセージに対するテーブル内のカウントフィールドをインクリメントする。そして、ステップ922において、右z−レベルの0から1への変化をテストする。0から1へ変化したと判定された場合、ステップ926において、当該z−レベルに対するONメッセージを出力に付加する。ステップ922において否と判定された場合、或いは、ステップ926の処理の後は、ステップ928において、入力メッセージのディスプレイ座標とともにz−レベルのON/OFFメッセージを出力する。
z−レベルアクティベーションは、ステップ930で終了する。
ステップ910と914は、フィルz−レベルがオンになった(アクティベートされた)或いはオフになった(デアクティベートされた)ときを表すメッセージを、ランカリングモジュール552へのメッセージの一部として生成する。
z−レベルアクティベーションテーブル560の下位インデックスのエントリは、高位インデックスのエントリの“下に”描画されることになるフィルデータを参照する。例えば、インデックス1(z−レベル1)のz−レベルがべたの赤色を参照し、インデックス2(z−レベル2)のz−レベルがべたの緑色を参照し、そしてこれらが画素領域に対する唯2つのアクティブなz−レベルである場合、z−レベル1は完全にz−レベル2によって隠され、したがって当該領域は緑色のべたで描画される。この例において、z−レベル2が部分的に透明色のフィルを参照する場合は、その領域は、z−レベル2のフィルを通してz−レベル1の赤べたが部分的に現れるように描画される。z−レベルアクティベーションテーブル560は、対応するz−レベルが下位のインデックスのz−レベルを完全に隠すかどうか(すなわち、対応するz−レベルが完全に不透明なスタイルのフィルであるかどうか)を示す追加フィールドをエントリ毎に含むようにしてもよい。
1つの実施の形態において、z−レベルアクティベーションモジュール550は、出力データを生成するのに必要な時間を減らすために付加的な機能を実行する。z−レベルアクティベーションモジュール550は、フィル生成モジュール554で使用されることになるあらゆるz−レベルがアクティブ/インアクティブになったときを示すメッセージを出力する代わりに、z−レベルの部分集合がアクティブ/インアクティブになったときだけフィル生成モジュール554が通知を受けるようにメッセージを出力する。この部分集合は、最高位(最上位)のインデックスを有し、現在アクティブなz−レベルの集合である。具体的な実施形態において、レンダリングエンジン430は、最高位の、例えば4つのz−レベルのみが常に画素の領域の色に寄与することを許容されるように構成される。このような妥協は、出力に誤差を招くことになるが、フィルカラーを生成するのに用いられるすべての(4つの)上位のアクティブなz−レベルは、この誤差が生じるか或いは視認可能になる前に重要な透明度を持たねばならない。このような減縮の利点は、フィルカラーの生成が、非常に大量の処理を要求する、潜在的にz−レベルアクティベーションテーブル560におけるすべてのz−レベルからのフィルデータの合成をするのではなく、フィルデータの合成が最大で4つのz−レベルによりなされることを保証することである。なお、この説明では、出力色の合成のためのz−レベルの最大数が4である実施形態に関して説明したが、z−レベルの最大数は任意にして実施できる。
ランカリングモジュール552の動作について、図11のフローチャートを参照して以下に説明する。図11はランカリングモジュールを実現するソフトウエアを表している。この説明において、“ラン”とは、類似のフィルを有するスキャンラインの座標のスパン(間隔)を言う。“フィル”は、緑のようなべた色、カラーランプあるいはラジアルブレンドのようなより複雑な色関数、ビットマップ(おそらくはサンプルされた)、或いはスパン内の各画素の色を決定するデータセットのようなあらゆるものによって定義され得る。ランカリングモジュール552は、前回の描画されたフレームからの、その前回のフレームを生成するのに用いられたランの集合のリンクされたリストを維持する。この説明のために、そのリストは空ではなく、いくつかのエントリが前回のフレームから生成されている場合を考慮するのがよい。これを説明する過程において、現在のフレームのためのランを後続のフレームで利用するためにいかにして維持するかを見ることもできるであろう。
ランカリングモジュール552は、図6Bの内部メモリ手段440内に維持されるランレコードのプール520を用いる。このプール520は、一般には、トータルのメモリサイズがフレームストアのトータルのメモリサイズの一部分となるように、選択された固定サイズを有する。例えば、フレームストアサイズの1/4又は1/8が一般的に用いられる。ランカリングモジュール552は、フレームストアのサイズに匹敵するデータ量を格納することが、画素の直接の生成に匹敵する計算量を要するということに基づいて、プール520に適合した量の記録を行うように徐々に抑制される。全体として、ランカリングモジュール552の目的は、作業の回避による時間の節約であり、より多量のメモリを使用することになるあらゆる試みは、関連する特定のデータに対してそのテクニックは効果を示さず、避けるべきである。プール520の各レコードは以下を維持する。
●次のランレコードへのリンク
●スタートy座標
●スタートx座標
●長さ
●フィルテーブルインデックス。
現在の維持されたステートの一部ではないランレコードはフリーリストにリンクされる。フレームが描画されるとき、生成中のフレームのステートを記録するランレコードが“新たな維持されたランリスト”に格納される。このリストは、次のフレームの描画へ進んだときに、“古い維持されたランリスト”になる。各リストは単一のリストヘッドポインタで記録される。これは図11において示される初期化ステップ1100内で確立される。
ステップ1102において、z−レベルアクティベーションモジュール550からランが受け取られると、このランを保持されたランプール520に記録するかどうかが判断される。この処理では、更なるランが存在するかどうかを判断するステップ1104を最初に伴う。存在しないのであれば、ステップ1128において古いリストをフリーリストにダンプし、ステップ1130で古いリストを新しいリストに割り当てる。そして、ステップ1132で新しいフレームの開始を待ち、それが開始されると制御はステップ1102へ戻る。
ステップ1104でランが存在する場合、ステップ1106において、そのランを保持するかどうか決定する。この決定は、以下のようにメモリ容量に基づく。すなわち、描画されるべきスキャンラインの残数によって除されたフリーランレコードの数が判断される。これは、各残存スキャンラインに対して扱われることが必要となるランレコード(設計の特徴で決まる)の数の平均である。これが、現在のスキャンラインに対してそれまでに記録されたランの数と比較される。リミットに達していない場合、フリーリストからのフリーランレコードが取得され得る。そして、対応するランの詳細のセット、及びそのレコードは、新たに保持されたランリストの先頭へプッシュされる。これは、ステップ1108に対応する。このプロセスにより、ランは、次のフレームの生成中における使用のための現在のフレームに寄与するレコードとなる。
いずれにしても(現在のランが記録されてもされなくても)、受信されたランは、ステップ1110において、保持された古いリストの先頭にあるランと比較される。保持された古いリストのスタート前に発生するランの、あらゆる先端部分(或いはすべて)は、ステップ1112においてフィル生成モジュール554へ渡される。ステップ1114であらゆる残り部分は、残り部分と保持された古いランとの間のあらゆる先頭のオーバーラップと比較される。フィルインデックスが異なる場合、ステップ1116において、残りの先頭部分がフィル生成モジュール554に送られる。いずれにしても、保持されている古いランは、ステップ1118で先頭のオーバーラップにより短縮される。そして、ステップ1120において、その長さがゼロに減少したかテストされ、そうであれば、ステップ1122でレコード全体がフリーリストへ送られる。残りもステップ1124にて、同様の方法で短縮される。まだ残りがある場合は、その残り部分とともに、ステップ1110へ戻り、受信したランとして扱われる。そうでなければ、次の受信されたランを扱うために、制御はステップ1102へ戻る。
なお、保持されたレコードが有効であり、フィルインデックスが直前のフレームのものと同じである、受信されたランの部分に対して、フィル生成モジュール554へはフィルリクエストは送られない。こうして画素生成に関連する多くの作業を回避できる。また、処理パイプラインのこのステージは、特定の色ではなくフィルインデックスを参照するので、このアプローチは、べた色ばかりでなく、カラーランプやビットマップを含むすべてのタイプのフィルに対するフィルリクエストを渡すことを回避する。
多重に重ねられた(或いは合成された)透明オブジェクトがサポートされる場合、上記のフィルインデックスは、サポートされた同時オーバーレイの最大数までのフィルインデックスのショートアレイに置き換えられる。本実施形態ではこの最大数は4である。
次に、図12を参照して、TCIE410のフィル生成モジュール554の動作について説明する。以下の説明は、画素の領域の色に寄与するのに用いられるz−レベルの数を常時最大4つに制限する実施形態に関する。そのような実施形態において、TCIE440のフィル生成モジュール554は、データを生成可能なフィル生成の4つの手段1210(1210Aから1210D)を有する。これらのフィル生成手段1210は、上述したランカリングモジュール552からのメッセージによって制御される。フィル生成手段1210の出力は、描画されている現在の表示座標に対する関連するz−レベルに対して要求された画素色を記述するデータである。各フィル生成手段1210の画素カラーデータは、領域コンポジットモジュール556に渡される。これは、アクティブな各z−レベルに対して生成された色をブレンドし、表示のために要求された出力画素データを生成する。
ランカリングモジュール552からのメッセージは以下のデータを含む。
●Xディスプレイ座標
●その座標でアクティブになるz−レベルのインデックス。
図12に示されるように、フィル生成モジュール554は、フィルデータテーブル514と、z−レベルテーブル516に結合するフィルルックアップ及びコントロールモジュール1204を含む。モジュール554は、ランカリングモジュール552より入力1202で注目されたメッセージを受け取る。その値はモジュール1204に維持される。
フィル生成モジュール554は、4つのフィル生成手段1210の各々をz−レベルアクティベーションテーブル560内のz−レベルにインデックスする、ハードウエアレジスタ或いはソフトエア変数のような、メモリ手段1208を保持する。z−レベルをデアクティベートするメッセージが受信されると、そのz−レベルに関連するフィル生成手段1210は、対応するインデックスの手段によりそのz−レベルと無関係にされる。z−レベルに関連しないフィル生成手段1210は、画素データを生成しない。z−レベルがアクティブになったことを示すメッセージが受信されると、z−レベルと関連していないフィル生成手段1210の一つが、アクティブになったそのz−レベルと関連するようになる。
各フィル生成手段1210によって使用されるフィルデータには2つのソースがある。第1のソースはz−レベルテーブル516,518であり、第2のソースはフィルデータメモリ514である。z−レベルテーブル516,518はダブルバッファであり、バッファ516,518はレンダリングエンジンがフレームのレンダリングを完了したとき入れ替わる。第1のフィルテーブルを有する第1バッファ516がディスプレイリストコンパイラによって準備されている間に、前のフレームのレンダリングの間にディスプレイリストコンパイラによって準備された第2バッファが各フィル生成手段1210によって読まれる。z−レベルテーブル516,518は、z−レベルのインデックスと、当該z−レベルに対する画素データを生成ために必要な対応データ(フィルテーブルに格納された)との間の間接的な関連(indirection)を提供する。z−レベルテーブルはz−レベル毎に1つのエントリを含み、z−レベルテーブル内のエントリは、同じインデックスを持つ、z−レベルアクティベーションテーブル560内に対応するエントリを有する。各z−レベルテーブルのエントリは、フィルデータメモリ514のフィルデータ532編参照を含む。各z−レベルテーブルエントリは追加的に以下のものを含んでもよい。
●そのz−レベルが不透明かどうかを表すフラグ(NEED_BELOW)
●フィルデータがX位置の変化に依存する(例えば、ビットマップ或いはブレンド)か、フィルデータが一定に保たれる(例えば単色のフィル)かを示すフラグ(X_INDEPENDENT)。
上述の追加フラグは、フィル生成モジュール554が要求されるフィルデータの処理を最小にすることを可能とする。
単純な単色のフィルを参照するz−レベルに対して、フィルテーブル514のフィルデータ532は、たとえば、赤、緑、青及びアルファ(透明度)成分を備えた、単純な色記述となろう。階調フィルのためのフィルデータは、色のテーブルと現在の出力ディスプレイ座標からこのテーブル内へインデックスを生成するのに用いられる付加的なパラメータとして実現される。
TCIE410内の階調フィルのために格納されたデータ、及び、フィル生成モジュール554内のフィル生成手段1210が、出力データを生成するのにどのように動作するかについて以下に説明する。階調のためのフィルデータは、17色のテーブルとして実施される。0から255の間の値が17色のこのテーブルをインデックスするのに用いられる。テーブル内の各連続的な色エントリが、直前のものよりも16だけ大きいインデックス値と関連付けられる。従って、最初のエントリは、インデックス0を有し、2番目のエントリはインデックス16を有し、最後のエントリはインデックス256を有する。16の倍数とならないインデックスに対応する色は、テーブルにおいて要求されたインデックスに近いインデックスを持つ2つの隣接した色からリニアに補間される。階調に対するフィルデータは、また、カラーテーブルへのインデックスが、特定のディスプレイ座標に対してどのように取得され得るかを示すパラメータを要求する。
TCIE410によってターゲットディスプレイ470にオブジェクトが配置されると、オブジェクトデータは、エッジがディスプレイ座標と対応するように変換される。従って、オブジェクトに関して階調の現れ方(例えば、位置や姿勢)が矛盾しないように、そのオブジェクトのエッジに含まれるあらゆる階調フィルも変換される必要がある。
各ディスプレイ座標に対してカラーインデックステーブルを決定するために必要な計算を最小にするために、TCIE410は、フィルデータ532に対して、ディスプレイ座標においてバウンディングボックスの概念を実施する。バウンディングボックスは、ディスプレイ座標のX軸に平行な2つのエッジと、ディスプレイ座標のY軸に平行な2つのエッジで囲まれる、ディスプレイの矩形領域を記述する。TCIE410の一つの実施形態において、バウンディングボックスは、階調フィルのためのフィルテーブル514におけるフィルデータ532の一部を形成する。
線形の階調フィルに対して、フィルテーブル514内のデータは、付加的にカラーテーブルへのスタートインデックスを含む。スタートインデックスは、バウンディングボックスの左上隅に最も近いディスプレイ画素に対する出力色を表す。フィルデータ532もまた、デルタX値とデルタY値を含む。デルタX値は、右側の次の画素(X座標の繰り返し)に対するカラーテーブルへの新しいインデックスを取得するために、スタートインデックスをインクリメントするのに用いられる。インデックスのこの前方へのインクリメントは、スキャンラインに沿って左から右へディスプレイ画素データが生成される間継続する。こうして、フィルテーブルからのフィルカラーの線形の階調がバウンディングボックスの右側の辺に至るまで生成される。デルタY値は、次のスキャンライン上のバウンディングボックスの左辺に対するスタートインデックスを取得するために、カラーテーブルへのスタートインデックスをインクリメントするのに用いられる。スタートインデックス、デルタX、デルタY及びバウンディングボックスは、まとめて、カラーテーブルから種々の線形の階調フィルを生成する手段を提供する。スタートインデックスの値、デルタX、デルタYは、通常は整数部と小数部で実現される(例えば固定小数点)。フィルテーブル514内のフィルデータ532は、インストラクション(例えば上述のINST_WRITE_FILL)によって変形され得る。これは、階調フィルの姿勢、位置及びスケールが、オブジェクトの姿勢、位置及びスケールに対して矛盾しないように、必要に応じて階調フィルのパラメータを変換可能とする。
1つの実施形態において、階調フィルのためのデータは、バウンディングボックスを含まない。その代わりに、当該階調フィルを含むオブジェクトのバウンディングボックスが、各エッジが配置されたX及びYの最大最小値を記録することにより、動的に計算される。スタートインデックス、デルタX、デルタYの値が、このバウンディングボックスに関連して提供される。これらの最大/最小値の記録は、TCIE410が、ディスプレイ座標のX軸に平行な2つのエッジと、ディスプレイ座標のY軸に平行な2つのエッジで矩形を記述し、オブジェクトの全てのエッジを含むバウンディングボックスを維持できることを確実にする。この実施形態の利点は、バウンディングボックスデータがフィルデータテーブル514を消費せず、フィルテーブル514においてバウンディングボックスを更新するための命令(それもメモリ手段、或いはホストプロセッサの労力を消費する)を要求するのではなく、わずかな付加的な処理で、バウンディングボックスがTCIE410により再計算されることにある。
フィル生成モジュール554はまた、ビットマップイメージに基づいてフィルを実施する。階調フィルに関して説明したのと類似のテクニックが用いられる。ビットマップファイルは、フィルを含むオブジェクトの一部として定義されているか、或いは、フィルテーブル内のフィルを記述するデータの一部として定義されているバウンディングボックスのいずれかに依存する。バウンディングボックス内のピクセルの値は、ビットマップイメージにおいて定義された画素に対する値から決定される。このビットマップイメージは、ビットマップファイルに対するフィルデータ532によって参照される。階調フィルについては、ビットマップフィルは、含まれるオブジェクトの姿勢、位置及びスケーリングと整合する姿勢、位置及びスケーリングで描かれなければならない。これを可能にするため、フィルテーブル内のビットマップフィルデータは、ディスプレイデータがどのようにビットマップファイルのソースビットマップからリトリーブされるかを制御するために重ね書き(メモリ手段306,309からフェッチされた命令を介して、或いはホストプロセッサ450を介して)されても良い。ビットマップフィルを生成するフィル生成手段1210の動作は、バウンディングボックス内の画素に関して増加的にデータが計算されるという点において、階調フィルを生成する動作に似ている。階調フィルが増加的にカラーテーブルインデックスを計算するのに対して、ビットマップファイルは、ソースビットマップ内のピクセルのメモリアドレスを増加的に計算する。フィルテーブル514内のビットマップフィルのためのパラメータは以下を含む。
●ビットマップスタートXとビットマップスタートY座標
●デルタXとデルタY
●デルタスキャンラインXとデルタスキャンラインY
●最大Xと最大Y。
パラメータはまた、以下を含んでもよい。
●ビットマップベースアドレス
●ソースビットマップで使用される画素毎のバイト数の表示。
ビットマップX、Y座標は、ソースビットマップ内の位置に対応する。座標は、サブピクセルの精度を有する。すなわち、それらは、ソースビットマップ内の画素を参照する整数部とその画素内の位置に関連する小数部を有する。ビットマップフィルを生成するフィル生成手段1210は、レンダリングエンジン430がバウンディングボックスの左上に最も近い画素に対するデータを生成しなければならなくなる前に、スタートXとスタートYをローカルメモリ手段に格納する。スタートXは2つのローカルメモリ手段(例えばレジスタ)に格納され、以降、現在XとラインスタートXと称する。スタートYは2つのローカルメモリ手段に格納され、以降、現在YとラインスタートYと称する。現在Xと現在Yはソースビットマップ内の現在の位置を参照し、従って、対応する画素色を参照する。ビットマップフィルを生成するフィル生成手段1210は、この画素色を、現在のディスプレイ出力色として用いる。レンダリングエンジン430が、スキャンラインに沿って右へ隣接する画素に対して繰り返すにつれて、フィル生成手段1210はビットマップフィルデータのデルタXの値だけカレントXを増加し、ビットマップフィルデータのデルタYの値だけカレントYを増加する。この手段により、ソースビットマップの画素の座標は、出力を描画するための要求されたレートと要求された順序で追跡され得る。
レンダリングエンジンがスキャンラインのためのデータ出力を終えると、バウンディングボックスの左側の辺が出力ディスプレイの次のスキャンラインと出会う位置に対応するソースビットマップ中の位置を表すように、ラインスタートXとラインスタートYの新たな値が計算される。フィル生成手段1210はラインスタートXをデルタラインスタートXだけ増加することにより、そしてラインスタートYをデルタラインスタートYだけ増加することにより、これを実行する。これらのラインスタートX及びラインスタートYに対する新しい値も現在X及び現在Yにロードされる。これらは、再び、新しいスキャンラインに対してビットマップ中の位置を追跡する。
ビットマップフィルデータのパラメータ、最大Xと最大Yは、ソースビットマップの大きさを表す整数値である。フィル生成手段1210が、ローカルに格納されたカレントXとカレントYの値が最大Xと最大Yを越えることを検出した場合、新たなカレントXとカレントYが、それらから最大Xと最大Yを差し引くことによって算出される。同様に、カレントXとカレントYがゼロより小さくなったときは、最大Xと最大Yをそれぞれに加算することで新しいカレントXとカレントYが算出される。
ソース画素のアドレスは、ビットマップフィルデータからのビットマップベースアドレスと、画素毎のバイト数を用いて、カレントXとカレントYから以下の式により決定される。
画素アドレス=ビットマップベースアドレス+(floor(カレントY)×最大X+floor(カレントX))×画素毎のピクセル数
ここで、floor(カレントX)とfloor(カレントY)は、それぞれカレントXとカレントYの整数部である。
この計算は、フィルデータの出力画素毎に2つの乗算を実行するという望ましくない要求を含む。これは以下の好ましい実施形態によって解消される。
フィル生成手段1210は、ローカルメモリ手段内に“現在アドレス”値を格納する。それは、現在Xと現在Yにおいて維持される座標により参照されるソースビットマップ内の画素のアドレスに対応する。これは、フィルテーブル内のビットマップフィルデータの付加的なパラメータとして提供される、“スタートリードアドレス”の値とともに最初にロードされる。スキャンラインに沿ってレンダリングエンジンが繰り返す毎に、現在Xと現在Yは増加される。現在アドレスは、ソースビットマップ内の次の要求された画素のアドレスを決定するために増加され得る。しかし、現在アドレスの増加する量は、現在Xと現在Yが増加されたときに、それらの小数部がそれらのそれぞれの整数部にキャリーを生成したかどうかに依存する。現在アドレスの要求される増加量は、以下に示す4つの値のうちのいずれかである。
●現在Xの少数がキャリーを発生せず、現在Yの小数部がキャリーを発生しない場合、増加=[ビットマップ内の画素毎のバイト数]×([デルタXの整数部]+([デルタYの整数部]×[最大X]))
●現在Xの少数がキャリーを発生し、現在Yの小数部がキャリーを発生しない場合、増加=[ビットマップ内の画素毎のバイト数]×([デルタXの整数部]+1+([デルタYの整数部]×[最大X]))
●現在Xの少数がキャリーを発生せず、現在Yの小数部がキャリーを発生した場合、増加=[ビットマップ内の画素毎のバイト数]×([デルタXの整数部]+(([デルタYの整数部]+1)×[最大X]))
●現在Xの少数がキャリーを発生し、現在Yの小数部がキャリーを発生した場合、増加=[ビットマップ内の画素毎のバイト数]×([デルタXの整数部]+1([デルタYの整数部]+1×[最大X]))。
フィル生成モジュール554は、ビットマップフィルデータ中の事前に計算されたデータとして提供されることになるこれら4つの増加値を要求しても良い。フィル生成手段1210は、現在Xと現在Yの増加の結果に依存してどの増加を用いるかを判断する。
一つのディスプレイスキャンラインと次との間のカレントアドレスを追跡するときに、上述したのと同じテクニックが用いられる。フィル生成手段1210は最初にカレントアドレスメモリ手段に“スタートリードアドレス”の値を格納する。また、それは、“スタートリードアドレス”を更ならるメモリ手段へ格納する。以下、これを“ラインスタートアドレス”と称する。このアドレスは、ラインスタートXとラインスタートYによって参照されるソースビットマップ中の画素のアドレスである。ラインスタートXとラインスタートYは、レンダリングエンジンが新しいスキャンラインに対して繰り返すときに増加されるので、それにつれてラインスタートアドレスも増加される。その結果値は、カレントアドレスに書き込まれる。要求される増加は、ラインスタートXとラインスタートYのいずれかの増加の間にキャリーが発生したかどうかに依存して、上記4つの値のうちの一つとなる。TCIE410は、これら4つの可能な増加値が、ビットマップフィルデータ内の事前に計算されたデータとして提供されることを要求する。
TCIE410は、単一ビットマップとして、或いは、リスト又は配列によって参照される複数の小さなタイルとして、ソースビットマップがメモリに提供されることを許容する。後者の表現において、タイルビットマップはメモリ中の任意の位置を占め、リスト又は配列は、ビットマップイメージ全体の左上に対応するタイルが最初に参照されるように、これらをスキャン順に参照するのに用いられる。一つの実施形態において、タイルの大きさは16画素×16画を、或いは32画素×32画素である。タイル化して格納することによる利点は、レンダリングに際してTCIE410が大きなソースビットマップの限定された領域を要求する場合に明らかとなる。その領域に必要なタイルのみがローカルメモリにおいて有効となるように要求される。さらに、タイルはイメージのローカライズされた領域を表し、そして、これらの領域のためのデータが隣接したメモリに格納されることを確実にするので、ローテーションのような繰り返しによる画素演算を、メモリ内の頻繁なランダムサイズのジャンプ無しに実行できる。これは、メモリ手段が、メモリページの切り替えにかなりの待ち時間を課するDRAMである場合に得に好ましい。ビットマップを表すためのタイルの使用は、イメージに対する全てのタイルが必要なときに有効となっていることを保証できない場合に特に有用である。タイルへの参照の配列又はリストは、不在を示すことができ、このような事態を最小にするためにアクションをとることができるからである。
フィル生成モジュール554の各フィル生成手段1210は、z−レベルアクティベーションモジュールによってアクティブであると判断されたz−レベル(ランカリングモジュールによってフィルタされたであろう)に対応する出力画素データを生成する。複数の出力画素データは、メッセージの手段により領域合成モジュール556へ渡される。フィル生成モジュール554は、フィル生成手段1210のいずれかの出力データが変化するとき、メッセージを生成する。例えば、z−レベルアクティベーションモジュール550が、z−レベルがデアクティベートされたことを示すメッセージをフィル生成モジュール554へ渡した場合、フィル生成モジュール554は当該z−レベルに関連するフィル生成手段をデアクティベートし、このことが発生したことを示すメッセージを領域合成モジュールへ渡すことにより応答する。
領域合成モジュール556へ渡されたメッセージは描画中の最高位のアクティブなz−レベルに対応するXディスプレイ座標と複数の画素データを含む。すでにわかるように、フィルテーブル514は、関連するz−レベルのフィルデータが透明度を有するかどうかを示すNEED_BELOWフラグを含んでも良い。フィル生成手段1210の一つが、NEED_BELOWフラグをfalse(すなわちクリア)にセットした、テーブル中のz−レベルに対するデータを生成する場合、フィル生成モジュール554は、より低いインデックスのあらゆるz−レベルについて、画素データを領域合成モジュール556に送る必要はない。
領域合成モジュール556の目的は、受信したメッセージの画素データをフレームストア160又はディスプレイ470へ渡される単一の色値と合成することである。領域合成モジュール556は、最低位のz−レベルに関連する画素データが最初に読まれるように画素データを読む。次に最高位のz−レベルが読まれ、これの透明度成分がこの高いz−レベルの色と前に読まれた低いz−レベルの色とを混ぜるための重みファクタとして用いられる。例えば、z−レベルに対する画素データが3つの色成分(赤、緑、青)と、4番目に0から255の範囲の値をとる透明度成分を含む場合、2つのz−レベルからの色成分は以下の式を用いて混ぜ合わされる。
C=((Chigher×a)+(Clower×(255−a))/255
ここで、aは透明成分であり、a=255の場合は完全に不透明な画素データを表し、a=0は完全に透明な画素データを表す。
この場合によって得られた新しい画素データは、メッセージの次に高いz−レベルのデータと、同じ手段を用いて合成される。これは、メッセージの、全てのz−レベルが合成されるまで続く。
これらの動作の結果は、全体として、ランの連続としてのフレームに対するディスプレイ更新を表す。ここで各ランは、スタートX、Y座標、長さ、画素色値によって特定される。ランカリングモジュール210,552が省略されると、フレームバッファのあらゆる画素をカバーするランが生成されることになる。しかし、ランカリングモジュール210,552を有すると、そのようなランの生成ははるかに少なくなり、ランの生成とフレームバッファ160又はディスプレイ470へのランのペインティングの両方において、多大な計算時間の節約となる。
上述したように、ランカリングモジュール552の動作は、保持されるランリスト220(又は、プール520)の格納要求に基づいて最適化される。現実的な実施において、動作基準は、好ましくは、最悪の場合(これはランカリングモジュールの省略と等価である)でも、パフォーマンスが劣化しないことである。これは、もちろん、上述の式に従ってメモリの有効性が失効した場合であろう。この例は、図10において、メモリ要求が限度を超え、スパンA3に関連するレコードの上書きが生じたことを想定することにより理解できよう。そのようなことが発生すると、スパンB3は、その全体を描画することが必要となる。しかし、それにもかかわらず、フレームBで複写されるA1とA4の保有を通して、及び、スパンB2により大部分が複写されるスパンA2の一部の保有を通して、節約が得られるであろう。
また、本発明者らは、処理オーバーヘッドに起因して、ここで説明されたランカリング動作が、例えば32から64ピクセルよりも小さい、非常に小さなランに対して、明らかな節約を提供しないと判断した。しかしながら、例えば、不透明のオブジェクトを有する“マンガ”スタイルのアニメーションに関して、実験は80%までのレンダリング処理時間の節約を示した。
さらに、図10の例は不透明オブジェクトに関するが、ここで説明された原理は、透明成分を有するオブジェクトにも等しく適用できる。そのような例において、レンダリングにおける相違は、フィル生成モジュール554に渡されるアクティブなオブジェクトの数(説明された実施形態では4つに制限されている)と、領域合成モジュール556によって、オブジェクトの透明度のために実行されるべく要求されることになる付加的な処理のみである。
[産業上の利用性]
説明された構成は、動画の画像が要求されるコンピュータ及びデータ処理の産業に適用される。この例としては、ポータブルゲームデバイスがあげられる。特に、テレフォンハンドセット350上で行われるゲームに関連して図3に示したような通信ネットワークを介してゲームがなされるゲームデバイスを挙げることができる。そのような例において、図6A、6Bに示された処理の大部分は、ネットワーク320内のサーバコンピュータによって実行され、ハンドセット350はサーバへのユーザコマンドを入力するのに用いられる。サーバはそれらのコマンドを解釈して、インストラクション460、オブジェクト462、フィル464を形成し、フィルデータ532とz−レベルデータ534をハンドセット350へ渡し、ランカリング552を含むまでレンダリング動作を実行する。サーバはらランを出力しても良いく、それによりハンドセット350はディスプレイ352へのフィル生成と合成を実行する。それは、ハンドセット350の計算のオーバヘッドを最小にし、それによって主要なコストやバッテリ寿命を延ばしながら、処理スピードやサーバとの対話性を向上する。これは、特に、ハンドセットユーザ間でゲームをする場合に重要である。動作の別の態様は、グラフィックオブジェクト、或いはグラフィックオブジェクトの更新を、ネットワーク320からテレフォンハンドセット350へ送り、ハンドセット350内で描画パイプラインの全体を実現する。
図3において、リモートデバイスは、ポータブルテレフォンハンドセット350であるが、他のデバイスを用いても良いし、ポータブルに限られるものでもない。そのような例としては、コンピュータ駆動の広告表示のようにディスプレイが特定の目的に固定されるもの、或いはコピー機のようなデバイスの操作制御の部分を形成するディスプレイのようなものがあげられる。
以上の説明は、本発明のいくつかの実施形態について述べて物であり、それらに対する改良及び/又は変更が、本発明の範囲及び精神から逸脱することなくなされ得るものであり、実施形態はその例示であり限定するものではない。
本発明の少なくとも一つの実施形態が以下の図面を参照して説明される。
従来技術であるクイゼルアルゴリズムのデータフローの概要を示すブロック図である。 本発明に従った改造を示す、図1に類似のブロック図である。 本実施形態の構成を実現するコンピュータシステムを示す図である。 図2の構成の好ましい実施によるデータフローを示す図である。 オブジェクト、ステップ、エッジ及びフィルの例を示す図である。 オブジェクト、ステップ、エッジ及びフィルの例を示す図である。 オブジェクト、ステップ、エッジ及びフィルの例を示す図である。 図4に示す構成の詳細を示す図である。 図4に示す構成の詳細を示す図である。 エッジ処理モジュールの動作を説明するフローチャートである。 エッジ処理モジュールの動作を説明するフローチャートである。 エッジのオーバーラップの状態を説明する図である。 Z−レベルアクティベーションモジュールの動作を示すフローチャートである。 Z−レベルアクティベーションモジュールの動作を示すフローチャートである。 ランカリングモジュールの基本的な動作を示す図である。 ランカリングモジュールの動作を説明するフローチャートである。 フィル生成モジュールの動作を示す図である。

Claims (33)

  1. オブジェクトグラフィック要素から一連のラスター画像フレームを描画する方法であって、少なくとも一つの古いフィルランが第1のフレームの描画の間に保持され、前記保持されたフィルランが後続のフレームのための少なくとも一つの新しいフィルランと比較され、少なくとも一つの新しいフィルランにおいて当該新しいフィルランの少なくとも部分に対する画素データの生成を抑制し、代わりに、前記第1のフレームから保持された画素を用いることを特徴とする方法。
  2. 前記保持されたフィルランの記述は順番付けされたリストに格納されることを特徴とする請求項1に記載の方法。
  3. 前記保持されたフィルランの記述の数は、前記第1のフレームの完全な再生に必要な数よりも少ないことを特徴とする請求項2に記載の方法。
  4. 各々が複数の画素を有する複数のラスター画像のフレームを描画する方法であって、
    (a)第1のフレームを描画し、該第1のフレームの画素のフィルランを記述する第1のデータを保持する工程と、
    (b)前記第1のフレームの画素を更新するために第2のフレームを描画する工程とを有し、前記第2のフレームを描画する工程は、
    (ba)前記第2のフレームの画素のフィルランを記述する第2のデータを決定する工程と、
    (bb)前記第2のデータを前記第1のデータと比較する工程と、
    (bc)前記比較の結果、異なる画素値であった場合に、前記第2のデータを用いて新しい画素を生成し、前記第1のフレームの画素を上書きする工程とを備えることを特徴とする方法。
  5. 前記第1のデータは順序付けされたリストに保持されることを特徴とする請求項4に記載の方法。
  6. 前記リストに保持される前記第1のデータの量は、前記第1のフレームの完全な再生に必要な数よりも少ないことを特徴とする請求項5に記載の方法。
  7. 前記工程(b)は、さらに、
    (bd)前記新しい画素に対応する前記第2のデータで前記第1のデータを更新する工程と、
    (be)前記工程(bb)の比較の結果が同じ画素値であることを示す場合、前記第2のフレームにおいて前記第1のフレームの対応する画素を再生する工程とを備え、
    前記方法は、さらに、
    (c)後続のフレームに対して、前記工程(b)を繰り返す工程を備えることを特徴とする請求項4に記載の方法。
  8. 前記フィルランの各々を記述する前記データは、少なくとも、前記ランの画素及び長さに寄与するグラフィックオブジェクトの優先度のリストを含むことを特徴とする請求項7に記載の方法。
  9. 前記リストは、最高優先度側の所定数のオブジェクトに制限されていることを特徴とする請求項8に記載の方法。
  10. 前記工程(bb)は、前記フレームのスキャンラインに沿った順序で前記フィルランに関するデータを比較することを含むことを特徴とする請求項8又は9に記載の方法。
  11. 前記比較の処理は、
    (bba)前記第2のデータの寄与するオブジェクトの優先度と前記第1のデータのそれらとを比較し、
    優先度が同じであれば、(bbaa)対応するランの長さを比較し、それらが同じであれば前記工程(be)は、(bea)前記ランに対する前記第1のフレームの画素を再生して前記第2のデータを破棄し、それらが同じでなければ前記工程(be)は、(beb)それら2つの長さのうちの短い方に対応するスパンにおける前記第1フレームの画素を再生し、前記第1のデータにおける前記ランの長さを前記短い方の長さに更新し、前記第2のデータの寄与する優先度と前記2つの長さの間の相違部分である残りの長さに対応する第2のデータから新しいランを形成し、
    優先度が同じでない場合、前記第2のフレームに対する前記第2のデータから画素値を決定する工程とを備えることを特徴とする請求項10に記載の方法。
  12. 前記描画がスキャンライン順で実行されることを特徴とする請求項1乃至11のいずれかに記載の方法。
  13. 請求項1乃至12のいずれかに記載の方法を実行するように構成された、一連の画像フレームを描画する装置。
  14. 請求項1乃至12のいずれかに記載の方法に従って一連の画像フレームを描画するためのコンピュータプログラムが記録されたコンピュータ可読媒体。
  15. 請求項1乃至14のいずれかに記載された発明を用いて形成された一連の画像フレーム。
  16. 各々が複数の画素を有する一連のラスター画像フレームを描画する装置であって、
    前記一連の画像フレームのうちの一つの画像フレームを描画し、該画像フレームの画素のフィルランを記述するデータを保持する描画部と、
    前記一連の画像フレームにおける次の画像フレームの画素のフィルランを記述する更なるデータを決定する手段と、
    前記更なるデータを前記保持されたデータと比較する手段と、
    前記比較の結果が異なる画素値を表す場合に、前記更なるデータを用いて新しい画素を描画し、前記次の画像フレームを形成するために前記画像フレームにおいて画素を上書きする手段とを備えることを特徴とする装置。
  17. 前記保持されたデータと前記更なるデータの各々は、対応する画像フレームにおける画素のランを備えることを特徴とする請求項16に記載の装置。
  18. 前記比較する手段は、前記画像と更なるフレームの間の画素のランの類似性を判定するためにデータを比較することを特徴とする請求項17に記載の装置。
  19. 保持された前記データを順序付けされたリストとして保持する手段をさらに備えることを特徴とする請求項16に記載の装置。
  20. 前記リストに保持される前記データの量は、前記第1のフレームの完全な再生に必要な数よりも少なく制限されることを特徴とする請求項19に記載の装置。
  21. 前記保持されたデータを、前記新しい画素に対応する前記更なるデータで更新する手段と、
    前記比較する手段による結果が同じ画素値を表す場合、前記画像フレームの対応する画素を前記更なるフレームにおいて再生する手段と、
    前記一連の画像フレームにおける後続のフレームのために前記装置の処理を繰り返す手段とを備えることを特徴とする請求項18に記載の装置。
  22. 前記フィルランの各々を記述する前記データは前記ランにおける画素に寄与するグラフィックオブジェクトの優先度とランの長さを含むことを特徴とする請求項21に記載の装置。
  23. 前記リストは、最高優先度側の所定数のオブジェクトに制限されることを特徴とする請求項22に記載の装置。
  24. 前記フレームのスキャンラインに沿った順番で前記フィルランに対するデータを比較する手段を更に備えることを特徴とする請求項23に記載の装置。
  25. 前記比較する手段は更に、
    前記更なるデータの寄与するオブジェクト優先度と前記画像データの優先度とを比較する第1手段と、
    前記第1手段において前記優先度が同じであると判断された場合に動作可能であり、対応するランの長さを比較する第2手段と、
    前記第2手段において前記長さが同じであると判断された場合に動作可能であり、前記更なるフレームにおける前記ランに対する前記画像フレームの画素を再生し、前記更なるデータを破棄する第3手段と、
    前記第2手段において前記長さが異なると判断された場合に動作可能であり、前記画素フレーム中の、長さの短い方に対応する画素スパンにおける画素を再生し、前記短い方の長さによって該画素データにおける前記ランの長さを更新して、前記更なるデータから新しい画素のランを形成する第4手段と、ここで該新しいランは前記更なるデータの寄与する優先度の、前記2つの長さの相違による残り部分に対応し、
    前記第1手段において前記優先度が異なると判断された場合に動作可能であり、前記次の画像フレームに対する前記更なるデータから画素値を決定する第5手段とを備えることを特徴とする請求項24に記載の装置。
  26. 前記描画は、スキャンライン毎に実行されることを特徴とする請求項16乃至25のいずれかに記載の装置。
  27. 各々が複数の画素を有する複数のラスター画像を描画する処理をコンピュータに実行させるためのプログラムが記録されたコンピュータ可読媒体であって、前記プログラムが、
    第1のフレームを描画し、該第1のフレームの画素のフィルランを記述する第1のデータを保持するコード手段と、
    前記第1のフレームの画素を更新するために第2のフレームを描画するコード手段とを有し、該第2のフレームを描画するコード手段が、
    前記第2のフレームの画素のフィルランを記述する第2のデータを決定するコード手段と、
    前記第2のデータを前記第1のデータと比較するコード手段と、
    前記比較の結果が異なる画素値であることを示す場合、前記第2のデータを用いて新しい画素を生成し、前記第1のフレームの画素を上書きするコード手段とを備えることを特徴とするコンピュータ可読媒体。
  28. 各々が複数の画素で形成された一連の画像フレームを描画する装置であって、
    前記装置による描画のために有効なグラフィックオブジェクトに関連するフィル及び優先度データを、ホストから受信する手段と、
    前記一連の画像フレームが再生されるディスプレイデバイスと、
    前記画像フレームの各々において画素のランを記述する制限されたデータをホストから受信する手段と、該制限されたデータは、対応する当該ラン内の画素値に寄与する前記オブジェクトを含み、
    前記ディスプレイデバイスに表示するための対応するフレームに関する画素値を提供するために、前記ランの各々に対して、前記制限されたデータと前記フィルと優先度データとを用いて対応するオブジェクトを描画する手段とを備えることを特徴とする装置。
  29. 前記フレームの現在のフレームに対する制限されたデータを保持する手段と、前記描画は、前記保持され制限されたデータにより実行され、
    後続のフレームのための少なくとも一つの画素のランのために、保持された前記制限されたデータを更新する手段とを更に備え、ここで更新保持された前記制限されたデータは以前のフレームに対して変化した画素のランに関連するものであり、
    前記描画する手段は、前記制限されたデータが更新されたとき、前記後続のフレームに対して有効であることを特徴とする請求項28に記載の装置。
  30. ユーザコマンドを受信するユーザインターフェースと、
    前記制限されたデータの生成に影響を及ぼすべく、前記ユーザコマンドを前記ホストへ通信する手段とを更に備えることを特徴とする請求項29に記載の装置。
  31. 各々が複数の画素で形成された表示可能な一連の画像フレームを表す画像データを処理する装置であって、
    遠隔装置へ、前記画像データの一部を形成するグラフィックオブジェクトに関連した、前記遠隔装置による描画に有用なフィル及び優先度データを送信する手段と、
    前記画像データから、各画像フレームにおいて画素のランを記述する制限されたデータを決定する手段と、該制限されたデータは対応する前記画素のラン内の画素値に寄与する前記グラフィックオブジェクトを含み、
    現在の前記フレームに対する前記制限されたデータを直前のフレームに対する前記制限されたデータと比較し、前記現在のフレームのための前記制限されたデータが変化したかどうかを識別する手段と、
    前記現在のフレームを描画するために、前記遠隔装置に前記変化した制限されたデータを送信する手段とを備えることを特徴とする装置。
  32. 前記遠隔装置からコマンドを受信する手段と、
    前記画像データを変化させるために前記コマンドを処理する手段とを更に備えることを特徴とする請求項31に記載の装置。
  33. 図2〜12において示される実施形態を参照して実質的に説明された実施形態のいずれかにより一連のラスター画像フレームを描画する方法。
JP2003564824A 2002-02-01 2003-01-31 ラスター画像のフレームを描画する方法及び装置 Expired - Fee Related JP4154336B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AUPS0287A AUPS028702A0 (en) 2002-02-01 2002-02-01 Efficient display update from changing object graphics
PCT/JP2003/000994 WO2003065310A1 (en) 2002-02-01 2003-01-31 Efficient display update from changing object graphics

Publications (3)

Publication Number Publication Date
JP2005516315A true JP2005516315A (ja) 2005-06-02
JP2005516315A5 JP2005516315A5 (ja) 2006-03-16
JP4154336B2 JP4154336B2 (ja) 2008-09-24

Family

ID=3833887

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003564824A Expired - Fee Related JP4154336B2 (ja) 2002-02-01 2003-01-31 ラスター画像のフレームを描画する方法及び装置

Country Status (5)

Country Link
US (1) US20050052455A1 (ja)
EP (1) EP1470530A4 (ja)
JP (1) JP4154336B2 (ja)
AU (1) AUPS028702A0 (ja)
WO (1) WO2003065310A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003903448A0 (en) 2003-06-26 2003-07-17 Canon Kabushiki Kaisha A method for tracking depths in a scanline based raster image processor
US7280120B2 (en) 2003-06-26 2007-10-09 Canon Kabushiki Kaisha Compositing with a sub-pixel mask in graphic object rendering
AU2003903445A0 (en) 2003-06-26 2003-07-17 Canon Kabushiki Kaisha Optimising compositing calculations for a run of pixels
AU2003903447A0 (en) 2003-06-26 2003-07-17 Canon Kabushiki Kaisha Rendering successive frames in a graphic object system
DE60305027T2 (de) * 2003-07-28 2006-12-14 Dassault Systèmes S.A. Verfahren zur Bereitstellung eines Vektorbildes mit entfernten versteckten Linien
JP4364706B2 (ja) * 2004-04-05 2009-11-18 富士通株式会社 陰線処理方法
US7167171B2 (en) * 2004-06-29 2007-01-23 Intel Corporation Methods and apparatuses for a polygon binning process for rendering
JP4180043B2 (ja) * 2004-11-15 2008-11-12 シャープ株式会社 3次元図形描画処理装置、画像表示装置、3次元図形描画処理方法、これをコンピュータに実行させるための制御プログラムおよび、これを記録したコンピュータ読み取り可能な可読記録媒体
JP4459250B2 (ja) * 2007-04-20 2010-04-28 富士通株式会社 送信方法、画像送信システム、送信装置及びプログラム
US8201102B2 (en) * 2007-09-04 2012-06-12 Apple Inc. Opaque views for graphical user interfaces
US8127233B2 (en) * 2007-09-24 2012-02-28 Microsoft Corporation Remote user interface updates using difference and motion encoding
US20090096792A1 (en) * 2007-10-15 2009-04-16 Ati Technologies Ulc Fill mode determination in vector graphics
US20100125552A1 (en) * 2008-10-30 2010-05-20 Peterson Barry L Method and system for updating viewer caches
US9639963B2 (en) * 2008-12-08 2017-05-02 Microsoft Technology Licensing, Llc Command remoting techniques
JP5994473B2 (ja) * 2012-08-13 2016-09-21 株式会社リコー 画像処理装置、画像処理方法、プログラム及び記録媒体
US9979960B2 (en) 2012-10-01 2018-05-22 Microsoft Technology Licensing, Llc Frame packing and unpacking between frames of chroma sampling formats with different chroma resolutions
JP2018063557A (ja) * 2016-10-12 2018-04-19 キヤノン株式会社 画像形成装置、方法、プログラム
US10368080B2 (en) 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
CN115840761B (zh) * 2023-03-01 2023-04-14 自然资源部第三地理信息制图院 一种卫星影像像元值修改方法、系统、设备及介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0695341B2 (ja) * 1985-10-28 1994-11-24 松下電器産業株式会社 隠れ面処理装置
US4792981A (en) * 1987-09-21 1988-12-20 Am International, Inc. Manipulation of run-length encoded images
US5706415A (en) * 1991-12-20 1998-01-06 Apple Computer, Inc. Method and apparatus for distributed interpolation of pixel shading parameter values
US5377313A (en) * 1992-01-29 1994-12-27 International Business Machines Corporation Computer graphics display method and system with shadow generation
US5295235A (en) * 1992-02-14 1994-03-15 Steve Newman Polygon engine for updating computer graphic display employing compressed bit map data
US5420966A (en) * 1992-04-29 1995-05-30 Canon Information Systems Canon Kabushiki Kaisha Method and apparatus for filling an object based rasterized image
US5487145A (en) * 1993-07-09 1996-01-23 Taligent, Inc. Method and apparatus for compositing display items which minimizes locked drawing areas
JPH07105404A (ja) * 1993-10-04 1995-04-21 Ricoh Co Ltd 立体画像処理装置及びその処理方法
AUPM822394A0 (en) * 1994-09-16 1994-10-13 Canon Inc. Object based rendering system
JPH0916806A (ja) * 1995-07-04 1997-01-17 Ricoh Co Ltd 立体画像処理装置
US5977987A (en) * 1995-07-26 1999-11-02 Raycer, Incorporated Method and apparatus for span and subspan sorting rendering system
US5990904A (en) * 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
US5883678A (en) * 1995-09-29 1999-03-16 Kabushiki Kaisha Toshiba Video coding and video decoding apparatus for reducing an alpha-map signal at a controlled reduction ratio
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6069633A (en) * 1997-09-18 2000-05-30 Netscape Communications Corporation Sprite engine
US6747645B1 (en) * 1998-03-13 2004-06-08 Hewlett-Packard Development Company, L.P. Graphics memory system that utilizes detached-Z buffering in conjunction with a batching architecture to reduce paging overhead
US6288724B1 (en) * 1998-09-16 2001-09-11 Texas Instruments Incorporated Clipping and trapezoid decomposition of polygons for printing files in a page description language
US6807620B1 (en) * 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US6628297B1 (en) * 2000-05-10 2003-09-30 Crossartist Software, Aps Apparatus, methods, and article for non-redundant generation of display of graphical objects

Also Published As

Publication number Publication date
EP1470530A4 (en) 2008-08-13
US20050052455A1 (en) 2005-03-10
JP4154336B2 (ja) 2008-09-24
WO2003065310A1 (en) 2003-08-07
AUPS028702A0 (en) 2002-02-28
EP1470530A1 (en) 2004-10-27

Similar Documents

Publication Publication Date Title
JP4154336B2 (ja) ラスター画像のフレームを描画する方法及び装置
US10402934B2 (en) System for optimizing graphics operations
US8704830B2 (en) System and method for path rendering with multiple stencil samples per color sample
EP1735748B1 (en) System and method for processing graphics operations with graphics processing unit
US5774133A (en) Computer system with improved pixel processing capabilities
JP4366387B2 (ja) 画像処理装置及び方法
US7737982B2 (en) Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US8081184B1 (en) Pixel shader program thread assembly
US6985150B2 (en) Accelerator control unit configured to manage multiple hardware contexts
US20060125838A1 (en) System for reducing the number of programs necessary to render an image
JPH04287292A (ja) トリミングされたパラメトリック面のレンダリング方法及び装置
WO2008013605A1 (en) Real-time gpu rendering of piecewise algebraic surfaces
US6831658B2 (en) Anti-aliasing interlaced video formats for large kernel convolution
JP2000137825A (ja) ラスタ形式のグラフィックオブジェクトを用いたイメ―ジの高速レンダリング方法
US6943797B2 (en) Early primitive assembly and screen-space culling for multiple chip graphics system
US6952217B1 (en) Graphics processing unit self-programming
US6943796B2 (en) Method of maintaining continuity of sample jitter pattern across clustered graphics accelerators
US8004515B1 (en) Stereoscopic vertex shader override
US20040012610A1 (en) Anti-aliasing interlaced video formats for large kernel convolution
US6982719B2 (en) Switching sample buffer context in response to sample requests for real-time sample filtering and video generation
US6867778B2 (en) End point value correction when traversing an edge using a quantized slope value
US6816162B2 (en) Data management to enable video rate anti-aliasing convolution
US20100302259A1 (en) Drawing data processing method, graphics drawing system and graphics drawing data generation program
US7256796B1 (en) Per-fragment control for writing an output buffer
US7042452B1 (en) Triangle coverage estimation and edge-correct tessellation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080530

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080623

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080707

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110711

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120711

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120711

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130711

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees