JP6342513B2 - 高解像度表示バッファの効果的な構築方法 - Google Patents

高解像度表示バッファの効果的な構築方法 Download PDF

Info

Publication number
JP6342513B2
JP6342513B2 JP2016560646A JP2016560646A JP6342513B2 JP 6342513 B2 JP6342513 B2 JP 6342513B2 JP 2016560646 A JP2016560646 A JP 2016560646A JP 2016560646 A JP2016560646 A JP 2016560646A JP 6342513 B2 JP6342513 B2 JP 6342513B2
Authority
JP
Japan
Prior art keywords
samples
pixel
color
sample
covered
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
JP2016560646A
Other languages
English (en)
Other versions
JP2017517056A (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 JP2017517056A publication Critical patent/JP2017517056A/ja
Application granted granted Critical
Publication of JP6342513B2 publication Critical patent/JP6342513B2/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/005General purpose rendering architectures
    • 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/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • 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
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

[関連出願の相互参照]
本願は、2014年4月5日出願のTobias Berghoffに対する「GRAPHICS PROCESSING ENHANCEMENT BY TRACKING OBJECT AND/OR PRIMITIVE IDENTIFIERS」と題する同一出願人による同時継続の米国特許出願番号14/246,067(代理人整理番号SCEA13056US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、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/246,061(代理人整理番号SCEA13058US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、2014年4月5日出願のMark Evan Cernyに対する「VARYING EFFECTIVE RESOLUTION BY SCREEN LOCATION BY ALTERING RASTERIZATION PARAMETERS」と題する同一出願人による同時継続の米国特許出願番号14/246,063(代理人整理番号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/246,066(代理人整理番号SCEA13060US00)に関し、参照することにより、その全体の内容がここに包含される。
本願は、2014年4月5日出願のMark Evan Cernyに対する「GRADIENT ADJUSTMENT FOR TEXTURE MAPPING FOR MULTIPLE RENDER TARGETS WITH RESOLUTION THAT VARIES BY SCREEN LOCATION」と題する同一出願人による同時継続の米国特許出願番号14/246,062(代理人整理番号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は、本開示にしたがうグラフィック処理の概略図である。
以下の詳細な説明は、例示の目的のための多くの特定の詳細を含むが、当業者であれば、本発明の範囲内で、以下の細部に多くの変形及び変更が存在することが理解される。したがって、以下に説明する本発明の例示的な実施形態は、請求の範囲に記載の発明に対して普遍性を喪失させるものではなく、制限を付するものでもない。
本開示の態様は、レンダリングパイプラインの効率を向上するために、画素シェーダの呼び出しを最小とすることができるグラフィック処理システム及び方法を説明する。本開示の実施形態では、複数のサンプルはプリミティブ内で取得することができる。サンプルは深度及びカラーサンプルの双方を包含することができ、深度サンプル数は、各画素内でカラーサンプル数よりも多い。サンプルの少なくとも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またはステンシル値をエキスポートするように構成されているか否か決定することを包含しても良い。いくつかの実施態様では、画素シェーダを呼び出すか否かの決定は、更に、画素シェーダがサンプルマスクを変更するように構成されているか否か決定することを包含する。これらの実施態様では、早期深度テストは省略しても良く、例えば、深度テストは、それぞれカバーされたサンプルに対する画素シェーダの後に実行しても良い。これらの状況では、画素シェーダは、通常の態様で呼び出しても良い。
図5は、本開示の態様を実施するように構成されたレンダリングパイプラインによる例示的なグラフィック処理方法500を示す。図5の例示的なレンダリングパイプラインは、本開示の態様にしたがって画素シェーダの呼び出しを最小にするための図4の方法400を包含しても良い。
レンダリングパイプライン500は、潜在的には二次元ジオメトリであるが、好ましくは仮想空間(ここでは、「場面空間」と称することもある)内で三次元ジオメトリを有しても良い場面を示すイメージとして画像を描画するように構成しても良い。レンダリングパイプラインの全体を通じて、データは1つまたは複数のメモリユニットからデータから読み出し及び書き込むことができ、これはグラフィックメモリ520として、図5に全体的に示してある。グラフィックメモリは、ビデオメモリ及び/またはハードウェアステートメモリを有しても良く、これは、レンダリングパイプラインに使用される種々のバッファ及び/またはグラフィック資源を包含する。グラフィックメモリ520の1つまたは複数の個々のメモリユニットは、レンダリングの特定のステージにおけるデータの性質にしたがって、1つまたは複数のビデオランダムアクセスメモリユニット(複数を含む)、1つまたは複数のキャッシュ、1つまたは複数のプロセッサレジスタ等として実現しても良い。したがって、グラフィックメモリ520は、グラフィックレンダリングパイプライン内で使用される任意のプロセッサアクセス可能メモリと称すると理解される。専門化したGPU等の処理ユニットは、パイプライン中の種々の演算を実行するように構成され、グラフィックメモリ520に読み/書きしても良い。
パイプラインの早期ステージは、場面がラスター化され、画素表示装置に出力するのに適した個別のピクチャエレメントのセットとして、スクリーン空間に変換される前に、場面空間で実行される動作を包含しても良い。パイプラインの全体を通して、グラフィックメモリ520に包含される種々の資源は、パイプラインのステージで利用され、ステージに対する入出力は、イメージの最終値が決定される前に、グラフィックメモリに包含されるバッファに一時的に格納しても良い。
レンダリングパイプラインは入力データ522で作動することができ、これは、場面空間にセットアップされかつこの場面の座標に関して画定されたジオメトリを有する頂点のセットで画定される1つまたは複数の仮想オブジェクトを包含しても良い。このレンダリングパイプライン500に使用する入力データ522は、その頂点が本開示の態様にしたがうレンダリングパイプラインで処理されるプリミティブに対応する、場面ジオメトリのポリゴンメッシュモデルを有しても良く、初期頂点ジオメトリは、CPUで実行されるアプリケーションステージの際にグラフィックメモリにセットアップしても良い。パイプラインの早期ステージは、図5の頂点処理ステージ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に示すように、カラー/深度表示バッファ内に格納する前に深度テストしても良い。カラーサンプルのサンプル座標における深度値は、プリミティブでカバーされた全てのこれらの深度サンプルと同様であるため、最終表示画素のカラーは、全てのこれらの深度サンプル座標における画素のカラーサンプルから効果的に導きだすことができ、フル解像度でカラー値をシェーディングする必要を避ける深度サンプルにより提供される高空間精度を有する。
上記は、深度に対してのみ多くのサンプルを利用するサンプリングスキームの方法の実施例の詳細であり、このような多重サンプリングスキームは他の目的に使用することもできる。例えば、時間的なアンチエイリアス処理をフレーム間で実行し、異なるフレームの深度サンプルで導き出されたフル解像度カラーを再構成しても良い。多数のサンプルは、他のアンチエイリアス処理スキームに対しても有益とすることができる。
追加態様
本開示の追加の態様は、グラフィックのレンダリングの方法を包含し、この方法は、第1画素で第1プリミティブのサンプルカバレッジを決定し、この第1画素は、複数のサンプルを有し、複数のサンプルは1つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルカバレッジの決定では、第1画素の複数のサンプルが、第1プリミティブでカバーされた1つまたは複数のカバーされたサンプルを有することを決定し、更に、
カバーされたサンプルが第1画素の少なくとも1つのカラーサンプルを含むかどうか決定し、前記決定が、カバーされたサンプルに少なくとも1つのカラーサンプルが含まれる場合に、第1プリミティブについて第1画素に対する画素シェーダを呼び出し、更に、
前記決定が、カバーされたサンプルに少なくとも1つのカラーサンプルが含まれないと決定した場合に、第1プリミティブについて第1画素のための画素シェーダを呼び出さない。
他の追加態様は、コンピュータ実行可能な命令を内部に具現化し、実行したときに上記方法を実行する、コンピュータ可読媒体である。
他の態様は、上記方法を実行するために、コンピュータ可読命令を搬送する電磁または他の信号である。
更に他の態様は、通信ネットワークからダウンロード可能、及び/または、コンピュータ可読及び/またはマイクロプロセッサで実行可能な媒体に格納されるコンピュータプログラム製品であって、上記方法を実行するためのプログラムコード命令を有することを特徴とする。
上記は、本発明の好ましい実施形態の完全な説明であるが、種々の代替、変更及び等価なものを使用することが可能である。したがって、本発明の範囲は、上記説明を参照することではなく、代わりに、等価なものの全範囲と共に、添付の請求の範囲を参照することにより、決定されるべきものである。好ましいか否かに関わらず、ここに記載の特徴は、好ましいか否かに関わらず、ここに記載の任意の他の特徴と組合わせることができる。請求の範囲では、不定冠詞「a」または「an」は、明確に延べられている場合を除き、その冠詞に続く項目の1つまたは複数の量を指す。請求の範囲は、「means for」の語句を使用する所与の制限が所与の請求の範囲において明確に参照されていない限り、means−plus−functionの限定を含むことを意図したものではない。

Claims (18)

  1. 処理ユニットでグラフィックをレンダリングする方法であって、
    第1画素で第1プリミティブのサンプルのカバレッジを決定するステップを含み、前記第1画素は複数のサンプルを有し、前記複数のサンプルは1つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの決定で、前記第1画素の複数のサンプルが前記第1プリミティブでカバーされた1つまたは複数のカバーされたサンプルを含むことが決定され、
    前記1つまたは複数のカバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定するステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のために画素シェーダを呼び出すステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含まないが前記複数の深度サンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のための前記画素シェーダを呼び出さないステップと
    前記第1プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを備える、方法。
  2. 前記第1画素の前記1つまたは複数のカラーサンプルは、複数のカラーサンプルであり、前記第1画素のカラーサンプル数は前記第1画素の深度サンプル数よりも少ない、請求項1の方法。
  3. 前記カバーされたサンプルが前記カラーサンプルの少なくとも1つを含むかどうかの前記決定の前に、前記カバーされたサンプルの少なくとも1つに対して早期深度テストを実行して、前記カバーされたサンプルが閉塞された深度かどうか決定するステップをさらに備え、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない1つまたは複数の存続するカバーされたサンプルを含むことが決定され、
    前記カバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうかの前記決定は、存続するカバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定することを包む、請求項1の方法。
  4. 前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも1つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
    前記第1プリミティブから前記第1画素に対して生成された少なくとも1つのフラグメントについての画素シェーダ計算を実行するステップをさらに含む、請求項1の方法。
  5. 前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも1つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
    前記第1プリミティブから前記第1画素に対して生成された少なくとも1つのフラグメントについての画素シェーダ計算を実行するステップと、
    前記画素シェーダ計算の実行後、前記画素シェーダ計算で計算された少なくとも1つのフラグメントの少なくとも1つのカラー値を、前記第1プリミティブでカバーされた前記第1画素の少なくとも1つのカラーサンプルに適用するステップをさらに含む、請求項1の方法。
  6. 前記決定は、複数のカラーサンプルが前記プリミティブでカバーされることを決定し、
    前記方法は、
    前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも1つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
    前記プリミティブでカバーされた前記複数のカラーサンプルのそれぞれに対してそれぞれ生成された1つまたは複数の単一サンプルフラグメントに対して画素シェーダ計算を実行するステップと、
    前記画素シェーダ計算の実行し後、前記画素シェーダ計算で計算された前記単一サンプルフラグメントのそれぞれの各カラー値を、前記第1プリミティブでカバーされた前記カラーサンプルのそれぞれに適用するステップとをさらに備える、請求項1の方法。
  7. 前記決定は、複数のカラーサンプルが前記プリミティブでカバーされることを決定し、
    前記方法は、
    前記決定が前記カバーされたサンプルに前記カラーサンプルの少なくとも1つが含まれることを決定した場合に画素シェーダの前記呼び出し後、
    前記プリミティブでカバーされた複数のカラーサンプルのそれぞれに対して生成された1つフラグメントに対して画素シェーダ計算を実行するステップと、
    前記画素シェーダ計算の実行の後、前記画素シェーダ計算で計算された前記フラグメントのカラー値を、前記第1プリミティブでカバーされた前記カラーサンプルのそれぞれに適用するステップとをさらに備える、請求項1の方法。
  8. 前記第1プリミティブは、三角形である、請求項1の方法。
  9. プロセッサと、
    前記プロセッサに連結されたメモリとを備えるシステムであって
    前記プロセッサは、グラフィックをレンダリングする方法を実行するように構成され、この方法は、
    第1画素で第1プリミティブのサンプルのカバレッジを決定するステップを含み、前記第1画素は複数のサンプルを有し、前記複数のサンプルは1つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの前記決定で、前記第1画素の複数のサンプルが前記第1プリミティブでカバーされた1つまたは複数のカバーされたサンプルを含むことが決定され、
    前記1つまたは複数のカバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定するステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のために画素シェーダを呼び出すステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含まないが前記複数の深度サンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のための前記画素シェーダを呼び出さないステップと
    前記第1プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを備える、システム
  10. 前記プロセッサは、中央処理ユニット(CPU)とグラフィック処理ユニット(GPU)とを有する、請求項9のシステム。
  11. 更にディスプレイ装置を備え、
    前記方法は、前記ディスプレイ装置に前記グラフィックを表示するステップをさらに備える、請求項9のシステム。
  12. 前記方法は、
    前記カバーされたサンプルが前記カラーサンプルの少なくとも1つを含むかどうかの前記決定の前に、前記カバーされたサンプルの少なくとも1つに対して早期深度テストを実行して、前記カバーされたサンプルが閉塞された深度かどうか決定するステップをさらに備え、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない1つまたは複数の存続するカバーされたサンプルを含むことが決定され、
    前記カバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうかの決定は、前記存続するカバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定することを包む、請求項9のシステム。
  13. 前記第1画素の前記1つまたは複数のカラーサンプルは、複数のカラーサンプルであり、前記第1画素のカラーサンプル数は前記第1画素の深度サンプル数よりも少ない、請求項9のシステム。
  14. メモリモジュールと、
    ハードウェアおよび/またはソフトウェアで実装されたラスター化モジュールとを備えるグラフィック処理ユニット(GPU)であって、
    前記ラスター化モジュールが
    第1画素で第1プリミティブのサンプルのカバレッジを決定するステップを実行し、前記第1画素は複数のサンプルを有し、前記複数のサンプルは1つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの前記決定で、前記第1画素の前記複数のサンプルが前記第1プリミティブでカバーされた1つまたは複数のカバーされたサンプルを含むことが決定され、
    前記1つまたは複数のカバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定するステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のために画素シェーダを呼び出すステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含まないが前記複数の深度サンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のための画素シェーダを呼び出さないステップと
    前記第1プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを実行するように構成された、グラフィック処理ユニット(GPU)。
  15. 前記ラスター化モジュールは、ハードウェアモジュールで実装される、請求項14のGPU。
  16. 前記ラスター化モジュールは、
    前記カバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか前記決定する前に、前記カバーされたサンプルの少なくとも1つに対して早期深度テストを実行して、前記カバーされたサンプルの少なくとも1つのそれぞれが閉塞された深度かどうか決定するステップをさらに実行し、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない1つまたは複数の存続するカバーされたサンプルを含むことが決定され、
    前記カバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうかの前記決定は、前記存続するカバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定することを含む、請求項14のGPU。
  17. 内部に具体化したプロセッサ実行可能な命令を有する非一時的コンピュータ可読媒体であって、プロセッサによる前記命令の実行が前記プロセッサに、グラフィックのレンダリングの方法を実行させ、この方法は、
    第1画素で第1プリミティブのサンプルのカバレッジを決定するステップを含み、前記第1画素は複数のサンプルを有し、前記複数のサンプルは1つまたは複数のカラーサンプルと複数の深度サンプルとを有し、前記サンプルのカバレッジの前記決定で、前記第1画素の前記複数のサンプルが前記第1プリミティブでカバーされた1つまたは複数のカバーされたサンプルを含むことが決定され、
    前記1つまたは複数のカバーされたサンプル前記が第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定するステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のために画素シェーダを呼び出すステップと、
    前記決定が、前記1つまたは複数のカバーされたサンプルが前記カラーサンプルの少なくとも1つを含まないが前記複数の深度サンプルの少なくとも1つを含むことを決定した場合に、前記第1プリミティブについて前記第1画素のための画素シェーダを呼び出さないステップと
    前記第1プリミティブについて、カラーサンプルと関連づけられていないが深度サンプルと関連づけられた表示画素に対して、前記深度サンプルと同じ深度値におけるカラーサンプルのカラー値を割り当てることにより、カラー値を引き出すステップとを備える、非一時的コンピュータ可読媒体
  18. 前記方法は、
    前記カバーされたサンプルが前記カラーサンプルの少なくとも1つを含むかどうかの前記決定の前に、前記カバーされたサンプルの少なくとも1つに対して早期深度テストを実行して、前記カバーされたサンプルが閉塞された深度かどうか決定するステップをさらに備え、前記早期深度テストの前記実行において、前記カバーされたサンプルが、閉塞された深度でない1つまたは複数の存続するカバーされたサンプルを含むことが決定され、
    前記カバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうかの前記決定は、前記存続するカバーされたサンプルが前記第1画素の前記カラーサンプルの少なくとも1つを含むかどうか決定することを包む、請求項17の非一時的コンピュータ可読媒体。
JP2016560646A 2014-04-05 2015-03-23 高解像度表示バッファの効果的な構築方法 Active JP6342513B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/246,064 US9865074B2 (en) 2014-04-05 2014-04-05 Method for efficient construction of high resolution display buffers
US14/246,064 2014-04-05
PCT/US2015/021951 WO2015153162A1 (en) 2014-04-05 2015-03-23 Method for efficient construction of high resolution display buffers

Publications (2)

Publication Number Publication Date
JP2017517056A JP2017517056A (ja) 2017-06-22
JP6342513B2 true JP6342513B2 (ja) 2018-06-13

Family

ID=54210221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016560646A Active JP6342513B2 (ja) 2014-04-05 2015-03-23 高解像度表示バッファの効果的な構築方法

Country Status (6)

Country Link
US (2) US9865074B2 (ja)
EP (2) EP3129977B1 (ja)
JP (1) JP6342513B2 (ja)
KR (1) KR101952633B1 (ja)
TW (2) TWI636423B (ja)
WO (1) WO2015153162A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
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
GB2537137B (en) * 2015-04-08 2021-02-17 Advanced Risc Mach Ltd Graphics processing systems
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10275239B2 (en) 2016-03-30 2019-04-30 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
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10943389B2 (en) * 2016-12-09 2021-03-09 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling
GB2560306B (en) * 2017-03-01 2020-07-08 Sony Interactive Entertainment Inc Image processing
US10134115B2 (en) * 2017-04-17 2018-11-20 Intel Corporation Progressive multisample anti-aliasing
US10417810B2 (en) * 2017-05-31 2019-09-17 Verizon Patent And Licensing Inc. Methods and systems for rendering virtual reality content based on two-dimensional (“2D”) captured imagery of a three-dimensional (“3D”) scene
US10504281B2 (en) * 2017-06-30 2019-12-10 Microsoft Technology Licensing, Llc Tracking pixel lineage in variable rate shading
US20190236758A1 (en) * 2018-01-29 2019-08-01 Intel Corporation Apparatus and method for temporally stable conservative morphological anti-aliasing
US10713756B2 (en) * 2018-05-01 2020-07-14 Nvidia Corporation HW-assisted upscaling and multi-sampling using a high resolution depth buffer
US11012694B2 (en) 2018-05-01 2021-05-18 Nvidia Corporation Dynamically shifting video rendering tasks between a server and a client
CN111192351B (zh) * 2018-11-14 2023-06-02 芯原微电子(上海)股份有限公司 边缘抗锯齿的图形处理方法、系统、存储介质及装置
US11010954B2 (en) * 2018-12-11 2021-05-18 Samsung Electronics Co., Ltd. Efficient redundant coverage discard mechanism to reduce pixel shader work in a tile-based graphics rendering pipeline
CN111988554B (zh) * 2019-05-22 2022-05-27 瑞芯微电子股份有限公司 一种显示设备多分区数据的采样方法及终端
US11798218B2 (en) 2020-08-03 2023-10-24 Samsung Electronics Co., Ltd. Methods and apparatus for pixel packing
US11748933B2 (en) 2020-08-03 2023-09-05 Samsung Electronics Co., Ltd. Method for performing shader occupancy for small primitives
US11216916B1 (en) * 2020-10-09 2022-01-04 Nvidia Corporation History clamping for denoising dynamic ray-traced scenes using temporal accumulation

Family Cites Families (103)

* 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
WO1999041706A1 (en) 1998-02-17 1999-08-19 Sun Microsystems, Inc. Graphics system with variable resolution super-sampling
US6496187B1 (en) 1998-02-17 2002-12-17 Sun Microsystems, Inc. Graphics system configured to perform parallel sample to pixel calculation
DE69901542T2 (de) 1998-02-17 2002-12-05 Sun Microsystems, Inc. Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen
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
US6552723B1 (en) 1998-08-20 2003-04-22 Apple Computer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
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
US6731298B1 (en) 2000-10-02 2004-05-04 Nvidia Corporation System, method and article of manufacture for z-texture mapping
JP2002260003A (ja) 2001-03-02 2002-09-13 Hitachi Ltd 映像表示装置
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
US7081893B2 (en) 2001-10-10 2006-07-25 Sony Computer Entertainment America Inc. System and method for point pushing to render polygons in environments with changing levels of detail
US7046245B2 (en) 2001-10-10 2006-05-16 Sony Computer Entertainment America Inc. System and method for environment mapping
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
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
US6967663B1 (en) 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
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
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
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
EP2078229A2 (en) 2006-11-02 2009-07-15 Sensics, Inc. Systems and methods for a head-mounted display
US8232991B1 (en) 2006-11-03 2012-07-31 Nvidia Corporation Z-test result reconciliation with multiple partitions
US8233004B1 (en) 2006-11-06 2012-07-31 Nvidia Corporation Color-compression using automatic reduction of multi-sampled pixels
US8149242B2 (en) 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
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
GB0810311D0 (en) 2008-06-05 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
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
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
US9697641B2 (en) 2009-10-15 2017-07-04 Nvidia Corporation Alpha-to-coverage 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
EP2510494B1 (en) 2009-12-11 2021-12-22 Leica Biosystems Imaging, 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
CN105847781B (zh) 2010-07-21 2018-03-20 杜比实验室特许公司 用于多层帧兼容视频传输的解码方法
US20130300740A1 (en) 2010-09-13 2013-11-14 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
US10559123B2 (en) 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
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
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US10134102B2 (en) 2013-06-10 2018-11-20 Sony Interactive Entertainment Inc. Graphics processing hardware for using compute shaders as front end for vertex shaders
US10976986B2 (en) 2013-09-24 2021-04-13 Blackberry Limited System and method for forwarding an application user interface
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
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
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America 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
US9760113B2 (en) 2015-02-20 2017-09-12 Sony Interactive Entertainment America Llc Backward compatibility through use of spoof clock and fine grain frequency control
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing

Also Published As

Publication number Publication date
WO2015153162A1 (en) 2015-10-08
EP3693929A1 (en) 2020-08-12
TWI636423B (zh) 2018-09-21
EP3129977A4 (en) 2017-11-15
US10438396B2 (en) 2019-10-08
TW201539374A (zh) 2015-10-16
TW201816724A (zh) 2018-05-01
US9865074B2 (en) 2018-01-09
JP2017517056A (ja) 2017-06-22
KR20170016318A (ko) 2017-02-13
US20180101977A1 (en) 2018-04-12
EP3129977B1 (en) 2020-07-29
EP3129977A1 (en) 2017-02-15
TWI634517B (zh) 2018-09-01
US20150287231A1 (en) 2015-10-08
KR101952633B1 (ko) 2019-02-27
EP3693929B1 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
JP6342513B2 (ja) 高解像度表示バッファの効果的な構築方法
US10510183B2 (en) Graphics processing enhancement by tracking object and/or primitive identifiers
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
JP6392370B2 (ja) 様々なレンダリング及びラスタライゼーション・パラメータ下でビューポートを変化させるための、オブジェクトの効率的再レンダリング方法
US10636213B2 (en) Graphics processing systems
US9224227B2 (en) Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader
US8547395B1 (en) Writing coverage information to a framebuffer in a computer graphics system
US7817165B1 (en) Selecting real sample locations for ownership of virtual sample locations in a computer graphics system
US8004522B1 (en) Using coverage information in computer graphics
CN106575428B (zh) 图形处理单元中的高阶滤波
US20210104088A1 (en) Method for efficient construction of high resolution display buffers
US20230298133A1 (en) Super resolution upscaling

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180516

R150 Certificate of patent or registration of utility model

Ref document number: 6342513

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250