JP2004054891A - グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法 - Google Patents
グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2004054891A JP2004054891A JP2003108482A JP2003108482A JP2004054891A JP 2004054891 A JP2004054891 A JP 2004054891A JP 2003108482 A JP2003108482 A JP 2003108482A JP 2003108482 A JP2003108482 A JP 2003108482A JP 2004054891 A JP2004054891 A JP 2004054891A
- Authority
- JP
- Japan
- Prior art keywords
- data
- intermediate memory
- component
- memory target
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Processing (AREA)
- Digital Computer Display Output (AREA)
Abstract
【解決手段】コンピュータグラフィックスに関連して中間ターゲット(複数)、すなわち、他の目的用のプログラム間でのデータの共用も可能にし、自動的にアクセス可能な中間メモリバッファ(複数)がビデオメモリ内に提供されて使用される。バッファのサイズすなわち中間ターゲットに格納されるデータ量は、グラフィックスデータに関して変化する解像度用に可変的に設定可能である。単一のプログラムは、このバッファ内に後で使用可能で、同じプログラムの拡張部および/または他のプログラムによって、所望される場合何度でも再使用される中間データを生成し、現在のグラフィックスチップの速度を維持しながら、シェーディングプログラムについてかなりのフレキシビリティと複雑さを可能にする。
【選択図】 図4
Description
【発明の属する技術分野】
本発明は、コンピュータ・グラフィックスに関して中間メモリ・ターゲットを提供するためのシステムおよび方法に関する。より詳細には、本発明は、ピクセル・シェーダ(shader)および頂点シェーダなどの手続き型シェーダに関して使用する中間メモリ・ターゲットを提供するためのシステムおよび方法に関する。
【0002】
【従来の技術】
本特許文書の開示の一部には、著作権保護の対象となる材料が含まれる可能性がある。著作権所有者は、特許文書または特許開示がPatent and Trademark Officeの特許ファイルまたは記録に掲載されている場合は、これをいかなる人がファクシミリ複写しようとも異議を唱えるものではないが、それ以外の場合にはすべての著作権を留保する。通知Copyright(C)2002,Microsoft Corp.を本文書に適用するものとする。
【0003】
3次元(3−D)グラフィックスのレンダリングおよび表示は、一般に多くの計算およびコンピュータ処理を必然的に含む。たとえば、3−Dオブジェクトをレンダリングするために、レンダリングされるオブジェクトを定義する複数の座標ポイントすなわち複数の頂点(vertices)のセットが形成される。レンダリングされるべき、および表示されるべきオブジェクトの面を定義する多角形(polygons)を形成するように、複数の頂点を線で結ぶことができる。オブジェクトを定義する複数の頂点が形成されると、その複数の頂点をオブジェクトまたは参照のモデル・フレームから参照のワールド・フレーム(world frame)に変換し、最終的にはモニタなどの平坦なディスプレイ・デバイス上に表示可能な2−D座標に変換することができる。この方法を使用して、各頂点は、回転、スケーリング、または表示可能領域に入らないための消去およびクリッピング、さまざまなライティング・スキームおよびソースによるライティング、カラー化(colorized)、その他の方法による変換、シェーディングなどの処理が実行されることがある。3−Dオブジェクトのレンダリングおよび表示に必要なこのプロセスは、コンピュータ処理的に集中する傾向があり、多数の頂点を必然的に含む可能性がある。
【0004】
図1に示されるように、通常、複雑な3−Dオブジェクトまたはその一部は、3−Dオブジェクトの近似幾何形状を表す隣接する三角形(「メッシュ」)の集まりによって、または2次元(2−D)の表面空間での幾何形状マップまたは表面によって、表すことができる。メッシュは、三角形の頂点の位置を介して指定することができる。1つまたは複数のテクスチャー・マップをその表面にマッピングすることができ、テクスチャー・マッピング・プロセスに従ってテクスチャー化された表面を作成することができる。この点に関して、表面全体にわたってテクスチャー化される信号(signals)は、非常に一般的なものとすることができ、最終カラーおよび/またはポイント・サンプルに関連付けられた他の値を生成する、シェーダ手続きなどの、変換メカニズムに入力可能ないかなる種類の中間結果をも指定することができる。
【0005】
テクスチャー・サンプリングの後、ディスプレイ・デバイスの画素(ピクセル)を使用してレンダリングする前に、または表示以外の何らかの目的でどこかにデータを出力する前に、シェーディングのアルゴリズムおよび技法などのさらなる変換を、テクスチャー化された表面に任意選択で適用することができる。コンピュータ・グラフィックスにおけるイメージは、典型的には離散値の2−Dアレイ(グレイ・スケール)、または離散値の3つの2−Dアレイ(カラー)として表される。標準(x,y,z)の直交座標系を使用して、表面を、メッシュの頂点ごとに(x,y,z)座標を備えたメッシュ(たとえば三角形メッシュ)として指定するか、または、時に表面パラメータ化ドメインと呼ばれることのある2D(u,v)座標系を介して、(x,y,z)座標が直線イメージ(rectilinear image)として指定される幾何形状マップとして指定する、ことができる。テクスチャー・マップも(u,v)座標系を使用して指定することができる。
【0006】
信号(signals)が表面に貼り付けられている表面パラメータ化ドメインでのポイント・サンプルは、その幾何形状を含み、テクスチャー化されたメッシュまたは幾何形状マップから生成することができる。これらのサンプルは、様々なコンピュータ処理を使用して変換し、およびシェーディングすることができる。この変換およびシェーディング処理が終わると、ポイント・サンプルは(a)位置情報、すなわちイメージ平面内のどこにポイントがマッピングされるかを示すイメージ・アドレスと、(b)位置情報によって示された位置にあるサンプルのカラーを示すテクスチャー・カラーまたはグレイ・スケール情報とを含む。隠れ面消去を可能にするポイント・サンプルの深さ情報、重み、またはポイント・サンプルに関する任意の他の有用な情報などの他の情報も、含むことができる。変換およびテクスチャー化された表面は、2−Dピクセル・イメージ空間(x,y)での表示によってレンダリングされる前に、フレーム・バッファに配置される。この時点で、白黒のディスプレイ・デバイスの場合、フレーム・バッファ内にある表面の何らかの関数に従って、2−Dイメージ空間における各(x,y)ピクセル位置にグレイ値が割り当てられる。典型的なカラー・ディスプレイ・デバイスの場合、2−Dイメージ空間における各(x,y)ピクセル位置には、赤、緑、および青(RGB)の値が割り当てられる。RGB以外の様々なカラー・フォーマットも存在することに留意されたい。開始から終了まで様々なバリエーションはあるが、グラフィックスの大量の頂点およびピクセル・データを高速処理するための上記の手段が、グラフィックス・パイプラインとして知られるものである。
【0007】
コンピュータ・グラフィックス業界およびグラフィックス・パイプラインは、ここ数年間、特に爆発的な成長を見せている。たとえば、現行世代のコンピュータ・ゲームは、よりリアルな様式の3次元(3−D)グラフィックスに、増加傾向を示しながら、移行しつつある。同時に、再生スピード(speed of play)もますます高速化していく。この組み合せが、比較的安価なシステムで3−Dグラフィックスを高速でレンダリングするという真の要求に拍車を掛けている。
【0008】
早くも1970年代には、3−Dレンダリング・システムはパラメータに従ってオブジェクトの「外観(appearance)」を記述することができた。これらの方法およびその後の方法は、表面の位置および向きに基づいたオブジェクトの知覚カラー(perceived color)およびそれを照らす光源をパラメータ化することを提供する。そのように実行すると、オブジェクトの外観がそれらから算出される。さらにパラメータは、オブジェクトの材料の拡散カラー(diffuse color)、鏡面反射係数(specular reflection coefficient)、鏡面カラー(specular color)、反射率(reflectivity)、および透過性などの値を含む。こうしたパラメータは、まとめて、オブジェクトのシェーディング・パラメータと呼ばれている。
【0009】
初期のシステムは、シェーディング・パラメータに単一の値があるのみとしたため、これにより、シェーディング・パラメータは、オブジェクトの表面全体にわたって一定かつ均一のままであった。その後のシステムでは、オブジェクトの様々な部分で異なる値を有することのできる、非均一パラメータ(インスタンスに関する透過性)を使用することができるようになった。オブジェクト表面の様々な部分でこれらの非均一パラメータによって得られる値を記述するために、手続き型(procedural)シェーディングおよびテクスチャー・マッピングという2つの卓越した独特の技法が使用されてきた。テクスチャー・マッピングはピクセル・ベースであり、解像度に依存する。
【0010】
手続き型シェーディングとは、1−D、2−D、または3−D空間のいずれかのポイントで、この空間での関数(手続き型シェーダと呼ばれることが多い)をシェーディング・パラメータ空間に定義することにより、材料の外観を記述するものである。オブジェクトはオリジナルの1−D、2−D、または3−D空間に「浸され(immersed)」、オブジェクト表面の所与のポイントのシェーディング・パラメータ値は、このポイントの手続き型シェーディング関数の結果として定義される。たとえば、木、大理石、または他の天然材料の外観を模造する手続き型シェーダが開発されており、文献上では見つけることができる。
【0011】
コンピュータ・システムにおけるグラフィックス・データのレンダリングは、リソースの集中プロセスの集合である。グラフィックス・データ構造に関連付けられたカラーなどのあるプリミティブに関する値を決定するために使用されるシェーディング・プロセス、すなわち専門化されたグラフィックス・データ構造(specialized graphics data structure)のセットに基づいて複雑なアルゴリズムを実行するプロセスは、こうしたコンピュータ処理の集中する複雑なプロセスの典型的な例である。一般に、シェーディング・プロセスはある程度正規化されてきている。シェーダで動作するように設計されたソース・コードをアプリケーションに渡すことによって、シェーダは、複雑なビデオ・グラフィックスの効率的な描画を容易にするために、アプリケーションが作成し/使用することが可能なオブジェクトとなる。こうしたシェーダの例が、頂点シェーダおよびピクセル・シェーダである。
【0012】
専用のハードウェア・チップで現在のように実装される以前に、頂点シェーダおよびピクセル・シェーダは、時として全体的にまたは大部分がソフトウェア・コードとして実装され、時として、ハードウェアとそのハードウェアを制御するためのソフトウェアとのより固定した組み合せとして実装されることがあった。しばしばこれらの実装には、CPU、またはシステムのCPUを使用するエミュレートされた存在が含まれた。たとえばハードウェアでの実装では、シェーディング・タスクに必要な処理機能を実行するために、CPUチップがその設計に直接組み込まれた。標準的な処理チップが提供する機能の範囲により、CPUはシェーディング・プロセスに多くのフレキシビリティを加えるが、CPUを組み込むことで、専門化されたシェーディング・プロセスにはオーバヘッドも加えられる。ただし、今日のような最先端のハードウェアは無いので、選択の余地はほとんど皆無であった。
【0013】
今日では、ハードウェア技術の進歩により、以前実装されたソフトウェアの機能を専門化されたハードウェアに移入する機能が容易になった。その結果、今日のピクセル・シェーダおよび頂点シェーダは、専門化されたプログラム可能なハードウェア・チップとして実装される。今日の頂点およびピクセル・シェーダ・チップのハードウェア設計は高度に専門化されているため、過去のCPUハードウェア実装のようには動作しない。
【0014】
専門化用途3−DグラフィックスAPIが開発され、今日の頂点およびピクセル・シェーダの専門化機能(specialized functionality)を公表している。この点に関して、開発者は、専門化された挙動を実行するように頂点シェーダを効果的にプログラミングする命令を、頂点シェーダにダウンロードすることができる。たとえばAPIは、頂点シェーダにおけるレジスタ数の増加数に関連付けられた機能、たとえば、レジスタ・レベルでの浮動小数点数に関して専門化された頂点シェーディング機能を公表している。さらに、超高速頂点シェーダに浮動小数点数の小数部分のみを戻させる命令セットを実装することもできる。頂点シェーダの命令カウント制限を越えないと仮定すれば、これらの命令をダウンロードすることにより、様々な機能が達成可能である。
【0015】
同様にピクセル・シェーダに関して、専門化されたピクセル・シェーディング機能は、命令をピクセル・シェーダにダウンロードすることによって達成可能である。たとえば、ピクセル・シェーダ内で線形補間メカニズムを提供する機能が公表されている。さらに、ピクセル・シェーダに合わせて調整された命令セットに関連して、多くの異なるオペレーション修飾子の機能が開発者に公表されている。たとえば、ネゲート(negate)、再マッピング、バイアシング(biasing)、および他の機能は、効率的なピクセル・シェーディングが望ましい多くのグラフィックス・アプリケーションにとって非常に有用であり、しかもそれらはその命令の修飾子として最もよく表される単一の命令の一部として実行される。手短に言えば、上記の機能は、多くのグラフィックス・オペレーションにとって有利であり、それらの機能をすでに専門化されたピクセルおよび頂点シェーダの命令セットに組み込むことは、開発の容易さおよび性能の向上という点からの大きい価値を付加する。したがって、ピクセル・シェーダの命令カウント制限を越えないと仮定すれば、これらの命令をダウンロードすることにより、様々な機能が達成可能である。
【0016】
米国特許出願第09/801079号は、ローカル・レジスタを有する頂点シェーダおよびピクセル・シェーダのハードウェア実装と通信するこうした例示的な3次元(3−D)APIを提供するものである。頂点シェーダに関して、この中では、オンチップ・レジスタ・インデックスの実行が可能なAPI通信について記載されており、API通信は、入力の小数部分を出力する、レジスタ・レベルでオンチップで実装される専門化機能用にも、提供される。ピクセル・シェーダに関して、API通信は、線形補間機能を実行するレジスタ・レベルでのオンチップで実装される専門化機能用に提供され、さらにAPI通信は、ネゲート、補完、再マッピング、バイアシング、スケーリング、およびサチュレーティング(saturating)を含む修飾機能を実行する、レジスタ・レベルでオンチップで実装される、専門化修飾子用にも、提供される。そのAPI通信は、頂点シェーダおよびピクセル・シェーダ・チップのオペレーションの詳細については開発者に隠しているが、非常に有用なオンチップのグラフィカル・アルゴリズム要素については開発者に公表しているので有利である。
【0017】
米国特許出願第09/796577号は、3−D APIについても記載しており、この3−D APIは、概念上はソフトウェア・インターフェースの下または内部にあるメカニズムで、開発者が手続き型シェーダおよびGPUに命令をダウンロードできるようにするメカニズムを介して、手続き型シェーダと共に使用するための独特のアルゴリズム要素を開発者に公表している。たとえば、こうした3−D APIは、改善された性能特性向けの3−Dチップに、複数のオペレーションをダウンロード可能にしている。これらの3−D APIは、ホスト処理装置の処理からカスタム・グラフィックス・コードを除去し、こうしたプログラム可能およびダウンロード可能な機能をグラフィックス・チップに配置するために、フレキシブルなオンチップ処理および制限されたオンチップ・メモリを含めることによって、こうしたプログラム可能な機能の処理を開始する最先端の3−Dグラフィックス・チップの有利性を利用する。こうしたAPIは、開発者によって作成されたプログラミング要素またはアルゴリズム要素をチップにダウンロードできるようにし、それによって、改善された性能レベルでそれらのアルゴリズムを実行するようにチップをプログラミングするようにする。これに関して、開発者が3−Dチップにダウンロード可能なルーチンを作成することができる場合には、3−D APIに関連してアルゴリズム要素(開発者が作成したものではないが、すでに開発者向けにプログラミングされているルーチン)も提供されている。同様に、開発者はこれらの事前にパッケージングされたAPIアルゴリズムを、改善された性能向けのプログラム可能3−Dチップにダウンロードすることができる。3−Dアルゴリズム要素をダウンロードする機能は、開発の容易さに加えて、改善された性能、より優れた制御を提供する。
【0018】
したがって、頂点ごとおよびピクセルごとのプログラム可能オペレーションの導入が、現代のグラフィック・ハードウェアにおいてさらに広がってきている。この一般的なプログラムを可能とする能力(programmability)により、高い性能レベルでの高度な創造的アルゴリズムに、大きな可能性が与えられる。ただし、達成可能なものにはある程度の制限がある。典型的には、図2Aに示されるように、頂点シェーダおよびピクセル・シェーダで現在のレンダリング・パイプラインを使用して、頂点についての何らかのオペレーションを実行するために幾何形状データストリームSGDが頂点シェーダ200に入力され、その後、ラスタライザ210が幾何形状データをピクセル・データにラスタ化して、ピクセル・データ・ストリームSPD1を出力する。頂点シェーダ200は、専門化された機能(specialized function)を実行するために頂点シェーダ200をプログラミングする命令を受け取ることができるが、頂点シェーダ命令にはサイズおよび複雑さの制限がある。同様に、ピクセル・シェーダ220は任意選択で、ピクセル・データ・ストリームSPD2を出力するデータに対して1つまたは複数の変換を実行することができる。ピクセル・シェーダ220は、専門化された機能を実行するためにピクセル・シェーダ220をプログラミングする命令も受け取ることができるが、ピクセル・シェーダ命令にはサイズおよび複雑さの制限がある。したがって、今日のAPIおよび対応するハードウェアの制限の1つは、ほとんどのハードウェアが非常に制限された命令カウントを有することである。この制限された命令カウントは、APIを使用する開発者による最も高度なアルゴリズムの一部の実装を妨げる。さらに現在のプログラム可能ハードウェアには、別々のプログラム間でデータを交換するための非常に制限されたメカニズムがあり、すなわち、第1のピクセル・シェーダ・プログラムは第2のピクセル・シェーダ・プログラムから出力されたデータを再使用することができない。
【0019】
さらに、図2Aに示されるように、ピクセルは、一般的にイメージ空間の2−Dグリッド内にあるポイントであり、それらに関連付けられたグレイ・スケール値またはカラー値を有すると考えられるが、現代のグラフィックスは、表示されたイメージに関連するか否かにかかわらず、ピクセル・エンジン・パイプライン内のピクセルを、任意の2−Dアレイ内にあるポイントに関連付けられた任意の集合的データと、みなす。たとえば図2Aには、赤用のバケット、緑用のバケット、および青用のバケットを有するピクセルが示されているが、この通りである必要はなく、ピクセルは任意数のバケットおよび対応する値を有することができる。したがって、2−Dアレイのピクセル・データを生成するにはかなりのフレキシビリティがあり、ライティング効果、重み、zバッファ情報などに関するパラメータ値を含むことができる。図2Cに示されるように、今日のグラフィックス・パイプラインに伴う問題は、別々のピクセル・セットが出力可能なフレキシビリティに関する。ピクセル・エンジン230は、任意の種類のピクセル・データを出力することができる。すなわち出力としてストリーミングされるピクセルP1、P2、P3、P4、からPNまでは、ピクセルP1、P2、P3、P4、からPNまでを定義するバケットの種類および数に関してかなりのフレキシビリティを呈することができるが、それにもかかわらず、P1、P2、P3、P4、からPNまでにはすべて同じバケットがなければならない。したがって、P1がR、G、Bデータを含む場合はP2、P3、P4、からPNまでも同様となり、一部はライティング用に使用可能であり一部は厳密にカラー用に使用可能であるといった、出力ピクセル・データの様々なセットを定義するためのフレキシビリティがない。さらに現在では、レンダリング・ターゲットの解像度はラスタ化プロセスに一致して事前に決定される、すなわち、レンダリング・プロセスがレンダリング・ターゲット内に配置可能なサンプルの量を出力する、そこで、レンダリング・ターゲットの解像度、すなわちレンダリング・ターゲットに関連して格納できるサンプルの量は、可変的に制御されることが望ましい。
【0020】
【発明が解決しようとする課題】
本発明の一目的は、命令カウントにおける制限、出力形式の制限、およびプログラム間でのデータ共用の欠如による、現在のグラフィックス・パイプライン・アーキテクチャ、API、およびハードウェアに関しての現在のプログラム可能性の欠点を克服するシステムおよび方法を提供することにある。
【0021】
【課題を解決するための手段】
前述の内容に鑑みて、本発明はコンピュータ・システムにおけるコンピュータ・グラフィックスに関して中間ターゲットを提供するためのシステムおよび方法を提供する。様々な実施形態において、本発明は、グラフィックスAPIからのシリアル化プログラムが、単一プログラム用の手続き型シェーダの命令制限を越えるアルゴリズムをサポートできるようにするために、ビデオ・メモリ内に中間メモリ・バッファを提供し、これを使用する。中間バッファは他の目的用のプログラム間でのデータの共用も可能にするものであり、自動的にアクセス可能である。バッファのサイズ、すなわち中間ターゲットに格納されるデータの量は、グラフィックス・データに関して変化する解像度用に可変的に設定することができる。これに関して、単一のプログラムは後で使用可能な中間データを生成し、現在のグラフィックス・チップの速度を維持しながら、同じプログラムの拡張および/または任意数の他のプログラムによって、所望なように任意の回数だけ再使用される。
【0022】
本発明の他の特徴および実施形態については、以下で説明する。
【0023】
本発明に従って中間メモリ・ターゲットを提供するためのシステムおよび方法について、添付の図面を参照しながらさらに説明する。
【0024】
【発明の実施の形態】
(概要)
前述のように、本発明は、開発者がそれによって手続き型シェーダの機能をプログラミングすることができる、低水準シェーディング言語などの、シェーディング言語で使用するための複数の中間ターゲット循環を使用可能にするものである。本発明に従った中間ターゲットの再循環、を持たないグラフィックス・プラットフォームは、ピクセルごとおよび頂点ごとのレベルで動作するプログラムのサイズおよび複雑さで制限される。本発明のシステムおよび方法は、一般にプログラム可能なグラフィックス・パイプラインの展開に関連して、プログラム可能な機能の使用を抽象化し、および簡略化する高水準言語の作成を可能にする。さらに本発明は、ハードウェア・アクセラレーションを使用して非リアルタイム・レンダリングを可能にするプログラムで、仮想的には長さに制限のないプログラムを作成することに使用することもできる。バッファのサイズ、すなわち中間ターゲット内に格納されるデータの量は、グラフィックス・データの解像度の変化に対して可変的に設定することができる。したがって、本発明に従った非リアルタイム・レンダリング・アプリケーション用の無制限のハードウェア加速再循環が使用可能であることは、グラフィックス・プラットフォームの速度および性能を向上させる。
【0025】
(ネットワーク環境および分散環境の例)
当分野の通常の技術者であれば、コンピュータあるいは他のクライアントまたはサーバ・デバイスが、コンピュータ・ネットワークの一部として、または分散コンピューティング環境内に配置可能であることが理解できよう。この点に関して、本発明は、本発明の中間メモリ・ターゲットに関連して使用可能な、任意数のメモリまたは記憶ユニットを有する任意のコンピュータ・システム、ならびに任意数の記憶ユニットまたはボリュームにわたって行われる任意数のアプリケーションおよびプロセス、に関係するものである。本発明は、リモートまたはローカルの記憶域を有する、ネットワーク環境または分散コンピューティング環境で配置された、サーバ・コンピュータおよびクライアント・コンピュータを備えた環境に適用可能である。本発明は、プログラミング言語機能、リモートまたはローカルのサービスに関連して情報を生成、受信、および送信するための解釈(interpretation)および実行機能を有する、スタンドアローン型コンピューティング・デバイスにも適用可能である。
【0026】
分散コンピューティングは、コンピューティング・デバイスとシステムとの間での直接交換により、コンピュータ・リソースおよびサービスの共用を容易にする。これらのリソースおよびサービスには、情報の交換、キャッシュ記憶、およびファイルのディスク記憶が含まれる。分散コンピューティングは、ネットワーク接続性を利用し、クライアントがクライアント自身の集合的なパワーを企業全体の利益とするために活用できるようにするものである。この点に関して、様々なデバイスが、本発明の中間メモリ・ターゲットに影響を与える可能性のあるアプリケーション、オブジェクト、またはリソースを有することができる。
【0027】
図3Aは、例示的なネットワーク・コンピューティングまたは分散コンピューティングの環境を示す概略図である。分散コンピューティング環境は、コンピューティング・オブジェクト10a、10bなどと、コンピューティング・オブジェクトまたはデバイス110a、110b、110cなどとを備える。これらのオブジェクトは、プログラム、メソッド、データ記憶域、プログラム可能論理などを備えることができる。オブジェクトは、PDA、テレビジョン、MP3プレーヤ、テレビジョン、パーソナル・コンピュータなどの同じかまたは異なるデバイスの部分を備えることができる。各オブジェクトは、通信ネットワーク14を介して他のオブジェクトと通信可能である。このネットワークは、それ自体が図3Aのシステムにサービスを提供する他のコンピューティング・オブジェクトおよびコンピューティング・デバイスを備えることができる。本発明の一側面によれば、10a、10bなど、または110a、110b、110cなどの各オブジェクトは、本発明の中間メモリ・ターゲットの使用を要求するために、APIまたは他のオブジェクトを使用できるアプリケーションを備えることができる。
【0028】
分散コンピューティング・アーキテクチャでは、従来からクライアントとして単独で使用することのできた複数のコンピュータがそれらコンピュータ間で直接通信し、ネットワークにとってどんな役割が最も効率的であるかを想定して、クライアントおよびサーバのどちらの役割も果たすことが可能である。これにより、サーバにかかる負荷が軽減され、すべてのクライアントが他のクライアントで使用可能なリソースにアクセスできるようになり、それによって、ネットワーク全体の機能および効率が向上する。したがって本発明に従って中間ターゲットを使用するサービスを、ネットワーク全体にとって効率的な方法で働くクライアントとサーバの間で分散させることができる。
【0029】
分散コンピューティングは、ビジネスが多様な地理的境界を越えて、サービスおよび機能をより効率良く送達するのを助けることができる。さらに、分散コンピューティングは、ネットワーク・キャッシング・メカニズムとしての働きをしながら、データが消費されるポイントの近くまでデータを移動させることができる。さらに分散コンピューティングは、コンピューティング・ネットワークが知的エージェントを使用して共に動的に作業できるようにする。エージェントはピア・コンピュータ上に常駐し、様々な種類の情報を、前方あるいは後方に通信する。エージェントは、他のピア・システムに代わってタスクを開始することもできる。たとえば、知的エージェントは、ネットワーク上のタスクに優先順位を付けることに使用されることができ、知的エージェントは、トラフィック・フローを変更し、ファイルをローカルに検索し、またはウィルスなどの異常な挙動を特定してこれがネットワークに影響を及ぼす前に停止させる。他のすべての種類のサービスも同様に考えることができる。グラフィカル・オブジェクト、テクスチャー・マップ、シェーディング・データなどは、実際には、物理的に1つまたは複数の場所に配置される可能性があるため、本明細書に記載された中間ターゲットを使用するサービスを分散させる機能は、こうしたシステムで非常に実用的である。
【0030】
110cなどのオブジェクトを、他のコンピューティング・デバイス10a、10bなど、または110a、110bなどのホストとして働かせることができることも理解されたい。したがって、示された物理的環境はコンピュータなどの接続されたデバイスを示しているが、これは単なる例示的なものであって、代わりに物理的環境は、PDA、テレビジョン、MP3プレーヤ、などの様々なデジタル・デバイス、COMオブジェクトなどのインターフェースのようなソフトウェア・オブジェクトを備えるように示すかまたは記述することができる。
【0031】
分散コンピューティング環境をサポートするシステム、構成要素、およびネットワーク構成には様々なものがある。たとえばコンピューティング・システムは、有線または無線システムによって、ローカル・ネットワークまたは広範囲に分散されたネットワークによって、相互に接続することができる。現在では多くのネットワークがインターネットに結合されており、このインターネットは、広範囲に分散されたコンピューティングにインフラストラクチャを提供し、多くの異なるネットワークを包含している。
【0032】
ホーム・ネットワーキング環境では、電力線、データ(無線および有線の両方)、音声(たとえば電話)、およびエンターテイメント媒体などの、それぞれが固有のプロトコルをサポートすることが可能な、少なくとも4つの本質的に異なるネットワーク移送媒体(transport media)がある。照明スイッチおよび電化製品などのほとんどの家庭用制御デバイスは、接続に電力線を使用することができる。データ・サービスは、ブロード・バンド(たとえばDSLまたはケーブル・モデムのいずれか)として家庭に入ることが可能であり、無線(たとえばHomeRFまたは802.11b)または有線(たとえばHomePNA、Cat5、電力線でもよい)のいずれかの接続を使用して、家庭内でアクセス可能である。音声トラフィックは、有線(たとえばCat 3)または無線(たとえば携帯電話)のいずれかとして家庭に入り、Cat 3配線を使用して家庭内で配信させることができる。エンターテイメント媒体または他のグラフィカル・データは、衛星またはケーブルのいずれかを介して、家庭に入ることが可能であり、典型的には同軸ケーブルを使用して家庭内で分散される。IEEE 1394およびDVIは、媒体デバイスのクラスタ用のデジタル相互接続としても出現している。これらのネットワーク環境およびプロトコル標準として出現することのできるその他の環境は、インターネットを介して外部世界と接続可能なイントラネットを形成するために、すべて相互に接続することができる。つまり、データの記憶および伝送用に様々な異なるソースが存在し、したがって進歩を続けるコンピューティング・デバイスは、本発明に従って中間ターゲットの中間結果を使用するプログラム・オブジェクトに付帯するデータで、アクセスまたは使用されるデータなどのデータ、を共用する方法を必要とすることになる。
【0033】
インターネットは、一般に、コンピュータ・ネットワーキングの分野でよく知られたプロトコルのTCP/IPスイート(suite 組ソフト)を使用するネットワークおよびゲートウェイの集まりと呼ばれる。TCP/IPは「Transport Control Protocol/Interface Program」の頭字語である。インターネットは、ユーザがネットワークを介して対話し情報を共有することのできるネットワーキング・プロトコルを実行するコンピュータによって相互接続され、地理的に分散されたリモート・コンピュータ・ネットワークのシステムとして記述することができる。こうした広範にわたる情報の共有により、インターネットなどのリモート・ネットワークは、オープン・システム内にさらに一般的に展開され、このオープン・システムによって、専門化されたオペレーションまたはサービスを、本質的に制約なしに、実行するソフトウェア・アプリケーションを、開発者が設計できるようになってきた。
【0034】
したがって、ネットワーク・インフラストラクチャは、クライアント/サーバ、ピアツーピア、またはハイブリッド・アーキテクチャなどのネットワーク・トポロジのホストを使用可能にする。「クライアント」とは、関係しない他のクラスまたはグループのサービスを使用する、クラスまたはグループのメンバのことである。したがって、コンピューティングでは、クライアントはプロセス、すなわちおおまかに言えば、他のプログラムによって提供されるサービスを要求する命令またはタスクのセットである。クライアント・プロセスは、他のプログラムまたはサービスそれ自体についてどんな作業の詳細も「知る」必要なしに、要求されたサービスを使用する。クライアント/サーバ・アーキテクチャ、具体的に言えばネットワーク化システムでは、クライアントは通常、他のコンピュータ、たとえばサーバによって提供される共用ネットワーク・リソースにアクセスするコンピュータである。図3Aの例では、コンピュータ110a、110bなどをクライアントとみなし、コンピュータ10a、10bなどをサーバとみなすことが可能であり、サーバ10a、10bなどはデータを維持し、このデータがその後クライアント・コンピュータ110a、110bなどで複製される。
【0035】
サーバは、典型的には、インターネットなどのリモート・ネットワークを通してアクセス可能なリモート・コンピュータ・システムである。クライアント・プロセスが第1のコンピュータ・システムでアクティブであり、サーバ・プロセスが第2のコンピュータ・システムでアクティブであって、通信媒体を介して相互に通信し、それによって分散された機能を提供し、複数のクライアントがサーバの情報収集機能を使用することができる。
【0036】
クライアントおよびサーバは、プロトコル層によって提供される機能を使用して相互に通信する。たとえばハイパー・テキスト転送プロトコル(HTTP)は、World Wide Web(WWW)と共に使用される一般的なプロトコルである。典型的には、Universal Resource Locator(URL)などのコンピュータ・ネットワーク・アドレスまたはインターネット・プロトコル(IP)アドレスは、サーバまたはクライアント・コンピュータを相互に識別するのに使用される。ネットワーク・アドレスはURLアドレスと称することができる。たとえば、通信は通信媒体を介して提供することができる。具体的に言えば、クライアントおよびサーバは、大容量通信用のTCP/IP接続を介して相互に結合することができる。
【0037】
したがって図3Aは、本発明が実施可能な、サーバがネットワーク/バスを介してクライアント・コンピュータと通信する、例示的なネットワーク環境または分散環境を示す図である。より詳細には、いくつかのサーバ10a、10bなどは、通信ネットワーク/バス14を介して相互接続され、この通信ネットワーク/バス14は、本発明に従った、ポータブル・コンピュータ、ハンドヘルド・コンピュータ、シン(thin)クライアント、ネットワーク化電化製品、またはVCR、TV、オーブン、照明、ヒータなどの他のデバイスなど、いくつかのクライアントまたはリモート・コンピューティング・デバイス110a、110b、110c、110d、110eなどを備えた、LAN、WAN、イントラネット、インターネットなどであってよい。したがって本発明は、それに関連してグラフィカル・オブジェクトを処理することが望ましい、任意のコンピューティング・デバイスに適用することができることが企図されている。
【0038】
通信ネットワーク/バス14がインターネットであるネットワーク環境では、たとえばサーバ10a、10bなどは、クライアント110a、110b、110c、110d、110eなどがHTTPなどのいくつかの知られたプロトコルを介して通信するWebサーバであってよい。サーバ10a、10bなどは、クライアント110a、110b、110c、110d、110eなどとして働くこともでき、このことは分散コンピューティング環境の特徴とすることができる。通信は、適切であれば有線または無線であってよい。クライアント・デバイス110a、110b、110c、110d、110eなどは、通信ネットワーク/バス14を介して通信可能であってもなくてもよく、これらは、それに関連付けられた独立した通信を有することができる。たとえば、TVまたはVCRの場合、その制御へのネットワーク化された態様であってもなくてもよい。各クライアント・コンピュータ110a、110b、110c、110d、110eなど、およびサーバ・コンピュータ10a、10bなどは、様々なアプリケーション・プログラム・モジュールまたはオブジェクト135を装備することが可能であり、様々なタイプの記憶要素またはオブジェクトへの接続またはアクセスを装備することが可能であって、これを横切ってファイルを格納するか、またはこれにファイルの一部をダウンロードまたは移行することができる。任意のコンピュータ10a、10b、110a、110bなどは、グラフィックス・オブジェクトまたは中間グラフィックス・オブジェクトならびに本発明に従って処理されたデータを格納するためのデータベースまたはメモリ20などのような、本発明に従ったデータベース20または他の記憶要素の保守およびさら更新に応動することができる。したがって本発明は、クライアント・コンピュータ110a、110bなどおよび他の同様のデバイスおよびデータベース20と対話することが可能であり、コンピュータ・ネットワーク/バス14およびサーバ・コンピュータ10a、10bなどにアクセスしこれらと対話することが可能な、クライアント・コンピュータ110a、110bなどを有するコンピュータ・ネットワーク環境で使用することが可能である。
【0039】
(例示的コンピューティング・デバイス)
図3Bおよび以下の考察は、本発明が実施可能な適切なコンピューティング環境の簡潔な一般的説明を提供することを意図するものである。ただし、ハンドヘルド、ポータブル、および他のコンピューティング・デバイスならびにすべての種類のコンピューティング・オブジェクトが、本発明に関連して使用するように企図されることを理解されたい。以下では汎用コンピュータが記述されているが、これは一例であって、本発明はネットワーク/バスを使用した相互操作性および対話(interoperability and interaction)を備えるシン・クライアントを使用して実施することができる。したがって本発明は、非常に少ないかまたは最低のクライアント・リソースが包含されているネットワーク・ホスト・サービス(networked hosted services)の環境、たとえば、電化製品に配置されたオブジェクトなどの、クライアント・デバイスが単にネットワーク/バスへのインターフェースとして働くネットワーク環境、で実施可能である。本質的には、データが格納可能であるかまたはデータの取出しが可能などの場所も、本発明のグラフィックス・パイプライン技法のオペレーションにとって、望ましいかまたは適切な環境を備えている。
【0040】
必須ではないが、本発明は、デバイスまたはオブジェクトに関するサービスの開発者が使用するために、オペレーティング・システムを介して実施することができ、かつ/または、本発明の中間ターゲットと関連して動作するアプリケーション・ソフトウェアに含めることができる。本発明は、本発明の中間ターゲットと対話するための頂点シェーダおよびピクセル・シェーダの設計も同様に含む。ソフトウェアは、クライアント・ワークステーション、サーバまたは他のデバイスなどの1つまたは複数のコンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテキストで記述することができる。一般にプログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。典型的には、プログラム・モジュールの機能は、様々な実施形態で所望なように組み合わせるかまたは分散させることができる。さらに、当分野の技術者であれば、本発明が他のコンピュータ・システム構成でも実施可能であることを理解されよう。本発明で使用するのに適切な他のよく知られたコンピューティング・システム、環境、および/または構成には、パーソナル・コンピュータ(PC)、現金自動預け払い機、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベース・システム、プログラム可能大衆消費電子製品、ネットワークPC、電化製品、照明、環境制御要素、ミニ・コンピュータ、メインフレーム・コンピュータなどが含まれるが、これらに限定されるものではない。本発明は、通信ネットワーク/バスまたは他のデータ伝送媒体を介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラム・モジュールを、メモリ記憶デバイスを含むローカルおよびリモートの両方のコンピュータ記憶媒体に配置することが可能であり、交代で、クライアント・ノードがサーバ・ノードとしての挙動を示すことができる。
【0041】
したがって、図3Bは、本発明が実装可能な適切なコンピューティング・システム環境100の例を示す図であって、上記で明らかにしているが、コンピューティング・システム環境100は適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に関しての何らかの制限を提案するように意図されたものではない。さらにコンピューティング環境100は、例示的オペレーティング環境100に示された任意の一構成要素または構成要素の組み合せに関する任意の依存性または要件を有するものとしても解釈されるべきではない。
【0042】
図3Bを参照すると、本発明を実装する例示的システムは、コンピュータ110の形式の汎用コンピューティング・デバイスを含む。コンピュータ110の構成要素は、限定されないが、処理ユニット120、システム・メモリ130、およびシステム・メモリを含む様々なシステム構成要素を処理ユニット120に結合するシステム・バス121を含むことができるシステム・バス121は、メモリ・バスまたはメモリ制御装置、周辺バス、および様々なバス・アーキテクチャのうちのいずれかを使用するローカル・バスを含む、いくつかのタイプのバス・アーキテクチャのうちいずれかであることができる。例を挙げると、限定されないが、こうしたアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、拡張ISA(EISA)バス、VideoElectronics Standards Association(VESA)ローカル・バス、およびPeripheral Component Interconnect(PCI)バス(メザニン・バスとしても知られる)が含まれる。
【0043】
コンピュータ110は、典型的には様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ110がアクセス可能な任意の使用可能媒体であることができ、揮発性および不揮発性、ならびに取外し可能および取外し不可能な、両方の媒体を含む。例を挙げると、限定されないが、コンピュータ読取り可能媒体はコンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラム・モジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装された、揮発性および不揮発性、ならびに取外し可能および取外し不可能な、両方の媒体を含む。コンピュータ記憶媒体は、限定されないが、RAM、ROM、EEPROM、フラッシュ・メモリまたは他のメモリ技術、CDROM、デジタル汎用ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは所望の情報の格納に使用可能でありコンピュータ110がアクセス可能な任意の他の媒体を含む。通信媒体は、典型的には、コンピュータ読取り可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波のような被変調データ信号中に、または他の移送メカニズム中に包含し、任意の情報送達媒体(information delivery media)を含む。「被変調データ信号」という語は、その特徴のうち1つまたは複数が、その信号中に情報を符号化するような態様で、設定または変更された信号を意味する。例を挙げると、通信媒体は、限定されないが、有線ネットワークまたは直接有線接続などの有線媒体、および音波、RF、赤外線、および他の無線媒体などの無線媒体を含む。上記の任意の組み合せも、コンピュータ読取り可能媒体の範囲に含まれるものとする。
【0044】
システム・メモリ130は、読取り専用メモリ(ROM)131およびランダム・アクセス・メモリ(RAM)132などの、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入力/出力システム133(BIOS)は、典型的にはROM 131に格納される。RAM 132は、典型的には即時アクセス可能かつ/または処理ユニット120上で現在動作中の、データおよび/またはプログラム・モジュールを収容する。例を挙げると、限定されないが、図3Bには、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、およびプログラム・データ137が示されている。
【0045】
コンピュータ110は、他の取外し可能/取外し不可能、揮発性/不揮発性のコンピュータ記憶媒体も含むことができる。単なる例に過ぎないが、図3Bには、取外し不可能な不揮発性磁気媒体から読み取るかまたはこれに書き込むハードディスク・ドライブ141、取外し可能の不揮発性磁気ディスク152から読み取るかまたはこれに書き込む磁気ディスク・ドライブ151、およびCD ROMまたは他の光学式媒体などの取外し可能の不揮発性光ディスク156から読み取るかまたはこれに書き込む光ディスク・ドライブ155が示されている。例示的オペレーティング環境で使用可能な他の取外し可能/取外し不可能、揮発性/不揮発性のコンピュータ記憶媒体は、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル汎用ディスク、デジタル・ビデオ・テープ、ソリッドステートRAM、ソリッドステートROMなどを含むが、これらに限定されるものではない。ハードディスク・ドライブ141は、典型的にはインターフェース140などの取外し不可能なメモリ・インターフェースを介して、システム・バス121に接続され、磁気ディスク・ドライブ151および光ディスク・ドライブ155は、典型的にはインターフェース150などの取外し不可能なメモリ・インターフェースによって、システム・バス121に接続される。
【0046】
前述の、および図3Bに示されたドライブおよびその関連付けられたコンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ110に関する他のデータの記憶装置を提供する。たとえば図3Bでは、ハードディスク・ドライブ141はオペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147を格納しているように示されている。これらの構成要素は、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、およびプログラム・データ137と同じであってもこれらと異なってもよいことに留意されたい。オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147には、少なくともこれらが異なるコピーであることを示すために、ここでは異なる番号が与えられている。ユーザは、キーボード162および一般にはマウス、トラック・ボール、またはタッチパッドと呼ばれるポインティング・デバイス161などの入力デバイスを介して、コンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラ・アンテナ、スキャナなどを含むことができる。これらおよび他の入力デバイスは、システム・バス121に結合されたユーザ入力インターフェース160を介して処理ユニット120に接続されることが多いが、パラレル・ポート、ゲームポート、またはユニバーサル・シリアル・ポート(USB)などの他のインターフェースおよびバス構造によって接続することができる。Northbridgeなどのグラフィックス・インターフェース182も、システム・バス121に接続することができる。Northbridgeは、CPUまたはホスト処理ユニット120と通信するチップ・セットであり、高速グラフィックス・ポート(AGP)通信の役目を負う。1つまたは複数のグラフィックス処理ユニット(GPU)184は、グラフィックス・インターフェース182と通信することができる。これに関して、GPU 184は一般にレジスタ記憶装置などのオンチップ・メモリ記憶装置を含み、GPU 184は本発明の中間ターゲットが実施可能なビデオ・メモリ186と通信する。ただし、GPU 184は、コプロセッサ(coprocessor)の一例であって、様々なコプロセス・デバイスをコンピュータ110に含めることが可能であり、ピクセル・シェーダおよび頂点シェーダなどのさまざまな手続き型シェーダを含むことが可能である。モニタ191または他のタイプのディスプレイ・デバイスも、ビデオ・メモリ186と通信可能なビデオ・インターフェース190などのインターフェースを介して、システム・バス121に接続される。モニタ191に加え、コンピュータは、出力周辺インターフェース195を介して接続可能なスピーカ197およびプリンタ196などの他の周辺出力デバイスを含むこともできる。
【0047】
コンピュータ110は、リモート・コンピュータ180などの1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境または分散環境で動作可能である。リモート・コンピュータ180は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイス、または他の共通ネットワーク・ノードであってよく、図3Bにはメモリ記憶デバイス181のみが示されているが、典型的にはコンピュータ110に関して上記で述べた要素の多くまたはすべてを含む。図3Bに示された論理接続は、ローカルエリア・ネットワーク(LAN)171およびワイドエリア・ネットワーク(WAN)173を含むが、他のネットワーク/バスも含むことができる。こうしたネットワーキング環境は、家庭、オフィス、企業全体のコンピュータ・ネットワーク、イントラネット、およびインターネットで一般的なものである。
【0048】
LANネットワーキング環境で使用される場合、コンピュータ110はネットワーク・インターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は典型的にはモデム172、またはインターネットなどのWAN 173を介して通信を確立するための他の手段を含む。モデム172は内蔵または外付けであってよく、ユーザ入力インターフェース160または適切なメカニズムを介してシステム・バス121に接続することができる。ネットワーク環境では、コンピュータ110に関して図示されたプログラム・モジュールまたはその一部を、リモート・メモリ記憶デバイス内に格納することができる。例を挙げると、限定されないが、図3Bにはリモート・アプリケーション・プログラム185がメモリ・デバイス181に常駐するとして示されているが、これに限定されるものではない。図示されたネットワーク接続は例示的なものであって、コンピュータ間に通信リンクを確立する他の手段も使用可能であることを理解されよう。
【0049】
(例示的分散コンピューティング・フレームワークまたはアーキテクチャ)
様々な分散コンピューティング・フレームワークが、パーソナル・コンピューティングおよびインターネットの集合状態を考慮して、これまで開発されてきており、現在も開発中である。個人ユーザにもビジネス・ユーザにも同様に、シームレスに相互運用可能であって、Web使用可能なアプリケーションおよびコンピューティング・デバイス用のインターフェースが与えられ、このインターフェースは、コンピューティング・アクティビティをますますWebブラウザまたはネットワーク指向にしている。
【0050】
たとえば、MICROSOFT(登録商標)の.NETプラットフォームには、サーバ、Webベースデータ記憶装置およびダウンロード可能なデバイス・ソフトウェアなどのビルディング・ブロック・サービスが含まれる。一般にその.NETプラットフォームは(1)全領域のコンピューティング・デバイスを一緒に機能させて、それらすべてのユーザ情報を自動的に更新し、および同期させる機能、(2)HTMLよりもXMLを多く使用することによって可能なWebサイトに対する対話機能を向上させること、(3)電子メールまたはソフトウェアなどの様々なアプリケーションを管理するための、カスタマイズされたアクセスならびに製品およびサービスの中央起点からユーザへの送達を特徴付ける、たとえばOffice.NETなどの、オンライン・サービス、(4)効率を上げ、情報へのアクセスを容易にする集中型データ記憶ならびにユーザおよびデバイス間での情報の同期化、(5)電子メール、ファックス、および電話などの様々な通信媒体を統合する機能、(6)開発者向けの、生産性を向上させプログラミング・エラー数を減少させる、再使用可能モジュールを作成する機能、および(7)多くの他のクロス・プラットフォーム統合機能も、同様に提供する。
【0051】
本明細書の例示的実施形態は、コンピューティング・デバイス上に常駐するソフトウェアに関連して記載されているが、本発明の1つまたは複数の部分は、オペレーティング・システム、アプリケーション・プログラミング・インターフェース(API)、またはコプロセッサと要求側オブジェクトとの間の「仲介」オブジェクトを介して実施することも可能であり、その結果、制御可能テクスチャー・サンプリング・サービスが、.NETのすべての言語およびサービスによって実行される、またはこれらでサポートされる、またはこれらを介してアクセスされることが可能であり、他の分散コンピューティング・フレームワークにおいても同様である。さらに、本発明の他の側面は、手続き型シェーダがAPIからのプログラムを受け取り、それらを様々な中間ターゲットに変換できるようにするグラフィックス・アーキテクチャに加えて、ビデオ・メモリに常駐する中間ターゲットそれ自体に存在する。
【0052】
(複数の中間ターゲット循環(Multiple Intermediate Target Circulation))
本発明のシステムおよび方法は、一般的にプログラム可能なグラフィック・パイプラインの展開に関連して、プログラム可能機能(programmable capability)の使用を抽象し、および簡略化するために、高水準言語の作成(creation)を可能にする。したがって本発明は、グラフィックス・ハードウェアによって非常に高い性能レベルで達成される以外に、開発者によって表現可能グラフィックス技法がより広範囲にわたることを可能にするプラットフォームを与える。
【0053】
本発明に従った中間ターゲットの再循環、を持たないグラフィックス・プラットフォームは、同様の結果を達成するためにはデータ上に追加のパスが必要であるという点で、ピクセルごとおよび頂点ごとのレベルで動作するプログラムのサイズおよび複雑さについて、性能の面から、制限される。たとえば、ライティング効果または同様の変換を実施するあるプログラムは、関連するプログラムの複雑さおよび/または長さが原因で、本発明なしでは非リアルタイム・グラフィックスに限定される。図4に示されるように、比較的複雑なシェーダ・プログラムSPは、関連するハードウェアたとえばピクセル・シェーダの最大命令制限を越えているため、本発明によって支援されていない開発者は、リアルタイム要求に応えられるほど高速でない可能性のあるホスト処理装置による変換実施を押し付けられる。本発明により可変的にサイズが設定可能な中間ターゲットMRT1およびMRT2を使用することによって、開発者は実際にプログラムSPをSPP1、SPP1、およびSPP3の部分に、実質上、細分することが可能であり、それらはすべて個々にハードウェアの命令制限を越えないものであるが、中間結果を出力し、中間結果を再使用することによってSPの機能を集合的に実行する。たとえば、SPP1が中間結果を中間ターゲットMRT1に出力し、これがプログラム部分SPP2への入力の役割を果たし、次にSPP2が中間結果を中間ターゲットMRT2に出力し、これがプログラム部分SPP3への入力の役割を果たし、次にSPP3が所望の変換済みデータを出力する。したがって、本発明を使用して、ハードウェア加速を使用して非リアルタイム・レンダリングを可能にする、仮想的には長さに制限のないプログラムを作成することができる。したがって、本発明に従った非リアルタイム・レンダリング・アプリケーション用の無制限のハードウェア加速再循環機能(unlimited hardware accelerated recirculation )により、グラフィックス・プラットフォームの速度および性能が向上する。
【0054】
さらに、MRT内のデータを何回でも入力として任意のプログラムへ再循環させる機能は反復オペレーションを意味し、再計算なしでの中間データの再使用は、任意のプログラムが達成することができる。さらに中間ターゲット内のデータ・フォーマットは、MRT1は赤、緑、青のカラー・データを含むが、MRT2はカラーにはまったく無関係のデータ、たとえば位置について複雑な関数で実行しなければならないデータ、または重みを含むことができるように、開発者によって設定される。また前述のように、バッファのサイズ、すなわち中間ターゲットに格納されるデータ量は、グラフィックス・データの変化する解像度に合わせて可変的に設定することもできる。
【0055】
本明細書で使用される場合、本発明の複数再循環ターゲット(multiple recirculation targets)(MRTs)はバッファとして使用されるテクスチャーである。バッファは、一般に「ピクセル・シェーダ」と呼ばれるピクセルごとのプログラムへの入力とそれからの出力として使用することができる。単一のピクセル・シェーダ・プログラムは、レンダリング・ターゲットとして現れる他の任意数のMRTに出力する一方で、任意数のこれらMRTからテクスチャーの形で同時に入力することが可能である。これら別個のバッファの数はハードウェアによってのみ制限され、ビデオ・メモリのサイズ、したがってこれらのバッファはかなりの数が可能である。
【0056】
本発明の例示的構成要素には、(1)テクスチャーをサンプリングし、任意の最終的なオプション・フレーム・バッファの出力に加えて複数のレンダリング・ターゲットに出力する機能を有する、ピクセル・シェーダ・プログラムと、(2)出力用のレンダリング・ターゲットまたは入力用のテクスチャーとしてピクセル・シェーダ・プログラムにバインド可能な再循環バッファとが含まれる。
【0057】
(無制限の実施形態)
次に、本発明の上記の構成要素を使用する本発明の無制限なソフトウェア実施について述べる。これに関して、本発明はハードウェアにおける変形形態に対処するために、MRTを少なくとも2つの形で表す。この実施にはMET(Multi−Element Texture)形式として記述した形式、およびMRT形式として記述した形式が含まれる。MET形式はより単純な形式である。METの場合、一般にカラー要素に関連付けられた中間の4つの構成要素出力が、インタリーブ様式で単一の表面に書き込まれる。MRTの場合、個々のカラー要素を個々の表面に別々にバインドすることができる。これらの表面は、ピクセル・シェーダ・プログラムによって表現される技法に最適な何らかの方法で、各カラー要素についてフォーマットが変わることがある。
【0058】
(無制限のMET API)
MET APIでは、従来のテクスチャーは単一要素テクスチャーであるとみなされ、アプリケーションはピクセル・シェーダから同時にテクスチャーの複数の要素に書き込むことが可能であるため、次のレンダリング・パスでは、アプリケーションはそれら要素のうち1つまたは複数を単一の要素テクスチャーとして、すなわちピクセル・シェーダへの入力として使用することができる。これらの追加要素は、後のパスでアプリケーションが使用することになる中間結果用の一時記憶装置としてみなすことができる。
【0059】
METの例示的な無制限の使用法が、図5の擬似コードのフローチャートに示されている。500では、アプリケーションがMETフォーマットの可用性をチェックすることによって、中間ターゲットのサポートを発見する。510では、アプリケーションがCreateSurface関数を呼び出すことによって、MET表面を作成する。520では、アプリケーションがSetRenderTarget関数の呼出しを介して、METをRenderTargetとして設定する。ピクセル・シェーダ230は移動命令を使用して表面に出力する。530では、MET表面を特定の段階(particular stage)に設定するためにSetTexture関数が呼び出される。他のテクスチャー同様、同じ表面を一度に複数の段階に設定することができる。540では、D3DSAMP_ELEMENTINDEX変数をサンプラがサンプリングするMETテクスチャーの適切な要素番号に設定するために、SetSamplerState関数が呼び出され、それによってサンプラ状態のデフォルト値は非METテクスチャーが動作することを意味する0となる。ValidateDevice関数呼出しによって、たとえばMETが2要素幅しかない場合にサンプラが4番目の要素からのサンプリングを要求した場合など、この状態が不適切な番号に設定されていることが報告される。
【0060】
次に、MET機能をサポートする無制限APIについて述べる。以下に示すような、フォーマットのインタリーブ性を表現する表面フォーマットがある。
【0061】
(無制限の複数レンダリング・ターゲット(Multiple Render Targets)(MRT)API)
多くの実施では、本明細書ではMRTと呼ばれる、制限の少ない形式のMETをサポートしている。こうした緩和の1つが、別個に作成可能な複数のレンダリング・ターゲットを有する機能である。これらのレンダリングは、異なるフォーマットを有することができる。現在、一部の3−DグラフィックスAPIは、既存のSetRenderTarget APIを介して設定可能な単一のレンダリング・ターゲットをサポートしている。本発明によれば、このAPIのエントリ・ポイントは、複数のレンダリング・ターゲットがデバイス内で同時に存在できるように拡張されている。新しいキャップがこの機能を表す。
【0062】
以下のoCnレジスタは、(a)oC0:カラー0(要素0)、(b)oC1:カラー1(要素1)、(c)oC2:カラー2(要素2)、(d)oC3:カラー3(要素3)、および(e)oDepth:深さステンシル・バッファに対する深さテストのための新しい深さ値、という、METテクスチャーの例示的な異なる要素を表すものである。移動命令を使用してoCxレジスタに書き込むことができる。
【0063】
MRT APIに関する例示的な無制限擬似コードは、以下の通りである。
以下には、構成要素全体を移動するための例示的擬似コード記述が含まれる。
【0064】
(中間ターゲットの例示的使用)
図6は、本発明の中間ターゲットを使用すると、従来技術のピクセル・エンジン技法とは異なり、変化する情報バケットを備えた複数の中間ターゲットをピクセル・エンジンからの出力として作成できることを示す図である。さらに、中間ターゲットのデータは無期限に保存可能であるため、後で再使用することができる。たとえば、ピクセルP1からPNがピクセルのR、G、およびB値を格納し、これらを中間ターゲットIT1に配置することができる。ピクセルPWからPXがライティング値を格納し、これらを中間ターゲットIT2に配置することが可能であって、ピクセルPYからPZが何らかの他の中間結果を格納し、これらを中間ターゲットIT3に配置することが可能である。中間ターゲットIT1、IT2、およびIT3それぞれにあるデータは、同じかまたは異なるプログラム、あるいはプログラムの部分によって再使用可能であるため、様々な複雑なシェーディング効果が達成できる。ハードウェア、たとえば頂点シェーダおよびピクセル・シェーダを含むグラフィックス・チップは、APIを介し、開発者の仕様に従って中間ターゲットへ出力または中間ターゲットから入力する。
【0065】
本発明に従って達成可能なより複雑なオペレーションの一例として、図7では、ある時間持続され、第1のプログラムパス1への入力が要求されている中間ターゲットMRT1を示しており、パス1はMRT1を入力として受け取り、中間ターゲットMRT2に出力する。その後、またはその前に、プログラムパス2はMRT1を入力として受け取り、中間ターゲットMRT3に出力する。さらに、プログラムパス3は入力なしで中間ターゲットMRT4に出力する。最後にプログラムパス4は、MRT2、MRT3、およびMRT4をハードウェアへの入力として受け取る何からのオペレーションを実行する。いくつかのMRTが、いくつかのピクセル・プログラムは、より複雑な様式で中間データを共用できるようにするために、使用される。これは、MRTの寿命(持続期間)が完全に開発者の制御にかかっていることを示すものである。
【0066】
言い換えれば、プログラムはパス1で開始される。データは(他のプログラムよりはいくらか早く作成された)MRT1から読み取られる。パス1は何らかのプログラムに従ったアルゴリズムを実行し、MRT2を生成する。パス2は再度MRT1を使用して、MRT3を生成するために異なるアルゴリズムを実行する。パス3は、入力なしでアルゴリズムを使用してMRT4を生成する。パス4(最終パス)は、MRT2、MRT3、およびMRT4からのデータを組み合わせて、最終的に、従来技術の制限を備えたグラフィックス・ハードウェアで達成することが可能であった場合よりもはるかに複雑なシェーディング効果の、正しいカラー・データをフレーム・バッファに送信する。
【0067】
本発明を実施するには複数の方法がある。その1つが、たとえばGPUなどのコプロセッサが、本発明の機能を実行するために事前に作成され、本明細書に記載されたような複数の中間ターゲットに適切なコマンドを受け取る実装を提供することである。本発明の他の実装には、適切なAPI、ツール・キット、ドライバ・コード、オペレーティング・システム、スタンドアローン型またはダウンロード可能なソフトウェア・オブジェクトなどが含まれ、これによってアプリケーションおよびサービスは中間ターゲットを使用してより複雑な機能を達成することができる。本発明は、API(または他のソフトウェア・オブジェクト)、グラフィックス・チップ、およびビデオ・メモリの見地からの本発明の使用を企図する。したがって、本明細書に記載された本発明の様々な実装には、全体をハードウェアで実装、一部をハードウェアで一部をソフトウェアで実装、ならびにソフトウェアで実装、という態様がある。
【0068】
前述のように、本発明の例示的実施形態について、様々なコンピューティング・デバイスおよびネットワーク・アーキテクチャに関連して述べてきたが、基礎となる概念は、単純でない方法で手続き型シェーダをプログラムすることが望ましい、いかなるコンピューティング・デバイスまたはシステムにも適用可能である。したがって、本発明に従って手続き型シェーダの改善されたプログラム性を提供するための技法を、様々なアプリケーションおよびデバイスに適用することができる。たとえば、本発明のアルゴリズムおよびハードウェア実装は、コンピューティング・デバイスのオペレーティング・システムに適用可能であり、デバイス上の別のオブジェクトとして、他のオブジェクトの一部として、サーバからのダウンロード可能オブジェクトとして、デバイスまたはオブジェクトとネットワークとの間の「仲介」として、分散オブジェクトとして、ハードウェアとして、メモリ内で、以上のいずれかの組み合せなどで提供される。例示的プログラミング言語、名前、および例は、本明細書では様々な選択肢の代表として選択されており、これらの言語、名前、および例が限定的なものであることは意図していない。当分野の通常の技術者であれば、本発明のAPIによって達成される機能と同一、同様、または同等の機能を達成するオブジェクト・コードを提供するには、多くの方法があることを理解されよう。
【0069】
本明細書に記載された様々な技法は、ハードウェアまたはソフトウェアに関連して、あるいは適切であればその両方の組み合せに関連して、実装可能である。したがって、本発明の方法および装置、またはその一定の態様または部分は、フロッピィ・ディスケット、CD−ROM、ハード・ドライブ、または任意の他のマシン読取り可能記憶媒体などの、実体のある媒体で具体化されるプログラム・コード(すなわち命令)の形を取ることが可能であって、プログラム・コードがコンピュータなどのマシンにロードされ実行されると、そのマシンが本発明を実施するための装置となる。プログラム・コードがプログラム可能コンピュータで実行される場合、コンピューティング・デバイスは一般に、処理装置、処理装置による読取りが可能な記憶媒体(揮発性および不揮発性のメモリおよび/または記憶要素を含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含むことになる。たとえばデータ処理APIなどを介して本発明の中間ターゲット・サービスを使用することのできる1つまたは複数のプログラムは、コンピュータ・システムと通信するために、高水準の手続き型またはオブジェクト指向のプログラミング言語で実装されることが好ましい。ただしプログラムは、所望であればアセンブリまたはマシン言語で実装することができる。いずれの場合も、言語はコンパイル済みまたは解釈済み言語であって、ハードウェア実装と組み合わせることができる。
【0070】
本発明の方法および装置は、電気配線またはケーブル、光ファイバ、あるいは任意の他の伝送形式などの何らかの伝送媒体を介して伝送される、プログラム・コードの形で具体化される通信を介して実施することも可能であり、プログラム・コードが受け取られ、EPROM、ゲートアレイ、プログラム可能論理デバイス(PLD)、クライアント・コンピュータ、ビデオ・レコーダなどのマシンにロードされ実行されると、前述の例示的実施形態で説明したような単一の処理機能を有する受け取り側マシンが、本発明を実施するための装置となる。汎用処理装置で実施される場合、プログラム・コードは処理装置と合同で本発明の機能を呼び出すように動作する固有の装置を提供する。さらに、本発明に関連して使用される任意の記憶技法は、常にハードウェアおよびソフトウェアの組み合せであってよい。
【0071】
以上、本発明について、様々な図の好ましい実施形態と共に説明してきたが、他の同様の実施形態が使用可能であり、あるいは本発明と同じ機能を実行するために、記載された実施形態を逸脱することなくこれらを修正および追加することが可能であることを理解されよう。たとえば、本発明の例示的なネットワーク環境について、ピアツーピア・ネットワーク環境などのネットワーク環境のコンテキストで説明したが、当分野の技術者であれば、本発明がそれらに限定されるものでなく、本明細書に記載された方法が、有線であろうと無線であろうと、ゲーム・コンソール、ハンドヘルド・コンピュータ、ポータブル・コンピュータなどのどんなコンピューティング・デバイスまたは環境にも適用可能であり、通信ネットワークを介して接続され、ネットワークをまたがって対話する、いくつものこうしたコンピューティング・デバイスにも適用可能であることを理解されよう。さらに、特に無線ネットワーク・デバイスの数が激増し続けるに従い、ハンドヘルド・デバイスのオペレーティング・システムおよび他のアプリケーション特有のオペレーティング・システムを含む、様々なコンピュータ・プラットフォームが企図されることを強調したい。さらに本発明は、複数の処理チップまたはデバイス内で、またはこれらにまたがって実施可能であり、記憶装置も同様に複数のデバイスにまたがって実行可能である。したがって本発明は、任意の単一の実施形態に限定されるものではなく、むしろ、特許請求の範囲に従った幅および範囲内で解釈されるものである。
【図面の簡単な説明】
【図1】コンピュータ・グラフィックス・システムにおけるグラフィックス・パイプラインのプロセスを示す概略図である。
【図2A】従来技術のグラフィックス・パイプラインに伴う様々な制限および問題を示す図である。
【図2B】従来技術のグラフィックス・パイプラインに伴う様々な制限および問題を示す図である。
【図2C】従来技術のグラフィックス・パイプラインに伴う様々な制限および問題を示す図である。
【図3A】本発明が実施可能な様々なコンピューティング・デバイスを有する例示的ネットワーク環境を示す構成図である。
【図3B】本発明が実施可能な制限のないコンピューティング・デバイスの例を示す構成図である。
【図4】ハードウェア命令カウント制限を回避するための本発明の中間メモリ・ターゲットの使用例を示す図である。
【図5】本発明に従ったAPIの使用を示す例示的な流れ図である。
【図6】本発明の中間メモリ・ターゲットの例示的態様を示す構成図である。
【図7】本発明に従い、ハードウェアによっていくつかのプログラム・パスを備える複雑な機能を達成するための、中間メモリ・ターゲットの使用例を示す図である。
Claims (45)
- グラフィックス・システム内で中間メモリ・ターゲットを提供および使用するための方法であって、
専門化された機能を実行するようにグラフィックス・ハードウェアの少なくとも1つの構成要素をプログラミングするために、プログラム命令セットを前記少なくとも1つの構成要素に伝送すること、および
(A)中間メモリ・ターゲットからデータをグラフィックス・ハードウェアの前記少なくとも1つの構成要素に入力すること、および(B)グラフィックス・ハードウェアの前記少なくとも1つの構成要素から中間メモリ・ターゲットにデータを出力すること、のうちの1つ
を備えることを特徴とする方法。 - 第2の専門化された機能を実行するようにグラフィックス・ハードウェアの前記少なくとも1つの構成要素をプログラミングするために、第2のプログラム命令セットを前記少なくとも1つの構成要素に伝送すること、および
中間メモリ・ターゲットからの前記データを、前記少なくとも1つの構成要素への入力として再使用することをさらに含む
ことを特徴とする請求項1に記載の方法。 - 前記中間メモリ・ターゲットは、ビデオ・メモリの一部であることを特徴とする請求項1に記載の方法。
- 前記中間メモリ・ターゲット内のデータは、持続することを特徴とする請求項1に記載の方法。
- 前記中間メモリ・ターゲットの解像度は、可変的に設定されることを特徴とする請求項1に記載の方法。
- 前記少なくとも1つの構成要素は、手続き型シェーダを含むことを特徴とする請求項1に記載の方法。
- 前記手続き型シェーダは、頂点シェーダおよびピクセル・シェーダのうちの1つであることを特徴とする請求項6に記載の方法。
- 第1の中間メモリ・ターゲット内のデータは、第2の中間メモリ・ターゲット内のデータとは異なる種類および量のピクセル・データを表すことを特徴とする請求項1に記載の方法。
- 請求項1の方法を提供するための、オペレーティング・システム、ドライバ・コード、アプリケーション・プログラミング・インターフェース、ツール・キット、およびコプロセス・デバイスのうちの少なくとも1つ。
- 請求項1に記載の方法を実行するための、コンピュータ実行可能命令を搬送する被変調データ信号。
- 請求項1に記載の方法を実行する手段を備えたコンピューティング・デバイス。
- グラフィックス・システム内の少なくとも1つのハードウェア構成要素を介して、少なくとも1つの中間メモリ・ターゲットとインターフェースするためのコンピュータ実行可能モジュールを備えるアプリケーション・プログラミング・インターフェースであって、前記モジュールは、
専門化された機能を実行するように前記少なくとも1つのハードウェア構成要素をプログラミングするために、プログラム命令セットを前記少なくとも1つのハードウェア構成要素に伝送することを備える方法を実行し、前記専門化された機能は、
(A)中間メモリ・ターゲットからデータを前記少なくとも1つのハードウェア構成要素に入力すること、および(B)前記少なくとも1つのハードウェア構成要素から中間メモリ・ターゲットにデータを出力すること、のうちの1つを含む
ことを特徴とするアプリケーション・プログラミング・インターフェース。 - 専門化された機能を実行するように前記少なくとも1つのハードウェア構成要素をプログラミングするために、第2のプログラム命令セットを前記少なくとも1つのハードウェア構成要素に伝送することをさらに含み、前記専門化された機能は、
中間メモリ・ターゲットからの前記データを、前記少なくとも1つのハードウェア構成要素への入力として再使用することを含む
ことを特徴とする請求項12に記載のアプリケーション・プログラミング・インターフェース。 - 前記中間メモリ・ターゲットは、ビデオ・メモリの一部であることを特徴とする請求項12に記載のアプリケーション・プログラミング・インターフェース。
- 前記中間メモリ・ターゲット内のデータは、持続することを特徴とする請求項12に記載のアプリケーション・プログラミング・インターフェース。
- 前記中間メモリ・ターゲットの解像度は、可変的に設定されることを特徴とする請求項12に記載のアプリケーション・プログラミング・インターフェース。
- 前記少なくとも1つの構成要素は、手続き型シェーダを含むことを特徴とする請求項12に記載のアプリケーション・プログラミング・インターフェース。
- 前記手続き型シェーダは、頂点シェーダおよびピクセル・シェーダのうちの1つであることを特徴とする請求項17に記載のアプリケーション・プログラミング・インターフェース。
- 第1の中間メモリ・ターゲット内のデータは、第2の中間メモリ・ターゲット内のデータとは異なる種類および量のピクセル・データを表すことを特徴とする請求項12に記載のアプリケーション・プログラミング・インターフェース。
- 少なくとも1つのコンピュータ実行可能モジュールを格納した中間メモリ・ターゲットとインターフェースするためのコンピュータ読取り可能媒体であって、
専門化された機能を実行するように少なくとも1つのハードウェア構成要素をプログラミングするために、プログラム命令セットを前記少なくとも1つのハードウェア構成要素に伝送することを備え、前記専門化された機能は、
(A)中間メモリ・ターゲットからデータを前記少なくとも1つのハードウェア構成要素に入力すること、および(B)前記少なくとも1つのハードウェア構成要素から中間メモリ・ターゲットにデータを出力すること、のうちの1つを含む
方法を実行するためのコンピュータ実行可能命令を備えることを特徴とするコンピュータ読取り可能媒体。 - 専門化された機能を実行するように前記少なくとも1つのハードウェア構成要素をプログラミングするために、第2のプログラム命令セットを前記少なくとも1つのハードウェア構成要素に伝送することをさらに含み、前記専門化された機能は、
中間メモリ・ターゲットからの前記データを、前記少なくとも1つのハードウェア構成要素への入力として再使用することを含む
ことを特徴とする請求項20に記載のコンピュータ読取り可能媒体。 - 前記中間メモリ・ターゲットは、ビデオ・メモリの一部であることを特徴とする請求項20に記載のコンピュータ読取り可能媒体。
- 前記中間メモリ・ターゲット内のデータは、持続することを特徴とする請求項20に記載のコンピュータ読取り可能媒体。
- 前記中間メモリ・ターゲットの解像度は、可変的に設定されることを特徴とする請求項20に記載のコンピュータ読取り可能媒体。
- 前記少なくとも1つの構成要素は、手続き型シェーダを含むことを特徴とする請求項20に記載のコンピュータ読取り可能媒体。
- 前記手続き型シェーダは、頂点シェーダおよびピクセル・シェーダのうちの1つであることを特徴とする請求項25に記載のコンピュータ読取り可能媒体。
- 第1の中間メモリ・ターゲット内のデータは、第2の中間メモリ・ターゲット内のデータとは異なる種類および量のピクセル・データを表すことを特徴とする請求項20に記載のコンピュータ読取り可能媒体。
- 前記モジュールは、アプリケーション・プログラミング・インターフェース(API)、ドライブ・コード、オペレーティング・システム、およびアプリケーションのうち少なくとも1つに含まれることを特徴とする、請求項20に記載のコンピュータ読取り可能媒体。
- 中間メモリ・ターゲットに関連して使用するためのコプロセス・デバイスであって、
専門化された機能を実行するように前記コプロセス・デバイスの少なくとも1つの構成要素をプログラミングするために、前記少なくとも1つの構成要素へのプログラム命令セットを受け取る入力構成要素を備え、前記専門化された機能は、
(A)中間メモリ・ターゲットからデータを前記少なくとも1つの構成要素に入力すること、および(B)前記少なくとも1つの構成要素から中間メモリ・ターゲットにデータを出力すること、のうちの1つを含む
ことを特徴とするコプロセス・デバイス。 - 前記入力構成要素は、専門化された機能を実行するように前記少なくとも1つの構成要素をプログラミングするために、第2のプログラム命令セットを受け取り、前記専門化された機能は、
中間メモリ・ターゲットからの前記データを、前記少なくとも1つのハードウェア構成要素への入力として再使用することを含む
ことを特徴とする請求項29に記載のコプロセス・デバイス。 - 前記中間メモリ・ターゲットは、ビデオ・メモリの一部であることを特徴とする請求項29に記載のコプロセス・デバイス。
- 前記中間メモリ・ターゲット内のデータは、持続することを特徴とする請求項29に記載のコプロセス・デバイス。
- 前記中間メモリ・ターゲットの解像度は、可変的に設定されることを特徴とする請求項29に記載のコプロセス・デバイス。
- 前記コプロセス・デバイスの前記少なくとも1つの構成要素は、手続き型シェーダを含むことを特徴とする請求項29に記載のコプロセス・デバイス。
- 前記手続き型シェーダは、頂点シェーダおよびピクセル・シェーダのうちの1つであることを特徴とする請求項32に記載のコプロセス・デバイス。
- 第1の中間メモリ・ターゲット内のデータは、第2の中間メモリ・ターゲット内のデータとは異なる種類および量のピクセル・データを表すことを特徴とする請求項29に記載のコプロセス・デバイス。
- 前記コプロセス・デバイスは、少なくとも1つのグラフィックス処理ユニット(GPU)を含むことを特徴とする請求項29に記載のコプロセス・デバイス。
- ビデオ・メモリで中間メモリ・ターゲット・データ構造を使用するための方法であって、
頂点シェーダおよびピクセル・シェーダのうち少なくとも1つの第1のプログラムに関連して、前記頂点シェーダおよびピクセル・シェーダのうち少なくとも1つから出力されたデータを、前記中間メモリ・ターゲット・データ構造が受け取ること、
前記頂点シェーダおよびピクセル・シェーダのうち少なくとも1つの第2のプログラムに関連して、前記中間メモリ・ターゲット・データ構造のデータを入力すること
を備えることを特徴とする方法。 - 前記第1および第2のプログラムは、専門化された機能を実行するように前記頂点シェーダおよびピクセル・シェーダのうち少なくとも1つをプログラミングすることを特徴とする請求項38に記載の方法。
- グラフィックス・システム内の少なくとも1つのハードウェア構成要素を介して、少なくとも1つの中間メモリ・ターゲットとインターフェースするためのコンピュータ実行可能モジュールを備えるコンピュータ読取り可能媒体であって、前記モジュールは、
専門化された機能を実行するように少なくとも1つのハードウェア構成要素をプログラミングするために、プログラム命令セットを前記少なくとも1つのハードウェア構成要素に伝送する手段を備え、前記専門化された機能は、
(A)中間メモリ・ターゲットからデータを前記少なくとも1つのハードウェア構成要素に入力すること、および(B)前記少なくとも1つのハードウェア構成要素から中間メモリ・ターゲットにデータを出力すること、のうちの1つを含む
ことを特徴とするコンピュータ読取り可能媒体。 - グラフィックス・システム内で中間メモリ・ターゲットを使用するシステムであって、
専門化された機能を実行するようにグラフィックス・ハードウェアの少なくとも1つの構成要素をプログラミングするために、プログラム命令セットを前記少なくとも1つの構成要素に伝送する手段と、
(A)中間メモリ・ターゲットからデータを前記グラフィックス・ハードウェアの少なくとも1つの構成要素に入力する手段、および(B)前記グラフィックス・ハードウェアの少なくとも1つの構成要素から中間メモリ・ターゲットにデータを出力する手段、のうちの1つを備える
ことを特徴とするシステム。 - 第2の専門化された機能を実行するように前記グラフィックス・ハードウェアの少なくとも1つの構成要素をプログラミングするために、第2のプログラム命令セットを前記少なくとも1つの構成要素に伝送する手段と、
中間メモリ・ターゲットからの前記データを、前記少なくとも1つの構成要素への入力として再使用する手段とをさらに含む
ことを特徴とする請求項41に記載のシステム。 - グラフィックス・システム内の少なくとも1つのハードウェア構成要素を介して、少なくとも1つの中間メモリ・ターゲットとインターフェースするためのコンピュータ実行可能モジュールを備えるアプリケーション・プログラミング・インターフェースであって、前記モジュールは、
専門化された機能を実行するように少なくとも1つのハードウェア構成要素をプログラミングするために、プログラム命令セットを前記少なくとも1つのハードウェア構成要素に伝送する手段を備え、前記専門化された機能は、
(A)中間メモリ・ターゲットからデータを前記少なくとも1つのハードウェア構成要素に入力すること、および(B)前記少なくとも1つのハードウェア構成要素から中間メモリ・ターゲットにデータを出力すること、のうちの1つを含む
ことを特徴とするアプリケーション・プログラミング・インターフェース。 - 中間メモリ・ターゲットに関連して使用するためのコプロセス・デバイスであって、
専門化された機能を実行するように前記コプロセス・デバイスの少なくとも1つの構成要素をプログラミングするために、前記少なくとも1つの構成要素へのプログラム命令セットを受け取る手段を備え、前記専門化された機能は、
(A)中間メモリ・ターゲットからのデータを前記少なくとも1つの構成要素に入力すること、および(B)前記少なくとも1つの構成要素から中間メモリ・ターゲットにデータを出力することのうちの1つを含む
ことを特徴とするコプロセス・デバイス。 - 前記受け取る手段は、専門化された機能を実行するために前記少なくとも1つの構成要素をプログラミングする第2のプログラム命令セットを受け取り、前記専門化された機能は、
中間メモリ・ターゲットからの前記データを、前記少なくとも1つのハードウェア構成要素への入力として再使用することを含む
ことを特徴とする請求項44に記載のコプロセス・デバイス。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/196,864 US7564460B2 (en) | 2001-07-16 | 2002-07-16 | Systems and methods for providing intermediate targets in a graphics system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009195887A Division JP4922367B2 (ja) | 2002-07-16 | 2009-08-26 | グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004054891A true JP2004054891A (ja) | 2004-02-19 |
JP2004054891A5 JP2004054891A5 (ja) | 2006-06-15 |
JP4583720B2 JP4583720B2 (ja) | 2010-11-17 |
Family
ID=22727078
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003108482A Expired - Fee Related JP4583720B2 (ja) | 2002-07-16 | 2003-04-11 | グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法 |
JP2009195887A Expired - Fee Related JP4922367B2 (ja) | 2002-07-16 | 2009-08-26 | グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009195887A Expired - Fee Related JP4922367B2 (ja) | 2002-07-16 | 2009-08-26 | グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法 |
Country Status (15)
Country | Link |
---|---|
US (3) | US7564460B2 (ja) |
EP (2) | EP1383080B1 (ja) |
JP (2) | JP4583720B2 (ja) |
KR (2) | KR100969448B1 (ja) |
CN (1) | CN100507832C (ja) |
AU (1) | AU2003203499B2 (ja) |
BR (1) | BRPI0301122B1 (ja) |
CA (2) | CA2772030C (ja) |
MX (1) | MXPA03004601A (ja) |
MY (1) | MY142776A (ja) |
NO (2) | NO328438B1 (ja) |
PL (1) | PL360754A1 (ja) |
RU (1) | RU2337402C2 (ja) |
TW (2) | TWI340927B (ja) |
ZA (1) | ZA200302809B (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005322224A (ja) * | 2004-05-03 | 2005-11-17 | Microsoft Corp | 拡張グラフィックスパイプラインを提供するシステムおよび方法 |
KR100696198B1 (ko) * | 2005-12-23 | 2007-03-20 | 엠텍비젼 주식회사 | 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는임베디드 시스템 |
US7978205B1 (en) | 2004-05-03 | 2011-07-12 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
Families Citing this family (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6828975B2 (en) | 2001-03-01 | 2004-12-07 | Microsoft Corporation | Method and system for managing graphics objects in a graphics display system |
US7564460B2 (en) | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
US6825843B2 (en) * | 2002-07-18 | 2004-11-30 | Nvidia Corporation | Method and apparatus for loop and branch instructions in a programmable graphics pipeline |
US6809732B2 (en) * | 2002-07-18 | 2004-10-26 | Nvidia Corporation | Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions |
US6975321B1 (en) * | 2003-05-05 | 2005-12-13 | Nvidia Corporation | System and method for generating multiple outputs in a single shader processing pass in a hardware graphics pipeline |
US7681112B1 (en) | 2003-05-30 | 2010-03-16 | Adobe Systems Incorporated | Embedded reuse meta information |
US8274517B2 (en) * | 2003-11-14 | 2012-09-25 | Microsoft Corporation | Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques |
US7248265B2 (en) | 2004-04-16 | 2007-07-24 | Apple Inc. | System and method for processing graphics operations with graphics processing unit |
US7231632B2 (en) | 2004-04-16 | 2007-06-12 | Apple Computer, Inc. | System for reducing the number of programs necessary to render an image |
US8134561B2 (en) | 2004-04-16 | 2012-03-13 | Apple Inc. | System for optimizing graphics operations |
US8704837B2 (en) * | 2004-04-16 | 2014-04-22 | Apple Inc. | High-level program interface for graphics operations |
US7636489B2 (en) | 2004-04-16 | 2009-12-22 | Apple Inc. | Blur computation algorithm |
US7847800B2 (en) | 2004-04-16 | 2010-12-07 | Apple Inc. | System for emulating graphics operations |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
US8130237B2 (en) | 2004-06-24 | 2012-03-06 | Apple Inc. | Resolution independent user interface design |
US7397964B2 (en) | 2004-06-24 | 2008-07-08 | Apple Inc. | Gaussian blur approximation suitable for GPU |
US8068103B2 (en) | 2004-06-24 | 2011-11-29 | Apple Inc. | User-interface design |
US7490295B2 (en) | 2004-06-25 | 2009-02-10 | Apple Inc. | Layer for accessing user interface elements |
US7652678B2 (en) | 2004-06-25 | 2010-01-26 | Apple Inc. | Partial display updates in a windowing system using a programmable graphics processing unit |
US7761800B2 (en) | 2004-06-25 | 2010-07-20 | Apple Inc. | Unified interest layer for user interface |
US8239749B2 (en) | 2004-06-25 | 2012-08-07 | Apple Inc. | Procedurally expressing graphic objects for web pages |
US8302020B2 (en) | 2004-06-25 | 2012-10-30 | Apple Inc. | Widget authoring and editing environment |
US8566732B2 (en) | 2004-06-25 | 2013-10-22 | Apple Inc. | Synchronization of widgets and dashboards |
US8453065B2 (en) | 2004-06-25 | 2013-05-28 | Apple Inc. | Preview and installation of user interface elements in a display environment |
US7730026B2 (en) | 2004-07-01 | 2010-06-01 | Apple Inc. | Method and system using reusable state information for synchronization and maintenance of data |
US8044951B1 (en) | 2004-07-02 | 2011-10-25 | Nvidia Corporation | Integer-based functionality in a graphics shading language |
US7958498B1 (en) | 2004-07-02 | 2011-06-07 | Nvidia Corporation | Methods and systems for processing a geometry shader program developed in a high-level shading language |
US7746347B1 (en) * | 2004-07-02 | 2010-06-29 | Nvidia Corporation | Methods and systems for processing a geometry shader program developed in a high-level shading language |
US8624906B2 (en) * | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
DE102004051567A1 (de) * | 2004-10-22 | 2006-05-04 | Siemens Ag | Verfahren zur schnellen Bildverarbeitung zweidimensionaler Bilder |
US8736623B1 (en) | 2004-11-15 | 2014-05-27 | Nvidia Corporation | Programmable DMA engine for implementing memory transfers and video processing for a video processor |
US7227551B2 (en) | 2004-12-23 | 2007-06-05 | Apple Inc. | Manipulating text and graphic appearance |
US8140975B2 (en) | 2005-01-07 | 2012-03-20 | Apple Inc. | Slide show navigation |
US8004515B1 (en) * | 2005-03-15 | 2011-08-23 | Nvidia Corporation | Stereoscopic vertex shader override |
US7852353B1 (en) | 2005-03-31 | 2010-12-14 | Apple Inc. | Encoding a transparency (alpha) channel in a video bitstream |
GB2425030A (en) * | 2005-04-09 | 2006-10-11 | Tenomichi Ltd | Managed network render targets for routing graphical information |
US8452090B1 (en) | 2005-04-25 | 2013-05-28 | Apple Inc. | Bayer reconstruction of images using a GPU |
US7289127B1 (en) | 2005-04-25 | 2007-10-30 | Apple, Inc. | Multi-conic gradient generation |
US8543931B2 (en) | 2005-06-07 | 2013-09-24 | Apple Inc. | Preview including theme based installation of user interface elements in a display environment |
US8495015B2 (en) | 2005-06-21 | 2013-07-23 | Apple Inc. | Peer-to-peer syncing in a decentralized environment |
US7523146B2 (en) | 2005-06-21 | 2009-04-21 | Apple Inc. | Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment |
DE102005031642B4 (de) * | 2005-07-06 | 2008-05-29 | Siemens Ag | Mobiler Defibrillator |
US8793576B2 (en) | 2005-10-14 | 2014-07-29 | Apple Inc. | System and method for computing a desktop picture |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
US7793169B2 (en) * | 2005-10-19 | 2010-09-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Intelligent table-driven interleaving |
US9104294B2 (en) | 2005-10-27 | 2015-08-11 | Apple Inc. | Linked widgets |
US7954064B2 (en) | 2005-10-27 | 2011-05-31 | Apple Inc. | Multiple dashboards |
US7752556B2 (en) | 2005-10-27 | 2010-07-06 | Apple Inc. | Workflow widgets |
US7743336B2 (en) | 2005-10-27 | 2010-06-22 | Apple Inc. | Widget security |
US8543824B2 (en) | 2005-10-27 | 2013-09-24 | Apple Inc. | Safe distribution and use of content |
US7483037B2 (en) | 2005-10-27 | 2009-01-27 | Apple, Inc. | Resampling chroma video using a programmable graphics processing unit to provide improved color rendering |
US7707514B2 (en) | 2005-11-18 | 2010-04-27 | Apple Inc. | Management of user interface elements in a display environment |
CN100395778C (zh) * | 2006-03-15 | 2008-06-18 | 威盛电子股份有限公司 | 绘图系统以及绘图控制方法 |
US20070268298A1 (en) * | 2006-05-22 | 2007-11-22 | Alben Jonah M | Delayed frame buffer merging with compression |
TWI498850B (zh) * | 2006-05-22 | 2015-09-01 | Nvidia Corp | 訊框緩衝區歸併的方法、電腦可讀取記憶體、與電腦系統 |
US8154554B1 (en) | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US8869027B2 (en) | 2006-08-04 | 2014-10-21 | Apple Inc. | Management and generation of dashboards |
US7860826B2 (en) | 2006-08-04 | 2010-12-28 | Apple Inc. | Method and system for using global equivalency sets to identify data during peer-to-peer synchronization |
US8232991B1 (en) | 2006-11-03 | 2012-07-31 | Nvidia Corporation | Z-test result reconciliation with multiple partitions |
US7760767B2 (en) | 2007-01-05 | 2010-07-20 | Apple Inc. | Wide area peer-to-peer synching in a decentralized environment |
US7657769B2 (en) | 2007-01-08 | 2010-02-02 | Marcy M Scott | N-way synchronization of data |
KR101349171B1 (ko) * | 2007-01-17 | 2014-01-09 | 삼성전자주식회사 | 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법 |
US8954871B2 (en) | 2007-07-18 | 2015-02-10 | Apple Inc. | User-centric widgets and dashboards |
US8683126B2 (en) | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8667415B2 (en) | 2007-08-06 | 2014-03-04 | Apple Inc. | Web widgets |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US8659601B1 (en) * | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US8156467B2 (en) | 2007-08-27 | 2012-04-10 | Adobe Systems Incorporated | Reusing components in a running application |
US8176466B2 (en) | 2007-10-01 | 2012-05-08 | Adobe Systems Incorporated | System and method for generating an application fragment |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US9619304B2 (en) | 2008-02-05 | 2017-04-11 | Adobe Systems Incorporated | Automatic connections between application components |
US8681861B2 (en) | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8581912B2 (en) | 2008-06-27 | 2013-11-12 | Microsoft Corporation | Dynamic subroutine linkage optimizing shader performance |
US8656293B1 (en) | 2008-07-29 | 2014-02-18 | Adobe Systems Incorporated | Configuring mobile devices |
US8489851B2 (en) | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
US8289341B2 (en) * | 2009-06-29 | 2012-10-16 | Intel Corporation | Texture sampling |
US8922555B2 (en) * | 2009-10-07 | 2014-12-30 | Nvidia Corporation | Pixel shader output map |
US9530189B2 (en) | 2009-12-31 | 2016-12-27 | Nvidia Corporation | Alternate reduction ratios and threshold mechanisms for framebuffer compression |
US8340416B2 (en) * | 2010-06-25 | 2012-12-25 | Microsoft Corporation | Techniques for robust color transfer |
KR101926570B1 (ko) | 2011-09-14 | 2018-12-10 | 삼성전자주식회사 | 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치 |
US9591309B2 (en) | 2012-12-31 | 2017-03-07 | Nvidia Corporation | Progressive lossy memory compression |
US9607407B2 (en) | 2012-12-31 | 2017-03-28 | Nvidia Corporation | Variable-width differential memory compression |
US10043234B2 (en) | 2012-12-31 | 2018-08-07 | Nvidia Corporation | System and method for frame buffer decompression and/or compression |
TWI517137B (zh) | 2013-06-05 | 2016-01-11 | 晨星半導體股份有限公司 | 將影像寫入記憶體的方法及其裝置 |
CN104252414B (zh) * | 2013-06-25 | 2018-03-27 | 晨星半导体股份有限公司 | 将影像写入存储器的方法及其装置 |
WO2015009294A2 (en) * | 2013-07-17 | 2015-01-22 | Spinella Ip Holdings, Inc. | System and method for histogram computation using a graphics processing unit |
US9832388B2 (en) | 2014-08-04 | 2017-11-28 | Nvidia Corporation | Deinterleaving interleaved high dynamic range image by using YUV interpolation |
EP3012737A1 (en) * | 2014-10-24 | 2016-04-27 | Thomson Licensing | Devices and methods for generating elementary geometries |
DE112014002477T5 (de) * | 2014-11-21 | 2016-09-29 | Intel Corporation | Vorrichtung und Verfahren für eine effiziente Grafikverarbeitung in einer virtuellen Ausführungsumgebung |
CN105719229B (zh) * | 2014-12-19 | 2020-03-03 | 谷歌有限责任公司 | 一种基于指令流截取的应用程序透明化的分辨率控制 |
US10108321B2 (en) * | 2015-08-31 | 2018-10-23 | Microsoft Technology Licensing, Llc | Interface for defining user directed partial graph execution |
CN105678679B (zh) * | 2015-12-31 | 2019-02-12 | 公安部第三研究所 | 大规模图片集合快速预览的系统及方法 |
JP2019204348A (ja) | 2018-05-24 | 2019-11-28 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにプログラム |
KR20200145665A (ko) * | 2019-06-19 | 2020-12-30 | 삼성전자주식회사 | 최적화된 픽셀 셰이더 속성 관리 |
US20210272347A1 (en) * | 2020-02-28 | 2021-09-02 | Advanced Micro Devices, Inc. | Fully utilized hardware in a multi-tenancy graphics processing unit |
CN114115873A (zh) * | 2021-11-18 | 2022-03-01 | 网易(杭州)网络有限公司 | 着色器数据处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000045516A1 (en) * | 1999-01-29 | 2000-08-03 | Interactive Silicon, Inc. | System and method for parallel data compression and decompression |
JP2002063590A (ja) * | 2000-08-23 | 2002-02-28 | Nintendo Co Ltd | グラフィクスシステム用再循環シェードツリーブレンダ |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5392391A (en) * | 1991-10-18 | 1995-02-21 | Lsi Logic Corporation | High performance graphics applications controller |
TW219989B (en) | 1992-05-29 | 1994-02-01 | Ind Tech Res Inst | A screen refreshing method which is independent of resolution |
US5388206A (en) * | 1992-11-13 | 1995-02-07 | The University Of North Carolina | Architecture and apparatus for image generation |
US5422657A (en) | 1993-09-13 | 1995-06-06 | Industrial Technology Research Institute | Graphics memory architecture for multimode display system |
TW299406B (en) | 1993-10-29 | 1997-03-01 | Ind Tech Res Inst | Display memory structure of multi-mode display system |
US6067098A (en) * | 1994-11-16 | 2000-05-23 | Interactive Silicon, Inc. | Video/graphics controller which performs pointer-based display list video refresh operation |
WO1996031844A1 (fr) * | 1995-04-05 | 1996-10-10 | Hitachi, Ltd. | Systeme graphique |
US5793374A (en) * | 1995-07-28 | 1998-08-11 | Microsoft Corporation | Specialized shaders for shading objects in computer generated images |
US5793371A (en) | 1995-08-04 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for geometric compression of three-dimensional graphics data |
US6496190B1 (en) * | 1997-07-02 | 2002-12-17 | Mental Images Gmbh & Co Kg. | System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system |
US5969728A (en) * | 1997-07-14 | 1999-10-19 | Cirrus Logic, Inc. | System and method of synchronizing multiple buffers for display |
US6353460B1 (en) * | 1997-09-30 | 2002-03-05 | Matsushita Electric Industrial Co., Ltd. | Television receiver, video signal processing device, image processing device and image processing method |
US6421053B1 (en) * | 1999-05-24 | 2002-07-16 | International Business Machines Corporation | Block rendering method for a graphics subsystem |
TW444183B (en) | 1999-06-28 | 2001-07-01 | Integrated Technology Express | Device and method for image rotation |
JP3350655B2 (ja) | 2000-01-25 | 2002-11-25 | 株式会社ナムコ | ゲームシステム及び情報記憶媒体 |
US6819325B2 (en) * | 2000-03-07 | 2004-11-16 | Microsoft Corporation | API communications for vertex and pixel shaders |
US7159041B2 (en) * | 2000-03-07 | 2007-01-02 | Microsoft Corporation | Method and system for defining and controlling algorithmic elements in a graphics display system |
US6862730B1 (en) * | 2000-04-26 | 2005-03-01 | Lucent Technologies Inc. | Register allocation in code translation between processors |
US7564460B2 (en) | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
-
2002
- 2002-07-16 US US10/196,864 patent/US7564460B2/en not_active Expired - Fee Related
-
2003
- 2003-04-07 EP EP03007908.1A patent/EP1383080B1/en not_active Expired - Lifetime
- 2003-04-07 NO NO20031556A patent/NO328438B1/no not_active IP Right Cessation
- 2003-04-07 CA CA2772030A patent/CA2772030C/en not_active Expired - Fee Related
- 2003-04-07 CA CA2424650A patent/CA2424650C/en not_active Expired - Fee Related
- 2003-04-07 EP EP16202270.1A patent/EP3156965A1/en not_active Withdrawn
- 2003-04-07 AU AU2003203499A patent/AU2003203499B2/en not_active Ceased
- 2003-04-09 BR BRPI0301122A patent/BRPI0301122B1/pt not_active IP Right Cessation
- 2003-04-10 MY MYPI20031322A patent/MY142776A/en unknown
- 2003-04-10 CN CNB031217990A patent/CN100507832C/zh not_active Expired - Fee Related
- 2003-04-10 ZA ZA200302809A patent/ZA200302809B/xx unknown
- 2003-04-11 JP JP2003108482A patent/JP4583720B2/ja not_active Expired - Fee Related
- 2003-04-11 RU RU2003110511/09A patent/RU2337402C2/ru not_active IP Right Cessation
- 2003-04-14 KR KR1020030023429A patent/KR100969448B1/ko active IP Right Grant
- 2003-04-15 TW TW092108739A patent/TWI340927B/zh not_active IP Right Cessation
- 2003-04-15 TW TW099132084A patent/TWI361395B/zh not_active IP Right Cessation
- 2003-05-23 MX MXPA03004601A patent/MXPA03004601A/es active IP Right Grant
- 2003-06-17 PL PL03360754A patent/PL360754A1/xx unknown
-
2009
- 2009-06-22 US US12/489,316 patent/US8063909B2/en not_active Expired - Fee Related
- 2009-08-26 JP JP2009195887A patent/JP4922367B2/ja not_active Expired - Fee Related
-
2010
- 2010-02-04 NO NO20100178A patent/NO331263B1/no not_active IP Right Cessation
- 2010-02-26 KR KR1020100017849A patent/KR100995157B1/ko active IP Right Grant
-
2011
- 2011-10-31 US US13/286,054 patent/US8379035B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000045516A1 (en) * | 1999-01-29 | 2000-08-03 | Interactive Silicon, Inc. | System and method for parallel data compression and decompression |
JP2002063590A (ja) * | 2000-08-23 | 2002-02-28 | Nintendo Co Ltd | グラフィクスシステム用再循環シェードツリーブレンダ |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005322224A (ja) * | 2004-05-03 | 2005-11-17 | Microsoft Corp | 拡張グラフィックスパイプラインを提供するシステムおよび方法 |
US7978205B1 (en) | 2004-05-03 | 2011-07-12 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US9064334B2 (en) | 2004-05-03 | 2015-06-23 | Microsoft Technology Licensing, Llc | Systems and methods for providing an enhanced graphics pipeline |
KR100696198B1 (ko) * | 2005-12-23 | 2007-03-20 | 엠텍비젼 주식회사 | 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는임베디드 시스템 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4583720B2 (ja) | グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法 | |
US7671862B1 (en) | Systems and methods for providing an enhanced graphics pipeline | |
US7570267B2 (en) | Systems and methods for providing an enhanced graphics pipeline | |
JP4371355B2 (ja) | 制御可能なテクスチャサンプリングを提供するためのシステムおよび方法 | |
US8319784B2 (en) | Fast reconfiguration of graphics pipeline state | |
US20040169671A1 (en) | Effects framework pipeline integration with programmable shader |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060411 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060411 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090526 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090826 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20091015 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20091028 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100312 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20100507 |
|
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: 20100803 |
|
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: 20100901 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130910 Year of fee payment: 3 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |