JP4371350B2 - 多重レベル・グラフィックス処理システムおよび方法 - Google Patents
多重レベル・グラフィックス処理システムおよび方法 Download PDFInfo
- Publication number
- JP4371350B2 JP4371350B2 JP2002304897A JP2002304897A JP4371350B2 JP 4371350 B2 JP4371350 B2 JP 4371350B2 JP 2002304897 A JP2002304897 A JP 2002304897A JP 2002304897 A JP2002304897 A JP 2002304897A JP 4371350 B2 JP4371350 B2 JP 4371350B2
- Authority
- JP
- Japan
- Prior art keywords
- graphics
- component means
- information
- data
- level
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2213/00—Indexing scheme for animation
- G06T2213/04—Animation description language
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Description
本発明は、特許仮出願第60/330,244号(2001年10月18日出願)(特許文献1)への優先権を請求する。本発明は、米国特許出願「Generic Parameterization for a Scene Graph」(弁護士整理番号第3130号)(特許文献2)および米国特許出願「Intelligent Caching Data Structure for Immediate Mode Graphics」(弁護士整理番号第3150号)(特許文献3)に関し、両文書とも、本出願の譲受人に譲受され、本明細書とともに同時出願され、参照によりそれら全体が組み入れてある。
【0002】
【発明の属する技術分野】
本発明は、一般にコンピュータ・システムに関し、より詳細には、コンピュータ・システムのディスプレイについてのグラフィカル情報およびその他のビデオ情報の処理に関する。
【0003】
【従来の技術】
現代の計算機システムにおいて、グラフィックスおよびビデオ・ハードウェアの機能が急速に向上している。事実、現代の計算機システムに使用されるグラフィックス・システムは、ある程度、単なるグラフィックス・サブシステムと言うより、コプロセッサと考えることができる。同時に、消費者は、たとえば、モニタ、テレビ、携帯電話のディスプレイを見る際に、表示される画像の品質に、より高い期待を寄せるようになってきている。
【0004】
しかし、メモリやバスの速度が、メイン・プロセッサおよび/またはグラフィックス・プロセッサの進歩に追いついてきていない。その結果、コンピュータ・システムのグラフィックスにアクセスする従来のイミーディエイト・モード・モデルの持つ限界に達してしまっている。同時に、開発者および消費者は、従来のグラフィカル・ウィンドウィング・アーキテクチャでは満たすことのできないような、新規の機能や特別な効果を要求してきている。
【0005】
特定のゲーム・プログラムは、グラフィックス・ハードウェアの利点を生かして設計されており、このようなゲーム・プログラムは、デスクトップ・アプリケーション・プログラム等とは異なる条件で動作する。これは主に、ゲームでは、同時に実行するかもしれないその他のプログラムを問題にする必要がないからである。このようなゲーム・プログラムとは異なり、アプリケーションでは、他のアプリケーションと、グラフィックスおよびその他のシステム・リソースを共有しなければならない。しかし、一般に、グラフィックス処理については、協調型(cooperative)で、マシン全体を共用するモデル(machine-wide sharing model)で書かれてはいない。
【0006】
たとえば、デスクトップ・アプリケーションでアニメーションを実行すると、専用の単一目的のコードを必要とするか、または別のアプリケーションを使用しなければならない。そして、たとえそうしたとしても、マルチウィンドウ環境でスムーズなアニメーションを得ることは不可能ではないにしても、困難ではある。このことは、一般的に言って、スムーズで高速度なアニメーションを得るには、アニメーション・パラメータを更新し、高いフレーム速度(rate)で、理想的には、グラフィックス装置のハードウェア・リフレッシュ速度で、シーンを再描画(これには、データ構造をトラバース(traverse;走査、横断)し描画する必要がある)しなければならないからである。しかし、アニメーション・パラメータを更新し、シーンを定義するデータ構造をトラバースし描画することは、一般に、コンピュータ処理の集中化状態となる。シーンのアニメーションを大きくしたり回数を多くしたりすると、コンピュータ処理への要求が増大し、そのことは、スムーズにアニメーションすることが可能なシーンの複雑度を制限する。
【0007】
問題が複雑となっている、その原因は、グラフィックスのハードウェアがディスプレイ・リフレッシュを実行する場合、アニメーションの各フレームを計算し、描画して、プレゼンテーションのための準備作業をする必要があることである。ハードウェアの必要とするときにフレームの準備ができていなかった場合は、フレームが落ちてしまったり、遅れてしまったりすることとなる。一定数のフレームが落ちると、アニメーションを表示しているディスプレイに、かなりのスタッタ(stutter;ぎこちない動き)が現れる。また、フレームの準備作業がリフレッシュ速度と同期がとれていない場合は、テアリング(tearing;裂け目が見える現象)として周知の、望ましくない影響が起きる可能性がある。実際、現代の多重タスキング・オペレーティング・システムは、システム上の、多くのタスクの間で計算用のリソースを分割している。しかし、オペレーティング・システム・タスクス・ケジューラによるフレーム処理のための時間が、グラフィックス・ハードウェアのフレーム速度に合うことはめったにない。したがって、たとえ計算用のリソースが十分にあったとしても、アニメーション・システムは、スケジューリングの問題によって、やはりフレームを落としてしまう可能性がある。たとえば、アニメーション・タスクの動きが遅すぎるようにスケジューリングされている可能性もあり、またはフレームが完了する前に優先使用されてしまう可能性もあり、スクリーンの次のハードウェア・リフレッシュのため次のフレームを供給するように時間通りに再スケジューリングされることはない。このような問題は、アニメーションしたグラフィックスを、ビデオまたはその他の非同期式に生成されるフレームのソースと合成する必要がある場合に、一層複雑となる。
【0008】
一般的に言って、フレームを準備するために現在使われている(たとえば、WM_PAINT)モデルは、複雑なグラフィックス効果(複雑なアニメーションなど)が望ましい場合に、リフレッシュ速度に追いつくためには余りに多くのデータ処理を必要とする。その結果、複雑なグラフィックス効果を従来のモデルを使って試みると、次のフレームの変更を終了させて次のフレームに間に合ってビジュアル効果がやがて知覚されるのではなく、変更が個々のフレームに追加されてしまう可能性もあり、そのため、ビジュアル的で目立った望ましくない結果が引き起こされる。シーン・グラフ内のすべてのオブジェクトにオブジェクト・ハンドルを与えることにより、選択的に変更を組み込むことができるようにした計算モデルがある。しかし、このようなモデルは、かなりの数のオブジェクトを追跡(track)するための複数のアプリケーションを必要とし、また、そのアプリケーションがオブジェクトを変更させようとしない場合でさえも、オブジェクト・ハンドルが存在するために、余りにも多くのリソースを消費する。
【0009】
【発明が解決しようとする課題】
要するに、コンピュータ・システムのグラフィックスにアクセスするための既存のモデルは、現行ディスプレイ・ハードウェアと一緒に機能するには、また消費者の期待を満足させるには不充分となってきている。グラフィックスとビデオを処理するための新しいモデルが、必要とされている。
【0010】
【課題を解決するための手段】
簡単に言えば、本発明は、たとえば、スムーズなアニメーションなどの、改良型グラフィックス・アクセスおよび出力を供給するための、多重レベルのグラフィックス処理システム(multi-level graphics processing system)および方法(たとえば、オペレーティング・システムについての)を提供することである。一実施形態では、グラフィックス処理システムは、2つの構成要素を含む。ティック−オン−デマンド(tick-on-demand)または低速ティック(slow tick)高レベル構成要素、そして高速ティック(fast tick)(たとえば、1つまたは複数のグラフィックス・ハードウェア・フレーム速度)低レベル構成要素である。
【0011】
一般的に言って、高レベル構成要素は、ディスプレイされるべきシーンをトラバースして、この後の補間用に間隔を開けて、アニメーション・パラメータを更新し、そして単純化したデータ構造を低レベル構成要素にパスする。低レベル構成要素は、データ構造を、瞬時値を得るために必要とするパラメータ間隔を補間することを含んで、処理して出力データを獲得し、アニメーションの各フレームに対応するシーンをレンダリングする。
【0012】
一般的に言って、本発明は、グラフィックス・データを要素に分けて、アニメーション・パラメータを更新し、シーン・データ構造をトラバースするという、コンピュータ処理の最も集中化する局面は、高レベル処理構成要素で過度に要求されることが少ないスケジュールで実行するように、グラフィック・データを属性分配することにより、上述した(およびその他の)問題を解決する。低レベル処理構成要素の方が、より頻繁に動作するが、比較的単純化したデータ構造と処理すべき命令とを供給する高レベル前処理のために、コンピュータ処理の集中化が少ない状態でタスクを処理する。ビデオ・フレームも、これらの低レベル・ティック期間に、合成に組み込まれることもある。
【0013】
このシステムおよび方法の利点には、オペレーティング・システム・シェルの一部として、またアニメーションされるコンテンツに相応しいアニメーション・エンジンとして、テレビのような品質のアニメーションが含まれる。さらなる利点には、ビデオ・イメージをグラフィックスと合成することと、高帯域幅を必要としないネットワーク接続、少なくとも、従来のラスタ化したグラフィックス・ビットを必要とされる高フレーム速度で運ぶ程には、十分に高い帯域幅ではない、ネットワーク接続を介して、高品質ビデオ・ディスプレイの複数の端末に情報を配信する機能と、が含まれる。
【0014】
本発明は、グラフィックスを含むディスプレイ情報のフレームを出力するグラフィックス・サブシステムと、ディスプレイ情報のフレームを出力するグラフィックス・サブシステムに、グラフィックス・データを第1の速度で供給する第1の構成要素と、プログラム・コードとインターフェースして、プログラム・コードに合うシーン・データを生成する第2の構成要素であって、シーン・データをグラフィックス情報に第1の速度より遅い第2の速度で処理し、グラフィックス情報を第1の構成要素に供給するよう構成された第2の構成要素を含むシステムを介して提供することができる。
【0015】
方法およびコンピュータ実行可能命令を有するコンピュータ読取り可能媒体は、第1の構成要素において、出力するグラフィカル・イメージに対応するデータを含むコール(call)を受信することと、そのデータをシーン情報として維持することと、そして第1のオペレーティング速度で、シーン情報をグラフィックス情報に処理することと、グラフィックス情報を第2の構成要素に伝達することとを含むことができる。第2の構成要素において、第1のオペレーティング速度より速くグラフィックス・サブシステムのフレーム・リフレッシュ速度に基づく第2のオペレーティング速度で、本方法は、グラフィックス情報を受信することと、グラフィックス情報をグラフィックス・サブシステム用にフォーマットしたグラフィックス・データに処理することと、グラフィックス・データをグラフィックス・サブシステムに伝達して、フレームを出力することとを含むことができる。
【0016】
データ構造をそこに格納したコンピュータ読取り可能媒体は、その中にビジュアル識別子を有する識別子フィールドと、命令ブロックに対応するフィールドとを含み、その命令ブロックは、ビジュアル識別子によって識別されるビジュアルに関連する1組のデータに対応し、その1組のデータは、高レベル・グラフィックス処理構成要素から低レベル・グラフィックス処理構成要素にパスされて、高レベル構成要素は、シーン・グラフからデータ構造を構築してデータ構造を低レベル構成要素に供給し、低レベル構成要素は、データ構造を、フレームを出力するグラフィックス・サブシステムにパスするためのグラフィックス・データに、処理するビジュアル更新ブロック、を備えることができる。
【0017】
その他の利益および利点は、以下に記述する詳細な説明を、図面と合わせて読めば、より明らかとなるであろう。
【0018】
【発明の実施の形態】
オペレーティング環境の例(EXEMPLARY OPERATING ENVIRONMENT)
図1は、本発明を実施することができる適切なコンピューティング・システム環境100の例を示す図である。コンピューティング・システム環境100は、適切な計算環境の一例にすぎず、本発明の使用法または機能の範囲を提案することを意図していない。またコンピューティング環境100は、例示したオペレーティング環境100に示した構成要素のいずれか1つまたは組み合わせに依存したり、その条件が必要であると解釈されないものとする。
【0019】
本発明は、その他多くの汎用または専用コンピューティング・システム環境またはシステム構成を使用して動作できるものである。本発明に使用するのに適切であることができる周知の計算機システム、環境、および/またはシステむ構成の例として、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ装置、タブレット装置、多重プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な家電機器、ネットワークPC、ミニ・コンピュータ、メイン・フレーム・コンピュータ、上述のシステムまたは装置のいずれかを含む分散型計算環境などがあるが、これらに限定されるものではない。
【0020】
本発明は、コンピュータによって実行されるプログラム・モジュールなどの、コンピュータ実行可能命令の一般的なコンテキストにおいて説明することができる。一般に、プログラム・モジュールには、特定のタスクを実行する、または特定の抽象データ・タイプを実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。本発明はまた、通信ネットワークを介してリンクされているリモート・プロセッシング装置によってタスクが実行される分散型計算環境で使用されることもできる。分散型計算環境では、プログラム・モジュールは、メモリ記憶装置を含む、局所およびリモート・コンピュータ記憶媒体内に配置されることができる。
【0021】
図1に関して、本発明を実施するためのシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の構成要素は、プロセッシング・ユニット120と、システム・メモリ130と、システム・メモリを含むさまざまなシステム構成要素をプロセッシング・ユニット120に結合するシステム・バス121とを含むが、これらに限定されるものではない。システム・バス121は、メモリ・バスまたはメモリ・コントローラ、周辺バス、およびさまざまなバス・アーキテクチャのいずれかを使用するローカル・バスを含む、数種類のバス構造のいずれかであることができる。例として、限定されるものではないが、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture)(ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture)(MCA)バス、エンハンストISA(EISA)バス、ビデオ電子機器標準協会(Video Electronics Standards Association)(VESA)ローカル・バス、加速グラフィックス・ポート(Accelerated Graphics Port)(AGP)バス、メザニン・バス(Mezzanine bus)としても周知の、周辺構成要素相互接続(Peripheral Component Interconnect)(PCI)を含む。
【0022】
コンピュータ110は、一般に、さまざまなコンピュータ読取り可能媒体を備える。コンピュータ読取り可能媒体は、コンピュータ110によってアクセス可能な媒体であることができ、揮発性および不揮発性媒体、取り外し可能および取り外し不能媒体の両方を含む。例として、限定されるものではないが、コンピュータ読取り可能媒体は、コンピュータ記憶媒体と通信媒体を備えることができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラム・モジュールまたはその他のデータなどの情報を格納するための方法または技術で実施される、揮発性および不揮発性、取り外し可能および取り外し不能媒体の両方を備える。コンピュータ記憶媒体は、限定されないが、RAM、ROM、EEPROM、フラッシュ・メモリまたはその他のメモリ技術、CD−ROM、ディジタル多目的ディスク(DVD)またはその他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、またはその他の、所望の情報を格納するために使用され、コンピュータ110によってアクセス可能な媒体を備える。通信媒体は、一般に、コンピュータ読取り可能命令、データ構造、プログラム・モジュールまたはその他の、搬送波またはその他の移送メカニズムなどの変調データ信号内のデータを包含し、情報配信媒体を含む。「変調データ信号」という用語は、1つまたは複数の特性を有し、または情報を信号内に符号化する方式で変更された信号を意味する。例として、限定されるものではないが、通信媒体は、ワイヤード・ネットワークまたは直接ワイヤード接続などのワイヤード媒体、および音響、RF、赤外線およびその他のワイヤレス媒体などのワイヤレス媒体を備える。上述のもののいずれの組み合わせも、コンピュータ読取り可能媒体の範囲内に含まれる。
【0023】
システム・メモリ130は、リード・オンリー・メモリ(ROM)131やランダム・アクセス・メモリ(RAN)132などの揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を備える。基本入力/出力システム133(BIOS)は、スタートアップ中などに、コンピュータ110内の要素間の情報の転送に力を貸す基本ルーチンを含み、一般にROM131内に格納される。RAM132は、一般に、ただちにアクセス可能および/または、現在、プロセッシング・ユニット120によって動作中のデータおよび/またはプログラム・モジュールを含む。例として、限定されるものではないが、図1は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136およびプログラム・データ137を備える。
【0024】
コンピュータ110はまた、その他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ記憶媒体を備える。例示のためだけに、図1は、取り外し不能の不揮発性磁気媒体から読出し、そこに書き込むハード・ディスク・ドライブ141と、取り外し可能の不揮発性磁気ディスク152から読出し、そこに書き込む磁気ディスク・ドライブ151と、CDROMまたはその他の光学媒体などの、取り外し可能の不揮発性光学ディスク156から読出し、そこに書き込む光学ディスク・ドライブ155とを図示している。例示のオペレーティング環境の例で使用することのできる、その他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ記憶媒体は、限定されるものではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ディジタル多目的ディスク(DVD)、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROMなどを含む。
【0025】
ハード・ディスク・ドライブ141は、一般に、インターフェース140などの取り外し不能メモリ・インターフェースを介してシステム・バス121に接続し、磁気ディスク・ドライブ151および光学ディスク・ドライブ155は、一般に、インターフェース150などの取り外し可能メモリ・インターフェースによってシステム・バス121に接続する。
【0026】
上記で説明し、図1に示した、ドライブおよびそれらの関連コンピュータ記憶媒体は、コンピュータ110のための、コンピュータ読取り可能命令、データ構造、プログラム・モジュールおよびその他のデータの記憶域を提供する。図1では、たとえば、ハード・ディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146およびプログラム・データ147を格納するものとして示してある。これらの構成要素は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137と同じまたは異なるもののどちらでもあり得ることに留意されたい。オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147は、本明細書では、最小限で示してあるが個別の数量が与えられ、それらは異なるコピーである。ユーザは、コマンドおよび情報を、タブレット(電子ディジタイザ)164、マイクロホン163、キーボード162および通常マウス、トラックボールまたはタッチパッドと呼ぶポインティング・デバイス161、などの入力装置を介して、コンピュータ20に入力することができる。その他の入力装置(図示せず)は、ジョイスティック、ゲーム・パッド、衛星放送用パラボラ・アンテナ(satellite dish)、スキャナなどを備えることができる。これらおよびその他の入力装置は、システム・バスに結合するユーザ入力インターフェース160を介してプロセッシング・ユニット120に接続することが多いが、パラレル・ポート、ゲーム・ポートまたはUSB(universal serial bus)など、その他のインターフェースおよびバス構造によって接続することもできるる。モニタ191またはその他の種類のディスプレイ装置も、ビデオ・インターフェース190などのインターフェースを介してシステム・バス121に接続される。モニタ191も、タッチ・スクリーン・インターフェース192などのインターフェースを介してコンピュータ・システム110への手書き(handwriting)など、ディジタル化した入力を入力することができるタッチ・スクリーン・パネル193などと統合されることもできる。モニタおよび/またはタッチ・スクリーン・パネルは、タッチ・スクリーン・パネル193が、本来タブレット164として働く、タブレット・タイプのパーソナル・コンピュータなどのように、計算装置110がその内部に組み込まれているハウジングに物理的に結合できることに留意されたい。さらに、計算装置110などのコンピュータはまた、出力周辺インターフェース194などを介して接続することができる、スピーカ195やプリンタ196などのその他の周辺出力装置を備えることができる。
【0027】
コンピュータ110は、リモート・コンピュータ180などの1つまたは複数のリモート・コンピュータへの論理接続を使用するネットワーク環境で動作することができる。リモート・コンピュータ180は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア装置またはその他の共通ネットワーク・ノードであることができ、図1ではただ1つのメモリ記憶装置181だけを示してあるが、一般に、コンピュータ110に関連して上述した多くのまたはすべての要素を有する。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)171およびワイド・エリア・ネットワーク(WAN)173を含むが、その他のネットワークも含むことができる。このようなネットワーキング環境は、オフィス、全社的なコンピュータ・ネットワーク、イントラネットおよびインターネット内で良く見かけるものである。
【0028】
LANネットワーキング環境を使用した場合、コンピュータ110は、ネットワーク・インターフェースまたはアダプタ170を介してLAN171に接続する。WANネットワーキング環境を使用した場合、コンピュータ110は、一般に、インターネットなど、モデム172またはその他のWAN173を介して通信を確立するための手段を備える。モデム172は、内部または外部のいずれかであるが、ユーザ入力インターフェース160またはその他の適切なメカニズムを介してシステム・バス121に接続する。ネットワーク環境では、コンピュータ110またはその一部に対して示してあるプログラム・モジュールは、リモート・メモリ記憶装置内に格納される。例として、限定するものではないが、図1には、メモリ装置181に存在するリモート・アプリケーション・プログラム185を示してある。示してあるネットワーク接続は例示のためであり、コンピュータ間の通信を確立するためのその他の手段も使用可能であることは理解されよう。
【0029】
メディア統合層アーキテクチャ(MEDIA INTEGRATION LAYER ARCHITECTURE)
本発明の一態様は、一般に、代表的なコンピュータ・システムに存在するグラフィックス・ハードウェアのパワーをより活用することに向けられる。この目的のため、図2に概略的に示されているように、メディア統合層アーキテクチャ200が提供される。アプリケーション、制御またはその他同様のより高レベルのプログラム・コード(たとえば、オペレーティング・システム構成要素のユーザ・インターフェース)202が、1組のアプリケーション・プログラミング・インターフェース(API)204などを介して、メディア統合層アーキテクチャ200にアクセスして、グラフィカル情報にアクセス(書き込みまたは読出し)する。本明細書に記述した多くの例は、APIとインターフェースをとるアプリケーション・プログラムを引用するが、その他のより高レベルのプログラム・コードおよび構成要素(たとえば、オペレーティング・システムのユーザ・インターフェース)も、本明細書に記述した、より低レベルの構成要素とインターフェースをとることができることが理解できることに留意されたい。したがって、このようなより高レベルのプログラム・コードへの如何なる引用も、アプリケーション・プログラムや、ユーザ・インターフェースなどのいずれであろうとも、均等物であると考えるべきである。
【0030】
セキュリティを含むさまざまな理由から、メディア統合層200(これは、グラフィックスを出力する)は、好ましくは、オペレーティング・システムに組み込まれることに留意されるべきである。たとえば、メディア統合層200のいくつかまたは一部を、アプリケーションとオペレーティング・システムの間に挿入することができるが、そうすると、有害なプログラムが、グラフィックスが要求されている場合は何でもディスプレイすることを可能にし、それにより、不都合を引き起こすことになる。たとえば、有害なコードが、パスワードの入力を要求するダイアログ・ボックスを表示し、それにより、ユーザのパスワードを盗むことが可能となる。オペレーティング・システムにメディア統合層200を組み込むその他の理由としては、安定性および効率性を含み、たとえば、より低レベルでは、より高い層からのデータおよび命令は既に検証済みであることを効率的に当てにすることができる。さらに、より低レベルは、責任を持ってコールをする、信頼されているオペレーティング・システムのみに、インターフェースを公開する、つまり、予測不可能なプログラムに低レベルのインターフェースを公開しないとすることができ、これにより、より高い安定性を保証することができる。
【0031】
一実施形態では、メディア統合層アーキテクチャ200は、高レベル合成およびアニメーション・エンジン206、タイミングおよびアニメーション構成要素208、および低レベル合成およびアニメーション・エンジン210を含む。本明細書で使用する用語、「高レベル」および「低レベル」は、その他のコンピューティング・シナリオで使用されるものと同様であり、ここでは、一般的に言って、より高い構成要素に対する低いソフトウェア構成要素は、その構成要素がより低くなるとハードウェアになる。このように、たとえば、高レベル合成およびアニメーション・エンジン206から送信されたグラフィックス情報は、低レベル合成およびアニメーション・エンジン210で受信されるが、ここで、情報は、グラフィックス・データをハードウェアを含むグラフィックス・サブシステムに送信するために使用される。
【0032】
以下に記述するように、高レベル合成およびアニメーション・エンジン(本明細書では、高レベル・コンポジッタ(compositor)およびアニメータまたは高レベル・エンジンまたは高レベル構成要素とも呼ぶ)206は、ディスプレイ・ツリーを構築して、アプリケーション・プログラム202によって供給されるグラフィックス・シーンを表し、この間、タイミングおよびアニメーション構成要素は、宣言(またはその他の)アニメーションおよびタイミング制御を供給する。また以下に記述するように、低レベル合成およびアニメーション・エンジン(本明細書では、低レベル・コンポジッタおよびアニメータまたは低レベル・エンジンまたは低レベル構成要素とも呼ぶ)210は、多数のアプリケーションのシーンのためのレンダリングを組み立て、そしてレンダラ(renderer)とも呼ばれるレンダリング構成要素を使用して、スクリーンに対してグラフィックスのレンダリングを実際に実行する。しかし、時にはより高いレベルでいくつかのレンダリングをすることが必要および/または好都合である場合があることに留意されたい。たとえば、より低い層は、多数のアプリケーションからの要求にサービスするが、この間、より高い層は、アプリケーション毎にインスタンス生成される。これにより、より高いレベルで、時間のかかる、またはアプリケーション特有のレンダリングが可能となり、ビットマップへの参照をより低い層にパスすることができる。
【0033】
一般的に言って、高レベル合成およびアニメーション・エンジン206は、ディスプレイ構造を構築し、構造をトラバースして、低レベル合成およびアニメーション・エンジン210にパスされるべき、レンダリング命令および単純なアニメーション間隔を生成する。高レベル・コンポジッタによって生成されるレンダリング命令は、タイミングおよびアニメーション情報を含むことができる。低レベル合成およびアニメーション・エンジン210は、レンダリング命令およびアニメーション間隔を受け取り、次いで、アニメーション、レンダリング、およびグラフィックス・サブシステム(たとえば、グラフィックス・ソフトウェアおよびハードウェア)212に供給されるシーンの合成、を管理する。
【0034】
一方、または局所的に表示される出力に加え、高レベル合成およびアニメーション・エンジン206(またはそれと同様の)は、適切なフォーマットのレンダリングおよびアニメーション命令を、固定イメージ・データをプリンタ222などに送るためのより低レベルの印刷コード220に供給し、かつ/または適切なフォーマットのレンダリング命令および単純なアニメーション間隔を、より低レベルの、リモート・マシン228に送信する端末移送サーバ226に供給する。より豊富な情報もネットワークを介してパスされることに留意されたい。たとえば、ネットワーク・トラフィックを伴わずに、マウスのロール・オーバ効果をリモート・マシンに局所的に対処させるのが望ましいかも知れない。
【0035】
多重グラフィックス処理レベル(MULTIPLE GRAPHICS PROCESSING LEVELS)
本発明の一態様に従うと、メディア統合層アーキテクチャ200は、上に述べたように、グラフィックス処理を多数のレベルに分割する。これらのレベルのそれぞれが、アプリケーション、ユーザ・インターフェースおよびその他202が、スムーズなアニメーションでグラフィックスを出力し、その他のアプリケーションのグラフィックスおよびビデオ・フレームでグラフィックスを合成することを共に許可する、いくつかのインテリジェント・グラフィックス処理を実行する。アニメーションおよび/または合成を、音声出力に同期させることも可能である。たとえば、音声を低レベル構成要素のフレーム速度と同期させることにより、音声のタイミングが、ビデオまたはグラフィックスのタイミングと実質的に一致し、リフレッシュ速度に追いつくために複雑な前処理をするタスク・スケジュールについての能力に依存しなくなる。
【0036】
図3に全体を示すように、APIs204を介して通信するアプリケーション202の下で、高レベル・コンポジッタおよびアニメータ・エンジン206は、アプリケーション・グラフィカル・データをツリー構造300内にキャッシュし、データをインテリジェントな方式で前処理し、その他数々のオペレーション(以下に記述する)を実行して複雑なグラフィックスの出力を容易にする。一般的に言って、高レベル・コンポジッタおよびアニメータ・エンジン206は、処理量を著しく単純化し、より低いレベルが正しい出力をレンダリングする処理に必要とされるデータ量を著しく減少させる、複雑な処理(時には、コンパイルと呼ぶ)を実行する。しかし、より高いレベルで実行される処理量および処理のタイプは、かなりの程度、負荷、およびより低いレベルの機器構成および機能に依存する。たとえば、高機能のグラフィックス・ハードウェアが存在する場合、高いレベルは、処理量が減少する可能性があり、またその反対もある。高レベルおよび低レベルの層はこれらの要因に適応的である。
【0037】
本発明に従って、高レベル合成およびアニメーション・エンジン206は、そのレベルまたはそれ以下のレベルより比較的遅い速度で動作するので、利用可能なシステム・リソースを使い果たすことなく、このような複雑な処理を達成することができる。例として、限定するものではないが、より低いレベルは、ハードウェア・グラフィックス・プロセッサのフレーム(リフレッシュ)速度で動作することができる。たとえば、高レベル・コンポジッタおよびアニメータ206は、ディスプレイの変更を、オン・デマンドで、またはその他のスケジュール(たとえば、0.5秒毎に)で、実施する必要があるときに動作するだけとすることができる。単一の高レベル・コンポジッタおよびアニメータ・エンジン206は、図3に示してあるが、アプリケーション単位で1つずつなど、多くの場合があり、一方、一般には、グラフィックス装置毎に1つだけの低レベル合成およびアニメーションエンジ210である、たとえば、マシンのそれぞれのグラフィックス・ハードウェア・カードについて1つである、ことに留意されたい。
【0038】
さらに、高レベル・コンポジッタおよびアニメータ206は、たとえば、実質的にいずれかの抽象装置302などの、適切なレベルまたはそれ以下のレベルのフォーマットに、その出力を適合させる(または出力するように設計する)。たとえば、高レベル・コンポジッタおよびアニメータ206は、最終的に、プリンタに、ネットワークを介していくつかの、その上にディスプレイするリモート端末に、送信するために、または、主に本明細書の以下に記述するが、ローカル・グラフィックス・ソフトウェアおよびハードウェア212上に存在する、より低レベルのコンポジッタおよびアニメータ210のために、コンパイルした出力を作り出すことができる。単一の高レベル・コンポジッタおよびアニメータが、複数の抽象装置のためのアプリケーションの出力を処理することができる、がそうでない場合、それぞれのタイプの抽象装置のためのアプリケーションの出力を処理する高レベル・コンポジッタおよびアニメータの適当な例、たとえば、ローカル・グラフィックスに1つ、プリンタに1つ、そして端末サーバに1つ、があり得る。
【0039】
さらに、高レベル・コンポジッタおよびアニメータ206によって供給されるコマンドおよびその他のデータを単純化して、ハードウェアの能力および条件に一致させることができる。たとえば、より劣ったハードウェアであれば、高レベルの前処理が多く必要となる。さらにまた、たとえば、1または複数のより低いレベルに配置される処理需要に適応させるように、高レベルの前処理の量は動的とすることができる。
【0040】
ローカル・グラフィックス出力のために、1機器構成内に、メディア統合層アーキテクチャ200は、高レベル・コンポジッタおよびアニメータ206と、低レベル・コンポジッタおよびアニメータ210とを含む。以下に記述するように、一般的に言って、高レベル・コンポジッタおよびアニメータ206は、クライアントから受け取ったグラフィックス情報(たとえば、アプリケーション)について複雑な処理を実行して、グラフィックス構造を構築し、これらの構造をグラフィックス・コマンドのストリームに変換する。次いで、低レベル・エンジン210は、さまざまなクライアントからのグラフィックス・コマンドのストリームを使って、コンピュータのユーザが見るデスクトップを合成する。たとえば、低レベル・コンポジッタは、デスクトップ上に渡されるさまざまなクライアントによって放出されるコマンド・ストリームを結合して、グラフィックス合成エンジンによって消費されるグラフィックス・コマンドにすることにより、デスクトップを合成する。
【0041】
この実施形態では、高レベル・コンポジッタおよびアニメータ206は、通常、グラフィックス・サブシステム212のグラフィックス・ハードウェアのハードウェア・リフレッシュ速度よりはるかに遅い速度で、構造300を構築し、グラフィックス・コマンドのストリームに変換する、複雑な処理オペレーションを実行する。この高レベルな前処理の結果、低レベル・エンジン210は、グラフィックス・サブシステム212のグラフィックス・ハードウェアのハードウェア・リフレッシュ間隔内で、それ自体の処理オペレーションを実行することが可能となる。しかし、上述したように、低レベル・エンジン210は、高レベルの前処理が低レベルの処理需要に動的に適応できるようにするために、バック・チャネルを介して高レベル・エンジン206に戻りの通信をすることができる。低レベル・コンポジッタおよびアニメータ206から高レベル・コンポジッタおよびアニメータ206へのバック・チャネルは、主に、高レベル・エンジン206へのフロー制御(低レベル・エンジン210は、より多くのデータを必要とするか、または余りに多くを受信していることをシグナリングする)、および/または高レベル・エンジン206によって実行可能なエラー条件を通信するためである。このような通信の1つの利点として、低レベル合成およびアニメーション・エンジン210が、優先度やスケジューリングの心配をする必要がないことであるが、リフレッシュ速度との同期の問題は、依然残る。その代り、現代のオペレーティング・システムに既に存在する高レベルのCPUプロセス・スケジューリングは、優先度を制御するだろう。したがって、たとえば、アプリケーション・プロセスが、その優先度と比べて、高レベルのグラフィックス前処理のその配分について余りに多くを使用しようとした場合、その出力に悪影響が出るのはそのアプリケーションである。しかし、低レベル・システムが過負荷である場合は、あるプロセス/高レベル構成要素の変更および要求を、別のものより優先させるよう選択することができる。たとえば、前景アプリケーションに優先度を与えることができる。
【0042】
高レベル・コンポジッタおよびアニメータ(THE HIGH-LEVEL COMPOSITOR AND ANIMATOR)
一実施形態では、現実的に、多くの種類や差異のあるグラフィックス・ハードウェアに対処するように、それぞれのユーザ・アプリケーションを書き込むことができないため、高レベル・コンポジッタおよびアニメータ206を含むメディア統合層200が、所与のマシンのハードウェアの差を調整する。しかし、アプリケーションは、また、メディア統合層200によって、つまり、オペレーティング・システムのグラフィックスAPIに、現在パスされるものより多くの(そして異なる)情報を高レベル・コンポジッタおよびアニメータ206に供給することによって、提供される改良グラフィックス処理に貢献することもできる。たとえば、メディア統合層200を認識しているアプリケーションは、メディア統合層API202を介してアニメーション意図などを含む、種々のデータを供給する。例示として、やや変化するイメージを連続して再描画することによってアニメーションを実行する代りに、アプリケーションは、特定のイメージを、たとえば、固定の背景に対して、どのように時間をかけて移動すべきかについての命令を提供することができる。次いで、メディア統合層200は、以下に概略を記述するように、スムーズなレンダリング方式でオートメーションを処理する。
【0043】
一般的に、図3および4に示すように、アプリケーション202は、API204を介してシーン・グラフ・データ構造を構築する。データは、高レベル構造およびと基本要素(primitive)データを有し、そしてビジュアル情報をインテリジェントな方式でキャッシュに入れるため使用されるキャッシュ・データ構造300、内に入れられる。
【0044】
インテリジェント・キャッシング・データ構造300全体内のオブジェクト(または構造)の1つが、コンテナ402、404または408(あるいはビジュアル2Dと呼ぶ)で図4に示したコンテナである。一実施形態では、コンテナ(たとえば、404)が、アプリケーションがそれのためのハンドルを保持することができる、そして、アニメーションおよびテンプレーティング、ヒット−テスト(hit-testing)およびユーザ・データのフッキング・アップ(hooking up)のために使用できる手続きパラメータを含む、識別(identity)を提供する。しかし、本明細書に記載したコンテナは、明らかにされる可能性のある唯一の種類のコンテナではないことに留意されたい。その他の例では、パラグラフ内にラインを格納するため、またはグリッド内に多くの子を格納するために最適化されたコンテナを含むことができる。特定の種類のコンテナでは、子に対してランダム・アクセスができないものの、子コンテナは、現行の子リストをクリアすることなく、追加されたり削除されたりできる。APIを介して使われる構造は、必要に応じて変更することができる。
【0045】
このデータ構造のその他の(内部)ノードは、変換406、アルファ・ノード、キャッシュ・ノード、および基本要素ノード410、412を含み、APIコンテナと直接には関連していない内部データを格納するために使用される。基本要素は、一般に、直接グラフィックス装置にパスできる命令のストリームとして格納される。
【0046】
図5のツリー・セグメント500に示すように、510のようなコンテナは、したがって、その他のコンテナ512または描画基本要素516を保持でき、ここで、いずれかのコンテナの中の基本要素の記憶域は、グラフィックス命令のストリームと考えることができる。コンテナは、また、その他のコンテナも格納することができ、事実上、グラフを作成する、たとえば、データ構造がコンテナの「閉路を含まない有向グラフ(DAG)」および基本要素のリストである(ここで、コンテナは、その親コンテナの1つを含むことができない)ように、コンテナを1を越えるコンテナによって参照されることができる。また図5に示すように、グラフ的な方式でツリーが他のツリーを参照できることにより、ツリー・セグメント502内のコンテナ518などの、コンテナのいずれかを、異なるパラメータではあるものの、異なる場所で再使用することができる。
【0047】
一般に図4の描画コンテキスト416に示すように、コンテナが、開/閉パターンを介して置かれている。より詳細には、より高レベルのコード202が、データ構造内のコンテナ408を開け、描画コンテキスト416を提供して、描画基本要素を書き込み、かつ/またはその他のコンテナをデータ構造に追加し、次いでコンテナ408を閉じる。一代替実施形態では、コンテナを閉じたとき、そのデータは、変更待ち行列418内に入れられ、次いで、その後適用される。コンテナの開閉は、データ構造を変更するための主要メカニズムの1つである。その他の使用パターンも、特に異なる種類のコンテナについて、用いることができることに留意されたい。
【0048】
この代替形態では、データ構造の変更が待ち行列に入れられるため、データ構造を更新するためのトランザクション的な(またはバッチ的な)システムが、可能となる。その結果、コンテナを開けてコンテナに書き込んだときは、コンテナを閉じるまでスクリーン上に変更が現れない。スクリーンへの変更はアトミック(atomic)であり、部分的に描画したスクリーンについて時間的アーティファクト(構造的なティアリングとも呼ぶ)はない。さらに、このようなトランザクションの動きを、一度に多数のコンテナが変更されるように、拡張することができる。この方式で、より高レベルのコード202は、多くの変更をシーンにセットアップすることができ、これらの変更の全てを一度に適用できる。
【0049】
一代替実施形態では、待ち行列418への変更をディスプレイ・マネージャ420を介して通知することにより、データ構造への変更が、非同期式で行われる。その結果、変更がレンダリング・スレッド422上で処理される、そして、たとえば、低レベル・コンポジッタおよびアニメータ210に送信される(ここで、図3の抽象装置302は、低レベル・コンポジッタ210にストリームされたレンダリング・コマンドの中に、高レベル・コンポジッタ206によって出されたレンダリング・コマンドの変換をカプセル化する抽象化を含む)。トランザクション的なモデルは、また、データ構造への修正が、データ構造からの読出しを中断することなく、なされることを可能にする。上述の待ち行列モデルにより、高レベル・エンジン206からの読出しパスが、ユーザの行うどのようなアクションにも関係なく動作できるようになるが、ユーザ・アプリケーションは、APIの一貫性のあるビューを維持するために、キャッシュが必要であり、そのため効率性が損なわれる。例として、コンテナ上のプロパティの設定をする主要ユーザ・スレッド上のユーザ・アプリケーション(高レベル・エンジン206内のオブジェクト)を考えてみよう。待ち行列モデルでは、このプロパティは、高レベル・エンジン206データ構造に適用される待ち行列の中に入れられる。しかし、ユーザ・アプリケーションが、直ちにそのプロパティをコンテナからリード・バック(read back)を試みると、システムは、現在待ち行列内にあるものに基づいてプロパティをリード・バックし(これは非効率的である)、レンダリング・スレッドと同期をとり、待ち行列内で待っている変更を適用し(これは非効率的であり、待ち行列を有するという利点を無駄にするものである)、または、レンダリングのバージョンおよび待ち中のバージョンの両方とも、ユーザ変更可能データのコピーをコンテナに保管しなければならない(これは、非効率的なメモリの使用法である)。
【0050】
アプリケーションによるリード・バック量がかなりあるため、代替実施形態は、実際のところ、高レベル・エンジン206データ構造および主要ユーザ・スレッドの更新を同期することにより、待ち行列を削除する。このことは、ユーザ・アプリケーションがレンダリングを凍結できるようにするが、全体的なシステムは、より効率的になる。しかし、凍結(freeze)による知覚的な影響を緩和するために、高レベル・エンジン206とは関係なく、より多くのアニメーション処理をする低レベル・エンジン210に任せている間、さまざまな部分のアニメーションおよびタイミング・システムが独自に動作して、低レベル・エンジン210まで情報を通信する。したがって、高レベル・エンジン206が、ユーザによるアクションによって凍結しても、スクリーンへの出力は、依然として、比較的スムーズで、かつ一貫性があるでしょう。
【0051】
さらに別の代替形態では、レンダリング・スレッドを削除し、主要ユーザ・スレッドに高レベル・エンジン206にとって必要な処理を実行させ、レンダリング命令を低レベル・エンジン210にパスさせるようにする。これは、場合によっては、より効率的なスレッドの使用法である。
【0052】
図4に戻ると、コンテナ408は、描画基本要素を含む基本識別ノードを備え、描画コンテキスト416は、基本要素、変換、クリップまたはその他の描画オペレーションをコンテナに追加するために使用することのできる、コンテナから得られたグラフ・ビルダ(たとえば、ヘルパ・オブジェクト(helper object)を備える。ディスプレイ・マネージャ420は、高レベル・コンポジッタおよびアニメータ206のインスタンスを表す、ホスティング・オブジェクトを備える。そして、たとえば、hwnd(ウィンドウへのハンドル)またはhvisual(ビジュアル・コンテナへのハンドル)にアタッチすることができる。ディスプレイ・マネージャ420は、シーンのためのルート・コンテナ402へのポインタを有し、コンテナが無効で再描画の必要がある場合に、イベントを高レベル・コードにディスパッチし、ヒット・テストや座標変換などのサービスへのアクセスを提供する。
【0053】
より高レベルのコード202は、ハンドルなどを、データ構造およびコンテナ内のオブジェクトのいくつかに保持できるが、コンテナ内の殆どのオブジェクトは、アプリケーションの観点からの識別性を持たない。具体的には、この構造へのアクセスが、殆どの使用パターンが「書き込みに限る」という制限がなされている。この方式で識別を制限することにより、データ構造内に格納された情報の多くを最適化できるようになり、そしてより高レベルのコード202は、オブジェクト情報を格納したり、オブジェクトの生存期間の管理に対処したりする必要がなくなる。
【0054】
たとえば、必要でないグラフの一部(たとえば、スクリーンにクリップされてしまった、またはスクリーンからスクロール・オフされたビジュアル情報に対応する)を維持するリソースは、その後必要になればシーンを再描画するよう要請するアプリケーションとともに、再利用することができる。したがって、一般に、コンテナが開けられると、その中身がクリアされ、忘れ去られている。これらの中身が識別を持たない場合は、それらのリソースはシステムによって再利用することができるように、これらのコンテンツは安全に消滅する。より高レベルのコード202またはグラフの別の部分が子コンテナ上にホールドしている場合は、これらのコンテナは、そのあたりに留まって、再挿入することができる。しかし、このパターンは、より高レベルのコード202の必要性に応じて、変更および適応が可能である。
【0055】
したがって、要するに、コンテナは、データ構造を使用する高レベル・コードがそのオブジェクトに対するハンドルを保持することができるという点で、識別を持つオブジェクトである。識別を持つオブジェクトの反対は、プレーン・データであり、そして、ユーザ・コードは、識別を持たないデータをオブジェクトとして扱うメンタル・モデルを用いるが、いったんこのデータがシステムで使用されると、その後そのオブジェクトを参照する方法はない。このように、システムにとって好都合な方式で、オブジェクトは、変換され、そして変更されることができる。
【0056】
単純化した例として、テキストのラインを描画するためのAPI機能が、TextLineオブジェクトを含むことがある。このオブジェクトのユーザは、TextLineオブジェクトに、描画すべき実際のテキストを、そのテキストについての種々の動作をどのようにレンダリングするのかに関するその他の情報(フォント、サイズ、ブラシその他)とともに、入れる。ユーザ・プログラム・コードが、そのテキストのラインをデータ構造に実際に追加することを求めている場合、プログラム・コードは、指定の開くノード用に描画コンテキストを取って、TextLineオブジェクトを描画コンテキスト上にある描画機能にパスする。実際にシステムは、TextLineオブジェクト内にあるデータを取り、そのデータをデータ構造内にコピーする。このデータは識別を持たないため、高レベル・コンポジッタおよびアニメータ・エンジン206は、自由にそのラインのコンテンツを取ることができ、アルゴリズム(たとえば、OpenType)を実行してテキストを位置付きのグリフに分割して、位置付けられたグリフ・データを、生のテキストの代りに格納する。そのラインを描画した後は、システムは、ラインを描画するのに使用するTextLineオブジェクトへの参照を持たない、すなわち、システムが格納するデータは識別を持たない。
【0057】
あるいは、より高レベルのコード202は、その識別をそのTextLineオブジェクトに保存するよう要請し、そのオブジェクトの参照をデータ構造内に格納するよう要求する。この方式で、より高レベルのコード202は、その後TextLineオブジェクトを変更する場合、システムは、その変更を発見し、それをレンダリングの出力に反映する。より現実的な例においては、識別は、テキスト・ライン・オブジェクト自体には明らかにされないが、アプリケーションが、コンテナへのハンドルを保持し、上述した(例えば、特許文献2参照)という米国特許出願に記述しているように、要求のあり次第、そのコンテナをパラメータ化することによって変更をすることになる、ことを留意されたい。しかしながら、データ構造の主要態様の1つに、より高レベルのコード202は、このようなオブジェクトを識別を備えて作成する必要性を減少させることにあり、それによって、データ構造内の低減された数のポイントが、制御コード202によって参照されることになる。このことにより、データ構造がより一層最適化される。
【0058】
たとえば、データ構造の外部に明らかにされる識別の量の低減により、基本要素の格納密度を濃くするなどの最適化が可能となる。この目的のため、ベクトル・グラフィック・データは、「基本要素リスト」または「基本要素コンテナ」内に格納される。これらのコンテナは、実施詳細であり、識別がより高レベル・コード202に明らかにされることはない。コール元がデータをコンテナ内に書き込むと、そのデータは、コンテナのような、リンクされている別個のオブジェクト内に格納されるか、(たとえば、変換とともに)、パック、およびフラット化されたデータ・アレイ内にストリームする、ことができる。このアレイは、コンパクトな方式でベクトル・グラフィック・データを格納できるばかりでなく、これらの基本要素に沿って実行するリソースを追跡することができる。個々の基本要素が識別を持たないため、基本要素を分離したり、その後これらの基本要素を変更したりするための方法をユーザに提供する必要がなく、基本要素のより効率的な格納を可能にする。
【0059】
別の最適化として、サブグラフが変化していない場合は、そのツリーのコンテンツのビットマップを格納し、そのビットマップをコンテナにアタッチすることができ、それによって、必要とされる高レベルの処理量を減らすことができる。さらに、サブグラフまたは基本要素リストの一部が、レンダリングのために、より低レベルのコードにパスされる前に大量の処理を必要とする場合(たとえば、ハードウェア装置に手渡される前の、ベクトル・グラフィックスの埋め尽くし)は、その後の再使用のために、後処理の結果がキャッシュに入れられる。
【0060】
さらに、特定の読出しオペレーション(以下に記述する)以外に、構造についての明らかにされることがないため、データ構造は、レンダリングの結果が同じである限り、自由にコンテナを再編成することができるようにする。したがって、コンテナは、空間区画化(space partitioning)ツリー内に子コンテナを格納して、レンダリングおよびその他の読出しオペレーションを最適化することができる。さらに、データ構造を、同じ装置または多数の装置に何回も表示することができる。このため、キャッシュが装置に依存している場合は、装置に基づいてキーを付けることができる。サブ−ツリーが静的であると認識されると、その周囲のアニメーションのため何度も再ペイントされ、しかもそのリソースのドレーンを保証するに足りる密度である場合は、キャッシュ・ノードは、自動的にそのサブ−ツリーに挿入されることがある。
【0061】
レンダリングのために、データ構造が読み出され(スケジュールしておいた時間に、または異なるスレッドによって)、そして処理されたあるフォームの情報は、より低レベルのアニメータおよびコンポジッタ210にパスされる。このため、一代替実施形態では、レンダリング・オブジェクトおよびスレッド(プロセス毎の)422が、データ構造300をトラバースしてレンダリング・プロセスを駆動する。他の代替形態では、それ自身のスレッドで実行する代りに、レンダリング・プロセスが、1種の「協調型多重タスキング」配置で、残りのユーザ・コードを持つ共通スレッドと時間を分配する。データ構造300は、非常に高速の合成およびアニメーションのために、より低レベルの構成要素に送られるビジュアル情報にコンパイルされるのが好ましいが、データ構造300を直接レンダリングに使用することができる。データ構造300は、また、ネットワークを介して、リモート端末、プリンタに送信し、かつ/または、相互交換またはキャッシュに入れるためにディスクまたはその他のよりパーマネントな記憶媒体に直列化する、などの異なる方式でコンパイルされることがある。
【0062】
一代替実施形態では、データ構造300は、レンダリングのために別のスレッド422で読み出される。しかし、別のスレッドを使用することが必要条件ではなく、たとえば、「レンダリング・スレッド」は、あるいは、他と同様に、同じスレッド上で実行する協調型共用メカニズム(cooperative sharing mechanism)を、代替的に備えることに留意されたい。
【0063】
レンダリング・プロセス/スレッドを使用する代替モデルでは、必要に応じてレンダリング・スレッドが動作し、所定の効果を提供する。スレッドが動作する度ごとに、まず、変更待ち行列418内にある、待ち状態の変更を適用する。次いで、レンダリング・スレッド422は、データ構造300を歩いて、バウンディング・ボックスや収集無効などの(以下に記述する)情報を収集する。最後に、前回より変更されている、または別の理由からレンダリングする必要があるエリアを歩き、データ構造内に格納されているレンダリング命令を実行する。変更待ち行列を使用しない代替モデルでは、変更は、作成されるときに、直接適用され、したがって、ここでは適用する必要がない。
【0064】
このように、データ構造300からのレンダリングは、待ち行列にある変更をデータ構造に適用するパス、データ構造の繰返し、あるいはバウンディング・ボックス、アニメーションされるパラメータ値などレンダリングに必要なデータの計算、を含む事前計算するパス、レンダリング・パス、などの、別個のレンダリング・スレッド422上で実行できる多数のパス・プロセスである。レンダリング・パスは、最終的に低レベル・コンポジッタおよびアニメータ210にデレゲートする抽象装置302を使用して、レンダリングする。レンダリング・パス中、後続フレーム上のレンダリング性能を向上させるために、中間キャッシュ・リソース426を、キャッシュに入れることができる。
【0065】
データ構造を最後に歩き回って得られる可能性のある結果には、データを直接実行して、スクリーン上に表示されるか、または最後に歩き回った最後の所にフリップされるバック・バッファ上で実行されることが含まれる。その他の結果には(以下に記述するように)拡張タイミングおよびアニメーション情報とともに運ばれ、より頻繁に実行するレンダリング・スレッド/プロセスにパスされるデータが含まれる。また、歩き回った結果、スクリーン・キャプチャまたはその他の理由によりデータがビットマップ上で実行されたり、プリンタに方向付けされたり、または、ネットワークに方向付けされて、次いでリモート・マシンでの以前のある理由のために使用されたりすることもある。これらの結果の組み合わせも、また、可能である。
【0066】
お分かりのように、データ構造300内のデータの記憶域は、大量のメモリを必要とする。さらに、データ構造300内のデータの多くは、クリップ、スクロール、またはその他の理由により、可視可能ではないために必要とされないことがある。リソース需要を減らすため、データ構造300は、オン・デマンドで構築することができる。これを可能にするために、必要に応じて、データ構造300の一部を作成するため、より高レベルのコード202にコール・バックする方法が提供される。この方法は、「無効化」と呼び、従来のグラフィックス・システムで使用されるWM_PAINTコール・バック方法と同様であるが、直接スクリーン上のビットに適用する代りに、構造300およびキャッシュされるコンテンツに適用される。しかし、1待ち行列モデル代替形態では、読出しオペレーション(以下に記述する、ヒット・テストおよび座標変換と同様)は最初に変更を適用し、それゆえ、ユーザに提供されるモデルは同期する。
【0067】
コンテナは、作成されたとき、リソースが少ないためコンテンツがシステムによって捨て去られたとき、またはより高レベルのコードがコンテナを無効にするよう直接要請したとき、無効にされる場合がある。たとえば、より高いレベルのコード202は、コンテナを作成して、そのコンテナがどこにあって、どのぐらいの大きさであるのかを定義するグラフィカル・サイズを供給する。レンダリング・オペレーション中、そのコンテナが無効というマークが付けられたが、必要であると判断された場合、レンダリング・スレッド422は、より高レベルのコード202にコンテナ内に書き込むよう要請する。レンダリング・スレッド422は、より高レベルのコード202がその要請を終了するまで待つか、または必要なデータがないままレンダリングを続行する。第1の選択は理想的なものではないが、状況によっては必要となる場合がある。
【0068】
最終的にデータが書き込まれ、レンダリング・スレッド422が再び実行して、これらの新しい変更を表示する。現行の一実施形態では、コンテナへの書き込み要請は、別の待ち行列内に入れられ、より高レベルのコード202を実行しているスレッドに戻る。しかし、このことは、レンダラが実行している同じスレッド上の、より高レベルのコード202への同期コールを含む、他の方式で実施することもできる。しかし、このようなコールを同期させることにより、レンダリング・スレッドを機能停止することになる。
【0069】
データ構造300への待ち行列更新に加えて、データ構造300からのリード・バック・サービスを提供する必要がある。このようなサービスには、ヒット−テスト、ポイント変換およびサブグラフ・サイジングが含まれる。
【0070】
ヒット−テストとは、それによって、ポイントが、データ構造のいくつかのルートの座標空間に与えられ、データ構造がプローブされて、そのポイントによってヒットされるコンテナまたは基本要素が戻されるようにするプロセスである。現行実施形態では、ヒット−テスト・プロセスは、それぞれのコンテナ内に格納された3つのフラグの値によって制御される(追加フラグも可能であるが)。第1のフラグには、ヒット−テスト・アルゴリズムに命令を出して、これまでに収集したヒット・テストの結果を戻す設定が含まれる。第2のフラグには、ヒット−テスト・アルゴリズムに対して、ヒットされているそのポイントがそのコンテナに確かに存在する場合は、結果リスト内にそのコンテナを含むよう伝えることが含まれる。第3のフラグは、そのコンテナの子をヒット−テストすべきかどうかを制御する。
【0071】
別の読出しサービスはポイント変換であり、ここで、グラフを介して接続する2つのノードがある場合、あるコンテナの座標フレーム内のポイントが、別のコンテナの座標フレームに変換できるサービスがある。先祖から子孫、子孫から先祖、ピア・ツー・ピア(任意のノードから別の任意のノード)の変換を含む、3つの一般的なサブタイプがある。したがって、読出しサービスは、座標変換のためデータ構造を問い合わせる方法を提供し、ツリー・アーキテクチャが変換を歩き回り計算することを促進させる。多くの変換を実施中は、アニメーション/変更をロックできる。そして、共通の先祖を介する変換の実行を提供することができる。
【0072】
別の読出しサービスは、サブグラフ・サイジングである。ノードが与えられると、このサービスは、そのノードとそのサブグラフのグラフィカル・サイズを戻す。このサイズは、サブグラフを入れるのに十分な大きさがあるという保証されたサイズであるか、またはサブグラフを入れるのにちょうどの大きさの別のサイズの形状である場合もあり、またはサブグラフの輪郭を詳細に表す複雑な形状でもあろう。
【0073】
ある実施形態では、これらの読出しオペレーションをデータ構造への変更に同期させたい場合がある。このため、これらの読出しオペレーションのいずれかを呼び出す前に、変更待ち行列が適用されると、より一貫性のあるビューが、より高レベルのコードに与えられる。
【0074】
低レベル・コンポジッタおよびアニメータ(THE LOW-LEVEL COMPOSITOR AND ANIMATOR)
低レベル・アニメータおよび合成エンジン210の主な目的は、メディア統合層200の低レベル・レンダリング・スタックの抽象化を提供することであり、これによって、(1)クライアント・グラフィックス・アプリケーションのための高フレーム速度アニメーション、(2)ウィンドウ管理的なサポートの実施、(3)ネットワーク接続を介したグラフィックス・サービスの遠隔操作(remoting)へのサポート、を可能にする。図6および7に示すように、低レベル・アニメータおよび合成エンジン210は、レンダラ602の集合によって提供されるサービスを使用することにより、特に、多数のクライアントから受取る高フレーム・レート・アニメーション要求を調整するためサーバとして機能する(たとえば、それぞれ高レベル・コンポジッタを有する多くのアプリケーションに対応する)。レンダラ602は、グラフィックス合成エンジン606によって実施されるレンダリング抽象化(ビジュアルとも呼ぶ)上で働くレンダリング・アクションを生成する。
【0075】
低レベル・アニメータおよび合成エンジン210はまた、特別のクライアント(トップ・レベルのビジュアル・マネージャ604)が、スクリーン上のレンダリング・エリアとして、クライアント・アプリケーションによって使用されるビジュアルを操作できるようにすることが目的のインフラストラクチャを備えて、トップ・レベルのビジュアル管理サポートを提供する。レンダリング・スタックへレンダリングするクライアント・アプリケーション2021−2023(図7では3つしか示していないが、いずれの数でもあり得る)のそれぞれが、トップ・レベルのビジュアル(それぞれ、TLV1−TLV3)を所有し、トップ・レベルのビジュアル・マネージャ604は、スクリーン上にトップ・レベルのビジュアルのレイアウト上にオーソリティを有するクライアントである。一般的に言って、低レベル・アニメータおよび合成エンジン210は、デスクトップ上に渡されるさまざまなクライアントによって放出されたコマンド・ストリームを結合して、グラフィックス合成エンジン606によって消費されるグラフィックス・コマンドにすることによって、デスクトップを合成する。低レベル・アニメータおよび合成エンジン210はまた、ローカル・マシンと同様のリモート・マシン6101−610nのためのユーザ・インターフェースをプログラミングするレンダリング・アーキテクチャを実施するために使用する構成要素を援助(help)する。
【0076】
図7は、低レベル・アニメータおよび合成エンジン(サーバ)210とそのクライアントの間の相互作用を示す図である。上述したように、トップ・レベルのビジュアル・マネージャ604もクライアントである。またこれも上述したように、低レベル・アニメータおよび合成エンジン210のクライアント2021−2023は、高レベル・コンポジッタおよびアニメーション・エンジン206のインスタンスを使用して、グラフィックス構造を構築し、これらを、ビューされるデスクトップを合成するために低レベル・アニメータおよび合成エンジン210が使用する、グラフィックス・コマンドのストリームに変換する。一実施形態では、ローカルまたはリモート・マシンのいずれかで実行するクライアント(たとえば、高レベル・コンポジッタ)によって出されるコマンド・ストリームを取り扱う、ただ1つの低レベル・アニメータおよび合成エンジン210がある。
【0077】
図6に戻ると、プロセス間通信が、低レベル・アニメータおよび合成エンジン(サーバ)210によって維持されるプロパティ・システム614を介して実行される。それぞれのトップ・レベル・ビジュアルに関連付けられるプロパティが、このプロパティ・システム614によって格納される。クライアントは、これらのプロパティを書き込み読出しすることができ、またクライアントは、プロパティ値の変更要請があれば、その通知を受けることができる。
【0078】
低レベル・アニメータおよび合成エンジン210は、クライアント−サーバ通信、高速アニメーション・レンダリング、およびトップ・レベル・ビジュアル管理サポートを提供する。一実施形態では、低レベル・アニメータおよび合成エンジン210とクライアントの間の通信が、単一の双方向バイト・ストリームおよび/または共有メモリを介して起きる。バイト・ストリームについては、ローカル・クライアントはプロセス間通信を使用し、リモート・クライアントはネットワーク・バイト・ストリーム接続を開ける。バイト・ストリームは、クライアント・サーバ相互作用を制御する通信プロトコルのトランスポート層である。
【0079】
通信プロトコルには、3つの主要メッセージ、つまり、要請(request)、回答(reply)およびイベント・メッセージが含まれる。エラー・メッセージも、提供される。クライアントからサーバへの通信は、主にレンダリング命令を含み、サーバからクライアントへの通信は、主に、以下に記述する、応答およびエラー・メッセージの形のフィードバックである。
【0080】
クライアントからサーバに要請が生成され、そしてその要請は、トップ・レベル・ビジュアル管理コマンド、レンダリング命令コマンド、およびタイミング間隔コマンドを含むことができる。回答は、要請に応じてサーバからクライアントに送信される。しかし、すべての要請が回答を受けるわけではないことに留意されたい。回答は、情報を探す適切な要請に応じてのみ生成される。たとえば、描画命令は、回答を必要としない。しかし、「Get Window size」要請は、回答を必要とし、回答を受取る。
【0081】
イベントが、サーバからクライアントに送られ、そしてそのイベントは、装置のアクションまたは前の要請の副作用に関する情報を含む。たとえば、サーバは、リソースを無効にするため、またクライアントに目標フレーム速度を伝えるために、イベント・メッセージをクライアントに通信することができる。目標フレーム速度を通信する機能により、可変フレーム速度が可能となる。これは、高いフレーム速度というよりも、一貫性のあるフレーム速度を確実にするために望ましいことである。
【0082】
エラーもまた、クライアントに送られる。エラーはイベントと同様であるが、一般に、たとえば、エラーを補償するために、クライアントによって異なる取り扱いを受ける。
【0083】
クライアントが、低レベル・アニメータおよび合成エンジン210によって供給されるサービスを使用することができる前に、クライアントは、まず最初に、接続マネージャ710によって提供されるエントリ・ポイントを介してエンジン210に接続する(図7)。接続マネージャ710は、クライアント・サーバ・プロトコルの双方向バイト・ストリーム・トランスポート層をカプセル化する通信オブジェクト(たとえば、7121)を割り当てる。これはまた、命令ストリームを介して到来するレンダリング命令の追跡をし、それらを正しいビジュアルに関連付ける命令リスト・マネージャ(たとえば、7141)も割り当てる。
【0084】
いったん接続が確立されると、クライアント202は、トップ・レベル・ビジュアルの作成を要請する。その要請に応答して、低レベル・アニメータおよび合成エンジン210は、グラフィックス合成エンジン606によって提供されるサービスを使用することにより、トップ・レベル・ビジュアル(たとえば、TLV1)を作成する。そのクライアントのために低レベル・アニメータおよび合成エンジン210によって維持されるビジュアルは、ツリー構造718内で編成される。クライアントが、トップ・レベル・ビジュアルとともになされる場合は、クライアントはその破壊を要請する。ルート・ノード720は、デスクトップのバック・グラウンドを表す特別なビジュアルであり、ルート・ビジュアルの子はトップ・レベル・ビジュアルであることに留意されたい。
【0085】
図7に示すように、低レベル・アニメータおよび合成エンジン210の1つの重要な役割は、コンピュータ・デスクトップへのレンダリングを管理することであり、これは、別の2つの構成要素、つまり、グラフィックス合成エンジン606とレンダラ602の集合のサービスに頼ることによって達成される。グラフィックス合成エンジン606は、低レベル合成サービスを、ビジュアルと呼ぶレンダリング抽象化を介して提供する。ビジュアルは、デスクトップに構成される長方形のレンダリング・エリアであり、グラフィックス合成エンジン606によって供給される1組のAPIを介してレンダリングされることができる。デスクトップを合成する時間になると、レンダリング・パス・マネージャ722は、ツリーを左から右へトラバースして、それぞれのノードに対して、レンダリング構成要素を使用してビジュアルにレンダリングする。
【0086】
トップ・レベル・ビジュアルの生存期間管理に加えて、低レベル・アニメータおよび合成エンジン210はまた、トップ・レベル・ビジュアル装飾をサポートし、実質的にはデコレーションをトップ・レベル・ビジュアルの回りに追加する。装飾7301−7303は、レンダリング命令リストの形のトップ・レベル・ビジュアル・マネージャによって供給されるデコレーションをレンダリングするビジュアルである。これらのビジュアルは、それらの属するトップ・レベル・ビジュアルの子である。クライアント(たとえば、アプリケーション)は、予め定義されたプロパティをトップ・レベル・ビジュアル上に設定することにより、トップ・レベル・ビジュアル・マネージャによって提供された装飾を制御することができる。
【0087】
低レベル・アニメータおよび合成エンジン210はまた、トップ・レベル・ビジュアルのためのサービスを最小限に抑えるサポートもし、これも、トップ・レベル・ビジュアル・マネージャ604によって、レンダリング命令リストの項において供給されることができる。トップ・レベル・ビジュアル位置付け、サイジング、およびZオーダ(Z−order)は、ビジュアルを閉じる、および最小化するなどの、ビジュアル・マネージャ・アクションに指定される3次元効果とともに、サポートされる。したがって、この実施形態は、主に2次元グラフィックスについて記述しているが、このシステムは、3次元グラフィックス、ビデオ、音声を含むその他の種類のメディアを格納するためにも容易に使用できる。
【0088】
上述したように、トップ・レベル・ビジュアル・マネージャが必要とするレンダリング命令リストは、高レベル・アニメータおよびコンポジッタ206によって生成される。低レベル・アニメータおよび合成エンジン210は、最小化や閉じるなど、デフォルトの動きを有する、1組のトップ・レベル・ビジュアル・アクションを定義する。トップ・レベル・ビジュアル・マネージャ604が、このような動きをカスタマイズしたい場合は、高レベルAPIを使用して、取り替えたいアクションの記述を構築する。次いで、アクションのための命令ストリームを低レベル・アニメータおよび合成エンジン210に送る。低レベル・アニメータおよび合成エンジン210は、この記述をそのプロパティ・システム614内に格納し、クライアントが特定のアクションを要請した場合に、それを使用する。
【0089】
トップ・レベル・ビジュアル・デコレーションが、プロパティ・システム614を使用して実行される。スタートアップで、トップ・レベル・ビジュアル・マネージャが、高レベル・エンジン206で生成された命令リストで、トップ・レベル・ビジュアル・マネージャ・デコレーションを記述する命令リスト、を送る。これらのデコレーションへの更新は、プロパティ・システム614を介してなされる。つまり、クライアントがデコレーションを更新することを望んだ場合に、クライアントは、指定のプロパティを所望の値に設定する。次いで、低レベル・アニメータおよび合成エンジン210は、トップ・レベル・ビジュアル・マネージャ604に、プロパティが変更されていることを知らせる。それに応答して、トップ・レベル・ビジュアル・マネージャ604は、プロパティを読出し、低レベル・アニメータおよび合成エンジン210の幾何図形的配列を更新する。
【0090】
上述した米国特許出願(例えば、特許文献2参照)にさらに記述するように、命令リストがパラメータ化される。これは、一般に、グラフィカル・イメージの色の修正などの単純な変更については、トップ・レベル・ビジュアル・マネージャ604がかかわる必要がないということを意味する。このような場合、クライアントは、新しいパラメータ(たとえば、新しい色)を送り、デコレーションを同じ命令リストで再レンダリングするが、異なるパラメータを使用する。このことにより、それぞれのデコレーションの記述にはただ1つのコピーしか格納しないようにすることができるようになる。
【0091】
図8は、クライアント/サーバ通信チャネルを実施する待ち行列801−804の論理構造を示す図である。タイミング間隔が、アニメーションしたレンダリング命令内に埋め込まれる。レンダリング時間に、低レベル・アニメータおよび合成エンジン210は、現在時間をタイミング間隔とともに、レンダラにパスする。そして、レンダラは、タイミング間隔を使用して、以下に記述するように、レンダリングのために適切なパラメータを補間する。アニメーションされたレンダリング命令は、高レベル・クライアントから受取った命令コマンドに応答して、命令リスト・マネージャ714によって管理される。命令リスト・マネージャは、それを受取ったとき、レンダリング命令を待ち行列714に入れる。レンダリング待ち行列はZオーダであり、レンダリング・パス・マネージャ722は、それらを合成期間に消費する。
【0092】
時間調節されたレンダリング命令を待ち行列に入れることに加えて、命令リスト・マネージャ714は、待ち行列801−804を空にすること、命令を待ち行列から削除すること、命令を待ち行列に追加すること、待ち行列を新しい命令リストに取り替ること、固定時間オフセットを待ち行列に適用することを含む、その他のオペレーションもサポートする。タイミング制御レンダリングの特別な例として、レンダリング命令の可視性を制御する場合がある。このようなイベントでは、タイミング間隔を使用して、レンダリング待ち行列内の命令の生存期間を制御することができる。
【0093】
クライアントが、たとえば、ビデオがシーン内に存在するような場合などのような、その中身を適切にレンダリングするために、ネストされたビジュアルを必要としている場合もあり得る。ビデオの更新は、独立したレンダリング・プロセスによって実施されるため、低レベル・エンジン210は、ビデオおよびそれにオーバーラップする幾何的配列を合成するグラフィックス合成エンジンに頼る。このことは、グラフィックス合成エンジンの合成パス内にビデオ更新の非同期性を隠す、新しいビジュアルを作成して、クライアント・アプリケーションのトップ・レベル・ビジュアル内に入れることによって達成される。ビジュアルの必要性を共有するオーバーラップしている幾何的配列は、同じ種類のアルファの動き(ピクセル毎または透過)を有する。
【0094】
アニメーション(ANIMATION)
一般に、アニメーションは、高レベル・コンポジッタおよびアニメーション・エンジン206と、低レベル・コンポジッタおよびアニメーション・エンジン210の両方によって遂行される。上述したように、メディア統合層は、ユーザ・インターフェースまたはアプリケーション・レベルの下の多重グラフィックス処理レベルに分けられる。高レベル・エンジン206は、シーンをトラバースし、最後の補間に対して間隔をとってアニメーション・パラメータを更新し、これらの単純化したデータ構造を、より低レベルのエンジン210にパスされる命令内にパッケージ化する。これは、同期、および/または非同期方式で実施できる。間隔データは、タイミング・エンド・ポイント(開始および終了タイミング・データ)と、レンダリング命令のためのパラメータ化した値とを含むものと考えることができる。高レベル・エンジン204は、要請された補間のいくつかまたはすべてを実行することができる。たとえば、補間またはその他の動作機能が複雑すぎて、より低レベルのエンジン210では対処できない場合、またはより低レベルのエンジンが処理要求に追いつかない場合は、より高レベルのエンジンが、計算のいくつかまたはすべてを実行して、より低レベルのエンジンに単純化したデータ、命令、埋め尽くし(tessellations)などを供給し、所望の結果を得る。より低レベルのエンジンが、アニメーションの各フレームのために補間を実行するという典型的な場合では、低レベルのエンジン210は、パラメータ間隔を補間して、瞬時値を得、そして命令を、グラフィックス装置によって実行されるレンダリング・コマンドに復号する。グラフィックス装置は、シーンに存在する可能性のあるビデオ・フレームを追加する最終シーンを合成する。ディジタル権管理によるコンテンツ保護など、その他のデータも追加可能である。
【0095】
高レベル・エンジン206と低レベル・エンジン210の間の通信は、以下に記述する、命令ストリームを介して得られる。高レベル・エンジン206は、より遅い速度で、またはオン・デマンドで、レンダリング命令をストリームに書き込む。低レベル・エンジン210は、命令を備えたストリームを読出し、シーンをレンダリングする。低レベル・エンジン210はまた、共有メモリからのビットマップなどの、その他のソースからの、シーンをレンダリングするのに必要となるデータ、を得ることができることに留意されたい。
【0096】
したがって、高レベル(たとえば、ティック・オン・デマンド)エンジン210は、アニメーション・パラメータを更新し、できるだけ頻度を少なくシーン・データ構造をトラバースする、と同時に、スムーズなアニメーションを維持する。高レベル・エンジン206は、シーン・データ構造をトラバースし、一定時間アニメーションされるパラメータのそれぞれを記述する間隔を計算し、これらの間隔と単純パラメータ化した描画命令を、低レベル・エンジン210にパスする。パラメータ・データには、開始時間、終了時間、インターポレータ、補間データが含まれる。例として、移動するように見せるためにイメージを削除し再描画する代りに、高レベル・コンポジッタおよびアニメーション・エンジン206は、低レベル・コンポジッタおよびアニメーション・エンジン210に、時間とともにイメージがどのように変更していくべきかを、たとえば、開始座標、終了座標、座標間をイメージが移動すべき時間量(間隔)、および、たとえば、線形のような動き機能、を命令する。低レベル・コンポジッタおよびアニメーション・エンジン210は、フレーム間の新しい位置の決定に合わせて補間をし、これらを、グラフィックス装置が理解できる命令に変換し、そのコマンドをグラフィックス装置にパスする。
【0097】
高レベル・エンジン206のそれぞれのパスが、数フレームにわたってスムーズなアニメーションを実行するために、低レベル・エンジン210に十分なデータを供給することが好ましい。最短間隔の、時間上の長さを使用して、高レベル・エンジン206が、スムーズなアニメーションを維持するための実行に必要とする最小頻度を決定する。完全に静的、または単一の間隔によって定義できる単純なアニメーションをのみを含むシーンは、コール・プログラム202によってシーンに変更がなされた場合に、高レベル・エンジン206が実行することだけを要求する。複雑なアニメーションは、パラメータが予想され、短期間に正確に補間されるが、ハードウェア・リフレッシュ速度よりはるかに大きい、より複雑なアニメーションを含むシーンは、高レベル・エンジン206が、0.5秒毎に1回程度の、比較的頻度の少ない間隔で実行することを要求する。少なくとも1つのパラメータでは予想できない、非常に複雑なアニメーションは、高レベル・エンジン206が、より頻繁に実行することを要求する(極端な場合には、システムが、ほとんど単一レベル・アニメーション・システムまで縮退するまで)。
【0098】
高レベル・エンジン206が動く頻度は、均一または固定である必要はない。たとえば、高レベル・エンジン206は、シーン内のアニメーション・パラメータによって供給される最小間隔を越えない均一の間隔で実行するようにスケジューリングされることが可能である。あるいは、高レベル・エンジン206のそれぞれの実行上で計算される最小間隔を、次の実行をスケジューリングし、適切なときに新しいデータが低レベル・エンジン210に供給されることを確実にするために、使用されることも可能である。同様に、シーンおよび/またはそのアニメーションしたパラメータに構造上の変更がなされた場合、高レベル・エンジン206の頻度は、新しいシーンが正確にアニメーションされることを確実にするための実行であるとすることができる。
【0099】
低レベル(たとえば、高速ティック)エンジン210は、高レベル・エンジン206とは別のタスクである。低レベル・エンジン210は、高レベル・エンジン206から、シーンを記述する、単純パラメータ化した描画命令とパラメータ間隔を受取る。低レベル・エンジンは、高レベル・エンジン206によって新しいものが供給されるまで、これらのデータ構造を維持しトラバースする。低レベル・エンジンは、多数の高レベル・エンジン206をサービスし、それぞれのために別個のデータ構造を維持する。低レベル・エンジン210と高レベル・エンジン206との間の1対多の関係により、システムは、多くのシーンを同時にスムーズにアニメーションできるようになる。
【0100】
低レベル・エンジン210は、高レベル・エンジンの供給した間隔に基づき、ある瞬間のアニメーション・パラメータに補間し、描画命令を更新し、すべてのフレームに対してシーンをレンダリングする。低レベル・エンジン210タスクは、そのフレームが、グラフィックス・ハードウェア・スクリーン・リフレッシュ速度でプレゼンテーションする準備を確実にするために、システム上を高い優先度で実行する。したがって、低レベル・エンジン210によって実行される補間は、一般に、線形、区分線形、3次スプライン、およびこれらの同様の速度など、単純で高速の関数に限られる。低レベル・エンジン210は、ハードウェア・リフレッシュ速度の整数除数(integral divisor)である、正規周波数またはフレーム速度で実行する。低レベル・エンジン210によってレンダリングされたそれぞれのフレームは、矛盾しない数を維持して表示されるか、またはグラフィックス・ハードウェアによってリフレッシュされる。
【0101】
高レベル、低レベル通信(HIGH-LEVEL,LOW-LEVEL COMMUNICATION)
高レベル・コンポジッタおよびアニメーション・エンジン206と、低レベル・コンポジッタおよびアニメーション・エンジン210との間の相互作用についての説明に移ると、その機器構成は、プロセス間(in-process)を含むいろいろな機器構成が実現可能であり、低レベル・エンジン210はただ1つの高レベル・エンジン206に対してだけ働き、そして両方が同じプロセス内に存在する機器構成が実現可能である。低レベル・エンジン210がただ1つの高レベル・エンジン206に対してだけ働くことについては同じであるが、高レベル・エンジン206および低レベル・エンジン210が独立したプロセス内にある、クロス−プロセス(cross-process)機器構成も利用可能である。
【0102】
デスクトップ機器構成は、クロス−プロセス機器構成の拡張であり、ここでは、低レベル・エンジン210が高レベル・エンジンの多くのインスタンスにサービスし、デスクトップ全体のレンダリングを制御する。高レベル・エンジン206がサーバ・マシン上にあり、低レベル・エンジン210がクライアント・マシン上にある場合、リモート機器構成も使用可能である。リモートの場合は、高レベル・エンジン206と低レベル・エンジン210との関係が1対1であるか、または低レベル・エンジン210が多くのローカルおよびリモートの高レベル・エンジンに対して働くかのいずれかの場合とすることができる。リモート機器構成は、クロス・プロセスおよびデスクトップ機器構成と非常に似ていると考えることができるが、高レベル・エンジン206と低レベル・エンジン210を異なるマシン上に備えた機器構成である。
【0103】
本発明によれば、高レベル・エンジン206のデータは、低レベル・エンジン210への伝送用に準備され、低レベル・エンジン210は、データを受取るとすぐに処理する。データ・フォーマット上の詳細について、そしてデータがどのように高レベル・エンジン206内で作成され、低レベル・エンジン210によるレンダリングのために使用されるかとともに、以下にその概要を記述する。
【0104】
高レベル・エンジン206、低レベル・エンジン210、グラフィックス装置間の概念的な相互作用およびデータの流れを、図9−12に示してあり、図13、14、15は、通信に使用されるデータ構造のさまざまな例を示す図である。一般に、高レベルエンジン・レンダリング・トラバーサル(traversal;走査、横断)(たとえば、ループ)902は、シーン・キャッシュ・ツリー900をトラバースし、サブステップを何回も繰り返すことを通じて、データ構造904(図11のビジュアル更新ブロック1114を含む)を作成する。これには、シーン・キャッシュ内で使用するリソースを作成することと、ディスプレイ・ツリー内で使用するための宣言アニメーションを作成することが含まれる。アニメータ・オブジェクトは、可変の値に対して作成され、これによって、アニメータが、コンスタントの代りにメディア統合層描画API内で使用される。次いで、高レベル・エンジン206ディスプレイ・データ構造904が作成され、前に作成されていたリソースおよびアニメータを参照する。ディスプレイ・データも、その他のサブツリーを参照する。活動化するために、アニメータ(たとえば、図11の1104)をタイミング・ツリー/ノード構造(たとえば図11の1102)に接続する。一般に、アプリケーションが、時間ノード1102を作成して、それぞれのアニメータ1104の開始、停止、進捗を制御する。
【0105】
タイミングおよびアニメーションを含み、いったんモデルが作成されると、高レベル・エンジンのトラバーサル・ループ902が、ディスプレイ・ツリー900をトラバースして描画を開始する。上述したように、高レベル・エンジン206トラバーサルの頻度は、タイミングおよびアニメーションの量と複雑さに依存する。たとえば、静的シーンは、アプリケーションが変更したときにだけ、トラバースされる必要がある。
【0106】
高レベル・トラバーサル・プロセス902は、多くのパス内で起きる。事前計算パスでは、ツリー900の第1のトラバーサルは、描画に必要な計算を実行する。たとえば、バウンディング・ボックスは、それぞれのサブツリーに対して計算され、アニメーション値を更新する。上述したように、単一の瞬時値ではなく、アニメータ1104が、間隔を供給する。間隔には、開始および終了時間、どの種類のインターポレータを使用するのか、補間用データ、が含まれる。次いで、ディスプレイ・ツリーによって使用されるリソースが、具現化のために低レベル・エンジン210に送られる。
【0107】
第2のトラバーサルが、レンダリングのために低レベル・エンジン210に送られるシーンを記述する情報をパッケージ化する。このため、グラフ内のそれぞれのサブツリーが、図13−15に示すデータ構造および情報内で表されているように、1つまたは複数の命令ブロックによって表される。高レベル・エンジン206は、命令ブロック(たとえば、図15の1500)を、それぞれのトップ・レベル・ビジュアル(たとえば、ウィンドウ)に対する単一のビジュアル更新ブロック1114に蓄積する。前回のトラバーサルから変更されていない命令ブロック・サブツリーは、付加されない。宣言アニメーション変更だけを含むサブツリーのための命令ブロックには、補間情報の変数ブロックだけが含まれる。変換とともに再位置付けされているサブツリーに対する命令ブロックは、ヘッダのみを含む。
【0108】
低レベル・エンジン210レンダリング・スレッド(またはプロセス)は、ループ1208(図12)内で実行し、高フレーム速度で、理想的にはディスプレイのリフレッシュ速度で、ビジュアルをレンダリングし合成する。ループ1208は、高レベル・エンジン206から受取ったビジュアル更新ブロック(たとえば、11141−11143)の適用を含み、いくつかのステップを実行する。このパス上で描画されているリソースおよびウィンドウに対して補間される値が、更新される。命令ブロックの変数リスト内のそれぞれの変数については、次のフレームのための瞬時値が計算される。次いで、ループ1208は、それが使用されている命令リスト内の場所にオフセットを介して、新しい値へメモリ・コピーすることを、反復適用する。
【0109】
リソースは、最初に使用されたときにレンダリングされるけれども、更新されたオフ・スクリーン・リソースはレンダリングされる。それぞれのトップ・レベル・ビジュアルについての命令リストは、レンダリングされ、ディスプレイ上へのデータ「blt−ed」は、フリップされ、あるいは、それぞれのトップ・レベル・ビジュアルがスクリーン上で更新されるように配置される。
【0110】
リモート移送(REMOTE TRANSPORT)
上述したように、高レベル・エンジン206は、リソース12041−12043(図12)を含む、低レベル・エンジン210に移送されるデータの関連セットを作成する。たとえば、レンダリングに使用される変数が短時間の間にどのように変化するのかを、それがどこで使用されるかのついての情報と一緒に記述する、イメージおよびテキスト・グリフ、アニメーション間隔/変数、およびトップ・レベル・ビジュアル(ウィンドウ)をレンダリングするのに必要な、位置付けレンダリング・オペレーションを記述する命令リスト、などである。命令リストは、静的値の代りに変数への参照を含むことができる。
【0111】
まず最初に、高レベル・エンジン206は、使用する前に作成する必要のあるリソースを作成し、命令リスト内の隠されたハンドルによって参照される。高レベル・エンジン206は、最初に、リソースの装置独立型表示を作成することによってリソースを作成する。イメージの場合は、表示は、フル・フレームのビットマップか、またはJPEGなどのフォーマットの符号化されたイメージである。通信については、次いで、高レベル・エンジン206は、リソース・データを、それを特有のハンドルに指定する通信スタブに提出する。ハンドルは、高レベル・エンジン206プロセス内で生成され、そのプロセス内でのみ特有である。
【0112】
図16に示すように、通信スタブは、データ構造1600内に、オペレーションとハンドルの種類を特定するヘッダを付けて、リソース・データをパッケージ化する。スタブは、ただちにハンドルをレンダリングに使用する高レベル・エンジン206に戻す。
【0113】
命令リスト、変数、時間値およびアニメーション間隔は、一緒に作られる。命令リストは、レンダリングを記述し、静的値の代りに変数への参照を含むことができる。アニメーション間隔は、短時間の間に、どのように変数の値が変わるかを記述する。
【0114】
高レベル・エンジン206は、そのレンダリング・パスの一部として、命令リストおよびアニメーション間隔を収集する。高レベル・エンジン206は、レンダリング情報を、トップ・レベル・ビジュアル(ウィンドウ)毎に1つまたは複数の命令ブロックにパッケージ化する。それぞれのブロックは、特定のウィンドウのためのグラフのサブツリーを表す。それぞれのブロックは、命令リストに影響を与える変数のリストを含む。高レベル・エンジン206内に維持される命令リストは、使用される変数への参照を含む。これらの変数参照は、それぞれの変数に対して収集され、レンダリングの前に変数の瞬時値によって交換されるべき命令リスト内の場所(オフセット)に変換される。これらのオフセットは、図16−22に概要を示すように、そのブロックのためのアニメーション間隔情報とともにパッケージ化される。
【0115】
図15は、ビジュアル更新データ構造を示す図である。一般に、ウィンドウを記述する命令ブロックの集合が、上述したように、ビジュアル更新ブロック1114内に収集される。次いで、更新ブロックは、上述したリソースと同様の方式でパケット内にパッケージ化される。更新ブロックは、大きいものである場合があり、移送のためにより効率的な場合は、多くのパケットで送ることができる。
【0116】
低レベル・エンジン210は、移送ストリームを聞き(listen)、パケットが到着するとそれを処理する、通常優先スレッドを有する。好ましくは、レンダリング・スレッドとは別のスレッドでその作業を行い、低レベル・エンジン210がすべてのリフレッシュをレンダリングできることを確実にする。通信スレッドは、オペレーション・コード(opcode)、高レベル・エンジン識別子(ID)、オブジェクト・ハンドルに基づき、それぞれのパケットをパーズ(構文解析)する。これらのリソースおよびビジュアル更新シナリオの処理は、図23を参照しながら記述する。
【0117】
より詳細には、受取ったパケットはリソース1204(ステップ2300)のためのものであると低レベル・エンジン210が認識したとき、リソース・パケットが処理される。次いで、低レベル・エンジン210は、ステップ2302で、高レベル・エンジン206IDとリソース・ハンドルを抽出し、ステップ2304で、要求されている種類のリソースを作成する。低レベル・エンジン210は、ステップ2306で、リソースの装置独立型フォームに書き込み、リソースを、指定された高レベル・エンジン206(ステップ2308)のためのハンドル・テーブルに入れる。
【0118】
単一のパケット・ビジュアル更新ブロックは、リソース・パケットと同様に取り扱われるが、処理量が多くなる。ステップ2300で、低レベル・エンジン210が、パケットがビジュアル更新ブロック1114であると認識した場合、そのプロセスは、ステップ2312に分岐する。ステップ2312で、低レベル・エンジン210は、パケットから高レベル・エンジンIDとビジュアル・ハンドルを抽出する。次いで、低レベル・エンジン210は、ステップ2314で、指定された高レベル・エンジン206のためのハンドル・テーブル内のビジュアルをルックアップする。ビジュアルが見つけられない場合は、ステップ2316で、新しいビジュアル・オブジェクトが作成され、ハンドル・テーブルに追加される。次いで、低レベル・エンジン210は、ステップ2400および2416を介して、図24に示すように、パケット内の命令ブロックのそれぞれを通ってループする。
【0119】
このため、ステップ2400で、低レベル・エンジン210は、命令ブロックを選択し、ステップ2402で、現行ビジュアル内のブロックIDをルックアップする。ブロック識別子が存在しない場合は、新しいブロックが作成され、パケットからのデータで初期設定される。反対に、ブロック識別子が存在する場合は、低レベル・エンジン210は、変換とオフセットを更新する(ステップ2406)。ブロックが、変数リストを含む場合は、既存変数リストが、ステップ2408および2410を介して置き換えられる。ブロックが命令リストを含む場合は、既存命令リストは、ステップ2412および2414を介して置き換えられる。
【0120】
多数のパケットの場合も、単一のパケットの場合と同様に対処される。唯一の相違点は、低レベル・エンジン210が、最初に、ビジュアル更新ブロックを多数のパケットから集めることである。
【0121】
容易に理解されるように、個々のグラフィックス・ビットではなく、グラフィックス命令が送られるため、高レベル・エンジンと低レベル・エンジンの間で通信する必要のあるデータの量が、著しく減少する。その結果、高レベル処理システムからのグラフィックス命令が、ネットワーク接続を介して、それぞれが低レベル処理システムを備える、リモート端末へ送信することができる。その結果生じるグラフィックス出力は、たとえその接続の帯域幅では、従来のグラフィックス・データを運ぶことができない場合でさえも、いくつかの端末上に実質的に同じように現れることができる。
【0122】
結論
上述した詳細な説明からお分かりのように、比較的低い頻度で複雑な処理を容易にすることにより、比較的高い頻度で複雑なグラフィックス出力を可能にする多重レベル・グラフィックス処理システムおよび方法が提供される。本システムおよび方法では、大量のグラフィックス・サブシステム・パワーを高めるための多重処理レベルを使用することにより、スムーズなアニメーション、グラフィックス合成、ビデオおよび音声との組み合わせを含む、改良型グラフィックス出力が可能となる。さらに、多重レベルにより、グラフィックス命令とデータの端末への、複雑なグラフィックス出力をもたらすリモート通信が容易になる。
【0123】
本発明は、さまざまな修正形態および代替構成が可能であるが、特定の実施形態を、図面に例示し、また上記の詳細な説明に記述してある。しかし、本発明は、開示されている特定の形態に限定されるものではなく、その反対に、あらゆる修正形態、代替構成、および本発明の趣旨および範囲内の均等物を包含するものであることが理解されるべきである。
【図面の簡単な説明】
【図1】その中に本発明を組み込むことのできるコンピュータ・システムの例を示すブロック図である。
【図2】本発明の一態様に従ったメディア統合層アーキテクチャを示すブロック図である。
【図3】本発明の一態様に従った、インテリジェント・キャッシング・データ構造およびそのさまざまな構成要素に対する関係を示すブロック図である。
【図4】本発明の一態様に従った、高レベル合成およびアニメーション・エンジンとその他のレベルの間の、一般的な制御の流れを示すブロック図である。
【図5】本発明の一態様に従った、単純なデータ構造内にキャッシュされたコンテナおよびその他のノードと、それらの関係の例を示すブロック図である。
【図6】本発明の一態様に従った、他の構成要素と相互作用する低レベル合成およびアニメーション・エンジンの一般的な構成要素を示すブロック図である。
【図7】本発明の一態様に従った、低レベル合成およびアニメーション・エンジンの一般的な構成要素を示すブロック図である。
【図8】本発明の一態様に従った、低レベル合成およびアニメーション・エンジンとの接続の論理構造を示すブロック図である。
【図9】本発明の一態様に従った、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへの情報の流れを示すブロック図である。
【図10】本発明の一態様に従った、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへの情報の流れを示すブロック図である。
【図11】本発明の一態様に従った、メディア統合層アーキテクチャ層を介するグラフィックス・サブシステムへの情報の流れを示すブロック図である。
【図12】本発明の一態様に従った、メディア統合層アーキテクチャ層を介するグラフィックス・サブシステムへの情報の流れを示すブロック図である。
【図13】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図14】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図15】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図16】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図17】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図18】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図19】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図20】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図21】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図22】本発明の一態様に従って、データ構造を備え、高レベル合成およびアニメーション・エンジンから低レベル合成およびアニメーション・エンジンへ情報を通信するために使用されるその他の情報を示す図である。
【図23】本発明の一態様に従って、パケットを処理する論理を一般的に記述したフローチャートである。
【図24】本発明の一態様に従って、パケットを処理する論理を一般的に記述したフローチャートである。
【符号の説明】
100 コンピューティング環境、オペレーティング環境
110 コンピュータ
120 プロセッシング・ユニット
121 システム・バス
130 システム・メモリ
131 リード・オンリー・メモリ(ROM)
132 ランダム・アクセス・メモリ(RAM)
133 基本入出力システム(BIOS)
134、144 オペレーティング・システム
135、145、185、202 アプリケーション・プログラム
136、146 プログラム・モジュール
137、147 プログラム・データ
140、150、160 インターフェース
141 ハード・ディスク・ドライブ
151 磁気ディスク・ドライブ
152 磁気ディスク
155、156 光学ディスク
161 ポインティング・デバイス
162 キーボード
163 マイクロホン
164 タブレット
170 アダプタ
171 ローカル・エリア・ネットワーク(LAN)
172 モデム
173 ワイド・エリア・ネットワーク(WAN)
180 リモート・コンピュータ
181 メモリ記憶装置
190 ビデオ・インターフェース
191 モニタ
192 タッチ・スクリーン・インターフェース
193 タッチ・スクリーン・パネル
194 周辺インターフェース
195 スピーカ
200 メディア統合層アーキテクチャ
202 コード、クライアント、アプリケーション
204 アプリケーション・プログラミング・インターフェース(API)
206 高レベル合成およびアニメーション・エンジン
208 タイミングおよび合成アニメーション構成要素
210 低レベル合成およびアニメーション・エンジン
212 グラフィックス・サブシステム、グラフィックス・ソフトウェアおよびハードウェア
220 プリンティング・コード
196、222 プリンタ
226 端末トランスポート・サーバ
228、610 リモート・マシン
300、718、904、1102 構造
302 抽象装置
406 変換
410、412 基本ノード
416 描画コンテキスト
418 変換待ち行列
420 ディスプレイ・マネージャ
422 レンダリング・スレッド
500、502 セグメント
402、404、408、510、512、518 コンテナ
516 基本要素
604 ビジュアル・マネージャ
606 グラフィックス合成エンジン
614 プロパティ・システム
710 接続マネージャ
714 命令リスト・マネージャ
720 ルート・ノード
722 レンダリング・パス・マネージャ
730 装飾
801、802、803、804 待ち行列
900 シーン・キャッシュ・ツリー、ディスプレイ・ツリー
902 トラバーサル
1104 アニメータ
1114 ビジュアル更新ブロック
1204 リソース
1208 ループ
1500 命令ブロック
Claims (48)
- コンピューティング・システムであって、
グラフィックスを含むディスプレイ情報のフレームを出力するグラフィックス・サブシステム手段と、
前記ディスプレイ情報のフレームを出力する前記グラフィックス・サブシステム手段に、グラフィックス・データを前記グラフィックス・サブシステム手段のフレーム・リフレッシュ速度に基づく第1のフレーム速度で提供する動作を実行する第1の構成要素手段と、
プログラム・コードとインターフェースをとって、前記プログラム・コードに対応するシーン・データを生成する第2の構成要素手段であって、キャッシュ・データ構造内に前記シーン・データの少なくとも幾つかを維持し、前記第1のフレーム速度より遅い第2のフレーム速度で、前記キャッシュ・データ構造をトラバースすることによって、前記シーン・データをグラフィックス情報に処理(process)して、前記グラフィックス情報を前記第1の構成要素手段に、供給するように動作する第2の構成要素手段と
を備え、
前記キャッシュ・データ構造は、少なくとも1つのノードが、描画命令を含むコンテナ要素を備える複数のノードからなる階層木として構成され、
前記第1の構成要素手段は、前記第2の構成要素手段に、前記キャッシュ・データ構造をトラバースするのに、あるいは前記シーン・データを維持するのに使用する情報を提供する
ことを特徴とするコンピューティング・システム。 - 前記グラフィックス情報は、前記第1の構成要素手段によって解釈されるフォーマットのイメージ・データを備えることを特徴とする請求項1に記載のコンピューティング・システム。
- 前記グラフィックス情報は、命令を備えることを特徴とする請求項1に記載のコンピューティング・システム。
- 前記命令は、少なくとも1つの補間コマンドを含み、前記第1の構成要素手段は、時間経過に対応して前記グラフィックス・データ内のイメージを補間することにより、前記グラフィックス・サブシステム手段に提供される前記グラフィックス・データを変更する補間メカニズムを含むことを特徴とする請求項3に記載のコンピューティング・システム。
- 前記第2の構成要素手段は、アニメーション・パラメータにアクセスして、前記第1の構成要素手段に供給される前記グラフィックス情報を変えることを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第2の構成要素手段は、前記シーン・データの変化に応答して出力するように動作することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第1の構成要素手段が、前記グラフィックス情報が必要であることを知らせた場合に、前記第2の構成要素手段が動作することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第2の構成要素手段は、第1の構成要素手段からのフィードバックに基づいて、前記第1の構成要素手段に供給される前記グラフィックス情報量を動的に調整することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第2の構成要素手段は、前記シーン・データ内のアニメーション・パラメータに基づく頻度で動作することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第2の構成要素手段は、命令ストリームを介して前記第1の構成要素手段に前記グラフィックス情報を提供することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第2の構成要素手段は、命令ストリームを介して前記第1の構成要素手段に前記グラフィックス情報を提供することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第2の構成要素手段は、ネットワーク接続を介して前記第1の構成要素手段に前記グラフィックス情報を提供することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第1の構成要素手段は、前記第2の構成要素手段によって提供される前記グラフィックス情報を、少なくとも1つの待ち行列の1組内に維持することを特徴とする請求項1に記載のコンピューティング・システム。
- 第1の構成要素手段にその他のグラフィックス情報を提供する少なくとも1つのその他の第2の構成要素手段をさらに備え、前記第1の構成要素手段は、各第2の構成要素手段からの前記グラフィックス情報の合成から、前記グラフィックス・サブシステム手段に提供される前記グラフィックス・データを合成することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第1の構成要素手段は、前記第2の構成要素手段によって提供される前記グラフィックス情報を、それぞれの高レベル構成要素手段のための少なくとも1つの待ち行列の1組内に維持することを特徴とする請求項14に記載のコンピューティング・システム。
- 少なくとも1つの前記ノードは、描画命令を含むコンテナ構造を有することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第1の構成要素手段は、前記第2の構成要素手段によって提供される前記グラフィックス情報を、ビジュアル・ブロックとリソース・データ構造とに分割することを特徴とする請求項1に記載のコンピューティング・システム。
- 前記第1の構成要素手段および第2の構成要素手段は、異なるスレッド上で実行することを特徴とする請求項1に記載のコンピューティング・システム。
- ディスプレイ情報のフレームを出力するグラフィックス・サブシステム手段、第1および第2の構成要素手段を備え、前記第1の構成要素手段がデータを含むコールを受信して、前記第2の構成要素手段にグラフィック情報を伝達し、前記第2の構成要素手段が前記グラフィック情報を受信し、グラフィック・データを前記グラフィック・サブシステム手段に伝達する、コンピューティング環境において、
第1の構成要素手段において、
1)出力するグラフィカル・イメージに対応するデータを含むコール(call)を受取るステップと、
2)キャッシュ・データ構造内にシーン情報として前記データを維持するステップと、
3)第1のフレーム速度で、
a)前記キャッシュ・データ構造をトラバースすることによって前記シーン情報をグラフィックス情報に処理するステップと、
b)前記グラフィックス情報を第2の構成要素手段に伝達するステップと、
前記第2の構成要素手段において、前記第1のフレーム速度より速く、前記グラフィックス・サブシステム手段のフレーム・リフレッシュ速度に基づく第2のフレーム速度で、
4)前記グラフィックス情報を受取るステップと、
5)前記グラフィックス情報を、前記グラフィックス・サブシステム手段のためにフォーマットしたグラフィックス・データに処理するステップと、
6)前記グラフィックス・データを、前記フレームを出力する前記グラフィックス・サブシステム手段に伝達するステップと
を備え、
前記キャッシュ・データ構造は、少なくとも1つのノードが描画命令を含むコンテナ要素を備える複数のノードからなる階層木として構成され
前記第2の構成要素手段は、前記第1の構成要素手段に、前記キャッシュ・データ構造をトラバースするのに、あるいは前記シーン情報を維持するのに使用する情報を提供する
ことを特徴とする方法。 - 前記第1のフレーム速度は、前記コールを受取るフレーム速度に対応することを特徴とする請求項19に記載の方法。
- 前記シーン情報を維持するステップは、シーン・グラフ・データ構造を構築するステップを備えることを特徴とする請求項19に記載の方法。
- 前記シーン情報を維持するステップは、シーン・グラフ・データ構造内のコンテナを開けて、その中の描画命令にアクセスするステップを備えることを特徴とする請求項21に記載の方法。
- 前記シーン・グラフ・データ構造を構築するステップは、変数の少なくとも1つの値を変更するステップを備えることを特徴とする請求項21に記載の方法。
- 前記シーン情報を維持するステップは、前記コールを介して受取った変更を待ち行列に入れるステップと、前記待ち行列に入れた変更を適用するステップとを備えることを特徴とする請求項19に記載の方法。
- 前記シーン情報をグラフィックス情報に処理するステップは、変数の少なくとも1つの値を獲得するステップを備えることを特徴とする請求項19に記載の方法。
- 前記第1の構成要素手段において、前記シーン情報を処理した後の少なくともいくつかの結果をキャッシュに入れるステップをさらに備えることを特徴とする請求項19に記載の方法。
- 前記グラフィックス情報を前記第2の構成要素手段に伝達するステップは、命令ストリームを前記第2の構成要素手段に送るステップを備えることを特徴とする請求項19に記載の方法。
- 前記命令ストリームは、リソース・パケットを含み、前記グラフィックス情報を、前記グラフィックス・サブシステム手段のためにフォーマットしたグラフィックス・データに処理するステップは、リソースを作成することによってリソース・パケットを処理するステップと、そのリソースを前記第1の構成要素手段に関連付けるステップとを備えることを特徴とする請求項27に記載の方法。
- 前記命令ストリームは、ビジュアル更新パケットを含み、前記グラフィックス情報を前記グラフィックス・サブシステム手段のためにフォーマットしたグラフィックス・データに処理するステップは、ビジュアルが前記第1の構成要素手段に既に関連付けられているかどうかを決定することにより、前記ビジュアル更新パケットを処理するステップであって、関連付けられていなければ新しいビジュアルを作成して前記新しいビジュアルを前記第1の構成要素手段に関連付け、既に関連付けられていれば、前記ビジュアル更新パケット内の情報に基づき、そのビジュアルの情報を修正するステップを備えることを特徴とする請求項27に記載の方法。
- 前記第2の構成要素手段から前記第1の構成要素手段へ情報を戻すステップをさらに備えることを特徴とする請求項19に記載の方法。
- 前記第2の構成要素手段から前記第1の構成要素手段へ情報を戻すステップは、少なくとも1つのイベントを待ち行列に入れるステップを備えることを特徴とする請求項30に記載の方法。
- 第3の構成要素手段において、
出力するその他のグラフィカル・イメージに対応するその他のデータを含むその他のコールを受取るステップと、
前記その他のデータをその他のシーン情報として維持するステップと、
第3のフレーム速度で、前記その他のシーン情報をその他のグラフィックス情報に処理して、前記その他のグラフィックス情報を前記第2の構成要素手段に伝達するステップと
をさらに備えることを特徴とする請求項19に記載の方法。 - 前記第2の構成要素手段において、
前記その他のグラフィックス情報を受取るステップと、
前記その他のグラフィックス情報を、前記グラフィックス・サブシステム手段のためにフォーマットしたその他のグラフィックス・データに処理するステップと、
前記第1の構成要素手段に対応する前記グラフィックス・データの少なくとも一部と、前記第3の構成要素手段に対応する前記グラフィックス・データの少なくとも一部とを含むグラフィックス・デスクトップを合成するステップと、
前記グラフィックス・デスクトップを、前記フレームを出力する前記グラフィックス・サブシステム手段に伝達するステップと
をさらに備えることを特徴とする請求項32に記載の方法。 - 記録されたプログラムを有するコンピュータ読取り可能記録媒体であって、前記プログラムは、
データを含むコールを受信し、第2の構成要素手段にグラフィックス情報を伝達する第1の構成要素手段において、
1)出力するグラフィカル・イメージに対応するデータを含むコールを受取るステップと、
2)キャッシュ・データ構造内にシーン情報として前記データを維持するステップと、
3)第1のフレーム速度で、
a)少なくとも1つのノードが描画命令を含むコンテナ要素を備える複数のノードからなる階層木として構成される前記キャッシュ・データ構造をトラバースすることによって前記シーン情報をグラフィックス情報に処理するステップと、
b)前記グラフィックス情報を前記第2の構成要素手段に伝達するステップと、
前記第1の構成要素手段から前記グラフィックス情報を受信し、グラフィックス・データをグラフィクス・サブ・システム手段に伝達する前記第2の構成要素手段であって、前記第1の構成要素手段に、前記キャッシュ・データ構造をトラバースするのに、あるいは前記シーン情報を維持するのに使用する情報を提供する前記第2の構成要素手段で、前記第1のフレーム速度より速く、前記グラフィックス・サブシステム手段のフレーム・リフレッシュ速度に基づく第2のフレーム速度で、
4)前記グラフィックス情報を受取るステップと、
5)前記グラフィックス情報を、前記グラフィックス・サブシステム手段のためにフォーマットしたグラフィックス・データに処理するステップと、
6)前記グラフィックス・データを、フレームを出力する前記グラフィックス・サブシステム手段に伝達するステップと
をコンピュータに実行させることを特徴とするコンピュータ読取り可能記録媒体。 - 前記第1のフレーム速度は、前記コールを受取る速度に対応することを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。
- 前記シーン情報を維持するステップは、シーン・グラフ・データ構造を構築するステップを備えることを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。
- 前記シーン情報を維持するステップは、シーン・グラフ・データ構造内のコンテナを開けて、その中の描画命令にアクセスするステップを備えることを特徴とする請求項36に記載のコンピュータ読取り可能記録媒体。
- 前記シーン・グラフ・データ構造を処理するステップは、変数の少なくとも1つの値を変えるステップを備えることを特徴とする請求項36に記載のコンピュータ読取り可能媒体。
- 前記シーン情報を維持するステップは、前記コールを介して受取った変更を待ち行列に入れるステップと、前記待ち行列に入れた変更を適用するステップとを備えることを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。
- 前記シーン情報をグラフィックス情報に処理するステップは、変数の少なくとも1つの値を得るステップを備えることを特徴とする請求項34に記載のコンピュータ読取り可能媒体。
- 前記プログラムは、前記第1の構成要素手段において、前記シーン情報を処理した後の少なくともいくつかの結果をキャッシュに入れるステップをさらにコンピュータに実行させることを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。
- 前記グラフィックス情報を前記第2の構成要素手段に伝達するステップは、命令ストリームを前記第2の構成要素手段に伝達するステップを備えることを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。
- 前記命令ストリームはリソース・パケットを備え、前記グラフィックス情報を、前記グラフィックス・サブシステム手段のためにフォーマットしたグラフィックス・データに処理するステップは、リソースを作成することによってリソース・パケットを処理するステップと、そのリソースを前記第1の構成要素手段に関連付けるステップとを含むことを特徴とする請求項42に記載のコンピュータ読取り可能記録媒体。
- 前記命令ストリームはビジュアル更新パケットを有し、前記グラフィックス情報を前記グラフィックス・サブシステム手段のためにフォーマットしたグラフィックス・データに処理するステップは、ビジュアルが前記第1の構成要素手段に既に関連付けられているかどうかを決定することにより、前記ビジュアル更新パケットを処理するステップであって、関連付けられていなければ新しいビジュアルを作成して前記新しいビジュアルを前記第1の構成要素手段に関連付け、既に関連付けられていれば、前記ビジュアル更新パケット内の情報に基づき、そのビジュアルの情報を修正するステップを備えることを特徴とする請求項42に記載のコンピュータ読取り可能記録媒体。
- 前記第2の構成要素手段から前記第1の構成要素手段へ情報を戻すステップを備える、少なくともさらに1つのコンピュータ実行可能命令を有することを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。
- 前記第2の構成要素手段から前記第1の構成要素手段へ情報を戻すステップは、少なくとも1つのイベントを待ち行列に入れるステップを備えることを特徴とする請求項45に記載のコンピュータ読取り可能記録媒体。
- 前記プログラムは、第3の構成要素手段で、
出力するその他のグラフィカル・イメージに対応するその他のデータを含むその他のコールを受取るステップと、
前記その他のデータをその他のシーン情報として維持するステップと、
第3のフレーム速度で、前記その他のシーン情報をその他のグラフィックス情報に処理するステップと、
前記その他のグラフィックス情報を前記第2の構成要素手段に伝達するステップと
をさらにコンピュータに実行させることを特徴とする請求項34に記載のコンピュータ読取り可能記録媒体。 - 前記プログラムは、前記第2の構成要素手段で、
前記その他のグラフィックス情報を受取るステップと、
前記その他のグラフィックス情報を、前記グラフィックス・サブシステム手段のためにフォーマットしたその他のグラフィックス・データに処理するステップと、
前記第1の構成要素手段に対応する前記グラフィックス・データの少なくとも一部と、前記第3の構成要素手段に対応する前記グラフィックス・データの少なくとも一部とを含むグラフィックス・デスクトップを合成するステップと、
前記グラフィックス・デスクトップを、前記フレームを出力する前記グラフィックス・サブシステム手段に伝達するステップと
をさらにコンピュータに実行させることを特徴とする請求項47に記載のコンピュータ読取り可能記録媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US33024401P | 2001-10-18 | 2001-10-18 | |
US60/330,244 | 2001-10-18 | ||
US10/184,795 US7161599B2 (en) | 2001-10-18 | 2002-06-27 | Multiple-level graphics processing system and method |
US10/184,795 | 2002-06-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003157443A JP2003157443A (ja) | 2003-05-30 |
JP4371350B2 true JP4371350B2 (ja) | 2009-11-25 |
Family
ID=26880479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002304897A Expired - Fee Related JP4371350B2 (ja) | 2001-10-18 | 2002-10-18 | 多重レベル・グラフィックス処理システムおよび方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7161599B2 (ja) |
EP (1) | EP1304656B1 (ja) |
JP (1) | JP4371350B2 (ja) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7161599B2 (en) * | 2001-10-18 | 2007-01-09 | Microsoft Corporation | Multiple-level graphics processing system and method |
US7619633B2 (en) * | 2002-06-27 | 2009-11-17 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US6919891B2 (en) | 2001-10-18 | 2005-07-19 | Microsoft Corporation | Generic parameterization for a scene graph |
US7064766B2 (en) | 2001-10-18 | 2006-06-20 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US7443401B2 (en) * | 2001-10-18 | 2008-10-28 | Microsoft Corporation | Multiple-level graphics processing with animation interval generation |
US20040039975A1 (en) * | 2002-04-22 | 2004-02-26 | Kirill Kounik | Slowing graphics system for application optimization |
US7853884B2 (en) * | 2003-02-28 | 2010-12-14 | Oracle International Corporation | Control-based graphical user interface framework |
US7466315B2 (en) * | 2003-03-27 | 2008-12-16 | Microsoft Corporation | Visual and scene graph interfaces |
US7088374B2 (en) * | 2003-03-27 | 2006-08-08 | Microsoft Corporation | System and method for managing visual structure, timing, and animation in a graphics processing system |
US7486294B2 (en) * | 2003-03-27 | 2009-02-03 | Microsoft Corporation | Vector graphics element-based model, application programming interface, and markup language |
US7417645B2 (en) * | 2003-03-27 | 2008-08-26 | Microsoft Corporation | Markup language and object model for vector graphics |
US20080165189A1 (en) * | 2003-06-03 | 2008-07-10 | Toyota Jidosha Kabushiki Kaisha | Method and system for automatically generating process animations |
US20050132385A1 (en) * | 2003-10-06 | 2005-06-16 | Mikael Bourges-Sevenier | System and method for creating and executing rich applications on multimedia terminals |
US7012606B2 (en) * | 2003-10-23 | 2006-03-14 | Microsoft Corporation | System and method for a unified composition engine in a graphics processing system |
US7711840B2 (en) * | 2003-10-23 | 2010-05-04 | Microsoft Corporation | Protocol for remote visual composition |
US7511718B2 (en) * | 2003-10-23 | 2009-03-31 | Microsoft Corporation | Media integration layer |
US7034834B2 (en) * | 2003-10-24 | 2006-04-25 | Microsoft Corporation | Communication protocol for synchronizing animation systems |
US20050134611A1 (en) * | 2003-12-09 | 2005-06-23 | Cheung Kevin R. | Mechanism for creating dynamic 3D graphics for 2D web applications |
US20060082581A1 (en) * | 2004-10-14 | 2006-04-20 | Microsoft Corporation | Encoding for remoting graphics to decoder device |
US7852342B2 (en) * | 2004-10-14 | 2010-12-14 | Microsoft Corporation | Remote client graphics rendering |
US7603624B2 (en) * | 2004-10-21 | 2009-10-13 | Microsoft Corporation | System and method for styling content in a graphical user interface control |
US7620530B2 (en) * | 2004-11-16 | 2009-11-17 | Nvidia Corporation | System with PPU/GPU architecture |
US20060129634A1 (en) * | 2004-11-18 | 2006-06-15 | Microsoft Corporation | Multiplexing and de-multiplexing graphics streams |
US7721308B2 (en) | 2005-07-01 | 2010-05-18 | Microsoft Corproation | Synchronization aspects of interactive multimedia presentation management |
US8305398B2 (en) * | 2005-07-01 | 2012-11-06 | Microsoft Corporation | Rendering and compositing multiple applications in an interactive media environment |
US20070006062A1 (en) * | 2005-07-01 | 2007-01-04 | Microsoft Corporation | Synchronization aspects of interactive multimedia presentation management |
US8108787B2 (en) * | 2005-07-01 | 2012-01-31 | Microsoft Corporation | Distributing input events to multiple applications in an interactive media environment |
US20070006065A1 (en) * | 2005-07-01 | 2007-01-04 | Microsoft Corporation | Conditional event timing for interactive multimedia presentations |
US7941522B2 (en) * | 2005-07-01 | 2011-05-10 | Microsoft Corporation | Application security in an interactive media environment |
US8799757B2 (en) * | 2005-07-01 | 2014-08-05 | Microsoft Corporation | Synchronization aspects of interactive multimedia presentation management |
US8020084B2 (en) | 2005-07-01 | 2011-09-13 | Microsoft Corporation | Synchronization aspects of interactive multimedia presentation management |
US8656268B2 (en) | 2005-07-01 | 2014-02-18 | Microsoft Corporation | Queueing events in an interactive media environment |
US7609280B2 (en) * | 2005-09-07 | 2009-10-27 | Microsoft Corporation | High level graphics stream |
US8527563B2 (en) * | 2005-09-12 | 2013-09-03 | Microsoft Corporation | Remoting redirection layer for graphics device interface |
US7450130B2 (en) * | 2005-09-14 | 2008-11-11 | Microsoft Corporation | Adaptive scheduling to maintain smooth frame rate |
US8490117B1 (en) | 2006-10-23 | 2013-07-16 | Adobe Systems Incorporated | Bridging script engines |
US8020089B1 (en) | 2006-10-23 | 2011-09-13 | Adobe Systems Incorporated | Rendering hypertext markup language content |
US7614003B2 (en) * | 2006-10-23 | 2009-11-03 | Adobe Systems Incorporated | Rendering hypertext markup language content |
US8806138B1 (en) | 2007-02-20 | 2014-08-12 | Pixar | Dynamic dependencies and parameterizations for execution and caching |
CN101918921B (zh) * | 2008-01-27 | 2013-12-04 | 思杰系统有限公司 | 用于远程提供三维图形的方法和系统 |
US20090315897A1 (en) * | 2008-06-24 | 2009-12-24 | Microsoft Corporation | Animation platform |
US20090315896A1 (en) * | 2008-06-24 | 2009-12-24 | Microsoft Corporation | Animation platform |
US20100134500A1 (en) * | 2008-12-02 | 2010-06-03 | Electronics And Telecommunications Research Institute | Apparatus and method for producing crowd animation |
CN102255930B (zh) * | 2010-05-21 | 2014-04-02 | 国际商业机器公司 | 用于提供虚拟世界的场景数据的方法和系统 |
CN102375714A (zh) * | 2010-08-16 | 2012-03-14 | 慧荣科技股份有限公司 | 计算机系统及相关的影像绘图装置和显示装置 |
US9552212B2 (en) | 2011-05-06 | 2017-01-24 | Microsoft Technology Licensing, Llc | Caching intermediate data for scroll view rendering |
US8640047B2 (en) * | 2011-06-01 | 2014-01-28 | Micorsoft Corporation | Asynchronous handling of a user interface manipulation |
US9361715B2 (en) | 2011-06-02 | 2016-06-07 | Microsoft Technology Licensing, Llc | Global composition system |
CN103597517A (zh) * | 2011-06-07 | 2014-02-19 | 三菱电机株式会社 | 绘图装置 |
US9563971B2 (en) * | 2011-09-09 | 2017-02-07 | Microsoft Technology Licensing, Llc | Composition system thread |
US20130063482A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Application programming interface for a bitmap composition engine |
US10115217B2 (en) | 2011-10-28 | 2018-10-30 | Microsoft Technology Licensing, Llc | Layering animation properties in higher level animations |
CN102609961A (zh) * | 2012-01-16 | 2012-07-25 | 上海驿创信息技术有限公司 | 基于参考点的矢量图形复合编、解码方法 |
US9542906B2 (en) * | 2013-05-10 | 2017-01-10 | Microsoft Technology Licensing, Llc | Shared compositional resources |
KR102037812B1 (ko) * | 2013-05-28 | 2019-10-29 | 삼성전자 주식회사 | 멀티 코어 그래픽 처리 장치 |
US10235338B2 (en) | 2014-09-04 | 2019-03-19 | Nvidia Corporation | Short stack traversal of tree data structures |
US10575008B2 (en) * | 2015-06-01 | 2020-02-25 | Apple Inc. | Bandwidth management in devices with simultaneous download of multiple data streams |
US10163184B2 (en) * | 2016-08-17 | 2018-12-25 | Adobe Systems Incorporated | Graphics performance for complex user interfaces |
US10999602B2 (en) | 2016-12-23 | 2021-05-04 | Apple Inc. | Sphere projected motion estimation/compensation and mode decision |
US11259046B2 (en) | 2017-02-15 | 2022-02-22 | Apple Inc. | Processing of equirectangular object data to compensate for distortion by spherical projections |
US10924747B2 (en) | 2017-02-27 | 2021-02-16 | Apple Inc. | Video coding techniques for multi-view video |
US10347043B2 (en) * | 2017-05-16 | 2019-07-09 | Apple Inc. | Core animation portals |
US11093752B2 (en) | 2017-06-02 | 2021-08-17 | Apple Inc. | Object tracking in multi-view video |
US10754242B2 (en) | 2017-06-30 | 2020-08-25 | Apple Inc. | Adaptive resolution and projection format in multi-direction video |
AU2020427596A1 (en) * | 2020-02-06 | 2022-09-15 | Canva Pty Ltd | System and method for rendering a design including a dynamic design element |
US11276206B2 (en) | 2020-06-25 | 2022-03-15 | Facebook Technologies, Llc | Augmented reality effect resource sharing |
US11935149B2 (en) * | 2020-11-13 | 2024-03-19 | Samsung Electronics Co., Ltd | Electronic device and image rendering method thereof for adjusting frame rate |
Family Cites Families (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US555368A (en) * | 1896-02-25 | Gardner and lewis | ||
US4209852A (en) * | 1974-11-11 | 1980-06-24 | Hyatt Gilbert P | Signal processing and memory arrangement |
CA2075048C (en) | 1990-01-30 | 1999-08-17 | Gregory A. Pascucci | Networked facilities management system |
US5509115A (en) | 1990-08-08 | 1996-04-16 | Peerless Systems Corporation | Method and apparatus for displaying a page with graphics information on a continuous synchronous raster output device |
US5261041A (en) * | 1990-12-28 | 1993-11-09 | Apple Computer, Inc. | Computer controlled animation system based on definitional animated objects and methods of manipulating same |
US5852449A (en) * | 1992-01-27 | 1998-12-22 | Scientific And Engineering Software | Apparatus for and method of displaying running of modeled system designs |
AU4279893A (en) | 1992-04-10 | 1993-11-18 | Avid Technology, Inc. | A method and apparatus for representing and editing multimedia compositions |
US5987627A (en) | 1992-05-13 | 1999-11-16 | Rawlings, Iii; Joseph H. | Methods and apparatus for high-speed mass storage access in a computer system |
US5500933A (en) * | 1993-04-28 | 1996-03-19 | Canon Information Systems, Inc. | Display system which displays motion video objects combined with other visual objects |
CN1109695A (zh) * | 1993-05-10 | 1995-10-04 | 塔里根特公司 | 多媒体同步系统 |
US5555368A (en) * | 1993-12-30 | 1996-09-10 | Taligent | Object-oriented multi-tasking view framework |
US5912666A (en) * | 1994-08-23 | 1999-06-15 | Object Technology Licensing Corp. | Object-oriented global cursor tool |
US5745761A (en) | 1994-12-15 | 1998-04-28 | International Business Machines Corporation | Advanced graphics driver architecture with extension capability |
US5745762A (en) * | 1994-12-15 | 1998-04-28 | International Business Machines Corporation | Advanced graphics driver architecture supporting multiple system emulations |
US5986667A (en) * | 1994-12-22 | 1999-11-16 | Apple Computer, Inc. | Mechanism for rendering scenes using an object drawing subsystem |
US5732198A (en) | 1995-02-09 | 1998-03-24 | Oki America, Inc. | Host based printing system for printing a document having at least one page |
US5727141A (en) | 1995-05-05 | 1998-03-10 | Apple Computer, Inc. | Method and apparatus for identifying user-selectable regions within multiple display frames |
US5790130A (en) | 1995-06-08 | 1998-08-04 | Hewlett-Packard Company | Texel cache interrupt daemon for virtual memory management of texture maps |
US5930810A (en) * | 1995-08-09 | 1999-07-27 | Taylor Corporation | Printing system with pre-defined user modifiable forms and local and remote printing |
US5986675A (en) * | 1996-05-24 | 1999-11-16 | Microsoft Corporation | System and method for animating an object in three-dimensional space using a two-dimensional input device |
US5936632A (en) | 1996-07-26 | 1999-08-10 | Hewlett-Packard Co. | Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels |
US6275857B1 (en) * | 1996-10-30 | 2001-08-14 | Microsoft Corporation | System and method for freeing shared resources in a computer system |
US5920325A (en) * | 1996-11-20 | 1999-07-06 | International Business Machines Corporation | Prioritization of background display during animation |
US6137499A (en) * | 1997-03-07 | 2000-10-24 | Silicon Graphics, Inc. | Method, system, and computer program product for visualizing data using partial hierarchies |
US6195694B1 (en) * | 1997-03-13 | 2001-02-27 | International Business Machines Corporation | Server for reconfiguring control of a subset of devices on one or more kiosks |
CA2257577C (en) * | 1997-04-07 | 2002-03-19 | At&T Corp. | System and method for interfacing mpeg-coded audiovisual objects permitting adaptive control |
US6160907A (en) | 1997-04-07 | 2000-12-12 | Synapix, Inc. | Iterative three-dimensional process for creating finished media content |
US6215495B1 (en) * | 1997-05-30 | 2001-04-10 | Silicon Graphics, Inc. | Platform independent application program interface for interactive 3D scene management |
US5924098A (en) | 1997-06-30 | 1999-07-13 | Sun Microsystems, Inc. | Method and apparatus for managing a linked-list data structure |
US6377263B1 (en) * | 1997-07-07 | 2002-04-23 | Aesthetic Solutions | Intelligent software components for virtual worlds |
US6314470B1 (en) * | 1997-07-25 | 2001-11-06 | Hewlett Packard Company | System and method for asynchronously accessing a graphics system for graphics application evaluation and control |
US6154215A (en) * | 1997-08-01 | 2000-11-28 | Silicon Graphics, Inc. | Method and apparatus for maintaining multiple representations of a same scene in computer generated graphics |
US5960810A (en) * | 1997-11-20 | 1999-10-05 | Douglas; Matthew W. | Lime slurry injection system and method for septic pumpers |
US6654931B1 (en) | 1998-01-27 | 2003-11-25 | At&T Corp. | Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects |
US6272650B1 (en) * | 1998-02-03 | 2001-08-07 | Amazing Media, Inc. | System and method for disambiguating scene graph loads |
US6243856B1 (en) * | 1998-02-03 | 2001-06-05 | Amazing Media, Inc. | System and method for encoding a scene graph |
DE19807555C1 (de) | 1998-02-23 | 1999-12-02 | Siemens Ag | Aufbausystem zum Einschub von elektrischen Flachbaugruppen |
US6075532A (en) * | 1998-03-23 | 2000-06-13 | Microsoft Corporation | Efficient redrawing of animated windows |
US6570578B1 (en) | 1998-04-03 | 2003-05-27 | Avid Technology, Inc. | System for automatic generation of selective partial renderings of complex scenes |
US6266053B1 (en) * | 1998-04-03 | 2001-07-24 | Synapix, Inc. | Time inheritance scene graph for representation of media content |
US6237092B1 (en) * | 1998-05-05 | 2001-05-22 | International Business Machines Corp. | Client-server system with central application management allowing an administrator to configure user and group contexts during application configuration without relaunching the application |
US6631403B1 (en) | 1998-05-11 | 2003-10-07 | At&T Corp. | Architecture and application programming interfaces for Java-enabled MPEG-4 (MPEG-J) systems |
KR20010034920A (ko) * | 1998-06-26 | 2001-04-25 | 매클린토크 샤운 엘 | 엠펙-4 비디오 프로그램을 작성하고 표현하기 위한 단말기 |
US6731314B1 (en) * | 1998-08-17 | 2004-05-04 | Muse Corporation | Network-based three-dimensional multiple-user shared environment apparatus and method |
US6487565B1 (en) * | 1998-12-29 | 2002-11-26 | Microsoft Corporation | Updating animated images represented by scene graphs |
US6411297B1 (en) * | 1999-03-03 | 2002-06-25 | Discreet Logic Inc. | Generating image data |
US6714201B1 (en) * | 1999-04-14 | 2004-03-30 | 3D Open Motion, Llc | Apparatuses, methods, computer programming, and propagated signals for modeling motion in computer applications |
US6986101B2 (en) * | 1999-05-06 | 2006-01-10 | International Business Machines Corporation | Method and apparatus for converting programs and source code files written in a programming language to equivalent markup language files |
US6707456B1 (en) * | 1999-08-03 | 2004-03-16 | Sony Corporation | Declarative markup for scoring multiple time-based assets and events within a scene composition system |
AU7831500A (en) * | 1999-09-24 | 2001-04-24 | Sun Microsystems, Inc. | Method and apparatus for rapid processing of scene-based programs |
US7184038B2 (en) * | 1999-09-24 | 2007-02-27 | Sun Microsystems, Inc. | Using render bin parallelism for rendering scene graph based graphics data |
US6765571B2 (en) * | 1999-09-24 | 2004-07-20 | Sun Microsystems, Inc. | Using a master controller to manage threads and resources for scene-based rendering |
US6538656B1 (en) * | 1999-11-09 | 2003-03-25 | Broadcom Corporation | Video and graphics system with a data transport processor |
AU1948201A (en) * | 1999-12-06 | 2001-06-12 | Axiomatic Design Software, Inc. | Method and apparatus for producing software |
US7102651B1 (en) | 1999-12-22 | 2006-09-05 | Adobe Systems Incorporated | Hierarchical 2-D color compositing with blending mode and opacity controls at all levels |
US7103581B1 (en) | 2000-01-13 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | System and method for pricing print jobs |
US6833840B2 (en) | 2000-02-14 | 2004-12-21 | Optibase Ltd | PROTO implementation in MPEG-4 |
JP2001273520A (ja) * | 2000-03-23 | 2001-10-05 | Famotik Ltd | マルチメディアドキュメント統合表示システム |
US6751655B1 (en) * | 2000-04-18 | 2004-06-15 | Sun Microsystems, Inc. | Method and apparatus for transport of scenegraph information across a network |
US6717599B1 (en) * | 2000-06-29 | 2004-04-06 | Microsoft Corporation | Method, system, and computer program product for implementing derivative operators with graphics hardware |
US20020019844A1 (en) | 2000-07-06 | 2002-02-14 | Kurowski Scott J. | Method and system for network-distributed computing |
JP2004506262A (ja) * | 2000-08-04 | 2004-02-26 | イントリンジック グラフィックス, インコーポレイテッド | グラフィックハードウェアおよびソフトウェアの開発 |
US6675230B1 (en) * | 2000-08-22 | 2004-01-06 | International Business Machines Corporation | Method, system, and program for embedding a user interface object in another user interface object |
US7143339B2 (en) * | 2000-09-20 | 2006-11-28 | Sap Aktiengesellschaft | Method and apparatus for dynamically formatting and displaying tabular data in real time |
US6636211B2 (en) | 2000-12-15 | 2003-10-21 | Dassault Systemes | CAD/CAM feature tree with manipulatable 3D miniatures |
US6732109B2 (en) * | 2001-01-31 | 2004-05-04 | The Eon Company | Method and system for transferring information between a user interface and a database over a global information network |
US7069503B2 (en) * | 2001-06-04 | 2006-06-27 | Murata Kikai Kabushiki Kaisha | Device and program for structured document generation data structure of structural document |
US7305011B2 (en) * | 2001-06-14 | 2007-12-04 | International Business Machines Corporation | Periodic broadcast and location of evolving media content with application to seminar and stroke media |
US6919891B2 (en) * | 2001-10-18 | 2005-07-19 | Microsoft Corporation | Generic parameterization for a scene graph |
US7443401B2 (en) * | 2001-10-18 | 2008-10-28 | Microsoft Corporation | Multiple-level graphics processing with animation interval generation |
US7161599B2 (en) * | 2001-10-18 | 2007-01-09 | Microsoft Corporation | Multiple-level graphics processing system and method |
US7064766B2 (en) * | 2001-10-18 | 2006-06-20 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
AU2002348584B2 (en) | 2001-10-23 | 2007-05-10 | Samsung Electronics Co., Ltd. | Information storage medium including markup document and AV data, recording method, reproducing method, and reproducing apparatus therefor |
US7055092B2 (en) * | 2001-12-05 | 2006-05-30 | Canon Kabushiki Kaisha | Directory for multi-page SVG document |
US20030110297A1 (en) * | 2001-12-12 | 2003-06-12 | Tabatabai Ali J. | Transforming multimedia data for delivery to multiple heterogeneous devices |
US20040110490A1 (en) * | 2001-12-20 | 2004-06-10 | Steele Jay D. | Method and apparatus for providing content to media devices |
KR100453225B1 (ko) * | 2001-12-26 | 2004-10-15 | 한국전자통신연구원 | 3차원 가상 현실 구현을 위한 클라이언트 시스템과 이를이용한 가상 현실 구현 방법 |
US7076332B2 (en) * | 2002-01-18 | 2006-07-11 | National Instruments Corporation | System and method for invoking execution of a sequence of operations that includes motion control, machine vision, and data acquisition (DAQ) functionality |
IES20030064A2 (en) * | 2002-02-04 | 2003-08-06 | Mobileaware Technologies Ltd | Document transformation |
US20030210267A1 (en) | 2002-05-13 | 2003-11-13 | Kylberg Robert Lee | Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment |
US7236165B2 (en) * | 2002-07-11 | 2007-06-26 | Raytheon Company | System and method for asynchronous storage and playback of a system state |
AU2003251879A1 (en) * | 2002-07-12 | 2004-02-02 | Raytheon Company | Scene graph based display for desktop applications |
US20040216139A1 (en) * | 2002-08-21 | 2004-10-28 | Rhoda Merlin A. | System controlling test/measurement devices on a network using markup language documents and methods thereof |
US7240346B2 (en) * | 2002-11-13 | 2007-07-03 | Microsoft Corporation | Method and system for accessing drawing resources |
US7126606B2 (en) * | 2003-03-27 | 2006-10-24 | Microsoft Corporation | Visual and scene graph interfaces |
US7088374B2 (en) * | 2003-03-27 | 2006-08-08 | Microsoft Corporation | System and method for managing visual structure, timing, and animation in a graphics processing system |
US7412455B2 (en) * | 2003-04-30 | 2008-08-12 | Dillon David M | Software framework that facilitates design and implementation of database applications |
US8051389B2 (en) * | 2003-08-26 | 2011-11-01 | Hewlett-Packard Development Company, L.P. | Methods of displaying resources of overlapping but separate hierarchies |
US7012606B2 (en) * | 2003-10-23 | 2006-03-14 | Microsoft Corporation | System and method for a unified composition engine in a graphics processing system |
US7511718B2 (en) * | 2003-10-23 | 2009-03-31 | Microsoft Corporation | Media integration layer |
-
2002
- 2002-06-27 US US10/184,795 patent/US7161599B2/en not_active Expired - Lifetime
- 2002-10-16 EP EP02023045.4A patent/EP1304656B1/en not_active Expired - Lifetime
- 2002-10-18 JP JP2002304897A patent/JP4371350B2/ja not_active Expired - Fee Related
-
2006
- 2006-10-31 US US11/555,040 patent/US7705851B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20070057943A1 (en) | 2007-03-15 |
US7705851B2 (en) | 2010-04-27 |
US20030076328A1 (en) | 2003-04-24 |
EP1304656A2 (en) | 2003-04-23 |
JP2003157443A (ja) | 2003-05-30 |
EP1304656A3 (en) | 2005-12-21 |
US7161599B2 (en) | 2007-01-09 |
EP1304656B1 (en) | 2018-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4371350B2 (ja) | 多重レベル・グラフィックス処理システムおよび方法 | |
JP4371351B2 (ja) | イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造 | |
US7619633B2 (en) | Intelligent caching data structure for immediate mode graphics | |
US7443401B2 (en) | Multiple-level graphics processing with animation interval generation | |
US7265756B2 (en) | Generic parameterization for a scene graph | |
US7012606B2 (en) | System and method for a unified composition engine in a graphics processing system | |
US7088374B2 (en) | System and method for managing visual structure, timing, and animation in a graphics processing system | |
KR20040086043A (ko) | 비주얼 및 장면 그래프 인터페이스 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050830 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050830 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080328 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080626 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080701 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080828 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081028 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090126 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20090128 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20090128 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090306 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090324 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090623 |
|
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: 20090731 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090803 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090828 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120911 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4371350 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130911 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |