(57)【特許請求の範囲】
【請求項１】
保持グラフ情報を、時間テクスチャー情報として記憶される時間情報およびアニメーションテクスチャー情報として記憶されるアニメーション情報を含む保持グラフテクスチャー情報に変換するためのテクスチャーコンポーネントと、
前記保持グラフテクスチャー情報を完全にグラフィックス処理ユニット（ＧＰＵ）上で評価するためのシェーダーコンポーネントと、
を含み、前記シェーダーコンポーネントは、
前記時間テクスチャー情報を評価し前記時間テクスチャー情報に基づいて進行状況テクスチャー情報を出力する第１のピクセルシェーダーと、
前記進行状況テクスチャー情報および前記アニメーションテクスチャー情報を受け取り、前記進行状況テクスチャー情報に基づいて前記アニメーションテクスチャー情報を補間し、前記進行状況テクスチャー情報および前記アニメーションテクスチャー情報に基づいて色テクスチャー情報、位置テクスチャー情報、または不透明度テクスチャー情報のうちの少なくとも１つを出力する第２のピクセルシェーダーと、
前記第２のピクセルシェーダーから出力された少なくともパス頂点データおよびテクスチャー情報を受け取り、前記第２のピクセルシェーダーから出力された前記パス頂点データおよびテクスチャー情報に基づいて変形済み頂点データを出力する頂点シェーダーと、
を含む、グラフィックス処理システム。
【請求項２】
前記シェーダーコンポーネントの前記第１および第２のピクセルシェーダーが、複数レベルの変形の変形階層を構成し変形階層評価情報を出力する、請求項１に記載のシステム。
【請求項３】
前記保持グラフテクスチャー情報が、変形テクスチャー情報として記憶される変形情報を含む、請求項１に記載のシステム。
【請求項４】
前記保持グラフテクスチャー情報がさらに階層的シーングラフ情報を含み、前記シェーダーコンポーネントがシーングラフ変形を評価する、請求項１に記載のシステム。
【請求項５】
前記シェーダーコンポーネントがパスをラスタライズする、請求項１に記載のシステム。
【請求項６】
保持グラフ情報を、時間テクスチャー情報として記憶される時間情報を含む保持グラフテクスチャー情報に変換するための、ＧＰＵのテクスチャーコンポーネントと、
前記時間テクスチャー情報を評価し前記時間テクスチャー情報に基づいて進行状況テクスチャー情報を出力するための、ＧＰＵの１つまたは複数のピクセルシェーダーと、
ＧＰＵの頂点シェーダーと、
を含み、前記頂点シェーダー及び前記１つまたは複数のピクセルシェーダーのうちの少なくとも１つは、変形構成を変形テクスチャー情報として評価するよう構成される、
グラフィックス処理システム。
【請求項７】
前記保持グラフテクスチャー情報は、時間テクスチャー情報、アニメーションテクスチャー情報、および変形テクスチャー情報を含み、すべてが完全にＧＰＵ上で評価される、請求項６に記載のシステム。
【請求項８】
アニメーションテクスチャー情報および前記進行状況テクスチャー情報を評価するためのピクセルシェーダーをさらに含む、請求項６に記載のシステム。
【請求項９】
パスをラスタライズするためのシェーダーをさらに含む、請求項６に記載のシステム。
【請求項１０】
前記１つまたは複数のピクセルシェーダーは、さらに変形の階層を評価し、前記頂点シェーダーは、その結果生じる変形をパス頂点データに適用する、請求項６に記載のシステム。
【請求項１１】
時間情報を含む保持グラフ情報を、時間テクスチャー情報を含む保持グラフテクスチャー情報に変換するステップと、
１つまたは複数のピクセルシェーダーおよび１つまたは複数の頂点シェーダーを使用して、ＧＰＵ上で前記保持グラフテクスチャー情報を評価するステップと、
前記１つまたは複数のピクセルシェーダーを使用して前記時間テクスチャー情報を処理し、前記時間テクスチャー情報に基づいて進行状況テクスチャー情報を出力すると共に、前記１つまたは複数のピクセルシェーダーを使用して前記進行状況テクスチャー情報およびアニメーションテクスチャー情報を処理し、アニメーション変形、不透明度、および色テクスチャー情報を生成するステップと、
タイミングノード情報を第１のテクスチャーに、アニメーションノード情報を第２のテクスチャーに、シーングラフ変形の記述を第３のテクスチャーに記憶するステップと、
前記タイミングノード情報、アニメーションノード情報、およびシーングラフ変形の記述を処理して最終的なシーンラスタライズを実行するステップと、
を含む、グラフィックスを処理する方法。
【請求項１２】
アニメーション情報および階層的シーングラフ情報を前記保持グラフテクスチャー情報の一部として記憶し、前記アニメーション情報および階層的シーングラフ情報に基づいてシーングラフ変形を評価するステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記１つまたは複数のピクセルシェーダーを使用してパスのラスタライズを行うステップをさらに含む、請求項１１に記載の方法。
【請求項１４】
前記１つまたは複数の頂点シェーダーを使用して変形階層、パス頂点データ、ならびに計算されたアニメーション変形、位置、不透明度、および色テクスチャー情報を評価するステップをさらに含む、請求項１１に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]アプリケーションおよびデータがより多様化するにつれ、コンピューティングデバイスおよびコンピューティングシステムの中央処理装置（ＣＰＵ）は、より複雑な処理をこなすようますます迫られている。これを受けベンダーは、信号処理、グラフィックス処理、工業用制御システム向けなど、特定応用向けの特殊化されたプロセッサーを設計し、提供している。
【０００２】
[0002]コンピューターグラフィックスを利用する多くのアプリケーションは、グラフィックスを処理するためにＣＰＵに対して過度の要求を出す場合がある。ほとんどのグラフィックアプリケーションにおいてその処理は共有され、作業の一部はＣＰＵを使用して実行され、作業の一部はグラフィックス処理ユニット（ＧＰＵ）に渡される。伝統的手法では、マシングラフィックスはＣＰＵ上で実施されていた。ベンダーは、今ではますます多くの量のメモリーおよび処理能力をＧＰＵ上に設計している。同時に、コンピューティングベンダーは、マルチコアＣＰＵを実装することによりこの問題に部分的に対処している。
【０００３】
[0003]現代のユーザーインターフェイスシナリオでは、１つのシーンの中の視覚要素の数が増加している。１０，０００から５０，０００の視覚要素を作成するアプリケーションを有することは珍しくない。そのようなシナリオのために高速の表示およびアニメーションを作成することは、難しい問題である。ＧＰＵによる計算は、はるかに多くの並列処理、より優れたメモリー帯域幅、およびグラフィックス操作用に特殊化されたハードウェアでＣＰＵベースのグラフィックス計算を改善する。しかし、従来のＧＰＵは、グラフィックス処理コンポーネントとして制約される。
【発明の概要】
【０００４】
[0004]本明細書に記載する一部の新規性のある実施形態についての基本的理解を与えるために、簡略化した発明の概要を以下に示す。この発明の概要は、広範な要旨ではなく、重要な／不可欠な要素を特定することまたはその範囲を線引きすることを意図するものでもない。この発明の概要の唯一の目的は、後に示すより詳細な説明への導入部として、一部の概念を簡略化した形で提示することである。
【０００５】
[0005]開示するアーキテクチャーは、グラフィックス処理ユニット（ＧＰＵ）上で完全に実行することができる形式でシーン構成およびアニメーションを表す。このアーキテクチャーは、シーングラフ情報およびアニメーション情報をテクスチャー情報として記憶し、（例えば頂点およびピクセル）シェーダーを使用して時間情報を評価し、アニメーションを評価し、変形（ｔｒａｎｓｆｏｒｍ）を評価し、パスをラスタライズする。つまり、アニメーション情報および階層的シーングラフ情報をテクスチャーの状態で記憶する能力について開示する。さらに、このアーキテクチャーは、プリミティブごとにＣＰＵが介入することなく、もっぱらＧＰＵ上でアニメーションの位置を計算し、再描画する能力を提供する。
【０００６】
[0006]上記の目標および関係する目標を達成するために、説明のための特定の態様を以下の説明および付属図面に関連して本明細書に記載する。これらの態様は、本明細書に開示する原理を実施できる様々な方法を示すものであり、すべての態様およびその等価物は、特許請求の範囲に記載の主題の範囲に含まれることを意図する。諸図面と組み合わせて検討するとき、以下の発明を実施するための形態から他の利点および新規の特徴が明らかになろう。
【図面の簡単な説明】
【０００７】
【図１】[0007]ＧＰＵ上でシーン情報およびアニメーション情報を処理するための、グラフィックス処理システムを示す図である。
【図２】[0008]ＧＰＵによりシーン情報およびアニメーション情報を処理するための、グラフィックス処理システムのより詳細な例を示す図である。
【図３】[0009]ＧＰＵ内でシーン構成およびアニメーションを用意するためのフロー／ブロック図である。
【図４】[0010]グラフィックスを処理する方法を示す図である。
【図５】[0011]ＧＰＵ上でシーン構成およびアニメーションを処理する方法を示す図である。
【図６】[0012]図５の方法における各フレームについての追加の処理方法を示す図である。
【図７】[0013]開示するアーキテクチャーに従い、ＧＰＵ内で保持グラフ情報を実行するように機能するコンピューティングシステムのブロック図である。
【発明を実施するための形態】
【０００８】
[0014]開示するアーキテクチャーは、汎用シーングラフＡＰＩシステムを利用し、グラフィックス処理ユニット（ＧＰＵ）によって実行される作業をスタックのより上部に移動させて、シーングラフ自体をビデオメモリー内に記憶させ、ＧＰＵによって評価させ、アニメーションシステムも同様にテクスチャーメモリー内に記憶させ、ＧＰＵによって評価させる。このことは、要素ごとのＣＰＵコストを削減する。例えば、要素ごとのＣＰＵコストに関し、百万要素を検討されたい。従来の方法では、この百万要素のそれぞれについて反復し、レンダー処理を行ういくらかのＣＰＵ作業がある。それから、ＧＰＵがそのレンダリング処理の他の何らかの部分を実行する。
【０００９】
[0015]本明細書に記載する実装形態は、より一般的なシェーダーベースのコンピューティングモデルを使用するが、このアーキテクチャーは、ＧＰＵに照準を合わせ、伝統的なグラフィックスパイプラインシェーダーモデルに基づかず、適切なＡＰＩを使用する汎用コンピューティングモデルを使用して実装することもできる。
【００１０】
[0016]開示するアーキテクチャーでは、シーングラフ内の要素の数は、ＣＰＵの作業の観点からすると重要ではない。一定数の描画呼び出しを行うためのドライバーを呼び出すために、ＣＰＵの作業が行われ得る。しかし、シーングラフが構成された後、シーン処理は要素ごとのＣＰＵ作業を利用しない。プリミティブごとの作業はＧＰＵによって実行され、このことは桁違いに高いスケーラビリティをもたらす。リアルタイムアニメーションについての従来の制限は、ＣＰＵの作業が関与した状態で１，０００要素または１０，０００要素とすることができる。この作業をＧＰＵにオフロードする場合、例えば１００，０００要素から５００，０００要素を使用することができる。したがって、ＧＰＵ内の並列処理能力に基づき、スケーラビリティにおいて桁違いの改善が実現される。シーングラフおよびアニメーションシステムをオフロードすることにより、ＧＰＵの並列処理能力の利益を得ることができ、それにより、フレームごとに描画できるプリミティブの数の点でかなり高いスケールを達成する。
【００１１】
[0017]次に図面を参照し、これらの図面では全体を通して同じ参照番号を使用して同じ要素を参照する。以下の記載では、説明の目的上、その完全な理解を与えるために多数の特定の詳細を記載する。ただし、これらの特定の詳細なしに、新規性のある実施形態を実施できることが明らかな場合がある。他の例では、よく知られている構造およびデバイスを、その記述を容易にするためにブロック図形式で図示する。意図は、特許請求の範囲に記載の主題の趣旨および範囲に含まれるすべての修正形態、等価物、および代替形態を対象として含むことである。
【００１２】
[0018]図１は、ＧＰＵ上でシーン情報およびアニメーション情報を処理するための、グラフィックス処理システム１００を示す。このシステム１００は、保持グラフ情報１０４を保持グラフテクスチャー情報１０６に変換するためのテクスチャーコンポーネント１０２と、その保持グラフテクスチャー情報１０６を完全にＧＰＵによって評価するためのシェーダーコンポーネント１０８とを含む。
【００１３】
[0019]シェーダーコンポーネント１０８は、シーングラフ変形を評価し、パスをラスタライズするための、例えば１つもしくは複数のピクセルシェーダー、１つもしくは複数の頂点シェーダー、１つもしくは複数の幾何学的シェーダー、および／または１つもしくは複数のストリームプロセッサーを含むことができる。保持グラフテクスチャー情報１０６は、テクスチャー情報として記憶されるタイミング情報、テクスチャー情報として記憶される位置情報、および／またはテクスチャー情報として記憶されるアニメーション情報を含むことができる。シェーダーコンポーネント１０８は、複数レベルの変形階層を構成するためのピクセルシェーダー、およびその変形をジオメトリーに適用するための頂点シェーダーを含む。
【００１４】
[0020]図２は、ＧＰＵ２０２によりシーン情報およびアニメーション情報を処理するための、グラフィックス処理システム２００（例えばメインボード上で統合される、そのメインボードにとっての子カード等）のより詳細な例を示す。このグラフィックス処理システム２００は、グラフィックス処理に関連するプログラムおよびデータを記憶するためのメモリーサブシステム２０４にさらに関連することができる。メモリーサブシステム２０４は、ＧＰＵだけが使用するための離散メモリー、またはＣＰＵにも関連するメモリーに相当することができる。例えば、このメモリーサブシステム２０４は、保持グラフテクスチャー情報１０６を作成する（記憶する）ためのテクスチャーコンポーネント１０２への入力として、保持グラフ情報１０４を含むことができる。図示のように、保持グラフテクスチャー情報１０６は、時間情報２０６、アニメーション情報２０８、および変形情報２１０を含む。テクスチャーコンポーネント１０２は、保持グラフ情報１０４を、保持グラフテクスチャー情報１０４としてテクスチャーデータの状態で記憶（または作成）し、時間テクスチャー情報２１２、アニメーションテクスチャー情報２１４、および変形テクスチャー情報２１６をもたらす。
【００１５】
[0021]ＧＰＵ２０２は、所望の効果を出力するために保持グラフテクスチャー情報１０６をシェーダー処理するための、シェーダーコンポーネント１０８を備えることもできる。シェーダーコンポーネント１０８は、適切なプロトコルおよび命令を使用し、ユーザーが望み得る通りに１つまたは複数のピクセルシェーダー２１８、１つまたは複数の頂点シェーダー２２０、１つまたは複数の幾何学的シェーダー２２２、および他のシェーダーにシェーダー処理を提供するものとして図示する。この１つまたは複数のピクセルシェーダー２１８、１つまたは複数の頂点シェーダー２２０、１つまたは複数の幾何学的シェーダー２２２等は、時間テクスチャー情報２１２、アニメーションテクスチャー情報２１４、および変形テクスチャー情報２１６を処理するために使用される。これについては、本明細書で以下に詳細に説明する。
【００１６】
[0022]グラフィックス処理システム２００は、このＧＰＵアーキテクチャーが実装されるメインボードプロセス（例えばＣＰＵ）、他のクライアントマシンまたはデバイスに入出力、処理等を提供するための、他のコンポーネントおよび機能２２４も含むことに留意されたい。
【００１７】
[0023]つまり、グラフィックス処理システム２００は、保持グラフ情報１０４を保持グラフテクスチャー情報１０６に変換するための、ＧＰＵ２０２内のテクスチャーコンポーネント１０２と、時間情報を時間テクスチャー情報として評価するための、ＧＰＵ２０２の１つまたは複数のピクセルシェーダー２１８のうちの１つと、変形構成（ｔｒａｎｓｆｏｒｍ  ｃｏｍｐｏｓｉｔｉｏｎ）を変形テクスチャー情報として評価するための、ＧＰＵ２０２の１つまたは複数の頂点シェーダー２２０およびピクセルシェーダーのうちの１つもしくは複数と、を備えることができる。
【００１８】
[0024]保持グラフテクスチャー情報１０６は、時間テクスチャー情報２１２、アニメーションテクスチャー情報２１４、および変形テクスチャー情報２１６を含み、すべてが完全にＧＰＵ２０２上で評価される。アニメーションテクスチャー情報２１４および（以下に記載する）進行状況テクスチャー情報を評価するために、１つまたは複数のピクセルシェーダー２１８のうちの１つを使用することができる。つまり、ピクセルシェーダーが変形の階層を評価し、頂点シェーダーはその結果生じる変形をパス頂点データに適用する。このシステム２００は、パスをラスタライズするためのシェーダー２２６をさらに備える。１つまたは複数の頂点シェーダー２２０は、変形階層およびパス頂点データをさらに評価する。これについては以下に説明する。
【００１９】
[0025]図３は、ＧＰＵ内でシーン構成およびアニメーションを用意するためのフロー／ブロック図３００を示す。丸みを帯びたブロックは、テクスチャーメモリー内に記憶される対応するテクスチャーデータを表す。角のあるブロックは、ＧＰＵ上で使用可能な利用できる（例えばピクセル、頂点、幾何学的）シェーダーを表す。
【００２０】
[0026]この図３００は、タイミングテクスチャー情報２１２として記憶されるタイミング情報で開始する。このタイミング情報は、タイミングテクスチャー情報２１２に変換されたタイミングツリーとして表し、１つまたは複数のピクセルシェーダー３０２に入力することができる。この（図２の１つまたは複数のピクセルシェーダー２１８と同様の）１つまたは複数のピクセルシェーダー３０２の出力は、進行状況テクスチャー情報３０４として記憶される進行状況情報を含む。次いで、この進行状況テクスチャー情報３０４は、アニメーションテクスチャー情報２１４として記憶されるアニメーション情報とともに１つまたは複数のピクセルシェーダー３０６に渡される。
【００２１】
[0027]入力されるアニメーション情報は、例えば時間５に開始し、５秒間継続することを示すタイミング情報（例えば親情報）を伴う、要素のグラフとすることができる。この親タイミング情報に基づく子タイミング記述は、親を基準にして時間０に開始し、１秒間継続し、その後継続的に繰り返すものとすることができる。タイミングまたは変形がツリーの事例では、一般的な場合複数のパスが実行される。シェーダーは、単一のパスにおいて一定の深さしか評価できない。最も一般的な事例では、ｋレベルごとに１つのシェーダーパスがあることができ、ただしｋは定数である。
【００２２】
[0028]この時間記述の出力は、所与の時点における進行状況に基づく増分出力とすることができる。例えば、アニメーションが５秒で開始し、１秒間継続する場合、５．５秒における出力は０．５であり、これは進行状況がアニメーションの途中の中間点にあることを示す。
【００２３】
[0029]１つまたは複数のピクセルシェーダー３０２への入力としてのタイミングツリーは、本質的にはアニメーションプロセスに沿って時間と進行状況とをマップする。タイミングテクスチャー情報２１２は、進行状況を判断するためにタイミングツリーを評価することに関する。進行状況が評価されると、進行状況テクスチャー情報３０４をどうするのか示すアニメーション記述がある。例えば、赤から青へとアニメートするように示し、進行状況が０．５（中間点）の場合、中間色の紫を現在のプロパティ値として出力することができるカラーアニメーションがあり得る。他の例は、０から１のアニメーション不透明度に関係する値を含む。０．５の進行状況は、半分の不透明度にマップする。別のアニメーションはポイントアニメーションであり、このポイントアニメーションでは、オブジェクトが（０，０）から（１００，１００）の座標によって定義されるパスに沿って移動するとき、そのオブジェクトの位置上でアニメーションが実行され、０．５の進行状況は、座標（５０，５０）への位置移動に関係する。より細密な例にはスプラインキーフレーム記述が含まれ、スプラインキーフレーム記述では、スプライン評価は、進行状況と位置とをどのようにマップするのか等を決定するためにスプラインを評価することを含む。スプラインは、様々なアニメーションパターン用の組（ｔｕｐｌｅ）や色など、単純値のために使用することもできる。
【００２４】
[0030]この（図２の１つまたは複数のピクセルシェーダー２１８と同様の）１つまたは複数のピクセルシェーダー３０６を使用したアニメーション評価の次の段階は、（アニメーションに関連する進行状況を明示する）進行状況結果を取得すること、アニメーションの機能（色補間、ポイント補間、二重補間等のいずれか）についての記述を受け取ること、および進行状況に基づいて補間を実行することが含まれる。つまり、この１つまたは複数のアニメーション評価ピクセルシェーダー３０６は、進行状況値および補間記述を（アニメーションテクスチャー情報として）取得し、計算された値へと補間する。図示のように、各ステップは入力テクスチャー情報を取得し、後続の段階のためのテクスチャー情報を出力する。
【００２５】
[0031]このアニメーション評価段階（１つまたは複数のピクセルシェーダー３０６）の出力は、（図２の１つまたは複数の頂点シェーダー２２０と同様の）１つまたは複数の頂点シェーダー３１０を使用する次の段階である変形構成のための、計算された変形情報、不透明度情報、色情報、位置情報３０８等を含む、ＧＰＵによって生成されるビデオメモリー（例えば、図２のメモリーサブシステム２０４の一部またはすべて）内のテクスチャーである。したがって、タイミングテクスチャー情報２１２は、１つまたは複数のピクセルシェーダー３０２を使用して進行状況テクスチャー情報３０４を生成し、次いで１つまたは複数のピクセルシェーダー３０６のサンプルテクスチャーを使用してアニメーション変形、不透明度、および色テクスチャー３０８を生成する。ここまでは、これはすべてピクセルシェーダーを使用して実行されている。次の段階は、これをプリミティブに適用する。１つまたは複数の頂点シェーダー３１０は、テクスチャー情報としての変形階層評価結果３１２およびテクスチャー情報としてのパス頂点データ３１４も、入力として受け取る。
【００２６】
[0032]１つまたは複数の頂点シェーダー３１０の出力は、変形済み頂点データ３１６である。この１つまたは複数の頂点シェーダー３１０は、前の段階からの計算されたアニメーションデータおよびシーングラフデータを適用するために使用される。色の変化がある場合、１つもしくは複数の頂点シェーダー３１０は頂点色データの色を変更し、または１つもしくは複数の頂点シェーダー３１０は、不透明度と頂点毎データの色とを掛けることにより不透明度を変える。あるいは、１つまたは複数の頂点シェーダー３１０は、頂点毎データの位置成分（ｐｏｓｉｔｉｏｎ  ｃｏｍｐｏｎｅｎｔ）と前の段階の結果から受け取る入力とを掛けることにより位置を変える。変形済み頂点データ３１６が得られると、１つまたは複数のピクセルシェーダー３１８を使用してパスのラスタライズが行われ、（図２のパスのラスタライズ２２６と同様の）最終的なシーンラスタライズ３２０を出力する。
【００２７】
[0033]以下は、開示するアーキテクチャーの新規性のある態様を実施するための、例示的方法体系を表す一連のフローチャートである。説明を単純にするために、例えばフローチャートやフロー図の形で本明細書に示す１つまたは複数の方法体系は、一連の行為として示し説明するが、これらの方法体系は行為の順序によって制限されず、一部の行為はこの方法体系に従い異なる順序でおよび／または本明細書に示し説明する他の行為と同時に行えることを理解し、認識すべきである。例えば、当業者なら、方法体系を一連の互いに関係する状態またはイベントとして状態図などで代わりに表せることを理解し、認識されよう。さらに、方法体系の中で図示するすべての行為が、新規性のある実装形態に必要とされ得るとは限らない。
【００２８】
[0034]図４は、グラフィックスを処理する方法を示す。４００で、保持グラフ情報が、保持グラフテクスチャー情報に変換される。４０２で、ピクセルシェーダーおよび頂点シェーダーを使用して、ＧＰＵ上でその保持グラフテクスチャー情報が評価される。
【００２９】
[0035]この方法は、アニメーション情報および階層的シーングラフ情報を保持グラフテクスチャー情報の一部として記憶し、ピクセルシェーダーを使用して進行状況テクスチャー情報およびアニメーションテクスチャー情報を処理することをさらに含むことができる。
【００３０】
[0036]この方法は、ピクセルシェーダーを使用してパスのラスタライズを行い、変形階層、パス頂点データ、ならびに計算されたアニメーション変形、位置、不透明度、および色テクスチャー情報を評価することをさらに含むことができる。この方法は、ピクセルシェーダーを使用してタイミングテクスチャー情報を処理し、進行状況テクスチャー情報を出力することをさらに含むことができる。この方法は、タイミングノード情報を第１のテクスチャーに、アニメーションノード情報を第２のテクスチャーに、シーングラフ変形の記述を第３のテクスチャーに記憶し、そのタイミングノード情報、アニメーションノード情報、およびシーングラフ変形の記述を処理して最終的なシーンラスタライズを実行することをさらに含むことができる。
【００３１】
[0037]図５は、ＧＰＵ上でシーン構成およびアニメーションを処理する方法を示す。５００で、タイミングノードの記述がテクスチャーＴに記憶される。５０２で、アニメーションノードの記述がテクスチャーＡに記憶される。５０４で、シーングラフ変形の記述がテクスチャーＸに記憶される。階層を表すために、このテクスチャーは、親要素へのテクスチャーユニットを含む親ポイントを有することができる。５０６で、テセレーションなどの表現を使用して図形を表す頂点データが頂点バッファーに記憶される。表現は、ＧＰＵ上で完全に変形できる限り、任意の表現を使用することができる。５０８で、フレームごとに追加の処理が実行される。
【００３２】
[0038]図６は、図５の方法における各フレームについての追加の処理方法を示す。以下のステップは、フレームごとに実行される。６００で、頂点シェーダー定数が現在の時間に等しく設定される。６０２で、テクスチャーＴからタイミングノード情報をプルするタイミングノードピクセルシェーダーを用いて描画が実行される。６０４で、タイミング進行状況が計算される。６０６で、出力は新たなレンダーターゲットテクスチャーについてである。６０８で、前に計算された情報を次のレベルの親入力として使用し、ステップ６０２、６０４、および６０６がタイミングツリーの各レベルで繰り返される。６１０で、テクスチャーＴからタイミング情報をプルし、テクスチャーＡからアニメーション記述をプルするアニメーションノードピクセルシェーダーを用いて描画を実行し、変形、色、位置、および不透明度の値を出力する。６１２で、階層的変形に関し、変形階層のレベルごとにステップ６１０が繰り返される。６１４で、計算された変形、不透明度、位置、および色の値をアニメーション結果レンダーターゲットテクスチャーからプルする頂点シェーダーを用いて描画されるすべてのプリミティブを含む、頂点バッファーが描画される。
【００３３】
[0039]本出願で使用するとき、用語「コンポーネント」および「システム」は、コンピューター関連エンティティーである、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアを指すことを意図する。例えばコンポーネントは、これだけに限定されないが、プロセッサー上で実行されるプロセス、プロセッサー、ハードディスクドライブ、（光記憶域媒体および／または磁気記憶域媒体の）複数の記憶域ドライブ、オブジェクト、実行ファイル、実行スレッド、プログラム、および／またはコンピューターとすることができる。例として、サーバー上で実行されるアプリケーションとそのサーバーとはどちらもコンポーネントであり得る。あるプロセスおよび／または実行スレッド内には１つもしくは複数のコンポーネントがあってよく、コンポーネントは１台のコンピューター上に局在化しかつ／または２台以上のコンピューター間に分散させることができる。用語「例示的（ｅｘｅｍｐｌａｒｙ）」は、例（ｅｘａｍｐｌｅ）、実例（ｉｎｓｔａｎｃｅ）、または例証（ｉｌｌｕｓｔｒａｔｉｏｎ）であることを意味するために本明細書で使用することができる。「例示的」として本明細書に記載するいかなる態様または設計も、必ずしも他の態様または設計以上に好ましいもしくは有利であると解釈すべきでない。
【００３４】
[0040]次に図７を参照すると、開示するアーキテクチャーに従い、ＧＰＵ内で保持グラフ情報を実行するように機能するコンピューティングシステム７００のブロック図が示されている。その様々な態様に関する追加の状況を提供するために、図７および以下の議論は、様々な態様を実装できる適切なコンピューティングシステム７００についての簡潔で全体的な記述を提供することを意図する。上記の記述は、１台または複数台のコンピューター上で実行することができるコンピューター実行可能命令に全体的に関連するが、当業者は、新規性のある実施形態を他のプログラムモジュールと組み合わせてかつ／またはハードウェアとソフトウェアとの組合せとしても実施できることを理解されよう。
【００３５】
[0041]概してプログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造等を含む。さらに、本発明の方法は、それぞれが１つまたは複数の関連デバイスに動作可能に結合され得る、単一プロセッサーまたはマルチプロセッサーコンピューターシステム、ミニコンピューター、メインフレームコンピューター、ならびにパーソナルコンピューター、ハンドヘルドコンピューティングデバイス、マイクロプロセッサーベースの一般電化製品やプログラム可能な一般電化製品等を含む、他のコンピューターシステム構成を用いて実施できることを当業者なら理解されよう。
【００３６】
[0042]例証した諸態様は、通信ネットワークを介してリンクされるリモート処理デバイスにより特定のタスクが実行される、分散コンピューティング環境内でも実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリー記憶域デバイスおよびリモートメモリー記憶域デバイスのどちらに位置することもできる。
【００３７】
[0043]コンピューターは、典型的には様々なコンピューター可読媒体を含む。コンピューター可読媒体は、コンピューターによってアクセス可能な任意の使用可能な媒体とすることができ、揮発性媒体および不揮発性媒体、リムーバブル媒体および固定媒体が含まれる。限定ではなく例として、コンピューター可読媒体は、コンピューター記憶域媒体と通信媒体とを含むことができる。コンピューター記憶域媒体には、コンピューター可読命令、データ構造、プログラムモジュールや他のデータなどの情報を記憶するための任意の方法または技術で実施される、揮発性媒体および不揮発性媒体、リムーバブル媒体および固定媒体が含まれる。コンピューター記憶域媒体には、これだけに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリーや他のメモリー技術、ＣＤ−ＲＯＭ、デジタルビデオディスク（ＤＶＤ）や他の光ディスク記憶域、磁気カセット、磁気テープ、磁気ディスク記憶域や他の磁気記憶域デバイス、または所望の情報を記憶するために使用することができ、コンピューターによってアクセス可能な他の任意の媒体が含まれる。
【００３８】
[0044]再び図７を参照すると、様々な態様を実装するための例示的コンピューティングシステム７００は、処理ユニット７０４、システムメモリー７０６、およびシステムバス７０８を有するコンピューター７０２を含む。システムバス７０８は、処理ユニット７０４へのシステムメモリー７０６を含むがこれだけに限定されない、システムコンポーネントのためのインターフェイスを提供する。処理ユニット７０４は、市販の様々なプロセッサーのいずれでもよい。処理ユニット７０４として、デュアルマイクロプロセッサーおよび他のマルチプロセッサーアーキテクチャーも使用することができる。
【００３９】
[0045]システムバス７０８は、市販の様々なバスアーキテクチャーのいずれかを使用して（メモリーコントローラーを備えるまたは備えない）メモリーバス、周辺機器バス、およびローカルバスにさらに相互接続できる、数種類のバス構造のうちのいずれでもよい。システムメモリー７０６は、不揮発性メモリー（不揮発性）７１０および／または揮発性メモリー７１２（例えばランダムアクセスメモリー（ＲＡＭ））を含むことができる。不揮発性メモリー７１０（例えばＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等）には、基本入出力システム（ＢＩＯＳ）を記憶することができ、ＢＩＯＳとは、起動中などにコンピューター７０２内の要素間で情報を転送することを助ける基本ルーチンである。揮発性メモリー７１２は、データをキャッシュするための静的ＲＡＭなど、高速ＲＡＭも含むことができる。
【００４０】
[0046]コンピューター７０２は、内蔵ハードディスクドライブ（ＨＤＤ）７１４（例えばＥＩＤＥ、ＳＡＴＡ）をさらに含み、この内蔵ＨＤＤ７１４は、適切なシャーシ、（例えばリムーバブルディスケット７１８との間で読み書きするための）磁気フロッピーディスクドライブ（ＦＤＤ）７１６、および（例えばＣＤ−ＲＯＭディスク７２２を読み取り、またはＤＶＤなどの他の大容量光媒体との間で読み書きするための）光ディスクドライブ７２０において外部使用するために構成することもできる。ＨＤＤ７１４、ＦＤＤ７１６、および光ディスクドライブ７２０は、ＨＤＤインターフェイス７２４、ＦＤＤインターフェイス７２６、および光ドライブインターフェイス７２８それぞれにより、システムバス７０８に接続することができる。外付けドライブの実装形態のためのＨＤＤインターフェイス７２４は、ユニバーサルシリアルバス（ＵＳＢ）およびＩＥＥＥ１３９４インターフェイス技術のうちの少なくとも一方または両方を含むことができる。
【００４１】
[0047]これらのドライブおよび関連するコンピューター可読媒体は、データ、データ構造、コンピューター実行可能命令等の不揮発性記憶域を提供する。コンピューター７０２では、これらのドライブおよび媒体は、任意のデータを適切なデジタル形式で記憶することに対応する。上記のコンピューター可読媒体についての記載はＨＤＤ、リムーバブル磁気ディスケット（例えばＦＤＤ）、およびＣＤやＤＶＤなどのリムーバブル光媒体を参照するが、Ｚｉｐドライブ、磁気カセット、フラッシュメモリーカード、カートリッジなど、コンピューターによって読み取ることができる他の種類の媒体も例示的動作環境において使用でき、さらに、そのような任意の媒体は、開示するアーキテクチャーの新規性のある方法を実行するためのコンピューター実行可能命令を含むことができることを当業者は理解すべきである。
【００４２】
[0048]これらのドライブおよび揮発性メモリー７１２には、オペレーティングシステム７３０、１つまたは複数のアプリケーションプログラム７３２、他のプログラムモジュール７３４、およびプログラムデータ７３６を含む、いくつかのプログラムモジュールを記憶することができる。このオペレーティングシステム、アプリケーション、モジュール、および／またはデータのすべてもしくは一部を、揮発性メモリー７１２にキャッシュすることもできる。開示するアーキテクチャーは、市販の様々なオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施できることを理解すべきである。
【００４３】
[0049]ユーザーは、１つまたは複数の有線／無線入力デバイス、例えばキーボード７３８やマウス７４０などのポインティングデバイスにより、コンピューター７０２にコマンドおよび情報を入力することができる。他の入力デバイス（不図示）には、マイクロフォン、ＩＲリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン等が含まれ得る。これらのおよび他の入力デバイスは、多くの場合、システムバス７０８に結合される入力デバイスインターフェイス７４２を介して処理ユニット７０４に接続されるが、パラレルポート、ＩＥＥＥ１３９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェイスなどの他のインターフェイスによって接続することもできる。
【００４４】
[0050]システムバス７０８には、ビデオアダプター７４６などのインターフェイスを介し、モニター７４４または他の種類のディスプレイデバイスも接続される。
[0051]このビデオアダプター７４６は、システム１００、システム２００、フロー／ブロック図３００に関して記載した能力および機能、ならびに図４〜図６に記載した方法を含むことができる。あるいは、またはそれと組み合わせて、コンピューター７０２はメインボード（マザーボードとも呼ばれる）を含み、このメインボード上にはグラフィックス処理機能が製作され、その場合、システム１００、システム２００、フロー／ブロック図３００に関して記載した能力および機能、ならびに図４〜図６に記載した方法を含むことができる。
【００４５】
[0052]モニター７４４に加え、コンピューターは、典型的にはスピーカー、プリンターなどの他の周辺出力デバイス（不図示）を含む。
[0053]コンピューター７０２は、１台または複数台のリモートコンピューター７４８など、１台または複数台のリモートコンピューターへの有線通信および／または無線通信による論理接続を使用し、ネットワーク化された環境内で動作することができる。この１台または複数台のリモートコンピューター７４８は、ワークステーション、サーバーコンピューター、ルーター、パーソナルコンピューター、ポータブルコンピューター、マイクロプロセッサーベースの娯楽機器、ピアデバイスや他の共通ネットワークノードとすることができ、典型的にはコンピューター７０２に関連して記載した要素の多くまたはすべてを含むが、簡潔にするために、メモリー／記憶域デバイス７５０のみを図示する。図示する論理接続には、ローカルエリアネットワーク（ＬＡＮ）７５２および／またはより大きいネットワーク、例えばワイドエリアネットワーク（ＷＡＮ）７５４への有線／無線接続が含まれる。こうしたＬＡＮおよびＷＡＮネットワーキング環境はオフィスや会社にありふれており、イントラネットなどの企業規模のコンピューターネットワークを助け、それら企業規模のコンピューターネットワークのすべてはグローバル通信ネットワーク、例えばインターネットに接続することができる。
【００４６】
[0054]ＬＡＮネットワーキング環境内で使用されるとき、コンピューター７０２は、有線および／または無線通信ネットワークインターフェイスもしくはアダプター７５６を介してＬＡＮ７５２に接続される。アダプター７５６は、アダプター７５６の無線機能と通信するために配置される無線アクセスポイントを含むこともできる、ＬＡＮ７５２への有線通信および／または無線通信を助けることができる。
【００４７】
[0055]ＷＡＮネットワーキング環境内で使用されるとき、コンピューター７０２は、モデム７５８を含むことができ、またはＷＡＮ７５４上の通信サーバーに接続され、またはインターネットを経由してなど、ＷＡＮ７５４を介して通信を確立するための他の手段を有する。内蔵または外付け、ならびに有線デバイスおよび／または無線デバイスとすることができるモデム７５８は、入力デバイスインターフェイス７４２を介してシステムバス７０８に接続される。ネットワーク化された環境では、コンピューター７０２またはその一部に関連して図示するプログラムモジュールを、リモートメモリー／記憶域デバイス７５０に記憶することができる。図示するネットワーク接続は例示的であり、コンピューター間で通信リンクを確立する他の手段を使用できることが理解されよう。
【００４８】
[0056]コンピューター７０２は、例えばプリンター、スキャナー、デスクトップコンピューターおよび／またはポータブルコンピューター、携帯情報端末（ＰＤＡ）、通信衛星、無線で検出可能なタグに関連する任意の機器の一部分もしくは場所（例えばキオスク、新聞売店、トイレ）、ならびに電話との無線通信（例えばＩＥＥＥ８０２．１１無線変調技法）内に動作可能に配置される無線デバイスなど、ＩＥＥＥ８０２ファミリーの標準を使用する有線および無線デバイスまたはエンティティーと通信するよう動作可能である。これは少なくとも、Ｗｉ−Ｆｉ（すなわちワイヤレスフィディリティー）、ＷｉＭａｘ、およびＢｌｕｅｔｏｏｔｈ（商標）無線技術を含む。したがってこの通信は、従来型ネットワークと同様に定義済み構造とし、または単純に少なくとも２つのデバイス間のアドホック通信とすることができる。Ｗｉ−Ｆｉネットワークは、ＩＥＥＥ８０２．１１ｘ（ａ、ｂ、ｇ等）と呼ばれる無線技術を使用して、安全で信頼でき、高速の無線接続を提供する。Ｗｉ−Ｆｉネットワークは、コンピューターを互いに、インターネットに、および（ＩＥＥＥ８０２．３関連の媒体および機能を使用する）有線ネットワークに接続するために使用することができる。
【００４９】
[0057]上述した内容は開示したアーキテクチャーの例を含む。コンポーネントおよび／または方法体系のあらゆる考え得る組合せを記載することは当然不可能だが、多くのさらなる組合せおよび置換が可能であることを当業者なら認識できよう。したがって、この新規性のあるアーキテクチャーは、添付の特許請求の範囲に記載の趣旨および範囲内にあるそのようなすべての代替形態、修正形態、および改変形態を包含するように意図される。さらに、用語「含む（ｉｎｃｌｕｄｅ）」が発明を実施するための形態または特許請求の範囲で使用される限りにおいて、この用語は、請求項で移行語として使用される場合に「含む（ｃｏｍｐｒｉｓｉｎｇ）」が解釈されるように、用語「含む（ｃｏｍｐｒｉｓｉｎｇ）」と同様にして包括的であるように意図される。
【図１】
0005384636.tif 000002
【図２】
0005384636.tif 000003
【図３】
0005384636.tif 000004
【図４】
0005384636.tif 000005
【図５】
0005384636.tif 000006
【図６】
0005384636.tif 000007
【図７】
0005384636.tif 000008