JP4766906B2 - 拡張グラフィックスパイプラインを提供するシステムおよび方法 - Google Patents

拡張グラフィックスパイプラインを提供するシステムおよび方法 Download PDF

Info

Publication number
JP4766906B2
JP4766906B2 JP2005114573A JP2005114573A JP4766906B2 JP 4766906 B2 JP4766906 B2 JP 4766906B2 JP 2005114573 A JP2005114573 A JP 2005114573A JP 2005114573 A JP2005114573 A JP 2005114573A JP 4766906 B2 JP4766906 B2 JP 4766906B2
Authority
JP
Japan
Prior art keywords
common core
graphics
vertex
data
shader
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.)
Active
Application number
JP2005114573A
Other languages
English (en)
Other versions
JP2005322224A (ja
Inventor
パテル アマール
エヌ.ボイド チャールズ
アール.ブリス デビッド
エム.ジェイ.ノイル ジェフ
エー.トエル マイケル
エッチ.ライト ステファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005322224A publication Critical patent/JP2005322224A/ja
Application granted granted Critical
Publication of JP4766906B2 publication Critical patent/JP4766906B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ハードウェアが新規かつ改善された機能をグラフィックパイプラインに追加するために開発された、ソフトウェアを使用する拡張グラフィックパイプラインを可能にするグラフィック処理装置(GPU)に関する。
コンピュータシステムは、グラフィカルオブジェクトを表示画面上に表示するために一般的に使用される。3次元(3−D)コンピュータグラフィックスの目的は、一般に、1つまたは複数のオブジェクトを3次元で現実的に表現する、コンピュータ画面上の2次元(2−D)画像を作成することである。現実世界では、物体は、実際の高さと実際の幅と実際の奥行きとを持って3次元を占有している。写真は、3−D空間の2−D表現の一例である。基本となる画像が、通常、3−D幾何学形状および表面テクスチャでモデリングされること以外、3−Dコンピュータグラフィックは、一般に、3−D世界をコンピュータ画面の2−D空間に表現する点で、写真に類似している。
3−Dコンピュータグラフィックスによって作成された画像は、ビデオ娯楽ゲームから航空機の飛行シミュレーションに至る広範囲の用途において、所与の時点における個人の視界を現実的な方法で表現するために用いられる。3−Dコンピュータグラフィックスのよく知られた例としては、ターミネータII、ジュラシックパーク、トイストーリーなどのようなハリウッド映画の特殊効果がある。
ここ数年の間に特に急成長を遂げた産業として、コンピュータゲーム産業が挙げられる。現世代のコンピュータゲームは、3−Dグラフィックス技術をますます旺盛に用いている。同時に、プレイ速度はさらに高速化している。これらが組み合わさって、比較的安価なシステムにおいて、3−Dグラフィックスの迅速かつ柔軟なレンダリングが真に求められるようになってきている。
3−Dコンピュータグラフィック表現を作成するために、通常、描かれるオブジェクトは、コンピュータ内で数学的モデルとして表現される。例を挙げると、3−Dモデルは、例えば幅、高さ、奥行きにそれぞれ対応するx、y、およびz軸からなる座標系内の幾何学的な点(geometric points)で構成することができる。オブジェクトは、頂点と呼ばれる、一連の点によって定義される。点すなわち頂点の位置は、そのx、y、およびz座標(または他の座標系)によって定義される。グラフィックス用語では、1つの頂点は点であり、2つの頂点は線または線セグメントであり、3つの頂点は、3つすべてが「プリミティブ」である場合は三角形を定義する。これらの点が3つ以上接続されると、三角形を最も単純なポリゴンとする、1つのポリゴンが形成される。
画面上で3次元(3−D)グラフィックスをレンダリングして表示するには、通常、多くの計算および演算を行う。単純なグラフィックスシステムでは、そのような計算は、中央処理装置(CPU)とグラフィック処理装置(GPU)により、あるレベルの協調または共用処理に従って行われる。例示のシナリオでは、命令が処理され、いくつかの初期計算がCPUで行われた後、レンダリングされるオブジェクトを定義する一組の座標点または頂点は、グラフィックスパイプラインでGPUによってさらに処理されるために、ビデオメモリに記憶される。テッセレータは、表現されているオブジェクトの表面を効果的にカバーするよう設計された所定のアルゴリズム(テッセレーションとして知られる)に従いグラフィックスデータを複数の単純なポリゴンに分解することができる。現在、大部分のグラフィックスパイプラインでは、データは、その後、GPUに提供された命令に応じて、1つまたは複数のプロシージャルシェーダによる演算を受けることができる。
プロシージャルシェーダは、グラフィックスデータに対して特化した演算を実行するための、GPUの特化した処理サブユニットである。プロシージャルシェーダの一例は、一般に頂点を演算する頂点シェーダである。例えば、頂点シェーダは、位置、色、およびテクスチャ座標の演算を個々の頂点に適用することができる。頂点シェーダは、固定の、またはプログラム可能な関数演算を、グラフィックスパイプラインのビデオメモリで指定された頂点のストリームに対して実行する。頂点シェーダは、追加の幾何学形状(複数の頂点)を生成することはできないが、ホストから頂点シェーダにダウンロードされたプログラムを介して、アルゴリズム変換用に指定された頂点を演算することはできる。
頂点シェーダの後段に一般に置かれる、プロシージャルシェーダの別の例がピクセルシェーダである。例えば、頂点シェーダの出力は、ピクセルシェーダが演算するピクセル全域を定義する非プロシージャルシェーダユニットである、セットアップエンジンと呼ばれるプログラム不可能なユニットを通過することができる。ピクセル全域は次いで、個々のピクセルを演算するピクセルシェーダによって演算することができる。ピクセルシェーダから出力値がフレームバッファに送信され、そこで出力値は画面に表示されるのを待つか、またはホストシステムによる取り出しを待つ。3−D幾何学形状は一般に、三角形(3つの頂点の集合)と一致するが、現在では、そのような三角形(3つの関連する頂点の集合)、線セグメント、または線のどれか(2つの関連する頂点の集合)を直接演算するプロシージャルシェーダはない。
プログラム可能な場合、「シェーダ」はシェーディングを実行するGPUのハードウェアサブユニットを意味する場合がある。また「シェーダ」は、シェーディングを実行するためにシェーダ(ハードウェア)によって使用される、メモリ、例えばレジスタ記憶に後でロードされる、GPUにダウンロードされる一組の命令またはトークンを意味する場合があるので、「シェーダ」という用語は誤用されることに留意されたい。この用語は、協働する両者を意味する場合もある。したがって、本明細書ではこの語を一般的にはどちらの意味にでも使用する場合があるので、「サブユニット」という用語もシェーダという用語に関連して使用される場合には、両方の意味を含むものと解釈されるべきだが、この用語は、シェーディングに関連付けられた処理を実行するGPUのサブユニットを意味するものと解釈されるべきである。
今日のグラフィックスアーキテクチャにおける「フレームバッファ」という用語は、グラフィック処理装置のセットアップエンジンまたはピクセル処理装置の出力のためだけに確保された、ビデオメモリの事前に分割され、事前に割り当てられ、事前に定義された部分を一般に意味しない。フレームバッファは、一般にラスタ化および/またはデジタル/アナログコンバータ(DAC)出力処理に関して使用されるいかなるメモリ(一般に、GPUとの相互運用に含まれるビデオメモリ)を意味するということにも留意されたい。この点で、ラスタ化という用語がより一般的に使用される場合があるが、グラフィックスパイプラインのピクセル処理またはセットアップエンジン処理に関して実行される処理は、一般にラスタ化と呼ばれる。一方、スキャン出力またはDAC出力は、フレームバッファの内容に基づいて、信号をモニタまたはLCDに送る処理である。
今日、フレームバッファの値を、画面への表示以外の目的に使用することができるが、その用途は限られている。例えば、その値を保存、印刷、更なる変換などのためにピクセルシェーダまたは頂点シェーダが演算した後で、ホストのアプリケーションに戻すことが望まれる場合がある。このような場合、これらの値は、「技術的」には読み取ることができる。しかし、表示するために画像をバッファリングするだけの限定された部分ではなく、ビデオメモリにある値をも取り出すことは、ホストメモリ、CPU、および特定のグラフィックスハードウェアとの使用のためにビデオメモリを構成する方法に関する上級知識の協調を必要とする非常に困難なタスクである。フレームバッファではなく、ビデオメモリのいかなる部分でも読み取られる場合、これは特に当てはまる。実際には不可能ではないが、テッセレータ、頂点シェーダ、およびピクセルシェーダによる出力のために使用されるビデオメモリの中間記憶を読み取ることは容易なことではない。場合によっては、テッセレータ、頂点シェーダ、およびピクセルシェーダの出力は、ビデオメモリに到達しない場合があるが、その代わり、複数のGPUグラフィックス処理の段階(例えば、頂点シェーダからの出力は、一般に、ビデオメモリに到達せずに、事前に定義された経路を介してピクセルシェーダに送られる)間で使用するために特化したデータ経路に限定することができる。GPU演算は、特化されたアーキテクチャに従って非常に高速に行われるので、現在のグラフィックスパイプラインの中間ビデオメモリ記憶の読み取りは、ラスタ化または他の演算のためにその出力がフレームバッファに到達するまで実現不能である。
従来型システムの中にあるピクセルシェーダの出力を取り出すフレームバッファメモリには、GPUによって処理された画像のようなグラフィックスデータを保存する(または演算する)ために、ホストCPUによって周知の方法でアクセスすることができる。しかし、このデータは、依然として、そのような更なる演算のためにアクセスされ、ホストCPUに取り出され、戻される必要がある。図1Bは、グラフィックスパイプラインによるデータに対する更なる演算を達成するために、フレームバッファメモリからデータの出力に対して何を行う必要があるかを示す。GPU演算として表現される1周期のパイプライン処理の演算の後、およびホストCPUにフレームバッファから値を取り出して戻した後、ホストCPUは、それ以上のいかなる処理のためにでも、グラフィックスパイプラインを通して値を送って、戻すよう協調する。したがって、当技術分野で望まれる2つの主要な事柄は、(1)頂点シェーダまたはピクセルシェーダのようなサブコンポーネントから出力されたデータを、フレームバッファメモリに到達する前にグラフィックスパイプライン内で再利用、すなわち再処理する機能と、(2)ホスト資源およびメモリに関係せずに反復的に上記機能を行う機能である。
図1Aに示すように、コンピューティングシステムは、ホストCPUとグラフィックスハードウェアの間で分割される。CPUは、グラフィックAPIを使用することを必要とするアプリケーションおよびサービスによる、グラフィックAPIの呼び出しの実施に役立つ。従来、アプリケーションおよびドライバはCPU側に置かれており、それらのソースからの情報はモニタに表示されるように送られる。まず、情報は、APIに従ってCPUによってパッケージされ、CPUからGPUに送られる。次いで、アプリケーションからの情報は、頂点シェーダによってアクセスされるまでメモリで待機する。頂点シェーダがその演算と判断すると、頂点シェーダから出力された情報が、ピクセルシェーダによってアクセスされるまでは特別なデータ経路を通してピクセルシェーダに出力され(出力をビデオメモリに置くことは、一般的に非常に遅い)、頂点シェーダはアイドル状態のままであるか、またはさらなるデータの処理を続ける。ピクセルシェーダがその演算を完了すると、情報は、ディスプレイにスキャンアウトされるフレームバッファに置かれるか、または更なる演算のためにホストに戻される。
今日の頂点およびピクセルシェーダの特化した機能を開示する特化した3−DグラフィックスAPIが開発された。この点について、開発者は、頂点シェーダを効果的にプログラミングし、特化された挙動を実行する頂点シェーダユニットに命令または小さいプログラムをダウンロードすることができる。例えば、APIは、頂点シェーダのより多くのレジスタに関連付けられた機能、例えばレジスタレベルにおける浮動小数点数に関する特化した頂点シェーダ機能を公開する。さらに、超高速頂点シェーダに浮動小数点数の一部のみを戻させる1つの命令群を実施することが可能である。命令が頂点シェーダの制限を考慮し、関連付けられたレジスタ記憶以上に超過しないならば、それらの命令をダウンロードすることによって様々な機能を達成することができる。
最も顕著なことは、頂点シェーダの段階の機能が、変換、照明、また場合によってはテクスチャ変換のためのものであることである。基本的に、変換は、頂点がどこにいつ表示されるべきかに関するデータである位置データを取り、それをモニタ、すなわち2次元画面空間用のデータに変換することである。従来、頂点変換処理は、修正せずに位置データを渡すか、または行列を使用してそのデータを修正する。頂点シェーダの段階は、通常、変換関数、照明関数、およびいくつかのテクスチャ関数を実行することに限られる。
ゲームがグラフィックスの細部の水準を高めるにつれ、ポリゴン密度が増し、照明および他の頂点シェーダ技術は頂点処理ステップとしてさらに重要性を増す。静的照明は、高品質であるがために照明の一般的な形式となっているが、これは、通常、頂点シェーダで計算され、テクスチャとして記憶される。静的照明は、すべての照明情報をテクスチャに置くので、頂点ごとの命令が前もって与えられない場合だけは、実行時にその情報を修正し、動的照明を可能にすることは困難である。場合によっては、頂点シェーダは、頂点座標からテクスチャ座標への行列変換を適用する。これは、通常、球体および立方体の反映マッピングおよびテクスチャアニメーションのために行われる。
典型的な照明の種類は、位置、方向性、またはスポットライトを含む頂点シェーダによって実行される。このような照明を追加するために、大部分が行列演算である数学的計算が、アプリケーションで定義された照明の種類を反映するように頂点を変更する。様々な照明があるが、これらは、通常、日光や街路灯のような光源が様々な特性を有する現実性を模倣する。これらの照明は、頂点シェーダの段階が計算するための複数の組合せを作成する位置、方向性、またはスポットライトであってよい。
したがって、頂点シェーダを使用して実行される幾何学的処理には、データに適用する各種変換、頂点に対する照明環境、およびテクスチャ変換のための素材が含まれる。固定関数とプログラム可能な頂点シェーダは、どちらも一般に、パイプラインにおけるその段階中にそれらの方法で機能する。アプリケーションがそれらの領域で処理される情報をさらに多く有する場合、頂点シェーダには障害が生じ、グラフィックスパイプラインの他のコンポーネントはアイドル状態のままとなる。
ピクセルシェーダに対して、特化されたピクセルシェーディング機能は、ピクセルシェーダに命令をダウンロードすることによって獲得することができる。例えば、線形補間機構をピクセルシェーダに提供する機能が公開される。さらに、多くの異なる演算修飾子の機能が、ピクセルシェーダに合わせた命令群と共に開発者に公開される。例えば、否定する機能、再マッピングする機能、バイアスをかける機能、および他の機能は、効率よいピクセルシェーディングが望ましい多くのグラフィックスアプリケーションには非常に役立つが、それら機能は単一命令の一部として実行されるので、それらはその命令に対する修飾子として表現することが最善である。すなわち、上記の機能はグラフィックス演算に有利であり、既に特化されたピクセルおよび頂点シェーダ命令群へのそれらの関数の組み込みは、開発が容易になり、および性能が改善する点で多大な付加価値を生む。したがって、ピクセルシェーダの命令回数の限度および他のハードウェア制限を超えないならば、それらの命令をダウンロードすることによって様々な機能を獲得することができる。
ピクセルシェーダはいくつかの行列演算(例えば、照明に対するベクトル変換)を実行するが、ピクセルシェーダの機能を、頂点を変換するために頂点シェーダによって実行されるさらに複雑な行列演算とは対照的に、多少簡素な数学的計算機能を有するとみなすことが有用な場合がある。この場合、各頂点は、処理を必要とする多くの値によって表されることができる。ピクセルシェーダに関与する数学は、浮動小数点演算に類似しており、それらの計算は、ピクセルをシェーディングし、反射率、光沢、凹凸を作成する。情報がピクセルシェーダを通過する際に実行することができる計算数は限られている。これらの限度があるため、一部の情報は、各ピクセルに対して複数のテクスチャを作成するためにマルチパス演算を必要とする。また、各パスは、パイプラインの複数のクロック周期を含む。
頂点シェーダは所与の頂点に対する行列を計算し、ピクセルシェーダは大部分の浮動小数点演算を計算する。プログラマーが、画面表示の値ではなく頂点の数学的変換を確認しようとする場合がある。この時点で、プログラマーは、上記のように非常に扱いの難しいフレームバッファからメモリを読み取る必要がある。
ピクセルシェーダおよび頂点シェーダは、ピクセルおよび頂点に対して演算することができる。グラフィックスプログラミングにおいて、プリミティブは、いかなる所与の3次元グラフィックでもそこから作成される基本的な形状である。常に使用され、定義されるプリミティブには、頂点、線、および三角形が含まれる。今日、ピクセルシェーダと頂点シェーダは、頂点に対して所与の命令により演算することができる。シェーダがプログラム可能な場合であっても、シェーダは、プリミティブとして頂点または点に対して演算することしかできない。
ピクセルシェーダまたは頂点シェーダの特定シェーダがグラフィックスパイプラインで演算する場合、各段階で行われる演算に起因する一定の障害がある。プログラマーが各頂点に対して各シェーダに送られる命令を制限するか、釣り合いをとるよう努めるならば、これらの障害を解決することができる。しかし、ゲームのような込み入った3−D表示のためにグラフィックスを設計する場合、命令数の釣り合いを取ることは多大なタスクとなる。ほとんどのプログラマーは、グラフィックスが所与のプログラムで目に見えて遅くなるまで、いかなる種類の最適化をも実施しない。プログラマーが使用できる最適化された方式においてさえ、グラフィックスサブシステムに要求される各種タスクに関する相違があるというだけの理由で、ハードウェアは情報が通過するのを待機しながらアイドル状態のまま使用されない。さらに、いかなるグラフィックスプログラムでも最適化するために、プログラマーは、まず障害の原因を特定する必要があるが、これは退屈なタスクである場合がある。したがって、実行が必要とされるタスクに対してデータのコア処理が自動的に合わされるように、グラフィックスサブシステムのコアを動的に再構成することができることが望ましい。
したがって、コンピュータシステムにおけるグラフィックスデータのレンダリングは、資源集約処理の集合である。シェーディングの処理、すなわち、グラフィックスデータ構造に関連付けられた、色などのような特定のプリミティブに関する値を特定するために使用される、特化されたグラフィックスデータ構造の1つ以上の集合に対して複雑なアルゴリズムを実行する処理の例として、このような計算集約的で複雑な処理がある。一般に、シェーディングの処理は、ある一定の程度に対して正規化されてきた。シェーダと共に動作するよう設計されたソースコードをアプリケーションに渡すことにより、シェーダは、アプリケーションが作成/利用できるオブジェクトになり、複雑なビデオグラフィックスを効率よく描くことを容易にする。頂点シェーダおよびピクセルシェーダは、そのようなシェーダの例である。
したがって、プログラム可能な演算を頂点単位およびピクセル単位で導入することは、最近のグラフィックスハードウェアでは広く行われるようになってきた。この一般的なプログラム可能性により、性能水準は高いが創造性の限られたアルゴリズムが潜在するようになった。しかし、これら指摘した点の他に、今日、達成できることにはある程度の限度がある。通常、頂点のいくつかの演算を実行するために、現在では、頂点シェーダおよびピクセルシェーダでパイプラインをレンダリングすることによって、幾何学データのストリームが頂点シェーダに入力される。この結果、その幾何学データはピクセルデータに変換され、ピクセルデータのストリームを出力する。頂点シェーダは、特化された機能を実行するように頂点シェーダをプログラムする命令を受け取ることができるが、頂点シェーダ命令のサイズおよび複雑性には限度がある。同様に、ピクセルシェーダは、任意選択でデータに対して1つまたは複数の変換を実行し、ピクセルデータのストリームを出力することができる。同様に、ピクセルシェーダも、特化された機能を実行するようにピクセルシェーダをプログラムする命令を受け取ることができるが、ピクセルシェーダ命令のサイズおよび複雑性には限度がある。
従来、プログラマーは、頂点シェーダとピクセルシェーダを常用している。現在のプログラム可能なハードウェアは、ある程度限られたプログラム可能な機構を有するが、それによってプログラマーは、値がラスタ化される前のパイプラインの終わりに到達しないうちに値の再利用を指定できるわけではない。プログラマーは、シェーダの1つまたは複数での障害を回避するために、グラフィックスパイプラインの様々なコンポーネントの使用の釣り合いを取るよう努めることはできるが、グラフィックスハードウェアは固定されている。一部の特化されたハードウェアは、特化されたタスクに対するプロシージャルシェーダの特化された組合せおよび構成を有する特化されたタスクのために構築されているが、このハードウェアを他のタスクに対して再構成することはできない。したがって、それらの特化されたタスク以外のタスクを実行し、複数のシェーダのうちの1つだけのための命令によって情報が特に修正される必要がある場合、その修正は、恐らくは許容範囲を超えるほどにアプリケーションに依存して、待機する必要があることがある。さらに、頂点に対してシェーダは演算することができるが、プログラマーは、他のプリミティブに対して直接作用するグラフィックスAPI演算によってそのように指定することはできない。すなわち、頂点を例外として、プログラマーは、グラフィックスパイプラインでの処理のためにプリミティブとして任意にプリミティブをパッケージすることはできない。
テッセレーションは、通常、ギャップまたはオーバーラップなしに境界の付けられた幾何学領域を、1つまたは数種の合同な平面図でカバーすることを伴う、グラフィックスパイプラインの開始時に行われる処理である。既存のテッセレータは、少数の制御点の頂点に基づいて新しい頂点のグリッドを作成するために、いくつかの基本的なアルゴリズムを実施する。この処理は、事前に固定されたアルゴリズムに基づいており、パイプラインの初期段階に限定される。したがってこの処理は、プロシージャルシェーダによる処理後にパイプラインの中間で追加の任意の幾何学を作成するようにプログラムすることはできない。その上、頂点がテッセレータによって一度生成されると、パイプラインには頂点を生成できる場所がなくなる。すなわち、従来の頂点シェーダは、頂点を受け取り、処理し、出力することができるが、新しい頂点を生成することはできない。
したがって、命令数の制限、出力形式における制限、およびパイプライン内のデータ共用の欠如に起因する、現在のグラフィックスパイプラインアーキテクチャ、APIおよびハードウェアに関する現在のプログラム可能性の欠点を克服するシステムおよび方法を実装することが望ましい。
上記で特定された当技術分野の欠点を考慮して、本発明は、ピクセルシェーダ、頂点シェーダ、または幾何学シェーダとして機能することのできる共通コアを有することにより、グラフィックスパイプラインでのハードウェアの使用を最適化するためのシステムおよび方法を提供する。ここで、幾何学シェーダは、頂点または他の中間形式にデータを変換せずに、グラフィックスデータに対してより直接的に演算することができるように、三角形を含むいかなるプリミティブに対しても入力および出力として演算することのできるプログラム可能なシェーダである。さらに、本発明によれば、テッセレーション段階でも、または幾何学シェーダによっても、パイプライン内で新しい頂点を生成することができる。一実施形態では、テッセレータは、プロシージャルシェーダがグラフィックスデータに対して演算した後にプログラム可能にパイプライン内で幾何学形状を生成するために使用することができる。幾何学シェーダは、グラフィックス形状およびパイプライン内で適用される効果の実行中に変更を達成するために、プログラム可能な方法で既存の幾何学形状を補うために使用することができる。
共通コアは、ピクセルシェーダ、頂点シェーダ、または幾何学シェーダのようにプログラム可能または動的に構成可能である点で優れている。したがってグラフィックスパイプラインは、特定アプリケーションに対する計算の必要性の最適化に基づいて、すべてのピクセルシェーダ、すべての頂点シェーダ、またはすべての幾何学シェーダ、もしくはシェーダの組合せを使用することができる。共通のコアは、ホストによるグラフィックスパイプラインに対する需要により、動的に構成(および再構成)することができる。
幾何学シェーダに関して、ストリーム出力を介して、本発明のグラフィックスAPIおよび関連付けられたハードウェアは、アプリケーション開発者がパイプラインによる再利用のためにビデオメモリを読み取り、データを再パッケージングする際にCPUの支援を伴わず、グラフィックスパイプライン内で一度データをプログラム可能に再循環させることを可能にする。一実施形態では、本発明は、GPUに達する作業項目のスケジュール設定を支援するグラフィックスパイプラインを入力するすべてのプリミティブに対する独自の索引と、IEEE標準に準拠する浮動小数点および整数計算の正確性とを含む。幾何学シェーダは、GPUが処理中のグラフィックスデータのストリームの隣接プリミティブまたはピクセルに関する情報も処理することができる。
本発明の他の利点および特性を以下で説明する。
本発明の実施形態にかかる、拡張グラフィックスパイプラインのためのシステムおよび方法を、添付の図面を参照してさらに説明する。
(概要)
上記のように、本発明は、ピクセルシェーダ、頂点シェーダ、および幾何学シェーダに対する動的に構成可能な共通シェーダコアによって、現在のハードウェアにさらに高い機能を追加することにより、グラフィックスパイプラインを拡張する。異なるシェーダに対する同一ハードウェアユニットが再構成によって負荷の平衡を提供するか、またはシェーダが必要ない場合はパイプラインの一部としてシェーダを使用不可にし、したがって活動状態のままである段階に対して資源を解放するので、共通シェーダコアは簡素化された最適化を可能にする。本発明は、点、線、および三角形を含むプリミティブに対して演算することができる。また本発明は、数の限定された事前設定モードのうちの1つで演算するテッセレータにより、または比較的任意にはプログラム可能な幾何学シェーダにより、新しい幾何学形状をパイプライン内で生成することのできる、幾何学シェーダを導入する点において優れている。本発明の別の実施形態は、プリミティブデータをパイプラインのどこかで再利用するためにバッファにストリームアウトすることができ、パイプライン内で反復的にプログラム可能なアルゴリズムのアプリケーションを可能にするストリーム出力を含む。追加の特性には、グラフィックスパイプラインを通過し、グラフィックスパイプライン内で正確な整数および浮動小数点計算を実行する、各プリミティブに対して独自の索引が含まれる。
(ネットワーク接続し、分散した環境例)
当業者ならば、本発明が、コンピュータネットワークの一部として、もしくは分散型コンピューティング環境において配置することができ、いかなるコンピュータまたは他のクライアントもしくはサーバ装置と共にでも実装することができることを理解できよう。この点で、本発明は、任意の数のメモリまたは記憶ユニットを有するいかなるコンピュータシステムまたは環境、および本発明による拡張グラフィックスパイプラインの限定されない実施態様に対する処理と共に用いられることができる、任意の数の記憶ユニットまたはボリューム全体にわたって行われる任意の数のアプリケーションおよび処理に関する。本発明は、ネットワーク環境に配置されたサーバコンピュータおよびクライアントコンピュータ、または遠隔記憶またはローカル記憶を有する分散型コンピューティング環境を有する環境に適用することができる。本発明は、遠隔サービスまたはローカルサービスに伴う情報を生成し、受信し、送信するためのプログラミング言語機能、インタプリテーション機能および実行機能を有するスタンドアロンのコンピューティング装置にも適用することができる。ゲーム環境では、グラフィックスパイプラインは、特にネットワークまたは分散型コンピューティング環境で動作するこれらのコンピューティング装置に関し、したがって本発明による拡張グラフィックスパイプライン技術は、これらの環境に非常に大きな有効性をもって適用することができる。
分散型コンピューティングは、コンピューティング装置とシステムの間で交換することによりコンピュータ資源およびサービスの共用を提供する。これらの資源およびサービスは、情報交換、ファイルのキャッシュ記憶およびディスク記憶を含む。分散型コンピューティングは、ネットワークへの接続性を利用し、クライアントがそれらの収集力を利用して企業全体を利することを可能にする。この点で、様々な装置が、本発明のグラフィックスパイプライン処理に関与する、アプリケーション、オブジェクトまたは資源を有することができる。
図2Aは、ネットワーク接続された、または分散型のコンピューティング環境例の略図を提供する。この分散型コンピューティング環境は、コンピューティングオブジェクト10a、10bなど、およびコンピューティングオブジェクトまたは装置110a、110b、110cなどを含む。これらのオブジェクトは、プログラム、メソッド、データストア、プログラム可能な論理などを含むことができる。オブジェクトは、PDA、オーディオ/ビデオ装置、MP3プレーヤ、パーソナルコンピュータなどのような同じ装置または異なる装置の一部を含むことができる。各オブジェクトは、通信ネットワーク14により別のオブジェクトと通信することができる。このネットワークは、それ自体が図2Aのシステムにサービスを提供する他のコンピューティングオブジェクトおよびコンピューティング装置を含むことができ、それ自体が複数の相互接続されたネットワークを表すことができる。本発明の一態様によれば、各オブジェクト10a、10bなど、または110a、110b、110cなどは、本発明によるグラフィックスパイプライン処理の利用を要求するために、APIを利用するアプリケーションまたは他のオブジェクト、ソフトウェア、ファームウェア、および/またはハードウェアを含むことができる。
110cのようなオブジェクトが、別のコンピューティング装置10a、10bなど、または110a、110bなどでホストされることができることも理解することができるだろう。したがって、図示した物理環境は、接続された装置をコンピュータとして示すことができるが、このような図面は例示にすぎず、代わりに、この物理環境を、PDA、テレビジョン、MP3プレーヤなどのような各種デジタル装置と、インターフェース、COMオブジェクトなどのようなソフトウェアオブジェクトとを含むように図示し説明することもできる。
分散型コンピューティング環境をサポートする、各種システム、コンポーネントおよびネットワーク構成がある。例えば、複数のコンピューティングシステムを、ローカルネットワークまたは広域分散型ネットワークによって、有線または無線システムにより1つに接続することができる。現在、ネットワークの多くは、広域に分散されたコンピューティングのための基盤を提供し、多くの異なるネットワークを含むインターネットに結合される。本発明による拡張グラフィックスパイプラインに付随する通信例に対して、それら基盤のどれでも使用することができる。
ホームネットワーク接続環境では、それぞれが独自のプロトコルをサポートすることのできる電線、データ(無線と有線の両方)、音声(例えば、電話)、および娯楽メディアのような、少なくとも4つの分離したネットワーク転送媒体がある。照明スイッチおよび照明機器のような大部分の家庭用制御装置は、接続のために電線を使用することができる。データサービスは、ブロードバンド(例えば、DSLまたはケーブルモデム)として家庭に導入される場合があり、無線接続(例えば、HomeRFまたは802.11B)または有線接続(例えば、Home PNA、Cat 5、Ethernet(登録商標)、および電線)を使用して家庭内でアクセス可能である。音声トラフィックは、有線(例えば、Cat 3)または無線(例えば、携帯電話)として家庭に導入される場合があり、Cat 3線を使用して家庭内で分散することができる。娯楽メディアまたは他のグラフィカルデータは、衛星放送またはケーブルを介して家庭に導入される場合があり、通常は、同軸ケーブルを使用して家庭内で分散される。IEEE 1394およびDVIは、数群のメディア装置に対するデジタル相互接続でもある。これらネットワーク環境のすべておよびプロトコル標準として登場する可能性のある他のネットワーク環境は、インターネットにより外界に接続することのできる、イントラネットのようなネットワークを形成するために相互接続することができる。すなわち、データの記憶および送信、したがって転送のために様々な分離したソースが存在するが、コンピューティング装置は、本発明による拡張グラフィックスパイプラインを利用するプログラムオブジェクトに起こることのある、アクセスされ、利用されるデータのようにデータを共有するいくつかの方法を要求する。
インターネットは、コンピュータネットワーク接続の分野では周知のプロトコルのTCP/IPスイートを利用する、ネットワークとゲートウェイとの集合の総称である。TCP/IPは、「伝送制御プロトコル/インターネットプロトコル」の略語である。インターネットは、ユーザが1つ以上のネットワークを介して対話し情報を共有することを可能にする、ネットワーク接続プロトコルを実行するコンピュータによって相互接続された、地理的に分散して存在する遠隔コンピュータネットワークのシステムとして説明することができる。このような広域の情報共有があるために、インターネットのような遠隔ネットワークは、特化された演算またはサービスを基本的に制約なしに実行するため、開発者がソフトウェアアプリケーションを設計することのできるオープンシステムへとさらに全体的に進化した。
したがって、ネットワーク基盤は、クライアント/サーバ、ピアツーピア、またはハイブリッドアーキテクチャのようなネットワークトポロジのホストを可能にする。「クライアント」は、関連しない別のクラスまたはグループのサービスを使用する1つのクラスまたはグループのメンバーである。したがって、コンピューティングにおいて、クライアントは、別のプログラムによるサービスの提供を必要とする1つの処理、すなわち概して一組の命令またはタスクである。クライアント処理は、他のプログラムまたはそのサービス自体に関するいかなる作業の詳細をも「知る」ことを必要とせずに、要求したサービスを利用する。クライアント/サーバアーキテクチャにおいて、特にネットワーク接続されたシステムでは、クライアントは、一般に、別のコンピュータ、例えばサーバが提供する共有ネットワーク資源にアクセスするコンピュータである。図2Aの例では、コンピュータ110a、110bなどはクライアントとみなすことができ、コンピュータ10a、10bなどはサーバとみなすことができる。ここで、サーバ10a、10bなどはデータを維持するが、そのデータは次にクライアントコンピュータ110a、110bなどで複製される。いかなるコンピュータでも、その状況によって、クライアント、サーバ、またはこの両方とみなすことができる。これらコンピューティング装置のどれでも、本発明の拡張グラフィックスパイプラインの実施態様に特有のグラフィックスプログラミング技術に関与する場合のあるデータの処理、またはサービスもしくはタスクの要求を行うことができる。
サーバは、通常、インターネットのような遠隔またはローカルネットワークを介してアクセス可能な、遠隔コンピュータシステムである。クライアント処理は、第1のコンピュータシステムで活動状態にあってよく、サーバ処理は、第2のコンピュータシステムで活動状態にあってよい。この場合、クライアント処理とサーバ処理は通信媒体を介して相互に通信し、したがって分散機能を提供し、複数のクライアントがサーバの情報収集機能を利用することを可能にする。拡張グラフィックスパイプラインのグラフィックスプログラミング技術に従って利用されるいかなるソフトウェアオブジェクトでも、複数のコンピューティング装置またはオブジェクト全体に分散することができる。
1つ以上のクライアントと1つ以上のサーバとは、1つ以上のプロトコル層が提供する機能を利用して相互に通信する。例えば、ハイパーテキスト転送プロトコル(HTTP)は、ワールドワイドウェブ(WWW)または「ウェブ」に関して使用される共通プロトコルである。通常、サーバコンピュータまたはクライアントコンピュータを相互に特定するために、IP(Internet Protocol)アドレスのようなコンピュータネットワークアドレスまたはURL(Universal Resource Locator)のような他のリファレンスを使用することができる。このネットワークアドレスは、URLアドレスとして参照することができる。通信媒体を介して通信を提供することができ、例えば1つ以上のクライアントと1つ以上のサーバを、大容量通信用の1つ以上のTCP/IP接続を介して相互に連結することができる。
したがって、図2Aは、本発明を利用することのできる、ネットワーク/バスを介してサーバがクライアントコンピュータと通信する、ネットワーク接続された、または分散型の環境例を示す。より詳細には、複数のサーバ10a、10bなどは、本発明により、LAN、WAN、イントラネット、インターネットなどの通信ネットワーク/バス14を介して、携帯型コンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク接続された機器、またはVCR、テレビ、オーブン、照明、ヒータなどのような複数のクライアントまたは遠隔コンピューティング装置110a、110b、110c、110d、110eなどと相互接続される。したがって、本発明は、本発明の拡張グラフィックスパイプラインを利用するグラフィックスインターフェースを実装することが望ましいものと共に、いかなるコンピューティング装置にも適用することができるとみなされる。
通信ネットワーク/バス14がインターネットであるネットワーク環境では、例えばサーバ10a、10bなどは、クライアント110a、110b、110c、110d、110eなどがHTTPのような複数の周知のプロトコルのどれかによって通信するウェブサーバであってよい。サーバ10a、10bなどは、分散型コンピューティング環境の特徴である場合があるように、クライアント110a、110b、110c、110d、110eなどとして機能することもできる。通信は、適切ならば、無線であっても有線であってもよい。クライアント装置110a、110b、110c、110d、110eなどは、通信ネットワーク/バス14を介して通信してもしなくてもよく、独立した通信をそれに関連付けることができる。例えば、テレビまたはVCRの場合、その制御に、ネットワーク接続された態様があってもなくてもよい。各クライアントコンピュータ110a、110b、110c、110d、110eなど、およびサーバコンピュータ10a、10bなどは、様々なアプリケーションプログラムモジュールまたはオブジェクト135、および様々なタイプの記憶素子またはオブジェクトに対する接続またはアクセスを装備することができ、これらを介してファイルまたはデータストリームを記憶することができ、またはファイルまたはデータストリームの1つ以上の部分をこれらにダウンロードし、送信し、移行させることができる。コンピュータ10a、10b、110a、110bなどの1つまたは複数のどれでも、データベース20、または本発明によって処理されるデータを記憶するためのデータベースまたはメモリ20のような他の記憶素子の維持および更新を担当することができる。したがって、本発明は、コンピュータネットワーク/バス14にアクセスし、対話することのできるクライアントコンピュータ110a、110bなど、およびクライアントコンピュータ110a、110bなどおよび他の類似の装置と対話することのできるサーバコンピュータ10a、10bなど、およびデータベース20を有する、コンピュータネットワーク環境で用いられることができる。
(コンピューティング装置例)
図2Bおよび以下の解説は、本発明を実施することのできる適切なコンピューティング環境の簡単な概説を提供することを目的とする。しかし、各種のハンドヘルド、携帯型、および他のコンピューティング装置およびコンピューティングオブジェクトは、本発明との使用、すなわちGPUがコンピューティング環境に存在する任意の場所における使用を考慮することを理解されたい。以下では汎用コンピュータを説明するが、これは一例であって、本発明は、ネットワーク/バスの相互運用可能性および対話を有するシンクライアントでも実施することができる。したがって、本発明は、非常に少数の、または最小限のクライアント資源に関与するネットワーク接続されたホストサービスの環境、例えば、クライアント装置が機器内に配置されたオブジェクトのようなネットワーク/バスに対するインターフェースとしてのみ機能するなどのネットワーク接続された環境で実施することができる。基本的に、データを記憶することができ、そこからデータを取り出すか、または別のコンピュータにそこからデータを送信することのできる場所ならどこでも、本発明によるグラフィックス最適化技術の演算のために望ましい、または適切な環境である。
必須ではないが、本発明は、装置またはオブジェクト用のサービスの開発者が使用するために、オペレーティングシステムを介して実施し、かつ/または本発明のグラフィックスパイプライン用のグラフィックスプログラミング技術と共に動作するアプリケーションソフトウェアに含めることができる。ソフトウェアを、クライアントワークステーション、サーバ、または他の装置のような1つまたは複数のコンピュータによって実行中の、プログラムモジュールのようなコンピュータ実行可能な命令の一般的な状況で説明することができる。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、プログラムモジュールの機能は、様々な実施形態で、必要に応じて組み合わせ、または分散することができる。さらに、当業者ならば、本発明を、他のコンピュータシステム構成およびプロトコルで実行することができることを理解するだろう。本発明と共に使用するのに適することのできる他の周知のコンピューティングシステム、環境、および/または構成には、限定ではないが、パーソナルコンピュータ(PC)、現金自動預け払い機、サーバコンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家庭用電化製品、ネットワークPC、機器、照明、環境制御エレメント、ミニコンピュータ、メインフレームコンピュータなどが含まれる。本発明は、通信ネットワーク/バスまたは他のデータ伝送媒体を介してリンクされる遠隔処理装置でタスクが実行される、分散型コンピューティング環境でも実施することができる。分散型コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含めてローカルおよび遠隔コンピュータ記憶媒体に置くことができ、クライアントノードはサーバノードとして振舞うことができる。
図2Bはしたがって、本発明を実施することのできる適切なコンピューティングシステム環境100の一例を示す。ただし、これは、上記で明らかにしたように、コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の用途または機能の範囲に対するいかなる限定も示すことを目的とするものではない。また、コンピューティング環境100は、動作環境例100で示されるどのコンポーネントまたはコンポーネントのどのような組合せにも依存したり、これを必要としたりするものと解釈されるべきではない。
図2Bを参照すると、本発明を実施するためのシステム例は、コンピュータ110の形式の汎用コンピューティング装置を含む。コンピュータ110のコンポーネントは、限定はしないが、処理装置120、システムメモリ130、およびシステムメモリを含む様々なシステムコンポーネントを処理装置120に連結するシステムバス121を含む。システムバス121は、様々なバスアーキテクチャを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて各種バス構造のどれであってもよい。限定ではなく一例として、このようなアーキテクチャは、ISA(Industry Standard Architectures)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および(メザニンバスとして知られる)PCI(Peripheral Component Interconnect)バスを含む。
コンピュータ110は、通常、様々なコンピュータ読取り可能な媒体を含む。コンピュータ読取り可能な媒体は、コンピュータ110によってアクセスすることのできる任意の入手可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および固定の媒体の両方を含む。限定ではなく一例として、コンピュータ読取り可能な媒体は、コンピュータ記憶媒体と通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取り可能な命令、データ構造、プログラムモジュールまたは他のデータのような情報の記憶のために、任意の方法または技術においても実施される揮発性および不揮発性、ならびに取り外し可能および固定の媒体を含む。コンピュータ記憶媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CDROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、または所望の情報を記憶するために使用することができ、コンピュータ110によってアクセス可能な任意の他の媒体を含む。通信媒体は、通常、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、もしくは搬送波または他の搬送機構のような変調されたデータ信号形式の他のデータを実施し、いかなる情報配信媒体をも含む。「変調されたデータ信号」という用語は、その特徴の1つまたは複数を、情報を信号に符号化するような方法で設定または変更させた信号を意味する。限定ではなく一例として、通信媒体は、有線ネットワークまたは直接配線接続のような有線媒体と、アコースティック、RF、赤外線および他の無線媒体のような無線媒体とを含む。上記のどの組合せでも、コンピュータ読取り可能な媒体の範囲に含まれるべきである。
システムメモリ130は、読み出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132のような、揮発性および/または不揮発性メモリの形式のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の素子間で情報を転送することに役立つ基本ルーチンを含む、基本入出力システム133(BIOS)は、通常、ROM 131に記憶される。RAM 132は、通常、処理装置120に直接アクセス可能であり、かつ/または処理装置120が現在動作中の、データおよび/またはプログラムモジュールを含む。限定ではなく一例として、図2Bは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110は、他の取り外し可能/固定の、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。一例としてのみ、図2Bは、固定の不揮発性磁気媒体から読み取り/書き込むハードディスクドライブ141、取り外し可能な不揮発性磁気ディスク152から読み取り/書き込む磁気ディスクドライブ151、CD−ROMまたは他の光媒体のような取り外し可能な不揮発性光ディスク156から読み取り/書き込む光ディスクドライブ155を示す。この動作環境例で使用することができる他の取り外し可能/固定の揮発性/不揮発性コンピュータ記憶媒体は、限定ではないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体RAM、固体ROMなどを含む。ハードディスクドライブ141は、通常、インターフェース140のような固定のメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150のような取り外し可能なメモリインターフェースによってシステムバス121に接続される。
上記で解説し、図2Bに示したドライブおよびそれらの関連付けられたコンピュータ記憶媒体は、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、および他のデータの記憶域をコンピュータ110に提供する。図2Bでは、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147を記憶するように示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであっても、異なってもよいということに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、それらが少なくとも別々のものであることを示すために別の参照番号を付した。ユーザは、コンピュータ110に、キーボード162および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス161のような入力装置によってコマンドおよび情報を入力することができる。他の入力装置(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナなどを含むことができる。これらおよび他の入力装置は、システムバス121に連結されたユーザ入力インターフェース160を介して処理装置120に接続されることがよくあるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)のような他のインターフェースおよびバス構造によって接続することもできる。ノースブリッジのようなグラフィックスインターフェース182も、システムバス121に接続することができる。ノースブリッジは、CPUまたはホスト処理装置120と通信するチップセットであり、AGP(Accelerated GraphicsProt)通信を担当する。1つまたは複数のグラフィックス処理装置(GPU)184は、グラフィックスインターフェース182と通信することができる。この点で、GPU 184は、一般に、レジスタ記憶のようなオンチップメモリ記憶を含み、GPU 184はビデオメモリ186と通信する。この場合、本発明の用途の可変性が影響している場合がある。しかし、GPU 184は、コプロセッサの一例であり、したがって様々なコプロセッシング装置をコンピュータ110に含めることができ、様々なコプロセッシング装置はピクセルシェーダおよび頂点シェーダのような様々なプロシージャルシェーダを含むことができる。モニタ191または他の種類の表示装置も、ビデオメモリ186と通信することのできるビデオインターフェース190のようなインターフェースを介してシステムバス121に接続される。モニタ191に加え、コンピュータは、出力周辺インターフェース195を介して接続することのできるスピーカ197およびプリンタ196のような、他の周辺出力装置も含むことができる。
コンピュータ110は、論理接続を使用して、遠隔コンピュータ180のような1つまたは複数の遠隔コンピュータに、ネットワーク接続された、または分散された環境で動作することができる。遠隔コンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置または他の共通ネットワークノードであってよく、図2Bにはメモリ記憶装置181しか示さないが、通常は、コンピュータ110に関して上記で説明した要素の多く、またはすべてを含む。図2Bに示した論理接続は、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、他のネットワーク/バスを含むこともできる。このようなネットワーク接続環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットでは一般的である。
LANネットワーク接続環境で使用される場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーク接続環境で使用される場合、コンピュータ110は、通常、モデム172またはインターネットのようなWAN 173を介して通信を確立するための他の手段を含む。内蔵であっても外付けであってもよいモデム172を、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク接続環境では、コンピュータ110に関して示したプログラムモジュールまたはその一部を、遠隔メモリ記憶装置に記憶することができる。限定ではなく一例として、図2Bは、遠隔アプリケーションプログラム185がメモリ記憶装置181に常駐するように示す。図示したネットワーク接続は一例であり、コンピュータ間に通信リンクを確立する他の手段を使用することができることが理解されよう。
(分散型コンピューティングフレームワークまたはアーキテクチャ例)
様々な分散型コンピューティングフレームワークが、パーソナルコンピューティングおよびインターネットの集中に鑑みて開発されている。個人ユーザおよびビジネスユーザにはどちらにも、アプリケーションおよびコンピューティング装置に対してシームレスに相互運用可能でありウェブ対応インターフェースが提供されており、コンピューティング動作をますますウェブブラウザまたはネットワーク指向にする。
例えば、MICROSOFT(登録商標)社の管理するコードプラットフォーム、すなわち.NETは、サーバ、ウェブベースのデータ記憶およびダウンロード可能な装置ソフトウェアのようなビルディングブロックサービスを含む。一般に、.NETプラットフォームは、(1)コンピューティング装置の範囲全体を協調させ、ユーザ情報を自動的に更新させ、それらすべてに対して同期を取る機能、(2)HTMLではなくXMLをより多く使用することによって可能となる、ウェブページに対するさらに優れた対話機能、(3)例えば電子メールまたはOffice.NETのようなソフトウェアのような様々なアプリケーションの管理に関して、カスタマイズされたアクセスと中央開始点からユーザへの製品およびサービスの提供とを特徴とするオンラインサービス、(4)ユーザと装置の間での情報へのアクセスならびに情報の同期の効率および容易性を高める、集中化したデータ記憶、(5)電子メール、ファックス、および電話のような様々な通信媒体を統合する機能、(6)開発者に対して、再利用可能なモジュールを作成し、したがって生産性を高め、プログラミングエラー数を低減する機能、および(7)多くの他のプラットフォーム横断および言語統合機能を提供する。
本発明のいくつかの実施形態をコンピューティング装置に常駐するソフトウェアに関連して説明したが、メソッドが.NETコードのような管理コードによって可能となり、他の分散型コンピューティングフレームワークにある言語およびサービスのすべてに含まれ、サポートされ、これによってアクセスすることができるように、本発明の1つまたは複数の部分を、オペレーティングシステム、アプリケーションプログラミングインターフェース(API)または「ミドルマン」オブジェクト、制御オブジェクト、ハードウェア、ファームウェア、中間言語命令またはオブジェクトなどを介して実施することもできる。
(拡張グラフィックスパイプラインを提供するためのシステムおよび方法)
本発明の背景技術および概要で説明したように、本発明は、資源の使用を最適化し、グラフィックスパイプライン内の作業負荷の均衡をとり、IEEE準拠の整数または浮動小数点値による計算情報へのアクセスを可能にし、付加的なプログラム可能性を提供する、グラフィックスパイプラインに関するシステムおよび方法を導入することにより、グラフィックス処理技術の最新技術を改善する。本発明は、幾何学処理およびプログラム可能シェーダを対象とする。拡張グラフィックスパイプラインは、すべてのシェーダへの共通のコアと、パイプラインで行われる計算に対するストリーム出力と、プリミティブのプログラミングならびに新しい幾何学形状の生成を可能にする幾何学シェーダとの導入を含む。
図3Aは、グラフィックス処理装置(GPU)184’を含む、ビデオカードのようなグラフィックスサブユニット例と、関連付けられたグラフィックスパイプライン184’−1のハードウェア構成例とを示す。グラフィックスパイプライン184’−1の一実施形態は、図に示すように、頂点シェーダ184’−1aおよび184’−1aのような共通コア要素184’−1aの複数のインスタンス、関連付けられたストリーム出力184’−2を有する幾何学シェーダ184’−1a、およびピクセルシェーダ184’−1aを含む。この実施形態は、GPU184’の外にデータを第1の共通コア184’−laに送信する入力アセンブラを含む。図に示すように、この実施形態の第1の共通コアは、頂点シェーダとして構成される。次いでデータはテッセレータ184’−1bに送信され、テッセレータ184’−1bはデータに対するテッセレーションを実行する。テッセレータ184’−1bに続いて、パイプラインには別の共通コアがある。これは、データに対する事後テッセレーションの頂点シェーディングを実行するために使用することができる。この実施形態では、テッセレータのステップは任意選択である。第2の共通コアの後には、幾何学シェーダ184’−1aとして構成された第3の共通コアが続く。幾何学シェーダは、1つのプリミティブを取り、1つもしくは複数のプリミティブを出力し、または出力しない。出力されたプリミティブは、頂点またはピクセルシェーダのどちらかよりも多くのデータを含むことができる。第3の共通コアの後に、ストリーム出力184’−2があるが、これは、この地点に到達したプリミティブを1つまたは複数の出力バッファにストリームアウトすることができる。サンプルを提供する目的で、ストリーム出力が図3Aに含まれる。パイプラインの次のコンポーネントは、ラスタライザ184’−1cである。この正規の関数は、クリッピング、透視図分割、視点または鋏の選択および実施を含むことができる。ラスタライザの後には、第4の共通コア184’−1aが続く。これは、1つのピクセルを取り、そのピクセルを定位置に出力する、ピクセルシェーダとして機能する。データに対してすべての関数を実行した後、データがモニタ191に表示される。
共通コア、幾何学シェーダ、ストリーム出力、および本発明のパイプライン内で新しい幾何学形状を生成する機能によって反映されるような本発明のさらなる実施形態を、以下でさらに詳細に説明する。
(パイプラインのシェーダのための共通シェーダコア)
背景技術で説明した通り、特定コンポーネントが特定タスクに要求され、それがパイプラインのそのエリアにおける障害に繋がる可能性がある場合、グラフィックスパイプラインの異なるコンポーネントの需要に起因する資源競合問題が発生することがある。現行のグラフィックスパイプラインは、パイプラインで最も有効に資源を使用するために、プログラマーによる最適化を必要とする。しかし、最高の最適化方式によってさえも、従来技術においてハードウェア自体は固定されており、したがって、ピクセルシェーダまたは頂点シェーダがアイドル状態のままである時間がある。例えば、計算が多量の行列演算を伴い、頂点シェーダが、そのような値を十分な速度で計算できない場合などである。したがって、ピクセルシェーダがアイドル状態にある間に、頂点シェーダによる過剰処理に起因した障害がパイプラインで発生する場合、またはその反対の場合がある。本発明によれば、ピクセルシェーダを頂点シェーダとして機能するように再構成することができる場合は複数のシェーダが相互に機能することができるので、グラフィックスチップの基礎的資源を、グラフィックスチップに求められるタスクに対して最適化することができる。さらに、上記のように、本発明は、本明細書で幾何学シェーダと称する新しいクラスのシェーダを導入するが、これは別の特化された一組の処理機能を提供する。したがって、本発明の提供する共通コアは、頂点シェーダ、ピクセルシェーダ、および幾何学シェーダのどれにでも構成することができる。
一実施形態では、GPUは、異なる段階にオンデマンドでスケジュール設定できる、ユニット184’−laのファームを含む。この負荷平衡は、プログラマーがすべての段階を利用することについて気を使う必要がないことを意味している。どの段階でも、動的に使用可能または使用不可能にすることができ、構成または再構成することができ、したがって活動状態にある段階のために資源を解放または再特化することができる。共通コアは、その構成に応じて、頂点シェーダ段階、幾何学シェーダ段階、およびピクセルシェーダ段階を実行することができる。
図4Aは、内部共通コア184’−1aの一実施形態を示す。入力データが前段階によって供給されるが、この前段階はパイプラインのどこでもよい。入力レジスタ500は、共通コアを実行すべき段階に応じて、動的索引付け可能な配列または2次元(2D)配列であってよい。シェーダコード510にデータが送信され、コードがすべてのベクトル浮動小数点および整数演算を処理し、メモリが演算を取り出し、または抽出する。
シェーダコアは、サンプラ513、テクスチャ514、および定数バッファ515から情報を受け取る。サンプラ513は、テクスチャの抽出方法を定義する。しかし、メモリはフィルタリングなしに読み取ることもできるので、サンプラはすべての実施形態に必須のものではない。サンプラオブジェクトは静的に作成されるので、これは、ハードウェアが、(サンプラオブジェクトがそれらの定義を維持し、変更されないので)パイプラインの変更を追跡したり消去したりすることを必要とせずに、パイプライン実行中に複数のサンプラのリファレンスを維持することを可能にする。テクスチャ514はシェーダコアと協働して、テクスチャ抽出を提供する。この特定の実施形態では、許可された資源だけが、テクセル単位で単一要素形式を含む。シェーダコアは、定数バッファ515から定数を受け取る。この実施形態では、定数バッファは、アクセスの待ち時間をより短く、更新をより頻繁にするよう最適化される1次元(1D)テクスチャのように機能する。シェーダコード500はまた、一時レジスタ511とサブルーチン戻りアドレススタック512との2種類の通信方法を有する。一時レジスタ511は一時記憶として機能する。一実施形態では、レジスタは、一時記憶の制限までは必要とされる、任意のサイズおよび量のいかなる索引付け不可能または索引付け可能な配列でも保持することができる。サブルーチン戻りアドレススタック512は、この特定の一実施形態では、高さが固定されている。さらに、スタックは、直接シェーダアクセスから隠されており、戻りアドレスのみを透過的に記憶する。これは、反復アルゴリズムの定義の許可もする。
コードがシェーダコード510を通過した後、データは出力レジスタ520に移動する。出力レジスタ520は、この一実施形態では、4つのベクトル出力の動的索引付け可能な配列から構成される。さらに、一部の段階は、追加の特化された出力を有することができる。次いでデータは、パイプラインに応じて、次のシェーダ段階にストリーム出力として出力されるか、またはレンダリング段階に出力される。
列挙したデータ構造は、1次元配列から2次元配列またはリストに変更することができる。すべてのデータ構造は、GPUのサイズおよび記憶機能に応じて変更することができる。GPU内において、動的割り当てと空間保護のための情報に対する圧縮アルゴリズムのアプリケーションとのために、記憶制限および固定された高さに対する変更が行われる可能性がある。サンプラおよび定数バッファは、テクスチャのように振舞うことができるが、資源が変更された場合、これらコンポーネントの定義を修正することができる。テクスチャが再定義された場合、サンプラと定数バッファのどちらも変更することができ、テクスチャ関数のみに限定されるものではない。さらに、すべてのデータ構造は、速度および用途のために新しい最適化アルゴリズムを実施することができる。本明細書に記載した様々な実施形態は、頂点シェーダ、ピクセルシェーダ、および幾何学シェーダの機能を提供するために動的に構成することのできる、共通コアを使用したグラフィックスパイプラインの例にすぎない。
(プリミティブに対して演算する幾何学シェーダ)
今日、一組の入手可能なグラフィックスAPIによりグラフィックスアプリケーションを開発する際、グラフィックスのプログラマーは、一般に、一組のアルゴリズム要素が演算すべき一組の頂点を指定する。情報を指定すると、図1Aに示すように、データはグラフィックスパイプラインに送信され、各頂点が頂点シェーダとピクセルシェーダとを通してストリーミングする。頂点シェーダとピクセルシェーダとに対する入力構造に適合したいかなるデータでも指定することができるが、頂点シェーダは、頂点に対する演算に対して一般に適しており、および使用され、ピクセルシェーダは、ピクセルに対する演算に対して一般に適しており、および使用される。
この点において、従来のシェーダ(すなわち、頂点シェーダ)が頂点の入力、演算、および出力の可能性に関して限定されるのに対して、本発明による幾何学シェーダは、頂点、線、または三角形のいずれかを含む各種「プリミティブ」入力を取ることができる、グラフィックスサブシステムのGPUに対する新しい種類のシェーダである。対照的に、頂点のストリームに対する演算に加え、本発明の幾何学シェーダは、本発明のグラフィックスアーキテクチャによるさらなる演算のために、パイプライン内の入力としてプリミティブを受け取り、パイプライン内のプリミティブを出力して、線(2つの頂点の組)および三角形(3つの三角形の組)を規定するプリミティブに対して演算することができる。
本発明によるプリミティブ処理のさらなる一態様は、幾何学シェーダが、それ自体によってだけでなく、いくつかの付加的な周辺の頂点の状況においても、プリミティブ全体に対する動作を可能にする。ポリラインの1つの線セグメントは、例えば、そのセグメントの前後の頂点を読み取る機能によって処理することができる。この機構は一般的であるが(グラフィックスデータは「グラフィックスの」データである必要はなく、GPUによる処理のために定義されるいかなるデータであってもよい)、プリミティブの隣接頂点を処理するためにこの機能を頻繁に使用することは、幾何学シェーダが、3D幾何学空間の周辺の点に関する情報を現行の計算で考慮できるということである。
図4Bでは、TV0、TV1、TV2、LV0、およびLV1を入力データとして、幾何学シェーダの機能の一実施形態を示す。出力データは、接頭部AVで示される追加点を含むことができる。したがって幾何学シェーダは、任意選択で隣接頂点のような隣接プリミティブを処理して、1つのプリミティブを取り入れ、複数のプリミティブを出力することができる。出力のいくつかの例は、三角形ストリップのようなトポロジー、線ストリップ、または点リストを含む。この限定されない実施形態では、幾何学シェーダからの出力は、レンダリングのためにラスタライザに、かつ/またはストリーム出力のためにバッファに向かう。
この概念を図4Cにさらに示す。本発明によれば、任意選択で、グラフィックスパイプラインによって処理されるグラフィックスデータのデータにも、索引を割り当てることができる。索引データの前に、別個のメモリが、パイプラインを通過中のデータと共に使用するために索引情報を取り込んでおく必要がある。この従来の方式(処理中の索引およびグラフィックスデータの同期)に伴う同期の問題に加え、明らかな速度の関与もある。索引情報の生成は高速だが、ビデオメモリへの索引情報の書込みと、ストリーミンググラフィックスデータと共に使用されるビデオメモリからの読み取りに、非常に時間がかかる。
したがって、本発明によれば、入力アセンブラIAは、1つ以上の共通コアによって演算されるグラフィックスデータを、いかなる任意選択の隣接情報(プリミティブまたはデータのストリームの周辺に関する情報)と共に出力し、対応する索引のストリームを、グラフィックスデータが表す各要素(プリミティブ、データ点、ピクセル値など)に対して生成することができる。一実施形態では、索引は0から始まり、データの新しい要素ごとに1つずつ増すが、いかなる索引値でも開始索引値として使用することができる。さらに、一部の用途には、順序付けて索引を生成しても有用でない場合があるので、常識的に考えれば、本発明は、独自の識別情報(ID)値をグラフィックスデータ要素単位で生成し、その値は順序付けなくてもよい、もしくは順序付ける必要はない。
索引に対する機能は幅広く、用途の範囲は無数である。例えば、幾何学インスタンシングの場合、ツリーを定義するグラフィックスデータとツリーのために位置を記述する別の表とを有するメモリの第1のエリアを有する場合がある。パイプラインによって処理される回数または索引に基づいて、GPUは、ツリーのバリエーションを表によって定義された位置に置くために、ビデオメモリの複数の部分を取り出すことができる。本発明は、データを処理しながら、ビデオメモリアドレス指定方式の一部として索引値を使用することを可能にする。すなわち索引は、処理するためのビデオメモリの複数の部分をどこで、いつ取り出すか(かつ/または、どこに、いつ書き込むか)を示すことができる。別の例として、異なるアルゴリズムを三角形のストリームの中の三角形に3つおきに適用し、そのアルゴリズムをそのストリームの中の三角形に対して7つおきに2回実行すると有用な場合がある。プリミティブを索引付けする機能は、この機能を厳密に可能にする。したがってシェーダにダウンロードされたプログラムは、ビデオメモリに取り出すか、または書き込み、かつグラフィックスデータを処理しながら、グラフィックスデータに関連付けられた索引値をプログラム可能に使用することができる。
(フレームバッファのラスタ化前のメモリのストリーム出力)
背景技術で説明したように、今日のグラフィックスパイプラインによれば、パイプラインで実行中の計算の結果を確認するためにGPUが使用するビデオメモリからの読み取りは、ほとんど不可能に近い。データがGPUのプロシージャルシェーダによって処理される際、その実行中のデータを見つけ、抽出する方法の知識を有し、ビデオメモリから実際にそのデータを抽出することは、今日のアーキテクチャでは非常に困難なタスクである。図1Bは、プログラマーがグラフィックスパイプラインの出力、すなわちフレームバッファからデータの取り出しに着手し、さらなる処理のためにパイプラインにデータを戻すようホスト資源に関与する方法を示す。上記のように、このタスクは、プログラマーがフレームバッファまたはディスプレイからデータを取り出すことを要求する。一般に、パイプライン通過後のデータに対するさらなる処理が必要な場合、プログラマーは、情報がフレームバッファによって受け取られるのを待ち、さらなる処理を達成するためにCPUの資源を費やす。
グラフィックスデータをパイプライン内で再循環する点に関する従来のグラフィックスパイプラインの欠点を考慮して、本発明は、データがパイプライン内にある状態で、プログラマーがパイプラインに「侵入する」ことを可能にする。この場合、「侵入」をオン/オフすることができる。オンにした場合、パイプラインは、ホストによる取り出しもしくは他の演算のためにメモリから読み取るか、または反復機能もしくはループ機能を実行するためにパイプラインに再循環してもよいデータの出力ストリームを含む。さらに、必要に応じて、同じデータがラスタライザに向かっている状態で情報をストリームアウトすることができる。これで、データのレンダリングが遅らされることはなくなり、またはデータに対して動作中の再帰アルゴリズム要素に基づいて、画像が変換を受ける際にその画像を表示することを可能にする。
図3Bは、本発明によるストリーム出力の一実施形態を示す。この実施形態では、幾何学シェーダ184−1aとして振舞う上記の共通コアが、データに対して計算または演算を実行し、ストリーム出力184’−2があり、したがって、オンにされると、そのデータは本発明によりバッファに書き込まれる。同図では、ストリーム出力が、シェーダ自体にデータを再循環しているように示される。このタイプの再循環は、例えば、プログラマーが所与のデータに対してマルチパス動作を実行しようとする場合に有用である。しかし、GPUにダウンロードされたプログラムが指定するように、データを再循環するためにストリーム出力を使用するには、他にもいくつか方法がある。データを再循環するもう1つの方法は、データを入力アセンブラに再度入力して、パイプラインを再度通過させることである。本発明のストリーム出力機能は任意選択であり、1つのアプリケーションは、パイプラインが、データをストリーム出力バッファに読み出さずに、データを単に通過させることを可能にするだけである。さらに、ストリーム出力バッファは、ストリームされたデータを記憶するために使用することができる、メモリタイプの一例である。マイクロプロセッサのキャッシュメモリのように、そのような機能のために異なるタイプのメモリを使用することができる場合がある。
最後に、メモリの空間は限られており、ストリーム出力は、バッファサイズに応じたデータ量を追跡する。一実施形態では、メモリ記憶空間が満杯の場合、シェーダは、出力データのすべてを記憶するために必要なバイト数を計数しながら、すべてのデータについてその計算を続ける。その計算によってどれだけのデータが生成されるか予測が付かないときには、これは有用であろう。グラフィックスのためにストリーム出力を使用することができるが、ストリーム出力はグラフィックスに限定されるわけではない。これはグラフィックスパイプラインの一拡張であるが、数学的計算のためにGPUを使用することができ、GPUは、GPUとCPUとの両方の処理力を使用することができる。ストリーム出力は、グラフィックスパイプラインのラスタ化関数を停止せずに、GPUにダウンロードされた特化したプログラムの柔軟を高め、開発者により高いプログラミング性を提供することによってパイプラインの機能を強化するだけなので、ストリーム出力の用途は広範囲にわたる。上述のように、本発明による共通コアの出力に侵入することができることによる非常に有用な結果としては、データを、プログラム可能にパイプラインの他の部分に再循環させることができるということである。すなわち、プログラマーは、データに対する反復演算を実行する(同一アルゴリズムにデータを反復的に再循環させる)か、または事前に固定された回数だけデータをループさせるプログラムを、GPUにダウンロードすることができる。
(パイプライン内における幾何学形状の生成)
上述のように、今日では、グラフィックスプログラマーは、一組の入手可能なグラフィックスAPIによってグラフィックスアプリケーションを開発する際に、一般に、一組のアルゴリズム要素によって演算される一組の頂点を指定する。この情報を指定すると、図1Aに示すように、そのデータは、グラフィックスパイプラインに送られ、各頂点は、固定された一組のGPUサブユニット、例えばテッセレータ、1つ以上の頂点シェーダおよび1つ以上のピクセルシェーダなどを介してストリーミングされる。頂点シェーダおよびピクセルシェーダに対して入力構造に適合した任意のデータを指定することができる。但し、頂点シェーダは、頂点に対する演算に対して一般に適しており、および使用される。また、ピクセルシェーダは、ピクセルに対する演算に対して一般に適しており、および使用される。しかし、所定のアルゴリズムに従い、プロシージャルシェーディングの前に予め定められた制御点に基づく幾何学形状を生成することのできる固定された段階テッセレーション以外に、従来のパイプラインには、さらなる処理のために新しい頂点または幾何学形状を生成するために使用できるものはない。
さらに、1つまたは複数のプロシージャルシェーディング段階の後に本発明のテッセレータを使用してパイプライン内で生成された一組の制御点を受け取り、プログラムで演算して、グラフィックスAPIによってダウンロードされたパイプラインを構成するプログラムに従い、任意の新しい数の幾何学形状点を生成することができる。これは、例えば粗いメッシュに対して粗い演算を実行し、後で形状のさらに現実的なモデルを必要とする付加的な演算のためにそのメッシュを精製することが望ましい場合には有用である。これまで、幾何学形状のテッセレータ生成は、パイプラインの開始段階に限定され、事前指定された制御点入力に対する事前に固定された演算に限定されていた。このような制限事項を考慮して、本発明は、任意でパイプライン内に制御点(テッセレータから上流)を生成して、テッセレータからの出力として下流で演算される付加的な幾何学形状を生成するテッセレータにこれらの制御点を出力するために、パイプラインの開始時点で1つ以上の共通コアを可能にする。
上述のように、プログラム可能だが作成できる新しい幾何学形状数に制約のある幾何学シェーダとは対照的に、固定された機能ではある(プログラム可能でない)が任意の量のデータを生成する(n×nのメッシュ、nに制限はない)テッセレータとは異なり、新しい幾何学形状をより一般的でプログラム可能な方法で生成するために、本発明の幾何学形状シェーダを使用することもできる。
一部の計画では、本発明の幾何学形状シェーダは、単一頂点ではなくトポロジーを使用して出力頂点を作成することにより、プログラマーを支援する。アルゴリズムのいくつかの例には、点スプライトテッセレーション、太線テッセレーション、フィン生成、陰影分量生成、および複数のテクスチャ立体面に対する単一パスレンダリングが含まれる。点スプライトテッセレーションを実行するために、シェーダは、単一頂点を取って4つの頂点を生成するか、または1つの四辺形の4隅を表す2つの出力三角形を取る。太線テッセレーションの実行中に、シェーダは、図4BのLV0およびLV1のような2つの線頂点を受け取り、より太い線を表す四辺形のために4つの頂点を生成する。さらに、幾何学シェーダは、線終端点に対して額縁縫いを実行するために、隣接線頂点AV0およびAV1を利用することができる。
幾何学形状シェーダは、ファー(fur)またはフィンを生成するためにも使用することができる。これは、ファーまたはフィンの生成には限定されず、単一トポロジーの第3の方向に追加されたいかなる追加頂点をも含む。例としては、幾何学形状を示すプリミティブが幾何学シェーダに供給され、幾何学シェーダがその形状を補うようにその幾何学形状を任意に成長させる、髪、鱗、草などが含まれる。したがって、例えば髪の場合、幾何学形状シェーダへの三角形入力に基づいて、幾何学形状シェーダは、髪を表現するいくつかの頂点を各頂点に追加することができる。幾何学形状シェーダへの三角形のストリームが、1つの頂点の付近に関する情報を含むため、その頂点の付近の幾何学形状の近似および特性(色、奥行きなど)を処理中に考慮することができるという利点がある。
現在、本発明の幾何学シェーダは、グラフィックスAPIによって幾何学シェーダにダウンロードされたプログラムが指定するように、最大数の新しい任意の幾何学形状を生成することができるように限定される。しかし、以下でより詳細に定義されるストリーム出力によって可能となる本発明の反復機能と組み合わされた場合、本発明は、無制限に幾何学形状を任意に生成することを可能にする。例えば、幾何学形状シェーダが、だけを作成する場合、幾何学形状シェーダの用途のもう1つの例は、突出させるべきか否かを決定するために隣接情報が使用される、陰影度の生成を含む。さらに、アプリケーションは、フィンまたはファーのように一部の幾何学形状を生成し、陰影度をそこから突出させることを必要とする場合がある。このような場合、幾何学シェーダのマルチパス機能は、データストリームを出力し、それをストリーム出力の使用を循環させる機能の用途に用いられる。
図5に、アプリケーションがグラフィックスを呼び出し、本発明のアーキテクチャの上記の利点を達成する方法の流れ図を示す。ステップ550では、演算されるグラフィックスデータが指定される。上述のように、本発明によれば、任意の新しい分量の幾何学形状をパイプライン内で反復的にであっても生成することができるので、以前に比べて初期段階で指定する必要のあるグラフィックスデータは少なくてよい。ステップ560では、GPUが実行するプログラムをGPUにダウンロードし、GPUによる演算のためのアルゴリズム要素を定義することができる。ステップ570では、入力アセンブラ(例えば、図3Aを参照)は、ステップ550で指定されたグラフィックスデータとステップ560で指定されたプログラムとを自動的に取り込み、本発明による共通コアの構成を最適化する。したがって、頂点またはピクセルの計算が、ステップ560でGPUに提供されるプログラム要素の指定とステップ550で指定されるグラフィックスデータとの一部として集約的である場合、本発明は、多くの頂点シェーダまたはピクセルシェーダを含むようにパイプラインコアをそれぞれ構成することができる。一方、三角形に対して複雑な演算が望ましい場合、入力アセンブラは、複数の幾何学シェーダを含むようにコアを再構成することができる。さらに、ストリーム出力機能、および事前および事後のテッセレーションプロシージャルシェーディング段階のような選択肢を追加することができる。ステップ580で、入力アセンブラは、グラフィックスパイプラインによる処理に指定された作業項目を参照し、その作業をコアに割り当てる。この段階で、パイプラインを通過するプリミティブに、例えばプリミティブ単位の索引またはピクセル単位の索引など、索引情報を追加することができる。
基本的に、実行するよう要求されたジョブに対して動的にカスタマイズすることができる、高度に特化された高速ハードウェアの利点を即座に確認することができる。これは、反復的プログラムをストリーム出力によって指定可能であること、コアを動的に再構成可能であること、頂点の付近に関して入力を同時に行いながら、その頂点に対して迅速に演算可能であること、パイプラインのどこにおいても新しい幾何学形状を任意に生成可能であること(幾何学形状の事前テッセレーション生成、幾何学形状のテッセレータ生成、および幾何学形状の事後テッセレーション生成)を含む。したがって、本発明の利点は、開発者の観点からはほとんど無制限である。開発者は、本発明によるグラフィックスデータに対して達成でき得る発想においてのみ制限される。
したがって、本発明の拡張グラフィックスパイプラインは、パイプラインに要求されるタスクに最も適した方法で、ピクセルシェーダ、幾何学シェーダ、および頂点シェーダを割り当てるように動的に構成可能な共通コアを含む。本発明は、いかなる点、線、および三角形のストリームに対しても演算することのできる、幾何学シェーダと称する新しいプロシージャルシェーダも含む。さらに、本発明は、テッセレータまたは幾何学形状シェーダによって、パイプライン内で新しい幾何学形状を生成する機能を含む。本発明は、グラフィックスデータに対してプログラム反復およびルーピングアルゴリズムを実行して、ラスタ化のためにデータがフレームバッファに到達する前にパイプライン内に侵入することのできるストリーム出力も含む。また、本発明は、グラフィックスパイプラインに入力され、またはグラフィックスパイプラインで作成されたすべてのプリミティブに索引付けする機能を含む。グラフィックスパイプラインは、IEEE標準に従い、すべての整数および浮動小数点計算を実行することもできる。
適切なAPI、ツールキット、ドライバコード、オペレーティングシステム、制御、スタンドアロンまたはダウンロード可能なソフトウェアオブジェクトなど、本発明の拡張グラフィックスパイプラインのシステムおよび方法を使用するためにアプリケーションおよびサービスを使用可能にする本発明の実施方法は複数ある。本発明は、API(または他のソフトウェアオブジェクト)の観点から、また、本発明による共通コア、幾何学形状シェーダ、またはストリーム出力の技術を含めて、上記の技術のいずれかを受け取るソフトウェアオブジェクトまたはハードウェアオブジェクトの観点からの本発明の用途を意図する。したがって、本明細書に記載した本発明の様々な実施態様は、ハードウェアで全体的に、ハードウェアで部分的に、ソフトウェアで部分的に、またソフトウェアに複数の態様を有することができる。
上記の通り、本発明の実施形態を様々なコンピューティング装置およびネットワークアーキテクチャに関して説明したが、基本概念は、拡張グラフィックスパイプラインを有するGPUを利用することが望ましい、いかなるコンピューティング装置またはシステムにでも適用することができる。例えば、装置上の別個のオブジェクトとして、別のオブジェクトの一部として、再利用可能な制御として、サーバからダウンロード可能なオブジェクトとして、装置またはオブジェクトとネットワークとの間の「ミドルマン」として、分散したオブジェクトとして、ハードウェアとして、メモリで、上記のどの組合せなどとして提供される、本発明の1つ以上のアルゴリズムおよびハードウェア実施態様を、コンピューティング装置のオペレーティングシステムに適用することができる。本明細書ではプログラミング言語例、名前、および実施例を様々な選択肢を示すものとして選択したが、これらの言語、名前、および実施例は限定を意図するものではない。当業者には、オブジェクトコード、本発明の様々な実施形態によって達成される同じ機能、類似の機能、等価の機能を達成するオブジェクトコードと命名法を提供するには無数の方法があることが理解されよう。
上記の通り、本明細書に記載の様々な技術は、ハードウェアまたはソフトウェア、あるいは適切ならばこれらの組合せで実施することができる。したがって、本発明の方法および装置、またはその特定の態様または部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブのような具体的なメディアや任意の他の機械読取り可能な記憶媒体に埋め込まれたプログラムコード(すなわち、命令)の形式を取ることができる。ここで、プログラムコードが、コンピュータのようなマシンにロードされ、実行された場合、そのマシンは本発明を実行する装置となる。プログラム可能なコンピュータに対するプログラムコードの実行の場合、コンピューティング装置は、一般に、プロセッサ、プロセッサによって読み取り可能な記憶媒体(揮発性および不揮発性メモリおよび/または記憶素子を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。本発明の拡張グラフィックスパイプライン技術を、例えばデータ処理API、再利用可能な制御などによって実施または利用することのできる1つまたは複数のプログラムは、コンピュータシステムと通信するために、高レベルプロシージャルまたはオブジェクト指向プログラミング言語で実施されることが好ましい。しかし、必要に応じて、アセンブリまたは機械言語で1つ以上のプログラムを実施することができる。いずれの場合でも、その言語は、コンパイル言語であってもインタプリタ言語であってもよく、ハードウェア実施態様と組み合わせてもよい。
本発明の方法および装置は、電線またはケーブルにより、または光ファイバを介して、または伝送のいかなる他の形式によるなど、いくつかの伝送媒体を介して伝送される、プログラムコードの形式で実施される通信によっても実行することができる。ここで、プログラムコードが、EPROM、ゲート配列、プログラム可能な論理装置(PLD)、クライアントコンピュータなどのようなマシンに受信され、ロードされ、そこで実行された場合、そのマシンは、本発明を実行するための装置となる。汎用プロセッサで実施する場合、本発明の機能を呼び起こすよう動作する独自の装置を提供するために、プログラムコードはプロセッサと組み合わされる。さらに、本発明と共に使用されるいかなる記憶技術でも、常にハードウェアとソフトウェアの組合せであってよい。
以上、本発明を様々な図面の好ましい実施形態に関して説明したが、本発明を逸脱せずに本発明の同じ機能を実行するように、他の類似の実施形態を使用し、または記載の実施形態に修正および追加を行うことができることを理解されたい。例えば、本発明のネットワーク環境例は、ピアツーピアネットワーク接続環境のようなネットワーク接続環境の状況で説明したが、当業者ならば、本発明がそれに限定されず、本願で記載したような方法は、有線か無線かに関わらず、ゲーミングコンソール、ハンドヘルドコンピュータ、携帯型コンピュータなどのようないかなるコンピューティング装置または環境にも適用することができ、また、通信ネットワークを介して接続され、ネットワークを介して対話するそのようなコンピューティング装置ならいくつにでも適用することができることが理解されよう。さらに、特に複数の無線ネットワーク接続装置が普及し続けるという理由から、ハンドヘルド装置オペレーティングシステムおよび他の特定用途向けオペレーティングシステムを含めて様々なコンピュータプラットフォームを意図することを強調すべきである。
実施形態は、本発明をグラフィックスパイプラインの状況で利用することを参照したが、本発明はそのように限定されるものではなく、第2の処理装置を提供するために実施することができる。例えば、プログラマーが、CPUを使用して別の関数を実行しながら、画面への表示をレンダリングし、数学的計算を処理しようとする場合、処理装置は、グラフィックス表示が最終結果に含まれるか否かとは関係なく、それらを完全に利用する必要がある。さらに、本発明は複数の処理チップまたは装置で、またはこれらを介して実施することができ、記憶は複数の装置全体で同様に行うことができる。したがって、本発明は、いかなる単一の実施形態にも限定されず、首記の特許請求の範囲の広さおよび範囲において解釈されるべきである。
グラフィックスパイプラインの従来の実施態様を示すブロック図である。 マルチパス計算の従来の実施態様を示すブロック図である。 本発明を実施することのできる、様々なコンピューティング装置を有するネットワーク環境例を示すブロック図である。 本発明の実施することのできる、限定されないコンピューティング装置例を示すブロック図である。 本発明を実施することのできる、限定されないネットワーク接続遠隔コンピュータ例を示すブロック図である。 グラフィックスパイプラインでの、本発明のコンポーネントの限定されない実施態様を示すブロック図である。 ストリーム出力機能を使用したマルチパス計算の限定されない実施態様を示すブロック図である。 共通コアのハードウェアコンポーネントおよびソフトウェアコンポーネントを示すブロック図である。 単一トポグラフィーから複数の頂点を受け取り、出力することのできる幾何学シェーダの機能例を示す図である。 本発明による、グラフィックスパイプラインに従い処理される、グラフィックスストリームの、プリミティブ単位またはピクセル索引値単位の生成を示す図である。 本発明のグラフィックスパイプラインの拡張機能を使用するための、限定されない流れ図例である。
符号の説明
110a コンピューティングオブジェクトまたは装置
121 システムバス
135a〜e アプリケーションプログラムモジュールまたはオブジェクト
141 ハードディスクドライブ
151 磁気ディスクドライブ
155 光ディスクドライブ
181 メモリ記憶装置
184’−1a 共通コア要素

Claims (15)

  1. グラフィックスアプリケーションプログラミングインターフェース(API)を介して、グラフィックス処理装置(GPU)の複数の共通コア要素によって実行される1つまたは複数の作業項目を指定するステップであって、各共通コア要素は動的に構成されるサブ要素を含み、かつ、前記共通コア要素に対する前記サブ要素の構成が、頂点、ピクセルおよびプリミティブのうちの1つを処理するために、前記共通コア要素を特化するように構成された、ステップと、
    入力アセンブラにより、前記APIの出力を受け取るステップと、
    前記1つまたは複数の作業項目に基づいて、前記入力アセンブラが、前記複数の共通コア要素のための最適な構成を、頂点を処理するように構成された共通コア要素と、ピクセルを処理するように構成された共通コア要素と、プリミティブを処理するように構成された共通コア要素の少なくとも1つの組合せに決定するステップと、
    前記複数の共通コア要素は、前記GPUに対する資源需要に従い、前記複数の共通コア要素の動的最適化により、頂点、ピクセルまたはプリミティブの処理に関して前記共通コア要素を特化するか否かを決定するために、入力アセンブラから入力を受け取るステップと、
    頂点、ピクセルまたはプリミティブの処理に関して一度構成され、同一アルゴリズムの反復演算により、頂点、ピクセルおよびプリミティブの1つの前記処理を実行するための、共通コア要素をプログラムするソフトウェアプログラムを共通コア要素にダウンロードするステップと、
    を含むことを特徴とするグラフィックスパイプラインを動的に構成する方法。
  2. 前記指定するステップは、実行される少なくとも1つのタスクと、該少なくとも1つのタスクが実行されるグラフィックスデータとを指定するステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記決定するステップは、頂点、ピクセルおよびプリミティブを処理するために、複数の共通コア要素を、それぞれ頂点シェーダ、ピクセルシェーダまたは幾何学シェーダとして動的に構成するステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記動的に構成可能なサブ要素は、入力ゲート、レジスタ記憶、処理装置サブ要素、および出力ゲートを含むことを特徴とする請求項1に記載の方法。
  5. 前記ダウンロードするステップは、プログラムを共通コア要素にダウンロードし、前記共通コア要素の前記構成に応じて、前記頂点、ピクセルまたはプリミティブに対する浮動小数点および整数計算がIEEEの標準に完全に準拠しているアルゴリズム要素を計算するステップを含むことを特徴とする請求項1に記載の方法。
  6. 前記ダウンロードするステップは、ストリーム出力を可能にする命令をダウンロードするステップを含み、前記共通コア要素で計算される情報は、ラスタ化可能なフレームバッファメモリに記憶される前に、データ取得が可能なビデオメモリに任意選択で出力されることを特徴とする請求項に記載の方法。
  7. 頂点、ピクセルおよびプリミティブの1つを含むグラフィックスデータに索引付けすることにより、前記1つまたは複数の作業項目をスケジュール設定するステップをさらに備えたことを特徴とする請求項1に記載の方法。
  8. 請求項1から7のいずれかに記載の方法を実行するコンピュータ実行可能な命令を記録するコンピュータ読取り可能な媒体。
  9. それぞれの共通コア要素のサブ要素の構成が、頂点、ピクセルおよびプリミティブの1つを処理するために前記共通コア要素を特化するような、動的に構成可能な前記サブ要素を含む、複数の共通コア要素を備えたことを特徴とするグラフィックス処理装置(GPU)であって、
    前記複数の共通コア要素のうちの1つまたは複数が、頂点、ピクセルまたはプリミティブの処理に関して一度構成され、同一アルゴリズムの反復演算により、頂点、ピクセルおよびプリミティブの1つの前記処理を実行するように前記共通コア要素をプログラムする入力としてソフトウェアプログラムを受け取るように構成されており、かつ、
    前記複数の共通コア要素が、前記GPUに対する資源需要に従い、前記複数の共通コア要素の動的最適化により、頂点、ピクセルまたはプリミティブの処理に関して前記共通コア要素を特化するか否かを決定するために、入力アセンブラから入力を受け取るように構成されている、
    ことを特徴とするグラフィックス処理装置。
  10. 前記複数の共通コア要素は、グラフィックス処理装置によって処理される作業項目に対して最適に定義された動的資源の要求に従い、頂点、ピクセルおよびプリミティブを処理するための、頂点シェーダ、ピクセルシェーダ、または幾何学シェーダの任意の組合せとして構成可能であることを特徴とする請求項9に記載のグラフィックス処理装置。
  11. 前記動的に構成可能なサブ要素は、入力ゲート、レジスタ記憶、処理装置サブ要素、および出力ゲートを含むことを特徴とする請求項9に記載のグラフィックス処理装置。
  12. 前記入力アセンブラから受け取った前記入力は、前記複数の共通コア要素の各々の入力ゲート、レジスタ記憶、処理装置サブ要素および出力ゲートの内部構成を定義することを特徴とする請求項9に記載のグラフィックス処理装置。
  13. 前記複数の共通コア要素の1つまたは複数の共通コア要素は、入力アセンブラによって索引付けされる、演算される作業データを受け取ることを特徴とする請求項9に記載のグラフィックス処理装置。
  14. 前記複数の共通コア要素の1つまたは複数の共通コア要素は、ストリーム出力を含み、前記1つまたは複数の共通コア要素で計算される情報は、ラスタ化可能なフレームバッファメモリに記憶される前に、データ取得が可能なビデオメモリに任意選択で出力されることを特徴とする請求項9に記載のグラフィックス処理装置。
  15. 前記複数の共通コア要素の各々は、前記ソフトウェアプログラムの受け取りをサポートし、関連付けられた共通コア要素をプログラムして、前記頂点、ピクセルまたはプリミティブに対する浮動小数点および整数計算がIEEEの標準に完全に準拠しているアルゴリズム要素を計算することを特徴とする請求項9に記載のグラフィックス処理装置。
JP2005114573A 2004-05-03 2005-04-12 拡張グラフィックスパイプラインを提供するシステムおよび方法 Active JP4766906B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US56749004P 2004-05-03 2004-05-03
US60/567,490 2004-05-03
US10/934,249 2004-09-03
US10/934,249 US7570267B2 (en) 2004-05-03 2004-09-03 Systems and methods for providing an enhanced graphics pipeline

Publications (2)

Publication Number Publication Date
JP2005322224A JP2005322224A (ja) 2005-11-17
JP4766906B2 true JP4766906B2 (ja) 2011-09-07

Family

ID=34939377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005114573A Active JP4766906B2 (ja) 2004-05-03 2005-04-12 拡張グラフィックスパイプラインを提供するシステムおよび方法

Country Status (5)

Country Link
US (1) US7570267B2 (ja)
EP (1) EP1594091B1 (ja)
JP (1) JP4766906B2 (ja)
KR (1) KR101130407B1 (ja)
ES (1) ES2660434T3 (ja)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8133115B2 (en) 2003-10-22 2012-03-13 Sony Computer Entertainment America Llc System and method for recording and displaying a graphical path in a video game
US7978205B1 (en) 2004-05-03 2011-07-12 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
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
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
US8044951B1 (en) * 2004-07-02 2011-10-25 Nvidia Corporation Integer-based functionality in a graphics shading language
US7426724B2 (en) * 2004-07-02 2008-09-16 Nvidia Corporation Optimized chaining of vertex and fragment programs
WO2006017198A2 (en) * 2004-07-08 2006-02-16 Actuality Systems, Inc. Architecture for rendering graphics on output devices
US20060071933A1 (en) * 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US7385609B1 (en) * 2004-11-02 2008-06-10 Nvidia Corporation Apparatus, system, and method for increased processing flexibility of a graphic pipeline
US7623132B1 (en) * 2004-12-20 2009-11-24 Nvidia Corporation Programmable shader having register forwarding for reduced register-file bandwidth consumption
US8400454B2 (en) * 2005-03-30 2013-03-19 Ati Technologies, Inc. System and method for creating motion blur
US8125480B2 (en) * 2005-04-12 2012-02-28 Siemens Medical Solutions Usa, Inc. Flat texture volume rendering
US8418132B2 (en) * 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8275793B2 (en) * 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US20060245096A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Application framework phasing model
US8799857B2 (en) * 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US8132148B2 (en) * 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US7636126B2 (en) 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
KR100647367B1 (ko) * 2005-07-15 2006-11-23 엘지전자 주식회사 휴대 단말기에서 이차원 오브젝트의 패스 렌더링 방법
JP4688165B2 (ja) * 2005-09-30 2011-05-25 株式会社リコー 画像処理装置及び画像処理方法
US20070091088A1 (en) * 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US7817151B2 (en) * 2005-10-18 2010-10-19 Via Technologies, Inc. Hardware corrected software vertex shader
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
US7728841B1 (en) * 2005-12-19 2010-06-01 Nvidia Corporation Coherent shader output for multiple targets
US7656412B2 (en) * 2005-12-21 2010-02-02 Microsoft Corporation Texture resampling with a processor
KR100817920B1 (ko) * 2005-12-23 2008-03-31 엠텍비젼 주식회사 임베디드 시스템, 정점 프로세싱 장치 및 디코더
US7877565B1 (en) 2006-01-31 2011-01-25 Nvidia Corporation Constant versioning for multi-threaded processing
US8094158B1 (en) * 2006-01-31 2012-01-10 Nvidia Corporation Using programmable constant buffers for multi-threaded processing
TWI309395B (en) * 2006-02-24 2009-05-01 Via Tech Inc Graphics system and graphics control method
US7891012B1 (en) 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US7965859B2 (en) 2006-05-04 2011-06-21 Sony Computer Entertainment Inc. Lighting control of a user environment via a display device
US7880746B2 (en) 2006-05-04 2011-02-01 Sony Computer Entertainment Inc. Bandwidth management through lighting control of a user environment via a display device
JP4759614B2 (ja) * 2006-05-11 2011-08-31 パナソニック株式会社 処理装置
US7692660B2 (en) * 2006-06-28 2010-04-06 Microsoft Corporation Guided performance optimization for graphics pipeline state management
US8111260B2 (en) 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US8954947B2 (en) * 2006-06-29 2015-02-10 Microsoft Corporation Fast variable validation for state management of a graphics pipeline
KR100791478B1 (ko) * 2006-07-14 2008-01-04 엠텍비젼 주식회사 정점 처리를 위한 인코딩 장치, 디코딩 장치 및 그 방법
US8666712B2 (en) 2006-07-24 2014-03-04 Ati Technologies Inc. Physical simulations on a graphics processor
US8154554B1 (en) * 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8963932B1 (en) * 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US8009172B2 (en) 2006-08-03 2011-08-30 Qualcomm Incorporated Graphics processing unit with shared arithmetic logic unit
US8134570B1 (en) * 2006-09-18 2012-03-13 Nvidia Corporation System and method for graphics attribute packing for pixel shader usage
US7755631B1 (en) * 2006-10-24 2010-07-13 Nvidia Corporation Transposition structures and methods to accommodate parallel processing in a graphics processing unit (“GPU”)
US7965291B1 (en) * 2006-11-03 2011-06-21 Nvidia Corporation Isosurface extraction utilizing a graphics processing unit
KR100791411B1 (ko) * 2006-12-07 2008-01-07 한국전자통신연구원 그래픽스 처리장치 및 방법
KR100856211B1 (ko) * 2007-02-06 2008-09-03 삼성전자주식회사 그래픽 가속기 기반의 고속 영상 처리 방법 및 그 장치
US8203564B2 (en) * 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US8760457B2 (en) * 2007-07-24 2014-06-24 Qualcomm Incorporated Data access tool for programmable graphics hardware
US8296738B1 (en) 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US9035957B1 (en) 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US8325184B2 (en) 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US8922565B2 (en) * 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
KR100924122B1 (ko) * 2007-12-17 2009-10-29 한국전자통신연구원 픽셀 단위 처리 요소 기반의 광선 추적 장치 및 방법
US20090189896A1 (en) * 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Shader Unit
US8345045B2 (en) * 2008-03-04 2013-01-01 Microsoft Corporation Shader-based extensions for a declarative presentation framework
JP2011513874A (ja) * 2008-03-11 2011-04-28 コア ロジック,インコーポレイテッド 固定されたパイプラインをサポートする3dグラフィック処理
US8643644B2 (en) * 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
JP5616333B2 (ja) * 2008-05-29 2014-10-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ジオメトリシェーダを用いる平面充填エンジンのためのシステム、方法及びコンピュータプログラム
TWI390442B (zh) * 2008-10-24 2013-03-21 Univ Nat Taiwan 針對數位訊號處理之串流式處理系統及方法
KR101496340B1 (ko) 2008-10-31 2015-03-04 삼성전자주식회사 프로세서 및 메모리 제어 방법
DE102009006660A1 (de) * 2009-01-29 2010-08-05 Baumer Innotec Ag Pipeline-Recheneinrichtung zur Verbindung von Konturelementen aus Bilddaten
US20100214294A1 (en) * 2009-02-20 2010-08-26 Microsoft Corporation Method for tessellation on graphics hardware
CN101859330B (zh) * 2009-04-09 2012-11-21 辉达公司 验证集成电路效能模型的方法
KR101076807B1 (ko) * 2009-05-29 2011-10-25 주식회사 실리콘아츠 레이 트레이싱 장치 및 방법
US20110043518A1 (en) * 2009-08-21 2011-02-24 Nicolas Galoppo Von Borries Techniques to store and retrieve image data
US8619087B2 (en) * 2009-10-06 2013-12-31 Nvidia Corporation Inter-shader attribute buffer optimization
US8922555B2 (en) * 2009-10-07 2014-12-30 Nvidia Corporation Pixel shader output map
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
US10786736B2 (en) 2010-05-11 2020-09-29 Sony Interactive Entertainment LLC Placement of user information in a game space
US8933934B1 (en) * 2011-06-17 2015-01-13 Rockwell Collins, Inc. System and method for assuring the proper operation of a programmable graphics processing unit
US9342817B2 (en) 2011-07-07 2016-05-17 Sony Interactive Entertainment LLC Auto-creating groups for sharing photos
US9442780B2 (en) 2011-07-19 2016-09-13 Qualcomm Incorporated Synchronization of shader operation
CN107393502B (zh) * 2011-12-14 2019-11-05 英特尔公司 用于多遍渲染的技术
US10559123B2 (en) 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
JP2013218527A (ja) * 2012-04-09 2013-10-24 Mitsubishi Electric Corp グラフィックス描画装置
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9465620B2 (en) * 2012-12-20 2016-10-11 Intel Corporation Scalable compute fabric
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9299123B2 (en) 2013-01-22 2016-03-29 Qualcomm Incorporated Indexed streamout buffers for graphics processing
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
KR102109130B1 (ko) 2013-08-12 2020-05-08 삼성전자주식회사 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
KR102053351B1 (ko) 2013-08-12 2019-12-06 삼성전자주식회사 테셀레이션 데이터 생성 방법과 상기 방법을 수행할 수 있는 장치들
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US9613392B2 (en) * 2014-09-03 2017-04-04 Mediatek Inc. Method for performing graphics processing of a graphics system in an electronic device with aid of configurable hardware, and associated apparatus
US9934606B2 (en) * 2014-09-16 2018-04-03 Intel Corporation Deferred coarse pixel shading
EP3029940B1 (en) * 2014-12-04 2017-03-15 Axis AB Method and device for post processing of a video stream
CN104580503A (zh) * 2015-01-26 2015-04-29 浪潮电子信息产业股份有限公司 一种高效动态负载均衡的处理大规模数据的系统及方法
RU2664001C2 (ru) * 2015-12-14 2018-08-14 Илья Алексеевич Лебедев Способ использования аппаратных средств графического процессора для расчета обобщённых угловых коэффициентов излучения для вакуумных печных агрегатов
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10664942B2 (en) * 2016-10-21 2020-05-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline
US10242494B2 (en) * 2017-04-01 2019-03-26 Intel Corporation Conditional shader for graphics
US11055807B2 (en) * 2017-06-12 2021-07-06 Apple Inc. Method and system for a transactional based display pipeline to interface with graphics processing units
GB2570304B (en) * 2018-01-18 2022-06-01 Imagination Tech Ltd Topology preservation in a graphics pipeline
US11037356B2 (en) 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
US11379577B2 (en) 2019-09-26 2022-07-05 Microsoft Technology Licensing, Llc Uniform resource locator security analysis using malice patterns
US11509667B2 (en) 2019-10-19 2022-11-22 Microsoft Technology Licensing, Llc Predictive internet resource reputation assessment
US11431751B2 (en) 2020-03-31 2022-08-30 Microsoft Technology Licensing, Llc Live forensic browsing of URLs
CN114185532B (zh) * 2022-02-15 2022-05-10 武汉慧联无限科技有限公司 一种图形化编程系统

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3051438B2 (ja) * 1989-10-12 2000-06-12 テキサス インスツルメンツ インコーポレイテッド 拡張グラフィック機能を与える方法
US5821940A (en) 1992-08-03 1998-10-13 Ball Corporation Computer graphics vertex index cache system for polygons
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5745125A (en) * 1996-07-02 1998-04-28 Sun Microsystems, Inc. Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance
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
US7159041B2 (en) 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US6483505B1 (en) 2000-03-17 2002-11-19 Ati International Srl Method and apparatus for multipass pixel processing
US6724394B1 (en) 2000-05-31 2004-04-20 Nvidia Corporation Programmable pixel shading architecture
US7034828B1 (en) * 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
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
EP1408403A1 (en) * 2001-07-19 2004-04-14 Sony Corporation Calculation apparatus and image processing apparatus
US6747653B2 (en) 2001-12-31 2004-06-08 Intel Corporation Efficient object storage for zone rendering
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US6765584B1 (en) 2002-03-14 2004-07-20 Nvidia Corporation System and method for creating a vector map in a hardware graphics pipeline
US7015909B1 (en) * 2002-03-19 2006-03-21 Aechelon Technology, Inc. Efficient use of user-defined shaders to implement graphics operations
US7154502B2 (en) 2002-03-19 2006-12-26 3D Labs, Inc. Ltd. 3D graphics with optional memory write before texturing
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
US6864893B2 (en) 2002-07-19 2005-03-08 Nvidia Corporation Method and apparatus for modifying depth values using pixel programs
US7176917B1 (en) * 2002-08-09 2007-02-13 Avid Technology, Inc. Visual programming interface for a three-dimensional animation system for defining real time shaders using a real-time rendering engine application programming interface
US20050140672A1 (en) * 2003-02-18 2005-06-30 Jeremy Hubbell Shader editor and compiler
US6839062B2 (en) * 2003-02-24 2005-01-04 Microsoft Corporation Usage semantics
US20040169671A1 (en) * 2003-03-01 2004-09-02 Aronson David Floyd Effects framework pipeline integration with programmable shader
US7530062B2 (en) * 2003-05-23 2009-05-05 Microsoft Corporation Optimizing compiler transforms for a high level shader language
US7091979B1 (en) 2003-08-29 2006-08-15 Nvidia Corporation Pixel load instruction for a programmable graphics processor
US7202872B2 (en) 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern
US8035646B2 (en) 2003-11-14 2011-10-11 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US20050275760A1 (en) 2004-03-02 2005-12-15 Nvidia Corporation Modifying a rasterized surface, such as by trimming
US7554538B2 (en) * 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal

Also Published As

Publication number Publication date
KR101130407B1 (ko) 2012-03-27
ES2660434T3 (es) 2018-03-22
EP1594091B1 (en) 2018-01-03
KR20060044935A (ko) 2006-05-16
EP1594091A2 (en) 2005-11-09
US20050243094A1 (en) 2005-11-03
US7570267B2 (en) 2009-08-04
JP2005322224A (ja) 2005-11-17
EP1594091A3 (en) 2006-02-08

Similar Documents

Publication Publication Date Title
JP4766906B2 (ja) 拡張グラフィックスパイプラインを提供するシステムおよび方法
US7671862B1 (en) Systems and methods for providing an enhanced graphics pipeline
JP4583720B2 (ja) グラフィックス・システム内で中間ターゲットを提供するためのシステムおよび方法
EP2033085B1 (en) Fast reconfiguration of graphics pipeline state
EP2939208B1 (en) Sprite graphics rendering system
US7692660B2 (en) Guided performance optimization for graphics pipeline state management
EP3255612B1 (en) System and method for tessellation in an improved graphics pipeline
KR20070011062A (ko) 모델 3d 구성 애플리케이션 프로그램 인터페이스
US10395423B2 (en) Apparatus and method for rendering adaptive mesh refinement (AMR) data
Wald et al. Data Parallel Multi‐GPU Path Tracing using Ray Queue Cycling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080403

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090901

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

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: 20110519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110614

R150 Certificate of patent or registration of utility model

Ref document number: 4766906

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140624

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250