JP2017516200A - オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上 - Google Patents

オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上 Download PDF

Info

Publication number
JP2017516200A
JP2017516200A JP2016560652A JP2016560652A JP2017516200A JP 2017516200 A JP2017516200 A JP 2017516200A JP 2016560652 A JP2016560652 A JP 2016560652A JP 2016560652 A JP2016560652 A JP 2016560652A JP 2017516200 A JP2017516200 A JP 2017516200A
Authority
JP
Japan
Prior art keywords
primitive
buffer
identifier
pixel
primitives
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016560652A
Other languages
English (en)
Other versions
JP6374982B2 (ja
Inventor
バーゴフ、トビアス
Original Assignee
ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー
ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー
ソニー インタラクティブ エンタテインメント ヨーロッパ リミテッド
ソニー インタラクティブ エンタテインメント ヨーロッパ リミテッド
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 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー, ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー, ソニー インタラクティブ エンタテインメント ヨーロッパ リミテッド, ソニー インタラクティブ エンタテインメント ヨーロッパ リミテッド filed Critical ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー
Publication of JP2017516200A publication Critical patent/JP2017516200A/ja
Application granted granted Critical
Publication of JP6374982B2 publication Critical patent/JP6374982B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Abstract

【解決手段】グラフィック処理が、仮想空間内の場面内に複数のオブジェクトをセットアップすることを包含し、各オブジェクトは頂点のセットで画定される。独特のオブジェクト識別子が各オブジェクトに割り当てられ、IDバッファに書き込まれる。ドローコールが発行されて、オブジェクト識別子に関連するオブジェクトが描かれる。頂点のパラメータ値が操作されて頂点パラメータ値が出力される。プリミティブは頂点からセットアップされ、各プリミティブは1つまたは複数の頂点で画定される。各プリミティブは1つまたは複数のオブジェクトに属する。各プリミティブは、複数の画素でラスター化される。画素の処理は、複数のオブジェクト識別子の1つまたは複数のオブジェクト識別子を用いる空間的または時間的アンチエイリアス処理を包含する。画素はラスター化されたプリミティブのそれぞれに対して処理され、出力フレームを生成する。【選択図】図12

Description

[関連出願の相互参照]
本願は、本願と同日出願のTobias Berghoffに対する「METHOD FOR EFFICIENT CONSTRUCTION OF HIGH RESOLUTION DISPLAY BUFFERS」と題する同一出願人による同時継続の米国特許出願番号14/246064(代理人整理番号SCEA13055US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、2014年4月5日出願のMark Evan Cernyに対する「GRADIENT ADJUSTMENT FOR TEXTURE MAPPING TO NON−ORTHONORMAL GRID」と題する同一出願人による同時継続の米国特許出願番号14/246,068(代理人整理番号SCEA13057US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、2014年4月5日出願のTobias Berghoffに対する「VARYING EFFECTIVE RESOLUTION BY SCREEN LOCATION BY CHANGING ACTIVE COLOR SAMPLE COUNT WITHIN MULTIPLE RENDER TARGETS」と題する同一出願人による同時継続の米国特許出願番号14/246061(代理人整理番号SCEA13058US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、2014年4月5日出願のMark Evan Cernyに対する「VARYING EFFECTIVE RESOLUTION BY SCREEN LOCATION BY ALTERING RASTERIZATION PARAMETERS」と題する同一出願人による同時継続の米国特許出願番号14/246063(代理人整理番号SCEA13059US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、2014年4月5日出願のMark Evan Cernyに対する「VARYING EFFECTIVE RESOLUTION BY SCREEN LOCATION IN GRAPHICS PROCESSING BY APPROXIMATING PROJECTION OF VERTICES ONTO CURVED VIEWPORT」と題する同一出願人による同時継続の米国特許出願番号14/246066(代理人整理番号SCEA13060US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、2014年4月5日出願のMark Evan Cernyに対する「GRADIENT ADJUSTMENT FOR TEXTURE MAPPING FOR MULTIPLE RENDER TARGETS WITH RESOLUTION THAT VARIES BY SCREEN LOCATION」と題する同一出願人による同時継続の米国特許出願番号14/246062(代理人整理番号SCEA13061US00)に関し、参照することにより、その全体の内容がここに包含される。
[技術分野]
本発明は、コンピュータグラフィック処理に関する。
コンピュータグラフィック処理は、ディスプレイ上に提示するために仮想コンテンツを描写する画像を作成するために用いられる複雑な処理である。現代の3Dグラフィックスは、コンピュータグラフィック演算に効果的に設計された専門のアーキテクチャを有する優秀なグラフィック処理ユニット(GPU)を使用して処理することが多い。GPUは、ディスプレイに出力することを意図したフレームバッファ内に画像の作成を加速するように設計された専門の電子回路であり、GPUは、大きなデータブロックの処理を平行して行うアルゴリズムのための汎用CPUよりも、より効率的なGPUとする高度に平行処理するアーキテクチャを有することが多い。GPUは、埋め込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム装置、ワークステーション及びゲームコンソール等の種々のコンピューティングシステムに使用されている。
ビデオゲーム及び他のリアルタイムアプリケーション用の多くの現代のコンピュータグラフィック処理は、ディスプレイ上に提示される画素値の最終配列を決定する入力データの処理を実行する多くの異なるステージを有するレンダリングパイプラインを用いる。グラフィックレンダリングパイプラインのいくつかの実行では、処理は、CPUとGPUとの間で連携することができる。アプリケーションプログラミングインターフェース(API)を通じてGPUに発行される一連の描画呼び出しを介して、アプリケーション(例えば、CPUで実行されるビデオゲーム)の現在の状態に基づいて、中央処理ユニット(CPU)により、入力データがセットアップされることができ、描画コマンドが発行されることができ、これはグラフィックフレーム毎に多数回生じることがあり、そしてGPUは、対応してパイプラインの種々のステージを実行することあり、結果的に画像を描画する。
パイプラインの多くのステージは、種々の処理ステージを通してデータが流れるにつれて入力と出力とが好適に画定されており、いくらかの特定の実行は、所要の視覚効果にしたがって種々のステージを包含しまたは省略しても良い。グラフィックパイプライン内の種々の固定された機能演算が、GPU内にハードウェアモジュールとして実行され、一方、プログラム可能なシェーダは典型的には、色、ライティング、テクスチャ座標、及び、画像内のオブジェクト及び画素に関連する他の視覚的値を決定するシェーディング計算の多くを実行することがあるが、ハードウェア、ソフトウェアまたはこれらの組合わせのパイプラインの種々のステージを実行することができる。古いGPUは、計算がGPUの個々のハードウェアモジュール内に固定されて、ほとんど固定された機能のパイプラインを使用していたが、しかし、シェーダの出現及びプログラム可能なパイプラインの増加で、より多くの動作をソフトウェアプログラムで実行させるようになり、レンダリングプロセスについて、開発者により大きな柔軟性及びより大きな制御を提供する。
一般的に言うと、パイプラインの初期ステージは、仮想空間(「場面空間」と称することもある)内のジオメトリで実行される計算を包含し、この空間は、二次元、または、より一般的には、三次元の仮想世界を表しても良い。仮想空間内のオブジェクトは、典型的には、パイプラインの初期段階に対する入力としてセットアップされたポリゴンメッシュとして表され、その頂点は、典型的には三角形であるが更に点、線及び他の多角形形状を有しても良い画像内の一連のプリミティブに対応する。各プリミティブの頂点は、位置の値(例えば、X−Y座標及びZ深度値)、カラー値、照明値、テクスチャ座標等を含む一群のパラメータ値によって定義することができ、グラフィックスは初期ステージで、頂点ごとのベースで頂点のパラメータ値の演算を通じて処理しても良い。初期ステージにおける演算は、仮想空間内の頂点のパラメータを演算するための頂点シェーディング計算と同様に、アプリケーションステージで最初にセットアップしたものを超えて新しい場面のジオメトリを生成するために、場面の形状やジオメトリシェーディング計算を細分化するために、必要に応じてテッセレーションを包含しても良い。演算のいくつかは、基礎となる仮想空間の幾何学的形状にレンダリング計算を実行するために、頂点ごとのベースで、プリミティブの頂点のパラメータ値を演算する頂点シェーダを含む、プログラマブルシェーダによって実行しても良い。
表示に適した仮想世界の画像を生成するためには、場面内のオブジェクトと、それらに対応するプリミティブが仮想空間からスクリーン空間に変換される。中間ステージは、スクリーン空間を画定する2次元平面に対してプリミティブのマッピングを決定するために様々な動作を含んでも良い。ラスタライズ処理は、ラスタライザのために画定されたスクリーン空間における離散画素の初期ステージから処理されたプリミティブをサンプリングするため、及び、ラスタライザのサンプルによってカバーされたプリミティブのフラグメントを生成するために使用される。画面スペースに対する場面のラスタライズに関連したこれらの中間演算は、更に、隠されまたは最終画像で見ることのできないプリミティブの不必要な画素ごとの計算となることがあるフラグメントの処理を避けるための最適化として、現在のビューの視推台の外側のプリミティブのクリッピング、及び、現在のビューから見えない後ろ向きのプリミティブのカリング等の演算を包含しても良い。各フラグメントの入力値として使用されるパラメータ値は、典型的には、フラグメントの対応する画素の位置にフラグメントを形成するサンプリングされたプリミティブの頂点のパラメータを補間することにより決定され、この画素の位置は、典型的には画素の中心または画素内の異なるサンプル位置であるが、特定の状況では、他の補間位置を使用しても良い。
その後、パイプラインはフラグメント及びその補間された入力パラメータ値を、更に処理するためにパイプラインの下流に渡すことができる。これらの後のステージの際、フラグメント毎の演算は、例えば画素毎またはサンプル毎のベースで各フラグメントに対するカラー値、深度値、照明及びテクスチャ座標等の入力された補間パラメータ値を更に演算するために、画素シェーダ(「フラグメントシェーダ」としても知られていることがある)を呼び出すことにより実行しても良い。スクリーン空間内の各フラグメントの座標は、それらを生成したラスター化で画定される画素座標及び/またはサンプル座標に対応する。
最も簡単なケースでは、単一のサンプルが画素中心に対応する画素毎に使用され、単一のフラグメントが画素中心をカバーするプリミティブに対して処理される。例えば、同じスクリーン空間位置で他のプリミティブで閉塞されておらず、フラグメントが深度テストを通過すると、画素シェーダで計算されたフラグメントの出力カラー値がこれらの画素座標に対するカラーバッファに書き込まれ、画素シェーダが深度値をエキスポートするようにプログラムされている場合には、出力深度値が深度バッファに書き込まれることがある。
ときには、アンチエイリアス処理のために複数のサブピクセルサンプルが使用され、これは、カラーバッファ内の所定の画素が、異なるサブピクセルサンプルをカバーする異なるプリミティブから計算した異なるフラグメントからの出力カラー値のブレンドを選択することを可能とすることにより、サンプリングしたテクスチャの高周波数アーティファクトの出現を減少し、更に、プリミティブの境界におけるギザギザの縁部を滑らかにすることができる。複数のサンプルが使用される場合、各フラグメントの出力は、それを生成したプリミティブでカバーされる1つまたは複数のサブピクセルサンプルに適用してもよい。
従来のスーパーサンプリングが使用される場合、各サブピクセルサンプル用の画素シェーダでユニークフラグメントが処理され、その出力は、サンプル座標でカラーバッファに書き込まれ、ミニピクセル状のサンプルを本質的に処理し、より高い解像度でレンダリングする。より高い解像度のカラーバッファは、ダウンサンプリングし、表示バッファ内で表示解像度に、フィルタを通して低下させても良い。ユニークフラグメントは、それぞれカバーされるサンプルに対して、画素シェーダにより処理されることが必要であるため、プロセスはコンピュータ的に要求し、重要なシェーダオーバヘッドが導入される。
従来のマルチサンプリングは、画素シェーダで単一フラグメントを処理し、その値をカラーバッファの多数のカバーされたサンプルに適用することにより、スーパーサンプリングの欠点をある程度緩和する。最も単純なマルチサンプリングは、カラー及び深度の双方の各サンプルを用い、スーパーサンプリングにおけると同様にサンプル毎に深度を計算し、書き込み、画素ごとに単一出力カラーを、各画素の全てのカバーされたサンプルに複製する。最近、付加的な深度サンプルを追加することで被ることになるオーバーヘッドを追加することなく、ラスタライザの画素の境界内のプリミティブ縁部の範囲をより正確にサンプリングするため、カバレージサンプリングアンチエイリアス(coverage sampling anti−aliasing)(CSAA)及びエンハンストクオリティアンチエイリアス(enhanced quality anti−aliasing)(EQAA)等の新しいマルチサンプリング技術が出現し、これは深度サンプルからカラーサンプルのいくつかを分離するものである。これらのマルチサンプリング技術で、典型的には、画素内の深度サンプルよりもカラーサンプルがより多く(すなわち、いくつかのサンプルはカラー用にのみ使用される)、フラグメントは、画素内の少なくとも1つのサンプルがカバーされるときはいつでも、プリミティブに対する画素シェーダにより処理され、フラグメントの出力カラー値はカラーバッファ内の各カバーされたサンプルに適用することができる。
いくつかの新しいマルチサンプリング技術は、更に、カラーサンプルを深度サンプルから分離することを可能とし、より正確な深度情報を、カラーバッファデータのサイズを増大することなく、生成することが可能である。しかし、これらの技術は、深度情報のみを有するサンプルがシェーディングされるサンプルと考え、カラーサンプルがカバーされておらず、出力カラーが不要なときでも、任意のサンプルがカバーされる任意のフラグメントに対する画素シェーダが呼び出される。不都合なことに、画素シェーダの演算は計算的に高価であり、フラグメントの出力値が描画される画像における最終的に表示する画素値に寄与しないときはいつでも、無駄な計算的オーバーヘッドを導入する。ビデオゲーム及び他のリアルタイムグラフィック処理の例では、計算的必要性を減少させ、描画タスクに対する計算的効率を向上させることは、描画される画像のクオリティ及びディテールの向上を達成するための重要な目標である。更に、最近の4000画素のオーダーの水平解像度を有する超高精細(「ultra HD」または「4k」)ディスプレイの出現で、ディスプレイ技術の進歩について行くことができるより効果的なグラフィック処理方法が必要とされている。
この文脈の範囲内で、本開示の態様が生じる。
本開示の技術は、添付図面を参照する以下の詳細な説明を考慮することにより、容易に理解することが可能である。
図1A〜図1Bは、第1の従来のエイリアシング手法にしたがうグラフィックレンダリングプロセスを示す概略図である。 図2A〜図2Bは、第2の従来のアンチエイリアシング手法にしたがうグラフィックレンダリングプロセスを示す概略図である。 図3A〜図3Cは、本開示の態様によるグラフィックレンダリングプロセスを示す概略図である。 本開示の態様によるグラフィックのレンダリング方法を示す流れ図である。 本開示の態様によるグラフィックレンダリングパイプラインを示す流れ図である。 本開示の態様によるグラフィックレンダリングシステムを示す概略図である。 図7A〜図7Dは、本開示の態様にしたがうラスタライズ処理及び表示バッファの概略図である。 図8A〜図8Dは、本開示にしたがうグラフィック処理の概略図である。 図9A〜図9Bは、開示の態様によるグラフィック処理部材の独特の識別子の実施例を示す概略図である。 図10A〜図10Cは、本開示の態様によるグラフィック処理における独特のオブジェクト識別子を使用する実施例を示す概略図である。 図11A〜図11Bは、本開示の態様によるグラフィック処理における独特のプリミティブ識別子を使用する実施例を示す概略図である。 本開示の態様によるグラフィックレンダリングパイプラインを示す流れ図である。 本開示の態様によるグラフィックレンダリングシステムを示すブロック図である。 本開示の態様によるグラフィックパイプラインを通してオブジェクト及びプリミティブIDを生成及び伝達する方法の実施例を示す流れ図である。
以下の詳細な説明は、例示の目的のための多くの特定の詳細を含むが、当業者であれば、本発明の範囲内で、以下の細部に多くの変形及び変更が存在することが理解される。したがって、以下に説明する本発明の例示的な実施形態は、請求の範囲に記載の発明に対して普遍性を喪失させるものではなく、制限を付するものでもない。
本開示の態様は、レンダリングパイプラインの効率を向上するために、画素シェーダの呼び出しを最小とすることができるグラフィック処理システム及び方法を説明する。本開示の実施形態では、複数のサンプルはプリミティブ内で取得することができる。サンプルは深度及びカラーサンプルの双方を包含することができ、深度サンプル数は、各画素内でカラーサンプル数よりも多い。サンプルの少なくとも1つがカバーされるときに、プリミティブでカバーされるサンプルの性質が、シェーディング計算を実行するために画素シェーダを呼び出す前に考慮される。少なくとも1つのサンプルがプリミティブでカバーさるが、いずれもカラーサンプルではないとき、画素シェーダに対する呼び出しは、特定の状況で回避することができる。
従来のレンダリングパイプラインでは、プリミティブでカバーされたサンプルの形式に関わらず、画素シェーダが呼び出される。したがって、フラグメントシェーディング計算が実行され、フラグメントに対する画素シェーダで計算されたカラー値は、そのフラグメントを生成したプリミティブでカバーされるすべての深度サンプルと関連するカラーサンプルに適用される。サンプリングスキームが、カラーにのみ使用されるいくつかのサンプルを有する従来のラスター化の際に使用される場合、画素シェーダは、プリミティブでカバーされたサンプルが深度サンプルだけの場合でも、呼び出され、計算されたカラー値は、サンプルが関連する論理に基づいてカバーされてないサンプルに適用される。
本開示の特定の態様をより良く理解するために、グラフィック処理に対する第1の従来の手法を図1A〜1Bに示してある。図1A〜1Bに示す実施例は、画素ごとの単一サンプル位置のみを用い、これは、画素の最終セット内で目立ったエイリアシングアーチファクトとなることがある。
図1Aは、それぞれが描画される画像内のジオメトリの一部を形成するプリミティブとなりえる複数の三角形102a,102b、および、プリミティブに重なる一組のスクリーン空間画素104(または、スクリーン空間画素境界)を示す。図1Aでは、各スクリーン空間画素は、単一位置でサンプリングしただけのものであり、これは図示の実施例では画素104の中心である。このサンプルは、カラー、深度または他のパラメータを含むスクリーン画素のそれぞれのパラメータを決定するために使用することができる。画素内のサンプルがプリミティブでカバーされている場合、すなわち、この実施例でスクリーン空間画素の中心がカバーされている場合、フラグメントは、サンプルをカバーするプリミティブに対して生成することができ、フラグメントは更に、そのスクリーン空間画素の最終値が決定される前に、処理することができる。
図1Bは、プリミティブ102a及び102bのそれぞれのサンプリングから生成されたフラグメント106a及び106bを示す。すなわち、図1Bは、基となるプリミティブのために生成された少なくとも1つのフラグメントのための画素を示す。図1Bに示すように、フラグメント106aは、プリミティブ102aから生成され、これは、これらの対応する画素の中心のサンプルがその三角形でカバーされ、フラグメント106b及びプリミティブ102bについても同様だからである。フラグメント106a,106bのパラメータ値は、フラグメントの位置にフラグメントを生成したそれぞれのプリミティブ102a,102bの頂点のパラメータを補間することにより、決定しても良い。例えば、三角形102aのそれぞれの頂点のパラメータ値は、各フラグメント106aの中心に補間し、これらのフラグメント106aのそれぞれのパラメータ値のセットを決定しても良く、同様なプロセスを、三角形102bの頂点のパラメータ値を使用してフラグメント106bのそれぞれに実行しても良い。このパラメータは、テクスチャ座標、法線、接線、照明値、カラー値、位置(深度値を含む)等を含んでも良い。
それぞれのフラグメント106a,106b及びその補間されたパラメータ値は、最終的に描画される画像内の対応するこれらの最終画素値を決定する前に、更に処理しても良い。これらの計算のいくつかは、フレーム内の画素のカラー値を決定する前に、カラー、テクスチャまたは他のフラグメントパラメータ値を追加的にフラグメント毎に演算するために画素シェーダを呼び出すことにより実行される画素シェーディング計算を含む。
図1Bの説明から、この第1の従来の手法のサンプリングスキームは、プリミティブ102a,102bの境界で特定のエイリアシングアーチファクトを生じることがある。図示の実施例で見られるように、いくつかの画素はプリミティブの縁部に位置することがあり、これらの縁部画素の画定された境界は、これらのプリミティブがその画素のスクリーン空間座標にマッピングされたときに(例えば、投影され/変形され)、多数のプリミティブで実際にカバーされ得る。しかし、各画素は単一の位置でサンプリングされるだけであるため、フラグメントは双方ではなく、プリミティブの一方または他方で生成される。すなわち、カバレッジは、単一のサンプル位置だけに基づいて決定される。これは、最終画像のカラー及び他のパラメータにギザギサな効果(「ジャギー」と称されることもある)を作り出すこともあり、これは、三角形102a及び102b間の対角状に配向された境界のフラグメント106a及び106bの階段状の外観を参照して理解することが可能である。換言すると、その境界がプリミティブ102a及び102bの縁部と交差する、縁部画素のそれぞれについて、図1A〜1Bの従来のエイリアシングされた実施例では、フレームバッファ内の縁部画素の最終値は、サンプルをカバーするのはいずれのプリミティブであるかに基づいて、双方ではなく、プリミティブ102aまたは102bに生成されたフラグメントで決定され、これは、最終画像にエイリアシングアーチファクトが存在する結果となることがある。
図1A〜1Bを参照する上述のエイリアシング手法に関連する欠点を克服するため、画素毎の複数のサンプルがしばしば画像のエイリアス除去に使用される。画素の境界がプリミティブの縁部にあるときに、異なるサブピクセルのサンプルが別のプリミティブでカバーされることがあり、ディスプレイ画素の最終値は、従来、最終的表示バッファ内の単一の画素のカラー値を決定するためにカバーされたサンプルで重み付けされる異なるサブピクセルサンプル値を組み合わせることで決定される異なるプリミティブからの値の組み合わせである。
従来のアンチエイリアススキームの例が図2A〜2Bに記載され、図1A〜1Bの従来のエイリアシング処理された実施例と同様に、図2A〜2Bの従来の実施例は同じ画素104及びプリミティブ102a,102bを用いる。図2Aに示すように、図1Aの実施例のように各画素104のそれぞれの中心で単一のサンプルを抽出しているのではなく、複数のサンプルが各画素の領域全体で抽出されている。図示の実施例では、サンプルは、ラスタライザのために画定された各スクリーン画素104の境界内の4つの異なる位置から抽出され、典型的には、そのサンプルの少なくとも1つが所定のプリミティブでカバーされる場合には、少なくとも1つのフラグメントがスクリーン画素104における所定のプリミティブから生成される。すなわち、スクリーン空間に投影されたときに、プリミティブの領域が、スクリーン空間で画定される画素のサンプルをカバーしたときに、少なくとも1つのフラグメントが更に処理するために生成されることがある。
図2Bは、それぞれプリミティブ102a及び102bのサンプリングから生成されたフラグメント206a及び206bを示す。すなわち図示のフラグメント206aは、基となるプリミティブ102aのために少なくとも1つのフラグメントが処理されるこれらのスクリーン画素境界であり、図示のフラグメント206bは、基となるプリミティブ102bのために少なくとも1つのフラグメントが処理されるこれらのスクリーン画素境界である。第1実施例におけるように、フラグメントは、少なくとも1つの画素サンプルがプリミティブでカバーされたときにプリミティブのために生成され、各フラグメントは、それを生成したプリミティブの頂点のパラメータ値からフラグメントの位置に補間されたパラメータ値を有する。更に、第1実施例と同様に、フラグメントのための最終カラー値出力に作用するため、フラグメントのパラメータを演算することのできる更なるフラグメント毎の画素シェーディング計算のために、フラグメントのそれぞれに対して画素シェーダが呼び出される。
伝統的なスーパーサンプリングが使用される場合、多数のカラーフラグメントがそれぞれカバーされたサンプルに生成され、個々のカラーフラグメントは独自にシェーディング処理され、その対応するサンプルに適用される。この場合、各フラグメントの出力カラー値は、本質的により高い解像度のカラーバッファであるスクリーン空間の対応するサンプルに書き込まれ、この後、低下(down)フィルタ処理され、特定のスクリーン空間画素104の最終画素値を決定する。各サンプルは本質的に、スーパーサンプリングにおける小画素(mini−pixel)状に処理されるため、画素シェーダは、対応するサンプル位置に補間されるパラメータ値を各フラグメントの入力として使用しても良い。これは、良好な結果を達成する一方、画素シェーダが個々のサンプルに対して一度呼び出されるため、大量のシェーダオーバヘッドを導入する。
伝統的なマルチサンプリングが使用される場合、画素座標における単一のカラーフラグメントは、プリミティブ内に入るサンプルの数に関わりなく、少なくとも1つのサンプルがプリミティブでカバーされるときはいつでも、所定のプリミティブに対して生成され、画素シェーダの同じ出力値はその後、それぞれカバーされたサンプルに提供され、例えば、3つのサンプルがカバーされる場合、1つのフラグメントが処理されることがあり、その出力値がカバーされたサンプルのそれぞれに対して複製されることがある。頂点のパラメータ値は、全てのサンプルのフラグメントに対する入力として、スクリーン空間画素の中心に補間しても良い(しかし、画素中心がプリミティブ縁部の外側となる場合、補間される値は外挿しても良く、または、プリミティブの境界内に補間される値を使用するために図心サンプリングを使用しても良い)。画素シェーダはそれぞれカバーされたプリミティブに対して画素毎に一度呼び出すことが必要なだけであるため、多数のサンプルがカバーされる状況では、マルチサンプリングはシェーダオーバヘッドを大きく減少することができる。
その2つのハイブリッド(マルチサンプリング/スーパーサンプリングハイブリッド)のいくつかを使用して、画素内で繰り返す設定可能な画素シェーダを提供することができ、ここでは、画素シェーダはスクリーン画素に対して複数回呼び出され(例えば、多数のカラーフラグメントは画素シェーダで処理される)、この後、各カラーフラグメント出力が更に1つより多くのサンプルに適用される。例えば、4つが「シェーディングされた(shaded)」カラーサンプルで、4つが「格納された」カラーサンプルである、8つのカラーサンプルを抽出することができる。画素シェーダは、使用する4つのシェーディングされたカラーサンプルのそれぞれに対して一度呼び出すことができ、この結果、シェーディングされたカラーサンプルのそれぞれに対して独特のシェーディングされたカラー値となる。この後、各シェーディングされたカラーフラグメントの出力を、シェーディングされたカラーサンプル及び1つまたは複数の「格納された」カラーサンプルに適用することができる。
これらの技術に関わらず、この従来の実施例では、縁部画素208に対して、少なくとも1つのフラグメントが、プリミティブ206a及びプリミティブ206bの双方の各画素で生成される。これは、縁部画素位置208に対するフラグメント206aが、三角形102aの頂点値から補間されたパラメータ値で処理され、一方、これらの同じスクリーン空間画素位置におけるフラグメント206bが、三角形102bの頂点値から補間されたパラメータ値を取ることを意味する。フラグメント206a及び206bのそれぞれは、画素シェーダに対する別個の呼び出しで処理され、これは、対応して、フラグメントの数の増加により、図1A〜1Bのエイリアシングされた実施例と比較して計算負荷が増加することがある。しかし、サンプル抽出されたパラメータに対するエイリアシングアーチファクトは、減少し、最終的な画像の質は改善することができ、これは、縁部画素208のそれぞれの最終ディスプレイ画素値が、例えばサンプルカバレッジに基づいて重み付けされ、異なるプリミティブからのカラー値の組み合わせを採用することができるからである。この実施例では、説明のために隣接する前面の三角形として2つの三角形を簡単に示してあるが、しかし、各サンプルの深度値も、個々のサンプル位置で前面に存在する画素をカバーする三角形を、サブピクセルの精度でより正確に決定するために使用することができ、したがって、サンプルのカバレッジだけから決定することができる場合よりも、より正確な重みを決定する。
処理されたフラグメント値は、この後、これを生成したプリミティブ内に入るサンプル位置に適用され、プリミティブの外側となるサンプルに対しては廃棄される。例として、三角形206aでカバーされる3つのサンプル及び三角形206bでカバーされる1つのサンプル(図2Bの説明における三角形102bの上−左角部にマッピングされたフラグメント等)を有する縁部画素208の所定の1つに対して、対応するディスプレイ画素におけるカラーの最終値は、対応するフラグメント206aの計算値に向けて75%(例えば、プリミティブ102aに対してサンプルのカバレッジ3/4)、対応するフラグメント206bの計算値に向けて25%(例えば、プリミティブ102bに対してサンプルのカバレッジ1/4)の重み付けでブレンドすることができる。これは、最終画像のプリミティブの縁部のエイリアシングアーチファクトを減少させることができ、サンプリングされたプリミティブが大きく異なるカラーまたは深度パラメータを有するときに、最も目立つことがある。例えば、2つのプリミティブが異なるオブジェクトに属し、一方のプリミティブが前面にあり、一方、他方のプリミティブが離隔した背景にある場合、異なるプリミティブからのパラメータは大きく異なり、エイリアシングアーチファクトはより目立つことになる。画素内の複数の異なる位置からサンプルを取ることによるアンチエイリアス処理は、画素が、画素の異なる領域にマッピングされたプリミティブの値を取ることを可能とすることにより、移行部を滑らかにすることができる。
図2A〜2Bに示す実施例では、サンプル位置の数は説明のために4つとして記載してあるが、他のサンプル数としても良い。一般的に言うと、サンプル数が大きくなるとアンチエイリアス処理の質を向上することができるが、しかし、計算に必要な費用が増大する。図2A〜2Bの従来の実施例では、サンプルのそれぞれが同じタイプであり、少なくともカラー及び深度に使用され、ラスター化に画定される画素104は、ディスプレイを走査する表示バッファ内の最終画素値と1対1に対応する。
図3A〜3Cに移ると、本開示の実施態様が記載されている。図示の実施態様では、深度サンプルよりも少ないカラーサンプルが画素104毎に本開示の態様にしたがって取られ、カラーバッファよりも高い解像度の深度バッファとなる。本開示の特定の態様にしたがい、これは、フル表示バッファの解像度でのカラーバッファを必要とすることなく、表示バッファを、深度バッファの解像度で再構築することを可能とする。これは、任意の表示解像度に対するより効果的なレンダリングのための時間的及び空間的アンチエイリアス処理を含む多くの利点を提供することができる。なお、カラーサンプルは、例えば、メモリバンド幅、シェーダオーバヘッド等、一般的に、深度サンプルよりも大きな計算要求を伴うことに注意を要する。本開示の特定の実施態様は、この事実を利用し、カラーサンプルよりも高いスクリーンの空間精度を有する深度サンプルからの情報を使用して効果的に画像を描画することができる。
図3Aは、図2A〜2B及び図1A〜1Bの先の実施例と同様に、同じスクリーン空間画素104にマッピングした同じプリミティブ102a,102bを示す。図2Aと同様に、各画素104は、画素全体における複数の異なる位置でサンプリングされている。しかし、図2Aの実施例とは対照的に、画素はそれぞれ、深度サンプルよりもより少ない数のカラーサンプルを有する。換言すると、各画素104のカラーサンプル数は深度またはzサンプル数よりも少ない。図3A〜3Cに記載の実施例は、カラー及び深度の方法に使用される2つのカラーサンプルと、深度のみに使用される2つのサンプルとを有するが、しかし、他のサンプリングパターンを使用しても良い。本開示のより一般的な実施態様は、1つまたは複数のカラーサンプルと複数の深度サンプルとを画素毎にサンプリングする画素のセットを有する任意のサンプリングスキームを使用しても良い。
この実施例では、各画素に複数のカラーサンプルがあるが、本開示の実施態様は、単一のカラーサンプルのみを取る状況にも適用可能であることに注意を要する。更に、この実施例では、サンプリングは図示の画素のそれぞれに対して均等に実行され、各画素はそれぞれのタイプの同数のサンプルを同じ位置で有するが、しかし、特定の実施態様は、更に、異なる画素に対して非均等なサンプリングを使用することもできる。例えば、異なる画素に対して異なるサンプル位置及び/または異なるサンプル数等、異なる画素に異なるサンプリングパターンを使用することができる。更に、図3A〜3Cの実施例の各カラーサンプルは深度にも使用される一方、カラーにのみ使用するいくつかのサンプル有することができる。より一般的には、本開示の態様は、全画素列が1セットの画素を備え、このセットの各画素が1つまたは複数のカラーサンプルと複数の深度サンプルとを有し、セット内の各画素に対する深度サンプルの数はカラーサンプルの数よりも多い、任意の体系に対して適用することができる。
図3Bに移ると、各画素内の1つまたは複数のカラーサンプル及び各画素内の複数の深度サンプルを有するサンプリング技術を使用して、それぞれプリミティブ102a及び102bのサンプリングからフラグメント306a及び306bを生成することができる。すなわち、図3Bの図内のフラグメント306aは、プリミティブ102aに対して少なくとも1のフラグメントが生成されるこれらのスクリーン画素の境界であり、フラグメント306bは、プリミティブ102bに対して少なくとも1つのフラグメントが生成されるこれらのスクリーン画素の境界である。複数の異なる位置で各スクリーン空間画素104内に複数のサンプルを取ることは、この実施例では、隣接するプリミティブ102a,102bの双方でカバーされるサンプルを有する縁部画素308a,308bのセットを生じる。図3Bの図示の実施例では、所定のプリミティブで少なくとも1つの画素のサンプルがカバーされたときに、所定のプリミティブから所定の画素で更に処理するために、少なくとも1つのフラグメントが生成される。図3Bの図示の実施例では、縁部画素308aにおいて、プリミティブ102a及び102bの双方でフラグメントが生成され、これは、これらの画素のそれぞれに対し、プリミティブがスクリーン空間に投影されたときに、プリミティブにより少なくとも1つのサンプルがカバーされるためである。
図3Bの実施例に対するサンプリングパターンは従来のものではないが、フラグメントが生成され、画素シェーダで処理される態様は従来のものであることに注意を要する。すなわち、図3Bの実施例では、フラグメントが生成され、サンプルのタイプに関わらず、少なくとも1つのサンプルがプリミティブでカバーされたときにいつでも、それに応じて画素が呼び出される。しかし、図示の実施例における縁部画素308a,308bのそれぞれに対して、少なくとも1つの深度サンプルが、プリミティブ102a及び102bのそれぞれでカバーされるが、しかし、同じ図示された縁部画素に対して、カラーサンプルが、双方ではなく、一方または他方のプリミティブ内に全体的に包含されることに注意することが重要である。特に、図3Bの図示の実施例では、縁部画素308aに対して、カラーサンプルがプリミティブ102bではなく、プリミティブ102aでカバーされ、一方、縁部画素308bに対しては、カラーサンプルが、プリミティブ102aではなく、プリミティブ102bでカバーされる。
画素シェーダは、通常呼び出され、フラグメントに対する出力が、そのサンプルタイプにしたがってフラグメントで生成されたプリミティブでカバーされるサンプルに対して適用される。これは、フラグメントが画素で処理されるが、深度サンプルだけがカバーされる図3Bに記載のこれらの縁部画素に対して、カラー値ではなく、画素シェーダで計算されたz深度またはステンシル値が、カバーされた深度サンプルに適用することができることを意味する。z深度値を画素シェーダで計算することが可能である一方、これは比較的まれであり、多くの状況では発生せず、これは、画素シェーダの主たる目的が、通常は、例えばカラー値演算、照明値演算等のフラグメントのカラー値に影響するシェーディング計算を実行することだからである。したがって、これらの状況における従来のラスター化及び画素シェーダ呼び出し技術の使用は、単に、廃棄される計算結果となり、GPUによる非効率な画素シェーダの使用となり、これはレンダリングパイプラインの計算効率を低下させる。
本開示の実施態様は、これを認識し、フラグメントに対して画素シェーダを呼び出す前に、カバーされたサンプルの性質を考慮することにより、レンダリングパイプラインの効率を改善することができる。本開示の実施態様の説明は、図3Cに示してある。
図示の実施例では、サンプルカバレッジは通常、カラーフラグメント306a,306bが、図3Bに於けるようにスクリーン画素と同じセットに対し、プリミティブ102a,102bから生成されることを示す。しかし、本開示の態様にしたがい、図3Cにグレーで表示したボックスが、少なくとも1つのサンプルがプリミティブ内に入っても、これらのサンプルがカラーサンプルでない(すなわち、深度サンプルのみがカバーされている)ために、基となるプリミティブに対して画素シェーダの呼び出しを行わないフラグメント/画素を示す。この実施例では、画素シェーダは、プリミティブ102bではなくプリミティブ102aの各縁部画素308aに対して少なくとも一度呼び出される。同様に、画素シェーダは、プリミティブ102aではなくプリミティブ102bの各縁部画素308bに対して少なくとも一度呼び出される。これは、本開示の特定の実施態様において、カラーサンプルカバレッジだけが、ラスター化及び画素処理中に画素シェーダに対して呼び出しを指示できるためである。
残りのフラグメント(すなわち、図3Cに白/グレー表示されていないフラグメント)について、画素シェーダは通常と同様にまだ呼び出すことができる。これらのフラグメントのそれぞれに対して、これは、フラグメントの補間されたパラメータ値上の画素シェーディング計算を包含することができ、これは、画素カバレッジの構成及び、場合によっては潜在的性質にしたがって、画素中心、サンプル位置または画素の他の位置に対して生成されたプリミティブの頂点パラメータ値から補間することができる。画素中心がプリミティブの外側(少なくとも1つのサンプルがプリミティブ内に入っても)となる場合、補間された値は実際に外挿とすることができ、または、図心サンプリングを使用して、値がプリミティブ内の位置に補間されることを確保しても良い。代替的に、いくつかの他の補間の形態を使用しても良い。
深度サンプルだけが、それを生成したプリミティブ内にあるグレー表示したフラグメントについて、深度値をラスター化ステージの際に適用しても良いが、画素シェーダをこれらのフラグメントに対してバイパスしても良い。深度値は、プリミティブの頂点から補間した値としても良い。それぞれのプリミティブからのこれらの深度値は、深度テスト(及び、更にステンシルまたは他のテスト)に使用しても良く、これは、例えば早期深度テスト(例えば、EarlyZ)または階層的な深度テスト(例えば、Hi−Z)でも良く、深度値は深度バッファに書き込むか、または、深度テストにしたがって廃棄しても良い。カラー及び深度サンプルが、それを生成したプリミティブ内にあるフラグメントについて、ラスター化ステージの際の早期深度テストは、深度−ステンシルテストに失敗したサンプルを除去し、しばしば、深度サンプルだけを包含する追加フラグメントを作成しても良く、この場合、画素シェーダの呼び出しを避けても良い。
本開示の実施態様は、例えば早期深度テストが構成される状況で、レンダリング効率を向上させることに注意を要する。一般的に言うと、早期深度テストが構成される場合、各深度サンプルの深度値は、ラスター化の際にチェックされ、この深度値は深度バッファに書き込まれるかまたは廃棄される。このケースの場合、その深度サンプルの全ての有益な作業が提供され、任意の深度のみのフラグメントは、これらのフラグメントが画素シェーダ呼び出しのためにパックされる前に、廃棄することができる。
しかし、いくつかの状況では、「Re−Z」または「Late−Z」深度−ステンシルが構成される。ポスト画素シェーディング深度−ステンシルテスト及び書き込みは、特定の状況で、深度、ステンシルまたはサンプルカバレッジマスク値を変更することにより、そのテストの結果を変更することのできる画素シェーダ出力をサポートするために使用される。これらの場合、画素シェーダが出力深度、ステンシルまたはサンプルカバレッジマスク値の出力を作成するために、画素シェーダは、深度のみのフラグメントに対しても呼び出される。
画素シェーダから出力されるシェーディング値(shaded value)は、その後、画素処理ステージで各サンプルに適用しても良い。サンプル値はこの後、システム及びレンダリングパイプラインの構成にしたがって、異なる方法で使用しても良い。いくつかの実施態様では、多数のサンプルを、空間的及び/または時間的アンチエイリアス処理に使用しても良い。他の実施態様では、深度サンプル値はフル解像度深度バッファに格納しても良く、カラーサンプル値を、例えば、サンプルの数に対応する解像度を有する部分解像度カラーバッファに格納しても良く、最終表示画像は、その後、最近のステージのフレームバッファ/表示バッファ演算中にカラー値派生の部分解像度カラーバッファを使用して、フルz解像度の表示バッファについて決定される。更に他の実施態様では、これらのいくつかの組み合わせを使用しても良い。
画素シェーダ内のz深度、サンプルカバレッジマスクまたはステンシル値の変更を回避することが望ましいことがあるため、深度サンプルだけがプリミティブでカバーされた画素におけるこれらのカバーされたプリミティブに対して、画素シェーダ及びその関連するシェーディング計算に対する計算的に高価な呼び出しを回避することができる。フレーム内のプリミティブ縁部に入る多くの画素が存在する場合があり、カラーサンプルが1つの可視プリミティブにのみ入るにも関わらず、これらの縁部画素の多くは異なる可視プリミティブに入る異なるサンプル位置を有するため、画素シェーダを呼び出す前に、サンプルのタイプを考慮することにより、レンダリングパイプラインにおける多くの計算を回避することができる。本開示のいくつかの実施態様では、全体の効果は、効率において10〜20%改善することができる。
画素が深度サンプルのみを有して、プリミティブでカバーされているカラーサンプルを有していない場合でも、画素シェーダを呼び出すべきいくつかの例が存在することに注意を要する。例えば、いくつかの例では、画素シェーダは、フラグメントに対して「pixel kill」(または、fragment kill)を実行するように構成しても良い(例えば、出力アルファブレンドファクタテストに基づいて)。他の例では、画素シェーダは、フラグメントについてZまたはステンシル値をエキスポートするように構成しても良く、これは、画素シェーダがこのZ/ステンシル値をカバーされた深度サンプルに書き込むために呼び出すことが必要なことがあることを意味する。更に他の例では、画素シェーダは、サンプルマスクを変更するように構成しても良い。これの3つの状態のいずれにおいても、画素シェーダをやはり呼び出すべきである。しかし、これらの条件が存在しない場合は、この後、画素シェーダの呼び出し及び関連する計算は、本質的に無用である。
図4は、本開示の態様にしたがうグラフィックを処理する実施例の方法400を示す。この方法400は、グラフィックレンダリングパイプライン内で、図3Cに関する上記に示したものと同様な状況で、画素シェーダの呼び出しを回避するために実行しても良い。
421で示すように、この方法は、各スクリーン空間画素に対して複数のサンプルを使用するプリミティブのサンプリングを含んでも良い。複数のサンプルは、1つまたは複数のカラーサンプルと複数の深度サンプルとを有しても良い。特定の実施態様では、1つのカラーサンプルと複数の深度サンプルが各画素について取られる。他の実施態様では、方法400が適用される各画素について、複数のサンプルが、複数のカラーサンプルと複数の深度サンプルとの双方を有し、この場合、画素のそれぞれのカラーサンプル数は、深度サンプル数よりも少なくすべきである。いくつかの実施態様では、スクリーンは、非均等にサンプリングしても良く、異なるスクリーン空間画素は、異なるサンプル数及び/または異なるサンプル位置を有しても良い。したがって、ラスター化するスクリーン空間内に画定される少なくともいくつかの画素のセットで、各スクリーン空間画素が複数のサンプルを有する限り、421において、あらゆるスクリーン画素が複数のサンプルを有することは、厳格な必要条件ではない。特定の実施態様では、421で決定されたサンプルカバレッジは、各画定されたスクリーン空間画素におけるスクリーン空間に投影されたサンプルプリミティブに対して、グラフィックレンダリングパイプラインのラスター化ステージでスキャンコンバータにより実行される。
サンプルの抽出は、423に示すように、そのサンプルがプリミティブでカバーされた画素のセットとしても良い。図4の説明では、それぞれ所与のプリミティブに対してカバーされた画素423は、プリミティブでカバーされた少なくとも1つのサンプルを有するこれらの画素のみをいう。プリミティブの縁部が画素境界内に交差する場合、サンプルのいくつかに対してのみ、例えば図1〜3に関する上述の説明のように、所与のプリミティブでカバーすることができる。更に、いずれのサンプルも三角形でカバーされることなく、三角形の境界を画素の境界と交差することが可能である。しかし、これは、いずれにしろ、通常画素シェーダの呼び出しを招くことはないため、この状況は説明のために無視される。
426に示すように、早期深度テストは、所与のプリミティブでカバーされた各深度サンプルに対して実行しても良い。これは、例えば、所与のプリミティブの頂点からそれぞれのサンプルの補間された深度を、これらのサンプル座標に対する現在の深度値と比較することを包含しても良い。深度テストに失敗した深度サンプルのそれぞれは、431に示すように廃棄され、一方、合格した深度サンプル、例えば存続している深度サンプルは、432に示すように、深度バッファに深度値を書き込むことによりカバーされた画素の深度サンプルに適用しても良い。
深度テストに合格したプリミティブでカバーされるサンプルが存在する場合は、方法400は、425に示すように、画素シェーダを呼び出す前に、存続するカバーされたサンプルの性質を更に決定しても良い。従来、早期深度テストが用いられる場合でも、画素シェーダは、少なくとも1つの画素のサンプルが深度テストに合格するといつでも、呼び出される。しかし、図4に示す実施態様の説明では、システムは、深度テストを乗り切ったサンプルのいずれかがカラーサンプルかどうかチェックしても良い。プリミティブでカバーされたカラーサンプルが残っていないことが決定される場合は、画素のフラグメントは、433に示すように、破棄されても良く、画素シェーダは呼び出されない。
結局、早期テストで全ての存続するサンプルが決定されると、所与のプリミティブでカバーされた少なくとも1つの存続するカラーサンプルが存在し、この後、434に示すように、生成された画素フラグメントに対して画素シェーダを呼び出すことができる。画素シェーディング計算は、画素シェーダの呼び出しにしたがって実行することができ、画素シェーダの出力は、435に示すように、例えばカラーバッファ内のカラーサンプル位置で1つまたは複数の描画ターゲットに適用することができる。この処理は、上述の態様でカバーされた少なくとも1つのサンプルを有する、それぞれのカバーされた画素に対して実行することができる。特定の状況では、これは、画素の深度サンプルが所与のプリミティブでカバーされかつ全ての深度−ステンシルテストを合格した場合でも、画素シェーダの呼び出し及び関連する画素シェーダ計算は、所与のプリミティブに対する画素に対して回避できることを意味する。多数の三角形が画素境界に重なる場面では、これは、性能及びレンダリング効率の大きな促進を提供することができる。
ステンシルテスト及びステンシル書き込みは、説明のために上記から省略してあるが、しかし、早期テストについて、深度サンプルでステンシル値を比較し、ステンシル値について、それに応じて書き込まれるサンプルに適用することが可能であることにも、注意を要する。
サンプルカバレッジの性質にしたがって画素シェーダを呼び出すかどうかの決定のプロセスは、所与のプリミティブにおけるそれぞれのカバーされた画素に対して実行しても良く、同様に、場面内の各プリミティブでカバーされた画素に対して実行しても良い。カバーされた画素の異なるものに対する演算は、処理ユニット、例えば、GPUで並列に実行しても良いことに注意を要する。
本開示の態様によると、所与のカバーされた画素のために画素シェードを呼び出すか、呼び出さないかの考慮は、早期深度テストを合格したカバーされたカラーサンプルがいくらか存在するか否かのみ以外の他の考察を考慮しても良い。例えば、カバーされたカラーサンプルがない場合(例えば深度サンプルだけがカバーされている)でも、所与のフラグメントでカバーされるサンプルを有する画素に対し、所与のフラグメントに対して画素シェーダを呼び出しても良い、いくつかの状況が存在する。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、画素シェーダがカバーされた画素を削除(または、フラグメントを削除)するように構成されているかどうか決定することを包含しても良い。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、更に、画素シェーダがカバーされた深度サンプルについて、Zまたはステンシル値をエキスポートするように構成されているか否か決定することを包含しても良い。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、更に、画素シェーダがサンプルマスクを変更するように構成されているか否か決定することを包含する。これらの実施態様では、早期深度テストは省略しても良く、例えば、深度テストは、それぞれカバーされたサンプルに対する画素シェーダの後に実行しても良い。これらの状況では、画素シェーダは、通常の態様で呼び出しても良い。
いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、画素シェーダがカバーされた画素を削除する(または、フラグメントを削除)ように構成されているかどうか決定することを包含しても良い。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、更に、画素シェーダがカバーされた深度サンプルについて、Zまたはステンシル値をエキスポートするように構成されているか否か決定することを包含しても良い。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、更に、画素シェーダがサンプルマスクを変更するように構成されているか否か決定することを包含する。これらの実施態様では、早期深度テストは省略しても良く、例えば、深度テストは、それぞれカバーされたサンプルに対する画素シェーダの後に実行しても良い。これらの状況では、画素シェーダは、通常の態様で呼び出しても良い。
図5は、本開示の態様を実施するように構成されたレンダリングパイプラインによる例示的なグラフィック処理方法500を示す。図5の例示的なレンダリングパイプラインは、本開示の態様にしたがって画素シェーダの呼び出しを最小にするための図4の方法400を包含しても良い。
レンダリングパイプライン500は、潜在的には二次元ジオメトリであるが、好ましくは仮想空間(ここでは、「場面空間」と称することもある)内で三次元ジオメトリを有しても良い場面を示すイメージとして画像を描画するように構成しても良い。レンダリングパイプラインの全体を通じて、データは1つまたは複数のメモリユニットからデータから読み出し及び書き込むことができ、これはグラフィックメモリ520として、図5に全体的に示してある。グラフィックメモリは、ビデオメモリ及び/またはハードウェアステートメモリを有しても良く、これは、レンダリングパイプラインに使用される種々のバッファ及び/またはグラフィック資源を包含する。グラフィックメモリ520の1つまたは複数の個々のメモリユニットは、レンダリングの特定のステージにおけるデータの性質にしたがって、1つまたは複数のビデオランダムアクセスメモリユニット(複数を含む)、1つまたは複数のキャッシュ、1つまたは複数のプロセッサレジスタ等として実現しても良い。したがって、グラフィックメモリ520は、グラフィックレンダリングパイプライン内で使用される任意のプロセッサアクセス可能メモリと称すると理解される。専門化したGPU等の処理ユニットは、パイプライン中の種々の演算を実行するように構成され、グラフィックメモリ520に読み/書きしても良い。
パイプラインの早期ステージは、場面がラスター化され、画素表示装置に出力するのに適した個別のピクチャエレメントのセットとして、スクリーン空間に変換される前に、場面空間で実行される動作を包含しても良い。パイプラインの全体を通して、グラフィックメモリ520に包含される種々の資源は、パイプラインのステージで利用され、ステージに対する入出力は、イメージの最終値が決定される前に、グラフィックメモリに包含されるバッファに一時的に格納しても良い。
レンダリングパイプラインは入力データ522で作動することができ、これは、場面空間にセットアップされかつこの場面の座標に関して画定されたジオメトリを有する頂点のセットで画定される1つまたは複数の仮想オブジェクトを包含しても良い。このレンダリングパイプライン500に使用する入力データ522は、その頂点が本開示の態様にしたがうレンダリングパイプラインで処理されるプリミティブに対応する、場面ジオメトリのポリゴンメッシュモデルを有しても良く、初期頂点ジオメトリは、CPUで実行されるアプリケーションステージの際にグラフィックメモリにセットアップしても良い。
パイプラインの早期ステージは、プリミティブ処理523のいくつかの形態を包含しても良く、プリミティブを有する頂点インデックスが受け取られ、または、代替的に、ストリップ等の高次構造を有する頂点インデックスが受け取られ、三角形等のプリミティブに変換される。
プリミティブ処理523で作成される頂点インデックスのグループは、図5の頂点処理ステージ524のような広く分類されるものに移動しても良く、これは、場面空間ジオメトリ内のオブジェクトの頂点を処理するために種々の計算を包含してもよい。同じ頂点インデックスは多数のプリミティブに見ることができるため、独特の頂点インデックスを検出することが有益であり、頂点処理ステージ524は、所与の独特のインデックスが内部に包含されることのあるプリミティブの数に関わらず、独特のインデックス毎に、頂点に関連する計算が一度発生するのみであることを確保する独特のインデックス検出525を包含しても良い。この頂点処理ステージ524は、更に、頂点シェーディング計算526を包含しても良く、これは、位置値(例えば、X−Y座標及びZ深度値)、カラー値、証明値、テクスチャ座標等、場面内の頂点の種々のパラメータ値を操作しても良い。好ましくは、頂点シェーディング計算526は、1つまたは複数のプログラム可能な頂点シェーダで実行される。頂点処理ステージは、更に、選択的に、テッセレーション及びジオメトリシェーダ計算528等の追加頂点処理計算を含んでも良く、これは、プリミティブを細分割し、新しい頂点及び新しいジオメトリを場面空間内に生成するために使用しても良い。一度、頂点処理524と称されるステージが完了すると、このパイプラインのステージで、それぞれ頂点パラメータ値546のセットを有する頂点のセットで場面が画定され、これは、グラフィックメモリの頂点バッファに格納しても良い。
パイプライン500は、この後、場面ジオメトリをスクリーン空間及びレンダリングパイプラインの際に使用する個別のピクチャエレメントすなわち画素のセットへの変換に関連するラスター化処理ステージ530に向かうが、しかし、画素という用語は、最終表示バッファ画像における表示画素値に対応する画素を必ずしも意味しないことに注意を要する。仮想空間ジオメトリは、スクリーン空間ジオメトリに変換されても良く、この変換は、本質的にオブジェクト及び頂点をスクリーン空間から、ラスタライザでサンプリングされた複数の個別のスクリーン空間画素から形成される場面の視界窓(または、ビューポート)への投影を計算しても良い演算を介して行われる。図5に示すラスター化処理ステージ530は、プリミティブ組み立て演算532を有しても良く、これは、場面内の頂点の各セットで画定されるプリミティブをセットアップしても良い。各頂点は、インデックスで画定しても良く、各プリミティブは、これらの頂点インデックスに関して画定しても良く、これは、グラフィックメモリ520内のインデックスバッファに格納しても良い。プリミティブは、それぞれポイントプリミティブ、ラインプリミティブ及び他の多角形形状を包含しても良いが3つの頂点で画定される少なくとも三角形を包含する必要がある。プリミティブの組み立てステージ532の際、特定のプリミティブを選択的に除外しても良い。例えば、そのインデックスが特定の巻取り順序を示すこれらのプリミティブは後ろ向きになると考慮し、場面から除外しても良い。
プリミティブを組み立てた後、ラスター化処理ステージは、スキャン変換演算534を有しても良く、これは、個々の画素でプリミティブをサンプリングし、サンプルがプリミティブでカバーされたときに、更に処理するためにプリミティブからフラグメントを生成しても良い。本開示の実施態様では、少なくともいくつかのスクリーン空間画素に対して、スキャン変換534は各画素内に複数のサンプルを取っても良い。これらの画素のそれぞれの中の複数のサンプルは、1つまたは複数のカラーサンプルと複数の深度サンプルとを有しても良い。特定の実施態様では、異なる画素は異なるサンプリングをしても良い。例えば、いくつかのエッジ画素は、中心画素よりも少ないサンプリング密度を有し、ヘッドマウントディスプレイ(HMD)に対するレンダリングの特定の態様を最適にしても良い。本開示のいくつかの実施態様では、スキャン変換は更に画素シェーダ前深度テスト及びいくつかのレンダリング構成における深度更新を包含しても良い。これらの場合、深度サンプルがテストされ、その値は深度バッファ(及び、可能なステンシルバッファ)内の深度値に対してチェックしても良く、深度バッファ内の深度サンプル値549は、それらがテストに合格したときに更新しても良い(及び、可能な場合には、ステンシル値は、ステンシルテストに基づいてステンシルバッファ内で更新しても良い)。
スキャン変換534中にプリミティブから生成されるフラグメント(または、画素)は、それを作ったプリミティブの頂点の頂点パラメータ値546から画素の位置に補間しても良いパラメータ値を有しても良い。ラスター化ステージ530は、パラメータ補間演算ステージ536を有し、これらの補間されたフラグメントパラメータ値を計算548しても良く、これはパイプラインの後のステージで更に処理するための入力として使用しても良く、更に、パラメータ補間は、深度サンプルをカバーする頂点深度値プリミティブから、深度値の補間を包含しても良く、これは、構成にしたがって、画素シェーダに対する入力フラグメント値として使用しても良くまたは使用しなくても良い。
パイプライン500は更に、図5に540で全体を示す画素処理演算を包含し、補間されたパラメータ値548を更に演算し、同時に、表示するための最終画素値にフラグメント及び/または補間された値をどのように寄与させるかについて決定する他の演算を実行しても良い。これらの画素処理タスクのいくつかは、フラグメントの補間されたパラメータ値548を更に演算するために使用しても良い画素シェーディング計算542を包含しても良い。画素シェーディング計算は、プログラム可能画素シェーダで実行しても良く、画素シェーダ呼び出し538は、ラスター化処理ステージ530の際のプリミティブのサンプリングに基づいて開始しても良い。本開示の実施態様では、画素シェーダ呼び出し538は図4の方法400にしたがって決定されても良く、画素シェーダは、カバーされたサンプルがカラーサンプルでないときは、所定のカバーされた画素に対して呼び出されない。
画素シェーディング計算542は、グラフィックメモリ520の1つまたは複数のバッファに値を出力しても良く、描画ターゲットと称することもある。いくつかの実施態様では、多数の描画ターゲット(MRT)を使用しても良く、その場合、画素シェーダは、画素毎またはサンプルごとの出力のそれぞれに対して複数の独立した値を出力することが可能であっても良い。画素処理540は、レンダリング出力演算544を包含しても良く、これは、ラスター演算(ROP)として知られることがあるものを包含しても良い。レンダリング出力演算544は、フラグメント値が画素シェーダで処理されたかどうか確認するために、深度テスト、ステンシルテスト及び/または他の演算を包含しても良く、画素シェーダで処理されない補間された深度値がある場合は、カラーバッファ及び/または深度バッファに書き込むべきであり、レンダリング出力演算のいくつかは、画素シェーディング計算542の後または画素シェーディング計算542の前に最適化として実行しても良い。サンプル毎の最終的なカラー値及び深度値は、レンダリング出力演算544にしたがって決定しても良く、これは、1つまたは複数のバックバッファとして表示バッファ(「フレームバッファ」として知られていることもある)に格納しても良い。
特定の態様によると、方法500は更に表示処理551を包含しても良く、これは、上述のステージにしたがってカラー/深度バッファ内で計算された全場面分の描画呼び出しを処理し、ディスプレイ上に表示するための完成したグラフィックフレーム554を構成することのできる表示画素値552の最終配列を決定しても良い。表示処理551は、前述のステージを介する多くの描画コマンドの流れの後に生じる最終ステップとしても良く、フルスクリーンパス(全画面を覆う小さな画面に整合した多角形)のレンダリング、または、カラー/深度サンプルバッファデータ549に直接作用することのできる計算ジョブを包含しても良い。特定の実施態様では、より高い解像度のカラーバッファ出力は、表示処理551の際の低解像度の深度バッファの使用から解決することができる。特定の態様により、このステージの際の空間的及び/または時間的アンチエイリアス処理を適用することも可能である。完成したフレーム554は、表示バッファに格納し、リアルタイムでディスプレイ装置に表示するために選択的に表示バッファをスキャンアウトしても良い。
パイプラインのいずれのステージも、ハードウェアモジュール、ソフトウェアモジュール(例えば、1つまたは複数の個々のまたは一体化したシェーダプログラム)またはこれらの組合わせにより、実装しても良いことに注意を要する。
図6に移動すると、本開示の態様によるグラフィックを描画するように構成されたコンピューティングシステム600の例示的な実施例が記載されている。システム600は、上記の態様で、アプリケーション665のためにグラフィックを描画するように構成しても良い。本開示の態様によると、システム600は、組込みシステム、携帯電話、パーソナルコンピュータ、タブレットコンピュータ、携帯ゲーム装置、ワークステーション、ゲーム機等であっても良い。
システムは、一般的に、例えば、図4及び/または5の方法に共通の特徴を有する方法を実行することにより、本開示で実施された態様を実行するように構成されたプロセッサ及びメモリを有しても良い。図示の実施例では、プロセッサは中央処理ユニット(CPU)670、グラフィック処理ユニット(GPU)671、及び、メモリ672を有する。メモリ672は、選択的に、CPU及びGPUの双方にアクセス可能な主メモリユニットを有しても良く、主メモリの一部は、選択的にグラフィックメモリ650の一部を有しても良い。CPU670およびGPU671は、それぞれ1つまたは複数プロセッサコア、例えば単一のコア、2つのコア、4つのコア、8つのコアまたはそれ以上を有しても良い。CPU670とGPU671は、データバス676を使用して1つまたは複数ユニットにアクセスするように構成しても良く、いくつかの実施態様では、システム600が2つまたはそれ以上の異なるバスを有することが有益となることがある。
メモリ672は、例えばRAM、DRAM等のアドレス指定可能なメモリを提供する集積回路の形態の1つまたは複数のメモリユニットを有しても良い。グラフィックメモリ650は、グラフィックレンダリングパイプライン用のグラフィック資源、グラフィックバッファ及び他のグラフィックデータを一時的に格納しても良い。グラフィックバッファは、例えば頂点パラメータ値を格納するための1つまたは複数の頂点バッファ、及び、頂点インデックスを格納するための1つまたは複数のインデックスバッファを有しても良い。グラフィックバッファは、更に、1つまたは複数の描画ターゲット693を有しても良く、これは、本開示の態様にしたがって計算された画素/サンプル値を保持するカラーバッファ694と深度バッファ696の双方を有しても良い。特定の実施態様では、カラーバッファ694及び/または深度バッファ696は、表示バッファ697に格納する表示画素カラー値の最終配列を決定するのに使用しても良く、これは、ディスプレイ上に表示することを意図する最終的に描画した画像を作り上げることができる。特定の実施態様では、表示バッファは、フロントバッファ及び1つまたは複数バックバッファを有しても良く、GPU671は、ディスプレイ686上に表示するために、表示バッファ697のフロントバッファからグラフィックフレームをスキャンアウトするように構成されても良い。
CPUは、CPUコードを実行するように構成することができ、これは、描画グラフィック(ビデオゲーム等)、及び、アプリケーション665の状態に基づいてGPU671で実装されるプログラムに対する描画コマンドまたは描画呼び出しを発行するための対応するグラフィックAPI667を有するアプリケーション665を有しても良い。CPUコードは、更に、物理的シミュレーション及び他の機能を実装しても良い。
GPUは、本開示の例示的実施態様に関して上述したように動作するように構成しても良い。グラフィックのレンダリングをサポートするため、GPUはシェーダ673を実行しても良く、これには頂点シェーダ及び画素シェーダを包含しても良い。GPUは、例えばジオメトリシェーダ、テッセレーションシェーダ、演算シェーダ等の他のシェーダプログラムを実行しても良い。GPUは、更に、専門化したハードウェアモジュール698を有しても良く、これは、1つまたは複数のテクスチャマッピングユニット、及び/または、図5に示すパイプラインと同様なグラフィックパイプラインの1つまたは複数のステージで演算を実行するように構成された他のハードウェアモジュールを有しても良く、これは、固定された機能演算であっても良い。シェーダ673及びハードウェアモジュール698は、最終画素値がディスプレイに出力される前に、パイプラインの種々のステージで、メモリ650及びバッファ693内のデータとインターフェースをとっても良い。ここに記載したグラフィック処理技術の態様を実行するためにシステム600のプロセッサで実行するように構成されたシェーダ673及び/または他のプログラムは、非一時的コンピュータ可読媒体に、命令として格納しても良い。GPUはラスタライザモジュール695を有しても良く、これは、選択的にGPU、シェーダ673またはこれらの組合わせたハードウェアモジュール698に組み込んでも良い。ラスター化モジュール695は、スクリーン空間画素のプリミティブの複数のサンプルを取得し、本開示の態様にしたがい、サンプルの性質にしたがって1つまたは複数の画素シェーダを呼び出すように構成しても良い。
システム600は、周知のサポート機能677を有しても良く、これは、例えば、バス676を介してシステムの他の構成要素と通信しても良い。このようなサポート機能は、入出力(I/O)要素679、電源(P/S)680、クロック(CLK)681及びキャッシュ682を包含しても良いが、これに制限するものではない。装置600は、選択的に、ディスクドライブ、CD−ROMドライブ、フラッシュメモリ、テープドライブ、ブルーレイドライブまたはプログラム及び/またはデータを格納する同様のものなどの大容量記憶装置684を有しても良い。デバイス600は、更に、描画したグラフィック687をユーザに提示するディスプレイユニット686、及び、装置600とユーザとの間の対話を容易とするユーザインターフェースユニット688を有しても良い。ディスプレイユニット686は、フラットパネルディスプレイ、陰極線管(CRT)スクリーン、タッチスクリーン、ヘッドマウントディスプレイ(HMD)、または、テキスト、数字、グラフィックシンボル若しくは画像を表示可能な他のデバイスの形態としても良い。ディスプレイ686は、ここに記載の種々の技術で処理されたレンダリング処理されたグラフィック687を表示してもよい。ユーザインターフェース688は、キーボード、マウス、ジョイスティック,ライトペン、ゲームコントローラ、タッチスクリーン、及び/または、グラフィカルユーザインターフェース(GUI)と結合して使用することができる他のデバイスなどの1つまたは複数の周辺装置としても良い。特定の実施態様では、アプリケーション660及びグラフィックの基となるコンテンツの状態は、少なくとも一部が、例えば、アプリケーション665がビデオゲームを包含するビデオゲームの導入で、ユーザインターフェース688を介するユーザの入力によって決定しても良い。
システム600はネットワークインターフェース690を包含し、デバイスがネットワーク上で他のデバイスと通信するのを可能としても良い。ネットワークは、例えばローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク、Bluetooth(登録商標)ネットワークまたは他のタイプのネットワーク等のパーソナルエリアネットワークであっても良い。図示及び説明した種々の構成要素の各々は、ハードウェア、ソフトウェア、または、ファームウェア、または、これらの2つ以上のいくつかの組み合わせであっても良い。
図7A〜7Dは、本開示の特定の実施態様にしたがってサンプリングパターンから計算することのできる対応する表示バッファと共に、サンプリングパターンの例示的な実施例を示す。図7A〜7Dは、本開示の特定の実施態様における深度サンプルよりも数の少ないカラーサンプルを有する画素をサンプリングすることが、有益であることの理由の特定の態様を示す。
図7Aに示すように、スクリーン空間は、例えばラスタライザのための画素境界または画素座標である複数の画素104で画定しても良く、これは、それぞれ本開示の特定の態様にしたがって複数のサンプルを有しても良い。複数のサンプルは、各画素104に対してとることができ、各サンプルは、本開示の特定の態様にしたがって、レンダリングプロセスの際に決定される関連する値を有しても良い。図7Aに示すように、各スクリーン空間画素104の複数のサンプルは、深度サンプルよりも少ないカラーサンプルを有しても良い。すなわち、深度サンプル数は、各スクリーン空間画素104内でカラーサンプル数よりも多くしても良い。レンダリングの際、各サンプルに対してプリミティブのラスター化から計算された値、及び、対応するフラグメントの画素のシェーディングは、ここでは特定の原理にしたがって決定しても良く、図示のカラーサンプルだけを、レンダリングの際にカラー値をシェーディングするために使用しても良く、一方、深度サンプルのいくつかは深度のみに使用しても良い。
図7Bは、図7Aに示すサンプリングプロセスを使用して計算しても良い高解像度の深度バッファ711を示す概略図である。図7Cは、図7Aに示す同じサンプリングプロセスを使用して計算しても良いカラーバッファ713を示す。図に示すように、本開示の実施態様では、画素処理中にレンダリングされるカラーバッファ713は、レンダリングされる深度バッファ711よりも低い解像度を有しても良い。図7Dは、部分解像度のカラーバッファ713から派生したカラー値を使用するフル解像度の深度バッファ711から再構築することのできる最終表示バッファ715を示す。
大まかにいうと、深度バッファ711内の値は、レンダリングプロセス中、フル表示解像度715内の各表示画素に対する独特のカラー値をレンダリングすることなく、カラーバッファ713のどのカラー値をフル表示バッファ715内の画素に適用すべきかをフル空間精度で決定するために、使用することができる。好ましくは、フル表示解像度は、4k解像度(例えば、3840x2160)用の表示画素密度を有し、レンダリングされた表示画像は、超高精細ディスプレイとして一般に知られているものに適している。しかし、本開示の態様は、表示バッファ内の表示画素の数よりも少ないレンダリングされるカラーサンプルまたはカラー画素値を有する部分解像度カラーバッファを使用することにより、任意の表示バッファ解像度に対するレンダリング効率の改善に適用することができる。制限するものではない実施例として、フル表示解像度は、標準の高精細(例えば、2kのオーダーの水平解像度)であっても良く、グラフィックは、フルHD解像度よりも低解像度カラーバッファを用いることにより効率を改善させた標準のHD解像度にレンダリングしても良い。
メモリバンド幅の必要条件及びカラーサンプルに対する計算値に関連する計算オーバーヘッドは、一般に、深度に対するこれらよりも高いことに注意を要する。例えば、現在のレンダリング技術に対して、マルチプルレンダーターゲット(MRT)を介して、画素毎の深度データよりも多くの画素毎のカラーデータをより多く出力すること(例えば、160ビットの合計カラーデータ対32ビット深度)は、一般的であり、これは、レンダリングパイプラインの際に、所与のカラーバッファ解像度対比較可能な深度バッファ解像度で、メモリ資源により大きな負担をかける。更に、画素シェーダはカラーサンプルに対して一般的に呼び出されなければならないため、シェーディング計算及び関連するパラメータ値が計算されて、画素の境界内に入る各カラーサンプルに適用しなければならず、画素シェーダオーバヘッドは、図7Cに示すように、より少ないカラーサンプル及び対応して低い解像度のカラーバッファを使用し、これらのカラーサンプルを、対応する最終フレーム画像を包含するフル解像度の表示バッファに適用することにより、顕著に低減することができる。深度値が画素の処理中に画素シェーダで変更されないことがしばしばあり、所与のプリミティブに対してスクリーン空間画素の境界内にカラーサンプルが入らなければ、画素シェーダの呼び出しを回避することにより、図7Aに示すサンプリングスキームを利用して所定の状況で、シェーダのオーバーヘッドを低減することができる。
本開示の特定の態様を説明するため、図8Aは、図7Aに示す実施例と同様なスクリーン空間画素全体のサンプリングパターンを使用し、一対のプリミティブ817a及び817bのラスター化に使用されるスクリーン空間画素104のセットの実施例を示す。図8Aに示す実施例では、プリミティブ217aは、フル解像度深度バッファが、例えば図7A〜7Dに示すように部分解像度カラーバッファだけを使用するフル解像度表示バッファに対してカラー値を正確に再構成するために使用する方法の特定の態様を説明するために、前部三角形217bで部分的に閉塞された背景三角形である。この簡略化した実施例では、三角形817a及び817bは、場面内で他のプリミティブで閉塞されていないと仮定している。
図8Aに示すように、スクリーン空間画素104aの1つが、深度サンプルカバレッジに基づいてプリミティブ817a及び817bの双方でカバーされている。「カバーされた」は、プリミティブの境界がスクリーン空間に投影されたときに、サンプルがプリミティブの境界内に入ることをいう。しかし、1つのカラーサンプルだけがこのスクリーン空間画素104a(上左角部のカラー及び深度サンプル)で使用され、この実施例では、スクリーン空間画素104aのカラーサンプルが三角形817aだけでカバーされている。このカラーサンプルは他の点では閉塞されていないため、このサンプルの深度に基づいて、このサンプルは、カラーバッファのプリミティブ817aに対して計算されたカラー値を取る。同様に、図示の実施例では、スクリーン空間画素104bに対して、三角形817bでカバーされた1つのカラーサンプル(上左角部)が取られる。カラーサンプルは、このサンプルの深度に基づいて、他の点で閉塞されていないため、このサンプルの深度に基づいて、このサンプルは、例えば図7Cに示すものと同様なカラーバッファであるカラーバッファ内のプリミティブ817bに対して計算されたカラー値を取る。同様に、これらの同じカラーサンプルのスクリーン空間座標に対する深度サンプルは、それぞれのプリミティブから計算された深度値を取る。
図8Aに示すように、ラスタライザ画素104aに対して、カラーサンプルよりも多くの深度サンプルが取られる。図示の実施例では、背景の三角形817aは、ラスタライザ画素104aの上右角部の深度サンプルにおける三角形817bで閉塞されている。これは、このサンプルが、三角形817bに対して計算された深度バッファの値を取ることを意味し、これは、三角形817aでカバーされた深度サンプルが深度テストに失敗し、廃棄されるためである。この結果、値は、カラーサンプルが計算された上左の深度サンプルに対する値とは、大きく異なる(すなわち、低い深度/スクリーンにより近い)ことがある。更に、この深度サンプルは、三角形817bでカバーされたカラーサンプルの深度値と同様または同じことがある値を取る。
図8Bは、この情報が高解像度表示バッファを効果的に再構成するために使用することのできる方法を詳細に説明する。図8Bは、同じサンプルに重ねられるサンプルプリミティブ817a及び817bを示すが、今、ディスプレイ上に表示することを意図した、再構成された表示バッファ画素がこれらのサンプルに重なって示されている。この実施例では、表示バッファは、深度サンプルの配列を作り上げる深度バッファのフル解像度と等価の解像度を有する。三角形817bで閉塞された三角形817aの一部に対応する表示バッファ画素819に対して、この表示画素が、閉塞された三角形817aではなく前側の三角形817bから取られたカラーサンプルからそのカラー値を引き出すことが望ましい。この実施例では、これは、このサンプルが、他のカラーサンプルよりも、スクリーン空間で大きく離れていても(すなわち,X−Yスクリーン座標で垂直/水平方向に更に離隔する)、表示画素819が、821でカラーサンプルからそのカラー値を引き出すことができることを意味する。実際、それは、スクリーン空間内の完全に異なる位置で、フラグメントまたは4つのフラグメントから計算されることがある。しかし、表示画素の値を派生する好適なカラーサンプル821は、深度情報に基づいて決定してもよい。819及び三角形817b内の深度は、周囲の領域と相違するため、三角形817aからのカラーサンプルがスクリーン空間内でより近く(closer)かつこの実施例における画素に極めて隣接していても、これは、これらの表示画素のそれぞれのカラーは、例えば、この実施例におけるカラーサンプル821である異なる深度を有する領域内から派生すべきであることを示す。
本開示の特定の態様を更に説明するため、図8C〜8Dは、フル解像度表示バッファ値及び部分解像度カラーバッファ値を図8Aに示すプリミティブからを計算するための簡略化した処理の流れの概略図を示す。図8Cは、プリミティブ817aの説明的なプロセスを示し、一方、図8Bは、プリミティブ817bの説明的なプロセスを示す。図8C〜8Dのプロセスの流れの実施例は、図5のレンダリングパイプラインによる等のグラフィックパイプラインを介してデータがどのように流れるか簡略的に視覚化することができる。
図8Cに示すように、プリミティブ817aは、スクリーン空間画素104a(または、ラスター化画素)の複数のサンプルでサンプリングされる。この単一の画素は、最終表示画像の単一の画素に必ずしも対応するものではないが、その画定された境界は、フル解像度グラフィックフレームが再構築されたときに、例えば、この実施例では4つである多数の表示画像画素を実際に囲んでも良い。a)で示すように、プリミティブがラスター化され、サンプルカバレッジが三角形で決定される。この実施例では、3つのサンプルが三角形、画素内で孤立したカラーサンプル及び3つの深度サンプルでカバーされる。図8Cのb)で示すように、値は、対応するパラメータに対してサンプル値のそれぞれについて計算され、すなわち、カラーパラメータ、及び/または、色に影響する他のパラメータをカバーされたカラーサンプルに対する画素シェーダで操作し、このサンプルに対するカラー値のセットを決定しても良く、一方、深度値は、3つの深度サンプルのそれぞれに対して計算しても良く、これらの値は、画素シェーダでエキスポートされた値でもよく、または、そうでなくても良い。値は、プリミティブの頂点から補間したパラメータを使用して計算しても良い。図8Cに示すように、ラスター化された画素の下右のサンプルはプリミティブでカバーされていないため、図8Cに示すように、この特定の三角形817aから、このサンプルに深度値が適用されない。値はサンプル毎の操作を経ても良く、これは、フラグメント/画素からの最終サンプル値が深度バッファのサンプルに書き込まれる前に、各サンプルに対する深度テストを包含しても良い。図8Cのc)で示すように、この実施例では、上右のサンプルが深度テストに失敗し、その深度値は廃棄しても良く、これは、三角形817bに対する深度値で閉塞されるからである。深度テストは、図8Cでは最終サンプル値が計算された後であるように示されているが、選択的に前に実行しても良く、これは、テストを失敗して廃棄されることのあるサンプル/画素に対する不必要な計算を避ける最適化のためであることに注意を要する。図8Cのd)に示すように、計算されたサンプル値は、フル解像度深度バッファ及び部分解像度カラーバッファに書き込んでも良い。
図8Dに示すように、同様なプロセスがプリミティブ817bに適用される。図8Cにおけるように、プリミティブ817bは、各画素内の深度サンプルよりもカラーサンプルの数が少ないサンプリングスキームを使用してラスター化される。カラー及び深度値は各サンプルに対して計算され、表示バッファのカラーサンプル及び深度サンプルに書き込まれる前に、深度テストしても良い。この三角形817bは、このサンプルの多数の画素でカバーされているが、しかし、プリミティブは上画素内の深度サンプルだけをカバーし、画素シェーダ計算は、特定の状況でこの画素について省略しても良い。下画素は、唯一カバーされたカラーサンプルを包含し、このサンプルに画素シェーダを使用してシェーディングしても良い。c)で示すように、サンプルは、図8Dに示すように、カラー/深度表示バッファ内に格納する前に深度テストしても良い。カラーサンプルのサンプル座標における深度値は、プリミティブでカバーされた全てのこれらの深度サンプルと同様であるため、最終表示画素のカラーは、全てのこれらの深度サンプル座標における画素のカラーサンプルから効果的に導きだすことができ、フル解像度でカラー値をシェーディングする必要を避ける深度サンプルにより提供される高空間精度を有する。
上記は、深度に対してのみ多くのサンプルを利用するサンプリングスキームの方法の実施例の詳細であり、このような多重サンプリングスキームは他の目的に使用することもできる。例えば、時間的なアンチエイリアス処理をフレーム間で実行し、異なるフレームの深度サンプルで導き出されたフル解像度カラーを再構成しても良い。多数のサンプルは、他のアンチエイリアス処理スキームに対しても有益とすることができる。
識別子
いくつかの状況では、上述のように深度値だけに基づいて最終表示バッファ画素値を決定することは困難なことがある。例えば、カラーバッファ内でカラーサンプルからどのようにディスプレイ画素がその値を導き出すか決定するときに使用される深度の区別として、地面下からほんの僅かに突出する岩石がオブジェクトである場合、岩石のZ値と周囲背景のZ値との間の明確な相違の欠如は、表示画素のための適正なカラー値を決定することを困難にする。したがって、本開示態様は、更に、表示画素のカラー値を明確に区別してより正確に再構成するために、レンダリングパイプラインの種々のステージを通して追跡することを可能とする独特の識別子を有する。
図9A〜9Bは、再構成を容易とするため、本開示の態様による独特の識別子(ID)の実施例を示す。図9Aに示すように、独特のオブジェクト識別子(オブジェクトID)(例えば、図9AのOID1及びOID2)は、レンダリングパイプラインを介するデータの流れとして、画素値をより明確に識別するために、レンダリングされたフレーム内のそれぞれオブジェクトに割り当てても良い。図9Aに示すように、本開示の態様は、更に、レンダリング処理中に各プリミティブに割り当てても良い独特のプリミティブ識別子(プリミティブID)(例えば、PID1,PID2,PID3,...)を有する。図9Bに示すように、特定の実施態様では、オブジェクトID及び/またはプリミティブIDを含むIDを、例えば図9Bに示すように、フレームを横断して追跡することが可能である。
通常、プリミティブはラスター化され、その後、フラグメント/サンプルは、パイプラインの後のステージで個々に処理されるが、しかし、どのオブジェクトまたはどのプリミティブが特定の画素/サンプル値に属するか、他の点では認識することができない。結果として、従来の技術では、特定のフレームに対する最終的なカラーバッファまたは深度バッファは、実質的にただの値の配列である。いくつかの相違は、特定のインスタンスでは深度にのみ基づいて識別することもできるが、独特のオブジェクトID及び独特のプリミティブIDにより識別を極めて容易にすることができる。
図10Aに移動すると、本開示の態様によるグラフィック処理における独特のオブジェクト識別子を使用する例示的な実施例が示されている。図10Aは、本開示の種々の態様にしたがって計算することのできるカラー及び深度サンプル値の配列を示す。図10Aに示すように、表示画素1019に対して、そのカラーが同じ前オブジェクトに属し、スクリーン空間座標内の画素1019に実際に近接する他のカラーサンプルが閉塞されたオブジェクトに属するため、1021のカラーサンプルからそのカラー値を導きだすことが、その画素について望ましい。しかし、オブジェクト識別子がないと、Z深度だけに基づいてこれを決定することは困難なことがあり、これは、閉塞し及び閉塞されるオブジェクトの深度値が互いに比較的近いことがあるためである。しかし、図10Bに示すように、図10Bに示すように、例えば画素1019に対するOID2のように、独特のオブジェクトIDが画素/サンプル値のそれぞれに割り当てられ、メモリに格納される場合、これを容易に決定することができる。
特定の実施態様では、フレームからフレームに、オブジェクト及び/またはプリミティブIDを追跡することが有益なことがある。図10Cは、利点を更に説明するため、2つのフレーム、フレーム1及びフレーム2の例示的な実施例を示す。OID2は、フレームからフレームに位置を変更するため、最も好適なカラーサンプルをカバーしなくなる。OID2がその値を追跡されるときに、フレーム2に示すように、表示画素1019を表示するためにオブジェクトの先端で、先のフレームのカラーサンプル値を使用することが極めて容易となる。
図11Aに移動すると、プリミティブID、例えば、三角形IDまたは他のプリミティブのIDの使用の例示的な実施例が記載されている。プリミティブID(PID)が、オブジェクト1133を作り上げる個々のプリミティブに割り当てられる場合、スクリーン内のハードエッジについての詳細な認識がレンダリング処理中に決定ができる(図11Aには個々のプリミティブを示してないが、それぞれが独特のPIDを有する個々の三角形のプリミティブが作り上げられると、考えることができる点に注意を要する)。更に、図11Bに示すように、例えばPID2である個々のプリミティブIDを追跡することは、場面内の流れについての詳細な知識を提供することができる。
特定の実施態様では、オブジェクトID及び/またはプリミティブIDのフレームからフレームへの一貫性を有することが望ましい。したがって、同じオブジェクトに対して異なるオブジェクトIDが異なるドローコールで異なるフレームに呼び出されることになる、オブジェクトIDを単純にインクリメントすることよりも、オブジェクトIDは、例えばGPUとの連携するAPIを通して、プログラムで選択することができる。例えば、初期データがセットアップされ、ドローコールが発行されるパイプライン内のステージでのアプリケーションの処理中に、アプリケーションプログラミングが、コマンドバッファを介してオブジェクトIDをセットアップするように構成することができ、これはドローコール前に発生することがある。このように、同じオブジェクトが、フレームのシーケンス内で多数回再度描かれるときに、同じオブジェクトIDが割り当てられる。
いくつかの実施態様では、オブジェクトIDは、プリミティブIDに付加され、したがって、オブジェクトIDとプリミティブIDは、付加の結果としてバッファに共に書き込まれる。
いくつかの実施態様では、論理OR演算がオブジェクトIDとプリミティブIDとの間で実行され、したがって、オブジェクトID及びプリミティブIDは、論理ORの結果としてバッファに共に書き込むことが可能である。図12に移動すると、本開示の態様にしたがってグラフィックを描画するように構成されるコンピューティングシステム1200の例示的な実施例を示してある。システム1200は、図6のシステム600とほぼ同じように構成される。図12中、同じ参照番号が図6及び図12に共通の部材を指す。関連する検討がすでに上記で行われているため、これらの共通の部材の検討は、簡略化するために省略してある。
特定の実施態様では、GPU671はIDトラッカモジュール1269を有し、これはハードウェアモジュール698の1つ、GPUの1つまたは複数プロセッサコア上で走るソフトウェア、または、この組合せとして実装しても良い。IDトラッカモジュール1269は、本開示の態様にしたがって、オブジェクトID、プリミティブID、または、オブジェクト及びプリミティブIDの双方を格納する1つまたは複数の専用IDバッファ1399に書き込むように構成される。IDトラッカモジュール1269は、ソフトウェアで実行し、または、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)またはシステムオンチップ(SoCまたはSOC)等の専用ハードウェアを使用して実行することが可能である。
ここで使用し、当業者に全体的に理解されるように、特定用途向け集積回路(ASIC)は、一般用途を対象としたものよりもむしろ、特定用途用にカスタマイズされた集積回路である。
ここで使用し、当業者に全体的に理解されるように、フィールドプログラマブルゲートアレイ(FPGA)は、製造後に顧客または設計者により設定される、したがって、「フィールドプログラマブル」用に設計された集積回路である。FPGA構造は、ASICに対して使用されるものと同様に、ハードウェア記述言語(HDL)を使用して、全体的に規定される。
ここで使用し、当業者に全体的に理解されるように、1つのチップ上のシステムまたはシステムオンチップ(SoCまたはSOC)は、コンピュータまたは他の電子システムの全ての構成要素を単一のチップに一体化する集積回路(IC)である。デジタル、アナログ、混合信号、及び、しばしば高周波機能を、全て単一のチップ基板に包含しても良い。典型的な用途は、組み込みシステムの領域内である。
典型的なSoCは、以下のハードウェア部材を包含する、つまり、
1つまたは複数プロセッサコア(例えば、マイクロコントローラ、マイクロプロセッサまたはデジタル信号プロセッサ(DSP)コア。
メモリブロック、例えば、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)及びフラッシュメモリ。
オシレータ、または、フェイズロックループなどのタイミングソース。
カウンタータイマ、リアルタイムタイマー、または、パワーオンリセットジェネレータ等の周辺装置。
外部インターフェース、例えば、ユニバーサルシリアルバス(USB)、ファイヤワイヤ、イーサネット(登録商標)、汎用同期/非同期型送受信器(USART)、シリアル周辺インタフェ-ス(SPI)バス等の業界基準。
アナログディジタル変換器(ADC)及びディジタルアナログ変換器(DAC)を含むアナログインターフェース。
電圧レギュレータ及びパワーマネージメント回路。
これらの構成部材は、プロプラエタリまたは業界標準バスのいずれかによって接続される。ダイレクトメモリアクセス(DMA)コントローラは、プロセッサコアをバイパスして外部インターフェースとメモリとの間で直接データを送り、これにより、SoCのデータスループットを増大する。
典型的なSoCは、上述のハードウェア構成部材と、プロセッサコア(複数を含む)、周辺及びインターフェースを制御する実行可能な命令(例えば、ソフトウェアまたはファームウェア)との双方を有する。
システム1200は、本開示の態様にしたがうグラフィックパイプラインを実行するように構成される。このような実行は、ソフトウェア、ハードウェア、または、ハードウェア及びソフトウェアの組み合わせで達成することが可能である。特定の実施態様では、例えばグラフィックメモリ650であるメモリ672は、IDバッファ1399及びコマンドバッファ1259を有し、その作用を以下に図13を参照して説明する。
本開示の他の態様をよりよく理解するために、図13にグラフィックレンダリングパイプライン1300が記載されている。レンダリングパイプライン1300は、選択的に、図5に示すレンダリングパイプラインに記載のいくつかの態様を有しても良く、図5のレンダリングパイプラインと選択的に共通にしても良いパイプラインの多くの態様が、上記の図5の説明中で使用したものと同じ参照番号を付してある。これらの共通の部材の考察は、関連する考察が上記で説明してあるため、簡略化するために省略する。図13の説明の態様について、図12に示すシステム1200の部材を参照して以下に説明する。
パイプライン1300では、CPUによるアプリケーション処理1302の結果、GPU671に対するドローコール1304となる。説明のためで制限するものではなく、アプリケーション665は、仮想空間の部分に仮想オブジェクトを含む物理シミュレーションを実行することができる。物理シミュレーションは、1つまたは複数の時間インスタンスにおける1つまたは複数のオブジェクトの位置に対応する値を作り出す。アプリケーション665は、仮想空間内の頂点の集合によりオブジェクトを表しても良い。これらのオブジェクトのグラフィカル表示をレンダリングするために、アプリケーション665は、例えば、オブジェクト及び/または頂点の仮想空間位置である関連する情報をグラフィックAPI667に送り、これは、ドローコール1304を発行可能である。いくつかの実施態様では、オブジェクトIDは、アプリケーション処理1302中に、コマンドバッファ1259を介して設定しても良い。これは、ドローコール1304の前に発生することができる。
各ドローコールの一部として、グラフィックAPI667は、入力データ522を提供することができ、これは、頂点座標及び/または他の頂点情報を包含しても良い。特定の実施態様では、初期データにおける追加頂点情報は、入力データ522にセットアップされた独特のオブジェクトに対する独特のオブジェクトIDを包含する。オブジェクトIDは、コマンドバッファ1259を介してセットアップし、IDバッファ1399に格納することができる。オブジェクトは、アプリケーション665により、同じオブジェクトがフレームの全シーケンスを通して多数回描かれるときに、オブジェクトが常に同じオブジェクトIDに関連するように、プログラムで画定される。
特定の実施形態では、プリミティブ処理523は、各プリミティブに対して独特のプリミティブIDを生成する。実施例として、制限するものではないが、プリミティブID(PID)は、ゼロのプリミティブIDをオブジェクトの第1プリミティブに割り当てることにより、更に、オブジェクトのそれぞれ続くプリミティブに対してプリミティブIDをインクリメントすることにより、生成することが可能である。
いくつかの実施態様では、頂点シェーディング計算526は、プリミティブIDを生成するために使用することができるが、しかし、これは独特のインデックス検出525を完全にまたは部分的に抑止する(disabling)必要があり、プリミティブ処理523でプリミティブIDの生成を実行することにより、多くの場合により高い性能を達成することができる。したがって、特定の実施形態では、プリミティブ処理ステージ523中にプリミティブIDを割り当てることが好ましいことがあり、これは、より高い性能を達成するために、GPUの専用ハードウェアモジュールを使用して実行することができる。
特定の実施態様によると、頂点シェーディング計算526を実行する頂点シェーダは、オブジェクトIDを生成するように構成することができる。例えば、いくつかの状況では、インスタンス化されたジオメトリは、例えば、インスタンス化されたドローコールで、同時に、場面内の同じメッシュの基本的には多数のコピーであるものをレンダリングするために使用される。いくつかの頂点データをインスタンスの全体で複製しても良いが、各インスタンスが他の差分パラメータを有することが可能である。特定の実施態様では、インスタンス化されたジオメトリを使用してオブジェクトをレンダリングするときに、(例えば、同様な頂点ジオメトリまたはメッシュを有しても良い異なるインスタンス)インスタンス化されたドローコールに組み合わされた特定のインスタンスは、典型的にはフレームからフレームで変化する。この場合、頂点シェーダは、各インスタンスに対して、各インスタンスのために使用されるオブジェクトIDが、一連のフレーム内で整合する方法で、オブジェクトIDを生成することが可能である。各インスタンスが同様なメッシュから導き出されても、独特のオブジェクトIDを有する独特のオブジェクトとして各インスタンスで区別することが好ましいため、これは有益なことがある。
いくつかの実施態様では、テッセレーションシェーダ計算1329がプリミティブIDの生成に寄与することができる。場面ジオメトリを細分するテッセレーション計算1329は、パッチと称することもある2つまたはそれ以上のプリミティブのより高レベルの組み合わせから、プリミティブIDを生成する工程に使用される情報を提供することができる。例えば、テッセレーションシェーダ1329は、それぞれ新しいパッチインスタンスに対して、例えばパッチ入力の各インスタンスに対するプリミティブ識別子PIDをインクリメントすることにより、1つまたは複数のプリミティブIDを生成することができる。これに代え、プリミティブ処理523は、この演算を実行し、または、各パッチ入力に対してプリミティブIDをインクリメントすることができる。
他の実施態様では、アプリケーション665で最初にセットアップされたもの以外の新しい場面ジオメトリを生成するジオメトリシェーディング計算1331は、更に、プリミティブIDの生成に有益な情報を発生することが可能である。他の実施態様では、ジオメトリシェーダで受け入れられた各入力プリミティブに対するプリミティブIDは、入力プリミティブが属するオブジェクトでサポートされた出力プリミティブのジオメトリック増幅の最大量でインクリメントすることが可能であり、ジオメトリシェーダまたはプリミティブ処理523に関連する頂点シェーディング計算526は、続いてこの値をインクリメントすること可能である。更に他の実施態様では、ジオメトリシェーダに関連する頂点シェーディング計算526は、単独でプリミティブIDの生成に関与する。
特定の実施態様では、画素シェーダは、画素シェーダ計算542中に、IDバッファ1399からプリミティブID及び/またはオブジェクトIDにアクセスするように構成しても良い。IDトラッカモジュール1269は、オブジェクト及びプリミティブに対するIDをフレーム内で、及び、フレームからフレームで追跡することが可能である。このような実施態様の全体的な流れは、図14を参照することで理解することが可能であり、これは、本開示の態様にしたがうグラフィック処理方法1400を示す。方法は、ハードウェアまたはソフトウェア、または、ハードウェアとソフトウェアとのいくつかの組み合わせのシステム1200で実行することが可能である。
方法1400は、ディスプレイ装置686に表示すべきフレームのジオメトリ1402のセットアップを開始する。ジオメトリのセットアップは、典型的には、例えば、画像内にプリミティブを画定するために使用される頂点を有するポリゴンメッシュとして、表される仮想空間内のオブジェクトをセットアップするアプリケーション処理1302のこれらの部分を包含する。ジオメトリのセットアップは、フレームとして描画される視錐台の一部が仮想空間内のどのオブジェクト(または、オブジェクトの一部)であるか決定することができる。独特のオブジェクトIDが、フレームの一部である各オブジェクトに割り当てられている。いくつかの実施態様では、オブジェクトIDは、1404に示すように、ドローコールの前に割り当てられる。このような実施態様では、オブジェクトIDの割り当ては、アプリケーション665で実行されるアプリケーション処理1302の一部として実行することができる。他の実施態様では、オブジェクトIDは、1411,1413及び1415で示すように、ドローコールの一部として、または、後に割り当てられる。
ドローコールは、1406で示すように発行される。グラフィック処理は、ほとんど通常の態様で、プリミティブ処理1408、頂点シェーダ計算1410、テッセレーションシェーダ計算1412、ジオメトリシェーダ計算1414、ラスター化/パラメータ補間1416、前画素シェーダZ演算1418、画素シェーダ計算1420及び後画素シェーダZ演算1422を介して処理することが可能である。いくつかの実施態様では、プリミティブIDは、例えばゼロのプリミティブIDを各オブジェクト内で第1プリミティブに割り当て、続く各プリミティブに対してプリミティブIDをインクリメントすることにより、プリミティブ処理1408の一部として生成しても良い。テッセレーション処理されたオブジェクトを処理する場合、プリミティブ処理1408は、ゼロのプリミティブIDを各オブジェクトで第1パッチに割り当て、続く各パッチに対してプリミティブIDをインクリメントすることにより、開始することができる。他の実施態様では、プリミティブIDは、1411,1413及び1415に示すように、後で、パイプライン中で割り当てられる。
例えば、特定の実施態様では、頂点シェーダ計算1410は、1411におけるように、オブジェクトID及びプリミティブIDを生成することが可能である。具体的には、インスタンス化されたジオメトリを包含する場合(プリミティブがオブジェクトの一部として繰り返し描かれ、または、多数回描かれるが、フレームからフレームで位置が異なる場合)、これらのオブジェクトにIDを付与することにより、何度も繰り返して再度描かれるオブジェクトに対してフレーム間で一致することが望ましい。頂点シェーダ1410(これは、通常は、開発者のコントロール下にあるソフトウェアである)は、メモリに格納されたオブジェクトIDのテーブルを参照し、インデックスとしてインスタンスIDを使用することにより、これらのインスタンス化されたオブジェクトのそれぞれにオブジェクトIDを出力する。
いくつかの実施態様では、頂点シェーダは、インスタンス化されたオブジェクトにインスタンス識別子を決定するために、オブジェクトID及びプリミティブ識別子から逆戻りすることが可能である。
代替的実施態様では、プリミティブID及びオブジェクトIDは、1413で示すように、テッセレーション計算1412の一部として生成しても良い。特に、テッセレーション計算1412は、各パッチ入力に対し、プリミティブIDをインクリメントすることにより、プリミティブにプリミティブIDを生成しても良い。
他の実施態様では、プリミティブID及びオブジェクトIDは、1415で示すように、ジオメトリシェーダ計算1414の一部として生成しても良い。特に、ジオメトリシェーダで受け入れられた各入力プリミティブに対するプリミティブIDは、入力プリミティブが属するオブジェクトでサポートされた出力プリミティブのジオメトリック増幅の最大量でインクリメントされることが可能であり、ジオメトリシェーダに関連する頂点シェーディング計算526またはプリミティブ処理523は、続いてこの値をインクリメントすることが可能である。更に他の実施態様では、ジオメトリシェーダに関連する頂点シェーディング計算526は、単独でプリミティブIDの生成に関与することができる。更に他の実施態様では、ジオメトリシェーダに関連する頂点シェーディング計算526は、単独でプリミティブIDの生成に関与することができる。
頂点シェーダ計算1410、テッセレーションシェーダ計算1412及びジオメトリシェーダ計算1414の後、ラスター化/パラメータ補間1416が、プリミティブ内に包含されるスクリーン空間領域を決定する。いくつかの実施態様では、前画素シェーダZ演算1418は、プリミティブID及び/またはオブジェクトIDをIDバッファ1399に、Zバッファ内に書き込まれたZ値に1対1に対応して書き込む。
画素シェーダ計算1420は、プリミティブID及び/またはオブジェクトIDを読み込んでも良い。これは種々の方法で使用しても良く、例えば、プリミティブIDがフレームを通してコヒーレントの場合、セルフシャドウイングの際に画素シェーダで受け取ってエイリアシングを低下させるように、Zバッファに関連するIDバッファをプリミティブIDと比較しても良い。これに代え、プリミティブIDは、画素シェーダで使用し、前プリミティブデータテーブルにアクセスしても良い。
いくつかの実施態様では、後画素シェーダZ演算1422は、Zバッファに書き込まれたZ値と1対1に対応させてIDバッファ1399にプリミティブID及び/またはオブジェクトIDを書き込む。ROP及びフレームバッファ演算1424は、画素シェーダ計算1420で作成されるカラー及び他の値をMRTに書き込む。
続いて、表示用に(例えば、表示バッファ)高解像度フレームバッファを生成するために、空間/時間分析1426が、Zバッファ値、カラー値、及び、IDバッファ1399内の値を使用して実行される。いくつかの態様によると、分析1426は、オブジェクトID及びまたはプリミティブIDを使用して図13の表示処理551中に実行しても良く、Zバッファ値及びカラー値は図13のカラーサンプル値及び深度サンプル値549に対応しても良く、一方、表示用の高解像度フレームバッファは図13の最終表示画素値552に対応しても良い。プリミティブ及び/またはオブジェクトIDは、どのサンプルがどのオブジェクトでカバーされているか追跡することが可能であり、したがって、フレーム内でより低い解像度のカラーバッファを有し、そのZ値及びIDを分析することにより、カラーのないサンプルにカラーを割り当てることができる。フレーム間の一貫性によって、カラーが計算されていない現在のフレームサンプルに、先のフレームからのカラー値を使用することができる。
追加態様
本開示の追加態様は、プロセッサでグラフィックをレンダリングする方法を包含し、この方法は、
仮想空間内の場面に複数のオブジェクトをセットアップし、前記オブジェクトのそれぞれは頂点のセットで画定され、
独特のオブジェクト識別子をオブジェクトそれぞれに割り当て、
オブジェクトを描くために、1つまたは複数のドローコールを発行し、
頂点のパラメータ値を操作して、出力頂点パラメータ値を生成し、
頂点から複数のプリミティブをセットアップし、前記プリミティブのそれぞれは頂点の1つまたは複数のセットで画定され、前記プリミティブは1つまたは複数のオブジェクトに属し、
複数の画素に対してプリミティブのそれぞれをラスター化し、
前記画素のそれぞれの深度をZバッファに書き込み、このZバッファは第1解像度を有し、
Zバッファ内の各画素がIDバッファ内のオブジェクト識別子に関連するように、1つまたは複数のオブジェクト識別子を少なくとも1つのIDバッファに書き込み、
ラスター化されたプリミティブのそれぞれに対し画素を処理して、カラーバッファ内のカラー値のセットを決定し、このカラーバッファは、第1解像度よりも低い第2解像度を有し、更に、
Zバッファの解像度で出力フレームに対する表示画素のセットを、カラーバッファ内のカラー値及びIDバッファ内の識別子を使用して決定すること、を包含する。
上述の方法のいくつかの実施態様では、出力フレームはメモリに格納され、または、ディスプレイ装置に表示される。
他の追加態様は、実行したときに上述の方法を実行するコンピュータ実行命令を組み込んだコンピュータ可読媒体である。
更に他の態様は、通信ネットワークからダウンロード可能、及び/または、コンピュータ可読及び/またはマイクロプロセッサ実行可能媒体に格納されたコンピュータプログラム製品として、上述の方法を実行するためのプログラムコード命令を備えることに特徴がある。
他の態様は、上述の方法を実行するための電磁または他の信号搬送コンピュータ可読命令である。
上記は、本発明の好ましい実施形態の完全な説明であるが、種々の代替、変更及び等価なものを使用することが可能である。したがって、本発明の範囲は、上記説明を参照することではなく、代わりに、等価なものの全範囲と共に、添付の請求の範囲を参照することにより、決定されるべきものである。好ましいか否かに関わらず、ここに記載の特徴は、好ましいか否かに関わらず、ここに記載の任意の他の特徴と組合わせることができる。請求の範囲では、不定冠詞「a」または「an」は、明確に延べられている場合を除き、その冠詞に続く項目の1つまたは複数の量を指す。請求の範囲は、「means for」の語句を使用する所与の制限が所与の請求の範囲において明確に参照されていない限り、means−plus−functionの限定を含むことを意図したものではない。

Claims (95)

  1. プロセッサでグラフィックをレンダリングする方法であって、
    仮想空間内の場面に複数のオブジェクトをセットアップするステップであって、前記オブジェクトのそれぞれは、頂点のセットで画定されるステップと、
    前記オブジェクトのそれぞれに独特のオブジェクト識別子を割り当てるステップと、
    前記オブジェクトを描く1つまたは複数のドローコールを発行するステップと、
    出力頂点パラメータ値を生成するために、前記頂点のパラメータ値を操作するステップと、
    前記頂点から複数のプリミティブをセットアップするステップであって、前記プリミティブのそれぞれは、前記頂点の1つまたは複数のセットで画定され、前記プリミティブのそれぞれは前記オブジェクトの1つまたは複数に属するステップと、
    複数の画素に対して前記プリミティブのそれぞれをラスター化するステップと、
    Zバッファに前記画素のそれぞれの深度を書き込むステップであって、前記Zバッファは第1解像度を有するステップと、
    1つまたは複数の前記オブジェクト識別子を、前記Zバッファ内の各画素がIDバッファ内のオブジェクト識別子と関連するように、少なくとも1つの前記IDバッファに書き込むステップと、
    カラーバッファ内のカラー値のセットを決定するために、前記ラスター化されたプリミティブのそれぞれに対して前記画素を処理するステップであって、前記カラーバッファは前記第1解像度よりも低い第2解像度を有するステップと、
    前記カラーバッファ内の前記カラー値と前記IDバッファ内の前記識別子とを使用して前記Zバッファの前記解像度で、出力フレームに対して表示画素のセットを決定するステップとを含む、方法。
  2. 前記表示画素のセットを決定するステップは、前記カラーバッファ及び/またはZバッファを組合わせて、前記IDバッファ内の1つまたは複数オブジェクト識別子を使用して空間及び/または時間的にアンチエイリアス処理を適用することを包含する、請求項1の方法。
  3. 前記IDバッファは、識別子の格納専用の専用IDバッファである、請求項1の方法。
  4. 前記IDバッファは、共用バッファである、請求項1の方法。
  5. 前記IDバッファは、複数の専用IDバッファである、請求項1の方法。
  6. 前記独特のオブジェクト識別子を割り当てるステップは、オブジェクト識別子とプリミティブ識別子とを付加することを包含する、請求項1の方法。
  7. 前記独特のオブジェクト識別子を割り当てるステップは、オブジェクト識別子とプリミティブ識別子との間で論理ORを実行することを包含する、請求項1の方法。
  8. 独特のプリミティブ識別子を、前記プリミティブのそれぞれに割り当て、プリミティブ識別子を前記IDバッファに書き込むステップをさらに含む、請求項1の方法。
  9. 前記表示画素のセットを決定するステップは、前記カラーバッファ及び/またはZバッファと共に前記IDバッファ内の前記オブジェクト識別子と前記プリミティブ識別子とを使用して、空間及び/または時間的アンチエイリアス処理を施すことを包含する、請求項8の方法。
  10. 前記少なくとも1つのIDバッファは、オブジェクト識別子の格納専用の専用オブジェクトIDバッファ、及び、プリミティブ識別子の格納専用の専用プリミティブIDバッファを包含する、請求項8の方法。
  11. 前記少なくとも1つのIDバッファは、オブジェクト識別子及びプリミティブ識別子の格納専用の専用IDバッファである、請求項8の方法。
  12. 前記頂点の前記パラメータ値を操作するステップは、前記パラメータ値を頂点シェーダで操作し、前記IDバッファに最終的に書き込むためのプリミティブIDを生成することを包含する、請求項1の方法。
  13. 前記独特の識別子を割り当てるステップは、頂点シェーダでインスタンス化されたオブジェクトに対してオブジェクト識別子を割り当てることを包含する、請求項1の方法。
  14. 前記独特のオブジェクト識別子を前記割り当てるステップは、インスタンス化されたオブジェクトに対してインスタンス識別子を決定するために、オブジェクト識別子及びプリミティブ識別子から逆戻りすることにより、頂点シェーダで前記インスタンス化されたオブジェクトに対してオブジェクト識別子を割り当てることを包含する、請求項1の方法。
  15. 前記頂点のパラメータ値を操作するステップは、ジオメトリシェーダでジオメトリシェーダ計算を実行することを包含し、
    前記独特のプリミティブ識別子を割り当てるステップは、
    前記ジオメトリシェーダ計算の前に、前記ジオメトリシェーダ計算のジオメトリック増幅の最大量でインクリメントするプリミティブIDを生成し、
    前記プリミティブIDを前記ジオメトリシェーダで受け取り、
    前記プリミティブIDを、前記ジオメトリシェーダ計算中に前記ジオメトリシェーダで生成されたそれぞれ新しい出力プリミティブにインクリメントすることを包含する、請求項8の方法。
  16. 前記頂点のパラメータ値を前記操作するステップは、ジオメトリシェーダでジオメトリシェーダ計算を実行することを包含し、
    前記独特のプリミティブ識別子を前記割り当てるステップは、
    前記ジオメトリシェーダ計算中に前記ジオメトリシェーダでプリミティブIDを生成することを包含する、請求項8の方法。
  17. 前記プリミティブのそれぞれに前記独特のプリミティブ識別子を前記割り当てるステップは、前記頂点のパラメータ値を前記操作する前に、
    プリミティブIDを生成するために、プリミティブ処理演算を実行し、
    前記プリミティブ処理演算がパッチを出力する毎に、前記プリミティブIDをインクリメントすることを包含する、請求項8の方法。
  18. 前記頂点のパラメータ値を前記操作するステップは、テッセレーションユニットでテッセレーション計算を実行することを包含し、
    前記独特のプリミティブ識別子を前記割り当てるステップは、
    前記テッセレーション計算の前に、プリミティブIDを生成し、
    前記プリミティブIDを前記テッセレーションユニットで受け取り、
    前記テッセレーション計算中に、前記テッセレーションユニットで生成された各出力プリミティブに前記プリミティブIDをインクリメントすることを包含する、請求項8の方法。
  19. ジオメトリシェーディング処理を実行するステップをさらに含み、1つまたは複数の出力プリミティブが、1つまたは複数の入力プリミティブから生成される、請求項1の方法。
  20. ジオメトリシェーディング処理を実行するステップをさらに含み、1つまたは複数の出力プリミティブが、1つまたは複数の入力プリミティブから生成され、前記ジオメトリシェーディング処理の実行は、前記ジオメトリシェーディング処理で生成された1つまたは複数のプリミティブに対して、プリミティブ識別子を生成することを包含する、請求項1の方法。
  21. 1つまたは複数の出力プリミティブが1つまたは複数の入力プリミティブから生成されるジオメトリシェーディング処理を実行するステップをさらに含み、前記ジオメトリシェーディング処理の実行は、入力プリミティブに関連するオブジェクトでサポートされた出力プリミティブのジオメトリック増幅の最大量で、前記入力プリミティブのそれぞれに対してプリミティブ識別子をインクリメントすることにより、前記ジオメトリシェーディング処理で生成された1つまたは複数のプリミティブに対してプリミティブ識別子を生成することを包含する、請求項1の方法。
  22. 前記ラスター化されたプリミティブのそれぞれの前記画素に対する前記処理は、画素シェーダで画素パラメータ値を操作することを包含し、
    前記画素シェーダで画素パラメータ値を前記操作することは、前記画素シェーダで1つまたは複数の前記プリミティブ識別子を読み込むことを包含する、請求項1の方法。
  23. 前記出力フレームに続く少なくとも1つの続くフレームに対して、オブジェクト識別子がフレーム間で一貫してオブジェクト割り当てられるように、複数のオブジェクト識別子を追跡するステップをさらに含む、請求項1の方法。
  24. 複数のオブジェクトを前記セットアップするステップは、前記独特のオブジェクト識別子を、前記オブジェクトのそれぞれに割り当て、前記オブジェクト識別子をIDバッファの書き込むことを包含する、請求項1の方法。
  25. 前記ドローコールを前記発行するステップは、前記独特のオブジェクト識別子を前記オブジェクトのそれぞれに割り当て、前記オブジェクト識別子をIDバッファに書き込むことを包含し、これにより、複数のオブジェクト識別子が存在する、請求項1の方法。
  26. 独特のオブジェクト識別子を前記オブジェクトのそれぞれに前記割り当てるステップは、前記同じオブジェクト識別子を、同じフレームまたは2つ以上の異なるフレーム内の同じオブジェクトの2つ以上のインスタンスに割り当てることを包含する、請求項1の方法。
  27. 前記表示画素のセットを前記決定するステップは、前記1つまたは複数のオブジェクト識別子を使用して、いずれのプリミティブまたは画素がいずれのオブジェクトに属するか追跡を維持する、請求項1の方法。
  28. 前記表示画素のセットを前記決定するステップは、先のフレーム内の同じオブジェクトにおける同じ画素に対する画素値を繰り返すことにより、1つのフレーム内の画素に対して画素値を設けるため、1つまたは複数の前記オブジェクト識別子を使用することを包含する、請求項1の方法。
  29. 前記表示画素のセットを前記決定するステップは、1つまたは複数オブジェクト識別子を用いることを包含し、同じオブジェクトは、所与のフレーム内で多数回再度描かれる、請求項1の方法。
  30. オブジェクト識別子を使用して、フレームからフレームへのオブジェクトの流れの追跡を維持するステップをさらに含む、請求項1の方法。
  31. プロセッサ、及び、
    前記プロセッサに連結されたメモリを備え、
    前記プロセッサは、グラフィックをレンダリングする方法を実行するように構成されるシステムであって、前記方法は、
    仮想空間内の場面に複数のオブジェクトをセットアップするステップであって、前記オブジェクトのそれぞれは、頂点のセットで画定されるステップと、
    前記オブジェクトのそれぞれに独特のオブジェクト識別子を割り当るステップと、
    前記オブジェクトを描く1つまたは複数のドローコールを発行するステップと、
    出力頂点パラメータ値を生成するために、前記頂点のパラメータ値を操作するステップと、
    前記頂点から複数のプリミティブをセットアップするステップであって、前記プリミティブのそれぞれは、前記頂点の1つまたは複数のセットで画定され、前記プリミティブのそれぞれは前記オブジェクトの1つまたは複数に属するステップと、
    複数の画素に対して前記プリミティブのそれぞれをラスター化するステップと、
    Zバッファに前記画素のそれぞれの深度を書き込むステップであって、前記Zバッファは第1解像度を有するステップと、
    1つまたは複数の前記オブジェクト識別子を、前記Zバッファ内の各画素がIDバッファ内のオブジェクト識別子と関連するように、少なくとも1つの前記IDバッファに書き込むステップと、
    カラーバッファ内のカラー値のセットを決定するために、前記ラスター化されたプリミティブのそれぞれに対して前記画素を処理するステップであって、前記カラーバッファは前記第1解像度よりも低い第2解像度を有するステップと、
    前記カラーバッファ内のカラー値と前記IDバッファ内の前記識別子とを使用して前記Zバッファの前記解像度で、出力フレームに対して表示画素のセットを決定するステップとを含む、方法。
  32. 前記プロセッサは、中央処理ユニット(CPU)及びグラフィック処理ユニット(GPU)を有する、請求項31のシステム。
  33. 更に、ディスプレイ装置を備え、
    前記方法は、前記ディスプレイ装置にグラフィックを表示するステップをさらに含む、請求項31のシステム。
  34. 前記表示画素のセットを前記決定するステップは、前記カラーバッファ及び/または前記Zバッファと共に前記IDバッファ内の1つまたは複数のオブジェクト識別子を使用して、空間及び/または時間的アンチエイリアス処理を施すことを包含する、請求項31のシステム。
  35. 前記IDバッファは、識別子の格納専用の専用IDバッファである、請求項31のシステム。
  36. 前記IDバッファは、共有バッファである、請求項31のシステム。
  37. 前記IDバッファは、複数の専用IDバッファである、請求項31のシステム。
  38. 前記独特のオブジェクト識別子を前記割り当てるステップは、オブジェクト識別子及びプリミティブ識別子を付加することを包含する、請求項31のシステム。
  39. 前記独特のオブジェクト識別子を前記割り当てるステップは、オブジェクト識別子とプリミティブ識別子との間で論理ORを実行することを包含する。請求項31のシステム。
  40. 前記方法は、
    独特のプリミティブ識別子を前記プリミティブのそれぞれに割り当て、前記プリミティブ識別子を前記IDバッファに書き込むステップをさらに含む、請求項31のシステム。
  41. 前記表示画素のセットを前記決定するステップは、前記カラーバッファ及び/またはZバッファと組合わせて、前記IDバッファ内の前記オブジェクト識別子及び前記プリミティブ識別子を使用して空間及び/または時間的にアンチエイリアス処理を適用することを包含する、請求項40のシステム。
  42. 前記少なくとも1つのIDバッファは、オブジェクト識別子の格納専用の専用オブジェクトIDバッファ、及び、プリミティブ識別子の格納専用の専用プリミティブIDバッファを包含する、請求項31のシステム。
  43. 前記少なくとも1つのIDバッファは、オブジェクト識別子及びプリミティブ識別子の格納専用の専用IDバッファである、請求項31のシステム、
  44. 前記頂点のパラメータ値を前記操作するステップは、前記パラメータ値を頂点シェーダで操作し、前記IDバッファに最終的に書き込むためのプリミティブIDを生成することを包含する、請求項31のシステム。
  45. 前記独特のオブジェクト識別子を前記割り当てるステップは、頂点シェーダでインスタンス化されたオブジェクトに対してオブジェクト識別子を割り当てることを包含する、請求項31のシステム。
  46. 前記独特のオブジェクト識別子を前記割り当てるステップは、前記インスタンス化されたオブジェクトに対してインスタンス識別子を決定するために、オブジェクト識別子及びプリミティブ識別子から逆戻りすることにより、頂点シェーダでインスタンス化されたオブジェクトに対してオブジェクト識別子を割り当てることを包含する、請求項31のシステム。
  47. 前記頂点のパラメータ値を前記操作するステップは、ジオメトリシェーダでジオメトリシェーダ計算を実行することを包含し、
    前記独特のプリミティブ識別子を前記割り当てるステップは、
    前記ジオメトリシェーダ計算の前に、前記ジオメトリシェーダ計算のジオメトリック増幅の最大量でインクリメントするプリミティブIDを生成し、
    前記プリミティブIDを前記ジオメトリシェーダで受け取り、
    前記プリミティブIDを、前記ジオメトリシェーダ計算中に前記ジオメトリシェーダで生成されたそれぞれ新しい出力プリミティブにインクリメントすることを包含する、請求項40のシステム。
  48. 前記頂点のパラメータ値を前記操作するステップは、ジオメトリシェーダでジオメトリシェーダ計算を実行することを包含し、
    前記独特のプリミティブ識別子を前記割り当てるステップは、
    前記ジオメトリシェーダ計算中に前記ジオメトリシェーダでプリミティブIDを生成することを包含する、請求項40のシステム。
  49. 前記プリミティブのそれぞれに独特のプリミティブ識別子を前記割り当てるステップは、前記頂点のパラメータ値を前記操作する前に、
    プリミティブIDを生成するために、プリミティブ処理演算を実行し、
    前記プリミティブ処理演算がパッチを出力する毎に、前記プリミティブIDをインクリメントすることを包含する、請求項40のシステム。
  50. 前記頂点のパラメータ値を前記操作するステップは、テッセレーションユニットでテッセレーション計算を実行することを包含し、
    前記独特のプリミティブ識別子を前記割り当てるステップは、
    前記テッセレーション計算の前に、プリミティブIDを生成し、
    前記プリミティブIDを前記テッセレーションユニットで受け取り、
    前記テッセレーション計算中に、前記テッセレーションユニットで生成された各出力プリミティブに前記プリミティブIDをインクリメントすることを包含する、請求項40のシステム。
  51. 前記方法は、ジオメトリシェーディング処理を実行するステップをさらに含み、1つまたは複数の出力プリミティブが、1つまたは複数の入力プリミティブから生成される、請求項31のシステム。
  52. 前記方法は、ジオメトリシェーディング処理を実行するステップをさらに含み、1つまたは複数の出力プリミティブが、1つまたは複数の入力プリミティブから生成され、前記ジオメトリシェーディング処理の実行は、前記ジオメトリシェーディング処理で生成された1つまたは複数のプリミティブに対して、プリミティブ識別子を生成することを包含する、請求項31のシステム。
  53. 前記方法は、1つまたは複数の出力プリミティブが1つまたは複数の入力プリミティブから生成されるジオメトリシェーディング処理を実行するステップをさらに含み、前記ジオメトリシェーディング処理の実行は、前記入力プリミティブに関連するオブジェクトでサポートされた出力プリミティブのジオメトリック増幅の最大量で、入力プリミティブのそれぞれに対してプリミティブ識別子をインクリメントすることにより、前記ジオメトリシェーディング処理で生成された1つまたは複数のプリミティブに対してプリミティブ識別子を生成することを包含する、請求項31のシステム。
  54. 前記ラスター化されたプリミティブのそれぞれの前記画素に対する前記処理は、画素シェーダで画素パラメータ値を操作することを包含し、
    前記画素シェーダで前記画素パラメータ値を前記操作することは、前記画素シェーダで1つまたは複数の前記プリミティブ識別子を読み込むことを包含する、請求項31のシステム。
  55. 前記出力フレームに続く少なくとも1つの続くフレームに対して、オブジェクト識別子がフレーム間で一貫してオブジェクトに割り当てられるように、前記複数のオブジェクト識別子を追跡するステップをさらに含む、請求項31のシステム。
  56. 前記複数のオブジェクトをセットアップするステップは、前記独特のオブジェクト識別子を、前記オブジェクトのそれぞれに割り当て、前記オブジェクト識別子をIDバッファに書き込むことを包含する、請求項31のシステム。
  57. 前記ドローコールを前記発行するステップは、前記独特のオブジェクト識別子を前記オブジェクトのそれぞれに割り当て、前記オブジェクト識別子をIDバッファに書き込むことを包含し、これにより、複数のオブジェクト識別子が存在する、請求項31のシステム。
  58. 前記独特のオブジェクト識別子をオブジェクトのそれぞれに前記割り当てるステップは、同じオブジェクト識別子を、同じフレームまたは2つ以上の異なるフレーム内の同じオブジェクトの2つ以上のインスタンスに割り当てることを包含する、請求項31のシステム。
  59. 前記表示画素のセットを前記決定するステップは、前記1つまたは複数のオブジェクト識別子を使用して、いずれのプリミティブまたは画素がいずれのオブジェクトに属するか追跡を維持する、請求項31のシステム。
  60. 前記表示画素のセットを前記決定するステップは、先のフレーム内の同じオブジェクトにおける同じ画素に対する画素値を繰り返すことにより、1つのフレーム内の画素に対して画素値を設けるため、1つまたは複数の前記オブジェクト識別子を使用することを包含する、請求項31のシステム。
  61. 前記表示画素のセットを前記決定するステップは、1つまたは複数オブジェクト識別子を用いることを包含し、同じオブジェクトは、所与のフレーム内で多数回再度描かれる、請求項31のシステム。
  62. 前記方法は、オブジェクト識別子を使用して、フレームからフレームへのオブジェクトの流れの追跡を維持するステップをさらに含む、請求項31のシステム。
  63. IDモジュールを備えるグラフィック処理ユニット(GPU)であって、このIDモジュールは、
    仮想空間内の場面の複数のオブジェクトに対応する情報を受け取るステップであって、前記オブジェクトはそれぞれ頂点のセットで画定されるステップと、
    前記複数内の前記オブジェクトのそれぞれに対して、命令バッファ内のオブジェクト識別子を受け取り、IDバッファに前記オブジェクト識別子を書き込むステップとを実行するように構成され、
    前記GPUは、更に、
    出力頂点パラメータ値を生成するために、前記頂点のパラメータ値を操作するステップと、
    前記頂点から複数のプリミティブをセットアップするステップであって、前記プリミティブは、1つまたは複数の前記頂点のセットで画定され、前記プリミティブは1つまたは複数の前記オブジェクトに属するステップと、
    複数の画素に対して前記プリミティブのそれぞれをラスター化するステップと、
    Zバッファに前記画素のそれぞれの深度を書き込むステップであって、前記Zバッファは第1解像度を有するステップと、
    1つまたは複数の前記オブジェクト識別子を、前記Zバッファ内の各画素がIDバッファ内のオブジェクト識別子と関連するように、少なくとも1つの前記IDバッファに書き込むステップと、
    カラーバッファ内のカラー値のセットを決定するために、前記ラスター化されたプリミティブのそれぞれに対して前記画素を処理するステップであって、前記カラーバッファは前記第1解像度よりも低い第2解像度を有するステップと、
    前記カラーバッファ内の前記カラー値と前記IDバッファ内の前記識別子とを使用して前記Zバッファの前記解像度で、出力フレームに対して表示画素のセットを決定するステップとを実行するように構成される、GPU。
  64. 前記IDモジュールは、ハードウェアモジュールである、請求項63のGPU。
  65. 前記表示画素のセットの前記決定は、前記カラーバッファ及び/またはZバッファと組合わせて、前記IDバッファ内の1つまたは複数のオブジェクト識別子を使用して空間及び/または時間的にアンチエイリアス処理を適用することを包含する、請求項63のGPU。
  66. 前記IDバッファは、識別子の格納専用の専用IDバッファである、請求項63のGPU。
  67. 前記IDバッファは、共有バッファである、請求項63のGPU。
  68. 前記IDバッファは、複数の専用IDバッファである、請求項63のGPU。
  69. 前記独特のオブジェクト識別子の前記割り当ては、オブジェクト識別子及びプリミティブ識別子の付加を包含する、請求項63のGPU。
  70. 前記独特のオブジェクト識別子の前記割り当ては、オブジェクト識別子とプリミティブ識別子との間で論理ORを実行することを包含する請求項63のGPU。
  71. 前記GPUは、更に、独特のプリミティブ識別子を、前記プリミティブのそれぞれに割り当て、前記プリミティブ識別子を前記IDバッファに書き込むように構成される、請求項63のGPU。
  72. 前記表示画素のセットの前記決定は、前記カラーバッファ及び/またはZバッファと組合わせて、前記IDバッファ内の前記オブジェクト識別子及び前記プリミティブ識別子を使用して空間及び/または時間的にアンチエイリアス処理を適用することを包含する、請求項71のGPU。
  73. 前記少なくとも1つのIDバッファは、オブジェクト識別子の格納専用の専用オブジェクトIDバッファ及びプリミティブ識別子の格納専用の専用プリミティブIDバッファを有する、請求項63のGPU。
  74. 前記少なくとも1つのIDバッファは、オブジェクト識別子及びプリミティブ識別子の格納専用の専用IDバッファである、請求項63のGPU。
  75. 前記頂点の前記パラメータ値の前記操作は、頂点シェーダで前記パラメータ値を操作し、前記IDバッファに最終的に書き込むためのプリミティブIDを生成することを包含する、請求項63のGPU。
  76. 前記独特のオブジェクト識別子の前記割り当ては、頂点シェーダでインスタンス化されたオブジェクトに対してオブジェクト識別子を割り当てることを包含する、請求項63のGPU。
  77. 前記独特のオブジェクト識別子の前記割り当ては、インスタンス化されたオブジェクトに対してインスタンス識別子を決定するために、オブジェクト識別子及びプリミティブ識別子から逆戻りすることにより、頂点シェーダでインスタンス化されたオブジェクトに対してオブジェクト識別子を割り当てることを包含する、請求項63のGPU。
  78. 前記頂点のパラメータ値の前記操作は、ジオメトリシェーダでジオメトリシェーダ計算を実行することを包含し、
    前記独特のプリミティブ識別子の前記割り当ては、
    前記ジオメトリシェーダ計算の前に、前記ジオメトリシェーダ計算のジオメトリック増幅の最大量でインクリメントするプリミティブIDを生成し、
    前記プリミティブIDを前記ジオメトリシェーダで受け取り、
    前記プリミティブIDを、前記ジオメトリシェーダ計算中に前記ジオメトリシェーダで生成されたそれぞれ新しい出力プリミティブにインクリメントすることを包含する、請求項71のGPU。
  79. 前記頂点の前記パラメータ値の前記操作は、ジオメトリシェーダでジオメトリシェーダ計算を実行することを包含し、
    前記独特のプリミティブ識別子の前記割り当ては、
    前記ジオメトリシェーダ計算中に前記ジオメトリシェーダでプリミティブIDを生成することを包含する、請求項71のGPU。
  80. 前記プリミティブのそれぞれに対する前記独特のプリミティブ識別子の前記割り当ては、前記頂点のパラメータ値を操作する前に、
    プリミティブIDを生成するために、プリミティブ処理演算を実行し、
    前記プリミティブ処理演算がパッチを出力する毎に、前記プリミティブIDをインクリメントすることを包含する、請求項71のGPU。
  81. 前記頂点のパラメータ値の前記操作は、テッセレーションユニットでテッセレーション計算を実行することを包含し、
    前記独特のプリミティブ識別子の前記割り当ては、
    前記テッセレーション計算の前に、プリミティブIDを生成し、
    前記プリミティブIDを前記テッセレーションユニットで受け取り、
    前記テッセレーション計算中に、前記テッセレーションユニットで生成された各出力プリミティブに前記プリミティブIDをインクリメントすることを包含する、請求項71のGPU。
  82. 前記GPUは、更に、ジオメトリシェーディング処理を実行するように構成され、1つまたは複数の出力プリミティブが、1つまたは複数の入力プリミティブから生成されるように構成される、請求項63のGPU。
  83. 前記GPUは、更に、ジオメトリシェーディング処理を実行するように構成され、1つまたは複数の出力プリミティブが、1つまたは複数の入力プリミティブから生成され、前記ジオメトリシェーディング処理の実行は、前記ジオメトリシェーディング処理で生成された1つまたは複数のプリミティブに対して、プリミティブ識別子を生成することを包含するように構成される、請求項63のGPU。
  84. 前記GPUは、更に、1つまたは複数の出力プリミティブが1つまたは複数の入力プリミティブから生成されるジオメトリシェーディング処理を実行するように構成され、前記ジオメトリシェーディング処理の実行は、入力プリミティブに関連するオブジェクトでサポートされた出力プリミティブのジオメトリック増幅の最大量で、入力プリミティブのそれぞれに対してプリミティブ識別子をインクリメントすることにより、前記ジオメトリシェーディング処理で生成された1つまたは複数のプリミティブに対してプリミティブ識別子を生成するように構成される、請求項63のGPU。
  85. 前記ラスター化されたプリミティブのそれぞれの前記画素に対する前記処理は、画素シェーダで画素パラメータ値を操作することを包含し、
    前記画素シェーダで前記画素パラメータ値を前記操作することは、前記画素シェーダで1つまたは複数の前記プリミティブ識別子を読み込むことを包含する、請求項71のGPU。
  86. 前記GPUは、更に、前記出力フレームに続く少なくとも1つの続くフレームに対して、オブジェクト識別子がフレーム間で一貫してオブジェクトに割り当てられるように、複数のオブジェクト識別子を追跡するように構成される、請求項63のGPU。
  87. 複数のオブジェクトの前記セットアップは、前記独特のオブジェクト識別子を、前記オブジェクトのそれぞれに割り当て、前記オブジェクト識別子をIDバッファに書き込むことを包含する、請求項63のGPU。
  88. 前記ドローコールの前記発行は、前記独特のオブジェクト識別子を前記オブジェクトのそれぞれに割り当て、前記オブジェクト識別子をIDバッファに書き込むことを包含し、これにより、複数のオブジェクト識別子が存在する、請求項63のGPU。
  89. 独特のオブジェクト識別子の前記オブジェクトのそれぞれに対する前記割り当ては、同じオブジェクト識別子を、同じフレームまたは2つ以上の異なるフレーム内の同じオブジェクトの2つ以上のインスタンスに割り当てることを包含する、請求項63のGPU。
  90. 前記表示画素のセットの前記決定は、いずれのプリミティブまたは画素がいずれのオブジェクトに属するか追跡し続けるために、1つまたは複数のオブジェクト識別子の使用を包含する、請求項63のGPU。
  91. 表示画素の前記セットの前記決定は、先のフレーム内の同じオブジェクトにおける同じ画素に対する画素値を繰り返すことにより、1つのフレーム内の画素に対して画素値を設けるため、1つまたは複数の前記オブジェクト識別子を使用することを包含する、請求項63のGPU。
  92. 表示画素の前記セットの前記決定は、1つまたは複数オブジェクト識別子を用いることを包含し、同じオブジェクトは、所与のフレーム内で多数回再度描かれる、請求項63のGPU。
  93. 前記GPUは、更に、オブジェクト識別子を使用して、フレームからフレームへのオブジェクトの流れの追跡を維持するように構成される、請求項63のGPU。
  94. プロセッサ実行可能な命令を内部に組み込んだ、非一時的コンピュータ可読媒体であって、プロセッサによる命令の実行は、請求項1に記載のように、プロセッサでグラフィックをレンダリングする方法を前記プロセッサに実行させる、非一時的コンピュータ可読媒体。
  95. プロセッサで1つまたは複数グラフィックフレームをレンダリングする方法であって、前記1つまたは複数のグラフィックフレームは、複数のオブジェクトを表し、この方法は、
    a)独特のオブジェクト識別子を前記オブジェクトのそれぞれに割り当てるステップと、
    b)前記フレームのそれぞれに対し、仮想空間内で前記オブジェクトのそれぞれの頂点を操作するステップであって、前記オブジェクトのそれぞれは、1つまたは複数のプリミティブを有するステップと、
    c)前記フレームのそれぞれに対し、前記仮想空間からスクリーン空間に前記オブジェクトの前記プリミティブを変換するステップであって、前記スクリーン空間は、複数の深度サンプルと複数のカラーサンプルとを有するステップと、
    d)前記フレームのそれぞれに対し、スクリーン空間内で前記カラーサンプルのそれぞれの最終カラー値とスクリーン空間内の前記深度サンプルのそれぞれの最終深度値とを決定するステップであって、前記最終深度値は、深度バッファ内に格納され、前記最終カラー値はカラーバッファ内に格納され、前記深度バッファは前記カラーバッファよりも高解像度であるステップと、
    e)前記フレームのそれぞれに対し、少なくとも1つの前記オブジェクト識別子をIDバッファ内に格納するステップであって、前記深度バッファ内の前記最終深度値のそれぞれは、前記IDバッファ内の少なくとも1つの前記オブジェクト識別子に関連するステップと、
    f)前記フレームのそれぞれに対し、前記カラーバッファ内の前記カラー値及び前記IDバッファ内の前記オブジェクト識別子を用いて、前記深度バッファの前記より高い解像度で表示画素の最終セットを決定するステップとを含む、方法。
JP2016560652A 2014-04-05 2015-03-23 オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上 Active JP6374982B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/246,067 2014-04-05
US14/246,067 US9710957B2 (en) 2014-04-05 2014-04-05 Graphics processing enhancement by tracking object and/or primitive identifiers
PCT/US2015/021956 WO2015153164A1 (en) 2014-04-05 2015-03-23 Graphics processing enhancement by tracking object and/or primitive identifiers

Publications (2)

Publication Number Publication Date
JP2017516200A true JP2017516200A (ja) 2017-06-15
JP6374982B2 JP6374982B2 (ja) 2018-08-15

Family

ID=54210224

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016560652A Active JP6374982B2 (ja) 2014-04-05 2015-03-23 オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上

Country Status (6)

Country Link
US (2) US9710957B2 (ja)
EP (1) EP3129978B1 (ja)
JP (1) JP6374982B2 (ja)
KR (2) KR102242626B1 (ja)
TW (2) TWI584223B (ja)
WO (1) WO2015153164A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021524061A (ja) * 2018-05-17 2021-09-09 株式会社ソニー・インタラクティブエンタテインメント Hmd環境での高速中心窩レンダリングのための予測及びgpuに対する最新の更新を伴う視線追跡

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633458B2 (en) * 2012-01-23 2017-04-25 Nvidia Corporation Method and system for reducing a polygon bounding box
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
EP3872767A1 (en) 2014-04-05 2021-09-01 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9734624B2 (en) * 2014-04-30 2017-08-15 Lucasfilm Entertainment Company Ltd. Deep image data compression
US9665975B2 (en) 2014-08-22 2017-05-30 Qualcomm Incorporated Shader program execution techniques for use in graphics processing
US10410398B2 (en) * 2015-02-20 2019-09-10 Qualcomm Incorporated Systems and methods for reducing memory bandwidth using low quality tiles
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9754237B2 (en) * 2015-12-18 2017-09-05 Ricoh Co., Ltd. Index image quality metric
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10303488B2 (en) 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10275239B2 (en) 2016-03-30 2019-04-30 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN108450060B (zh) * 2016-12-22 2020-12-15 华为技术有限公司 基于wi-fi接入点的定位方法、设备
US10650566B2 (en) * 2017-02-15 2020-05-12 Microsoft Technology Licensing, Llc Multiple shader processes in graphics processing
US10685473B2 (en) * 2017-05-31 2020-06-16 Vmware, Inc. Emulation of geometry shaders and stream output using compute shaders
US20190236758A1 (en) * 2018-01-29 2019-08-01 Intel Corporation Apparatus and method for temporally stable conservative morphological anti-aliasing
US11012694B2 (en) 2018-05-01 2021-05-18 Nvidia Corporation Dynamically shifting video rendering tasks between a server and a client
US10713756B2 (en) * 2018-05-01 2020-07-14 Nvidia Corporation HW-assisted upscaling and multi-sampling using a high resolution depth buffer
US10942564B2 (en) * 2018-05-17 2021-03-09 Sony Interactive Entertainment Inc. Dynamic graphics rendering based on predicted saccade landing point
WO2020163702A1 (en) * 2019-02-07 2020-08-13 Visu, Inc. Shader for reducing myopiagenic effect of graphics rendered for electronic display
CN113298918B (zh) * 2020-02-24 2022-12-27 广东博智林机器人有限公司 一种重叠区域的异色显示方法及装置
US11538221B2 (en) * 2020-05-21 2022-12-27 Samsung Electronics Co., Ltd. Re-reference aware tile walk order for primitive binner
CN114077310B (zh) 2020-08-14 2023-08-25 宏达国际电子股份有限公司 提供虚拟环境的方法与系统及非暂态电脑可读取储存介质
US11216916B1 (en) * 2020-10-09 2022-01-04 Nvidia Corporation History clamping for denoising dynamic ray-traced scenes using temporal accumulation
CN116563083A (zh) * 2022-01-29 2023-08-08 华为技术有限公司 渲染图像的方法和相关装置
US20230298250A1 (en) * 2022-03-16 2023-09-21 Meta Platforms Technologies, Llc Stereoscopic features in virtual reality
US20230334728A1 (en) * 2022-04-15 2023-10-19 Meta Platforms Technologies, Llc Destination Update for Blending Modes in a Graphics Pipeline
US11882295B2 (en) 2022-04-15 2024-01-23 Meta Platforms Technologies, Llc Low-power high throughput hardware decoder with random block access

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09134451A (ja) * 1995-11-09 1997-05-20 Hitachi Ltd 透視投影計算装置および透視投影計算方法
JP2001283248A (ja) * 2000-02-28 2001-10-12 Mitsubishi Electric Research Laboratories Inc グラフィックオブジェクトの表面点を投影する方法
JP2002526842A (ja) * 1998-08-20 2002-08-20 アップル コンピュータ インコーポレイテッド ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
JP2004514227A (ja) * 2000-11-15 2004-05-13 ソニー エレクトロニクス インク 効率的なアンチエイリアシングのためにフレームバッファを動的に割り当てる方法及び装置
US6967663B1 (en) * 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
JP2009295166A (ja) * 2008-06-05 2009-12-17 Arm Ltd グラフィックス処理システム
JP2010020764A (ja) * 2008-07-03 2010-01-28 Nvidia Corp ハイブリッドマルチサンプル/スーパーサンプルアンチエイリアシング
JP2013025406A (ja) * 2011-07-15 2013-02-04 Panasonic Corp 画像処理装置、画像処理方法および画像表示装置
US20130265309A1 (en) * 2012-04-04 2013-10-10 Qualcomm Incorporated Patched shading in graphics processing

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4513317A (en) 1982-09-28 1985-04-23 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Retinally stabilized differential resolution television display
US5224208A (en) 1990-03-16 1993-06-29 Hewlett-Packard Company Gradient calculation for texture mapping
US5130794A (en) 1990-03-29 1992-07-14 Ritchey Kurtis J Panoramic display system
US5422653A (en) 1993-01-07 1995-06-06 Maguire, Jr.; Francis J. Passive virtual reality
US5602391A (en) 1995-02-23 1997-02-11 Hughes Electronics Quincunx sampling grid for staring array
US5777913A (en) 1995-12-27 1998-07-07 Ericsson Inc. Resolution enhancement of fixed point digital filters
USH1812H (en) 1997-10-24 1999-11-02 Sun Microsystems, Inc. Method for encoding bounding boxes of drawing primitives to be rendered for multi-resolution supersampled frame buffers
US6496187B1 (en) 1998-02-17 2002-12-17 Sun Microsystems, Inc. Graphics system configured to perform parallel sample to pixel calculation
WO1999041704A1 (en) 1998-02-17 1999-08-19 Sun Microsystems, Inc. Estimating graphics system performance for polygons
US6466206B1 (en) 1998-02-17 2002-10-15 Sun Microsystems, Inc. Graphics system with programmable real-time alpha key generation
US6469700B1 (en) 1998-06-24 2002-10-22 Micron Technology, Inc. Per pixel MIP mapping and trilinear filtering using scanline gradients for selecting appropriate texture maps
WO2000011607A1 (en) 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
JP2000155850A (ja) 1998-11-20 2000-06-06 Sony Corp テクスチャ・マッピング装置及びこれを具備したレンダリング装置、並びに情報処理装置
US6417861B1 (en) 1999-02-17 2002-07-09 Sun Microsystems, Inc. Graphics system with programmable sample positions
US6781606B2 (en) 1999-05-20 2004-08-24 Hewlett-Packard Development Company, L.P. System and method for displaying images using foveal video
US6633297B2 (en) * 2000-08-18 2003-10-14 Hewlett-Packard Development Company, L.P. System and method for producing an antialiased image using a merge buffer
JP2002260003A (ja) 2001-03-02 2002-09-13 Hitachi Ltd 映像表示装置
US6906723B2 (en) 2001-03-29 2005-06-14 International Business Machines Corporation Generating partials for perspective corrected texture coordinates in a four pixel texture pipeline
US6731434B1 (en) 2001-05-23 2004-05-04 University Of Central Florida Compact lens assembly for the teleportal augmented reality system
US7555157B2 (en) 2001-09-07 2009-06-30 Geoff Davidson System and method for transforming graphical images
US7155698B1 (en) 2001-09-11 2006-12-26 The Regents Of The University Of California Method of locating areas in an image such as a photo mask layout that are sensitive to residual processing effects
US6738069B2 (en) 2001-12-31 2004-05-18 Intel Corporation Efficient graphics state management for zone rendering
US6906714B2 (en) 2002-06-21 2005-06-14 Intel Corporation Accelerated visualization of surface light fields
US6891548B2 (en) 2002-08-23 2005-05-10 Hewlett-Packard Development Company, L.P. System and method for calculating a texture-mapping gradient
TWI238975B (en) 2003-02-20 2005-09-01 Via Tech Inc Method of performing cubic mapping with texturing
US7619626B2 (en) 2003-03-01 2009-11-17 The Boeing Company Mapping images from one or more sources into an image for display
US7336277B1 (en) 2003-04-17 2008-02-26 Nvidia Corporation Per-pixel output luminosity compensation
JP3966832B2 (ja) 2003-04-28 2007-08-29 株式会社東芝 描画処理装置、及び、描画処理方法
US7495638B2 (en) 2003-05-13 2009-02-24 Research Triangle Institute Visual display with increased field of view
EP1496475B1 (en) 2003-07-07 2013-06-26 STMicroelectronics Srl A geometric processing stage for a pipelined graphic engine, corresponding method and computer program product therefor
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US8144156B1 (en) 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
US8090383B1 (en) * 2004-02-17 2012-01-03 Emigh Aaron T Method and system for charging for a service based on time spent at a facility
US7817829B2 (en) 2004-03-15 2010-10-19 Koninklijke Philips Electronics N.V. Image visualization
US7554538B2 (en) 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal
US7426724B2 (en) 2004-07-02 2008-09-16 Nvidia Corporation Optimized chaining of vertex and fragment programs
US7425966B2 (en) 2004-10-07 2008-09-16 Nvidia Corporation Pixel center position displacement
US7339594B1 (en) 2005-03-01 2008-03-04 Nvidia Corporation Optimized anisotropic texture sampling
JP4660254B2 (ja) 2005-04-08 2011-03-30 株式会社東芝 描画方法及び描画装置
US7289119B2 (en) 2005-05-10 2007-10-30 Sony Computer Entertainment Inc. Statistical rendering acceleration
US7511717B1 (en) 2005-07-15 2009-03-31 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
US20070018988A1 (en) 2005-07-20 2007-01-25 Michael Guthe Method and applications for rasterization of non-simple polygons and curved boundary representations
JP2007152861A (ja) * 2005-12-08 2007-06-21 Olympus Corp 画像記録装置が備えるインク検出装置、インク検出方法、及びプログラム
US8300059B2 (en) 2006-02-03 2012-10-30 Ati Technologies Ulc Method and apparatus for selecting a mip map level based on a min-axis value for texture mapping
US8207975B1 (en) 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US7907792B2 (en) 2006-06-16 2011-03-15 Hewlett-Packard Development Company, L.P. Blend maps for rendering an image frame
US8406562B2 (en) 2006-08-11 2013-03-26 Geo Semiconductor Inc. System and method for automated calibration and correction of display geometry and color
WO2008055262A2 (en) 2006-11-02 2008-05-08 Sensics, Inc. Systems and methods for a head-mounted display
US8228328B1 (en) 2006-11-03 2012-07-24 Nvidia Corporation Early Z testing for multiple render targets
US8233004B1 (en) 2006-11-06 2012-07-31 Nvidia Corporation Color-compression using automatic reduction of multi-sampled pixels
JP5063990B2 (ja) * 2006-11-15 2012-10-31 任天堂株式会社 ゲームプログラムおよびゲーム装置
US7876332B1 (en) 2006-12-20 2011-01-25 Nvidia Corporation Shader that conditionally updates a framebuffer in a computer graphics system
JP5268271B2 (ja) 2007-03-23 2013-08-21 株式会社東芝 画像表示装置および画像表示方法
US20090033659A1 (en) 2007-07-31 2009-02-05 Lake Adam T Real-time luminosity dependent subdivision
US8044956B1 (en) 2007-08-03 2011-10-25 Nvidia Corporation Coverage adaptive multisampling
US8441497B1 (en) 2007-08-07 2013-05-14 Nvidia Corporation Interpolation of vertex attributes in a graphics processor
US7916155B1 (en) 2007-11-02 2011-03-29 Nvidia Corporation Complementary anti-aliasing sample patterns
JP5050786B2 (ja) 2007-11-05 2012-10-17 富士通セミコンダクター株式会社 描画処理装置、描画処理方法および描画処理プログラム
US8922565B2 (en) 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US8605087B2 (en) * 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
US8428326B2 (en) * 2008-10-23 2013-04-23 Immersion Corporation Systems and methods for ultrasound simulation using depth peeling
GB0819570D0 (en) 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US8780131B2 (en) 2008-12-19 2014-07-15 Xerox Corporation Systems and methods for text-based personalization of images
US20100214294A1 (en) 2009-02-20 2010-08-26 Microsoft Corporation Method for tessellation on graphics hardware
US8330767B2 (en) 2009-03-24 2012-12-11 Advanced Micro Devices, Inc. Method and apparatus for angular invariant texture level of detail generation
US8669999B2 (en) 2009-10-15 2014-03-11 Nvidia Corporation Alpha-to-coverage value determination using virtual samples
US8638342B2 (en) 2009-10-20 2014-01-28 Apple Inc. System and method for demosaicing image data using weighted gradients
US8803902B2 (en) 2009-12-03 2014-08-12 Intel Corporation Computing level of detail for anisotropic filtering
WO2011072211A2 (en) 2009-12-11 2011-06-16 Aperio Technologies, Inc. Improved signal to noise ratio in digital pathology image analysis
US8606009B2 (en) 2010-02-04 2013-12-10 Microsoft Corporation High dynamic range image generation and rendering
US8619085B2 (en) 2010-03-08 2013-12-31 Broadcom Corporation Method and system for compressing tile lists used for 3D rendering
ES2885250T3 (es) 2010-07-21 2021-12-13 Dolby Laboratories Licensing Corp Sistemas y métodos para la entrega de vídeo multicapa compatible de trama
WO2012037157A2 (en) 2010-09-13 2012-03-22 Alt Software (Us) Llc System and method for displaying data having spatial coordinates
KR101719485B1 (ko) 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8593475B2 (en) 2010-10-13 2013-11-26 Qualcomm Incorporated Systems and methods for dynamic procedural texture generation management
US9122053B2 (en) 2010-10-15 2015-09-01 Microsoft Technology Licensing, Llc Realistic occlusion for a head mounted augmented reality display
US8982136B2 (en) 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
JP5885398B2 (ja) * 2011-05-20 2016-03-15 キヤノン株式会社 画像処理装置、画像処理方法
US9019280B2 (en) 2011-07-22 2015-04-28 Qualcomm Incorporated Area-based rasterization techniques for a graphics processing system
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US10089774B2 (en) 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
CN105974587B (zh) 2011-11-24 2018-09-28 松下知识产权经营株式会社 头戴式显示器装置
GB2497302B (en) 2011-12-05 2017-04-12 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US8581929B1 (en) 2012-06-05 2013-11-12 Francis J. Maguire, Jr. Display of light field image data using a spatial light modulator at a focal length corresponding to a selected focus depth
US9495781B2 (en) 2012-06-21 2016-11-15 Nvidia Corporation Early sample evaluation during coarse rasterization
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US9142005B2 (en) 2012-08-20 2015-09-22 Nvidia Corporation Efficient placement of texture barrier instructions
US10976986B2 (en) 2013-09-24 2021-04-13 Blackberry Limited System and method for forwarding an application user interface

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09134451A (ja) * 1995-11-09 1997-05-20 Hitachi Ltd 透視投影計算装置および透視投影計算方法
JP2002526842A (ja) * 1998-08-20 2002-08-20 アップル コンピュータ インコーポレイテッド ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
JP2001283248A (ja) * 2000-02-28 2001-10-12 Mitsubishi Electric Research Laboratories Inc グラフィックオブジェクトの表面点を投影する方法
JP2004514227A (ja) * 2000-11-15 2004-05-13 ソニー エレクトロニクス インク 効率的なアンチエイリアシングのためにフレームバッファを動的に割り当てる方法及び装置
US6967663B1 (en) * 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
JP2009295166A (ja) * 2008-06-05 2009-12-17 Arm Ltd グラフィックス処理システム
JP2010020764A (ja) * 2008-07-03 2010-01-28 Nvidia Corp ハイブリッドマルチサンプル/スーパーサンプルアンチエイリアシング
JP2013025406A (ja) * 2011-07-15 2013-02-04 Panasonic Corp 画像処理装置、画像処理方法および画像表示装置
US20130265309A1 (en) * 2012-04-04 2013-10-10 Qualcomm Incorporated Patched shading in graphics processing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021524061A (ja) * 2018-05-17 2021-09-09 株式会社ソニー・インタラクティブエンタテインメント Hmd環境での高速中心窩レンダリングのための予測及びgpuに対する最新の更新を伴う視線追跡
JP7181316B2 (ja) 2018-05-17 2022-11-30 株式会社ソニー・インタラクティブエンタテインメント Hmd環境での高速中心窩レンダリングのための予測及びgpuに対する最新の更新を伴う視線追跡

Also Published As

Publication number Publication date
TW201539375A (zh) 2015-10-16
US9710957B2 (en) 2017-07-18
KR20190131131A (ko) 2019-11-25
TWI618030B (zh) 2018-03-11
JP6374982B2 (ja) 2018-08-15
US20180130251A1 (en) 2018-05-10
WO2015153164A1 (en) 2015-10-08
KR102242626B1 (ko) 2021-04-21
EP3129978A4 (en) 2017-09-27
EP3129978B1 (en) 2020-05-20
TWI584223B (zh) 2017-05-21
EP3129978A1 (en) 2017-02-15
KR20170015884A (ko) 2017-02-10
TW201737207A (zh) 2017-10-16
KR102046616B1 (ko) 2019-11-19
US10510183B2 (en) 2019-12-17
US20150287239A1 (en) 2015-10-08

Similar Documents

Publication Publication Date Title
JP6374982B2 (ja) オブジェクト及び/またはプリミティブ識別子を追跡することによるグラフィック処理の向上
US10438396B2 (en) Method for efficient construction of high resolution display buffers
EP3748584B1 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
JP2020113301A (ja) 非正規直交グリッドへのテクスチャマッピングのためのグラデーションの調整
JP2017517025A (ja) 複数のレンダーターゲット内でアクティブカラーサンプルカウントを変更することによりスクリーンの位置によって有効解像度を変動させること
US20130021358A1 (en) Area-based rasterization techniques for a graphics processing system
US9536333B2 (en) Method and apparatus for improved processing of graphics primitives
US7817165B1 (en) Selecting real sample locations for ownership of virtual sample locations in a computer graphics system
KR20170016301A (ko) 그래픽 처리
JP2017076374A (ja) グラフィックス処理システム
JP2019121381A (ja) グラフィックプロセッサ、及びその動作方法
US20210104088A1 (en) Method for efficient construction of high resolution display buffers
Wang et al. Shadow geometry maps for alias-free shadows

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180206

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180613

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180720

R150 Certificate of patent or registration of utility model

Ref document number: 6374982

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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