JP2014530403A - タイル単位レンダラーを用いてレイヤリングするシステムおよび方法 - Google Patents

タイル単位レンダラーを用いてレイヤリングするシステムおよび方法 Download PDF

Info

Publication number
JP2014530403A
JP2014530403A JP2014529934A JP2014529934A JP2014530403A JP 2014530403 A JP2014530403 A JP 2014530403A JP 2014529934 A JP2014529934 A JP 2014529934A JP 2014529934 A JP2014529934 A JP 2014529934A JP 2014530403 A JP2014530403 A JP 2014530403A
Authority
JP
Japan
Prior art keywords
content
tile
rendering
pixel values
layer
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
JP2014529934A
Other languages
English (en)
Other versions
JP6062438B2 (ja
JP2014530403A5 (ja
Inventor
ディー ペルトン,ブラケ
ディー ペルトン,ブラケ
パテル,アマル
プロノヴォスト,スティーヴ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014530403A publication Critical patent/JP2014530403A/ja
Publication of JP2014530403A5 publication Critical patent/JP2014530403A5/ja
Application granted granted Critical
Publication of JP6062438B2 publication Critical patent/JP6062438B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Processing Or Creating Images (AREA)

Abstract

コンテンツのタイルベースレンダリングを行う方法である。コンテンツは、複数のタイルとして体系付けされたメモリ領域にレンダリングすることができる。コンテンツをレイヤに生成するシナリオにおいて、画像レイヤ群を合成することを含む操作について、上記画像の構成部分を処理する順番は、メモリアクセス回数の合計回数を減らすように選択することができ、これによって今度は、タイルベースレンダリングを行うコンピュータの性能を向上させることができる。画像は、同一タイルに対応する異なるレイヤの構成部分をレンダリングする操作に関連する操作群が順番に行われるように、処理することができる。このような処理は、タイルベースレンダリングをサポートするグラフィック処理ユニットを備えるコンピュータにおいて用いることができ、かつスレート・フォーム・ファクタを有するコンピュータに極めて良好に適合させることができる。コンピュータ内のグラフィック処理ユーティリティとのインターフェースが、フラグを供給して、操作群を再順序付けすることができるかどうかをアプリケーションに指定させることができる。

Description

コンテンツをレンダリングする技術の改善に関し、特殊グラフィックハードウェアを含む計算装置の電力やメモリなどのリソースの利用効率の向上に関する。
計算装置は、1人以上の人間のユーザに対して、ビデオディスプレイにおいて、画像および/またはテキストのようなコンテンツを表示することができる。この目的のために、計算装置は、レンダリング処理を実行して、画素値をコンテンツに基づいて計算することができる−イメージプレーンと呼ばれるメモリ領域に体系付けすることができるこれらの画素値をビデオディスプレイが用いることによりコンテンツを表示することができる。
表示対象のコンテンツは、「プリミティブ」と表記される種々の要素を含むことができる。プリミティブの例として、線分、曲線、グリフ、ウィンドウ、ボタン、および/または円や多角形のような形状を挙げることができる。したがって、レンダリングは、「画素ごとに」または「プリミティブごとに」行うことができる。画素ごとのレンダリングには、イメージプレーン画素群全体について繰り返し処理すること、およびこれらの画素の値の各々を順々に求めることを含みうる。これとは異なり、プリミティブごとのレンダリングには、表示対象のコンテンツのプリミティブ群全体について繰り返し処理すること、このような各プリミティブについて、いずれのイメージプレーン画素値にプリミティブが影響を与えているかを決定すること、およびそれに応じてこれらの画素値を変更することを含みうる。
いくつかの計算装置は、ビデオカードおよび/またはグラフィック処理ユニットのような特殊ハードウェアを有することができ、この特殊ハードウェアを用いて、1つ以上の操作を、レンダリングプロセスの一部として行うことができる。例えば、グラフィック処理ユニット(GPU)を用いて、1つ以上のイメージプレーン画素値を計算することができる。これらの計算装置は、コンテンツを生成して表示することができ、このような特殊ハードウェアに例えば適切なアプリケーションプログラミングインターフェース(例えば、グラフィックライブラリ、ハードウェアドライバなど)を介してアクセスすることができる、ソフトウェアアプリケーションを提供することができる。
いくつかのGPUは、タイルベースレンダリングをサポートする。このようなGPUは、レンダリングコンテンツ(すなわち、イメージプレーン)を格納するために使用されるメモリよりも小容量の高速オンチップメモリを有することができ、このオンチップメモリを用いて、特定のGPU操作をより高速に行うことができる。したがって、タイルベースレンダリングでは、コンテンツがタイルと表記される構成部分(portions)ごとにレンダリングされ、GPUがレンダリングプロセスの一部として高速メモリを使用することによりこのような各構成部分に対して操作を実行できるようになる。コンテンツは、1度に1タイルの割合でレンダリングすることができ、この場合、画素値はタイル単位で計算される。画素値を格納するメモリ領域は、複数のタイルとして体系付けすることができる。したがって、本明細書では、タイルに関連付けられる画素値群が格納される格納先の各サブ領域は、タイルとも表記される。
あるコンテンツは、1つ以上のコンテンツレイヤを含むことができる。各コンテンツレイヤは、1つ以上のプリミティブおよび/または他の任意の適切なコンテンツを含むことができる。コンテンツレイヤをレンダリングする際、各レイヤに含まれる情報を組み合わせて、レンダリング対象情報が複数のレイヤに含まれる情報の複合情報を表わすようにする。コンテンツレイヤを異なる方法で組み合わせて、異なる効果をもたらすことができる。例えば、1つ以上のレイヤは、部分的に透過であるかのように提示することができるので、下位レイヤの構成部分は、上位レイヤを透過して見えるようになる。別の例として、これらのレイヤをクリッピングして、ディスプレイ上で見えるものが、1つのレイヤの構成部分と別のレイヤの構成部分とを組み合わせたものとなるようにすることができる。複数のコンテンツレイヤを含むコンテンツは、1度に1レイヤの割合で、かつ各レイヤ内で、1度に1プリミティブの割合で、複数のパスをイメージプレーン画素値全体について用いてレンダリングすることができる。
コンテンツをレンダリングする技術を改善して、特殊グラフィックハードウェアを含む計算装置の電力およびメモリなどのリソースの利用効率を向上させることに関する。
コンテンツをレンダリングする技術を改善して、特殊グラフィックハードウェアを含む計算装置の電力およびメモリのようなリソースの利用効率を向上させることができる。これらの技術では、複数のコンテンツレイヤを含むコンテンツに対する、より効率の良いタイルベースレンダリングを、レンダリングプロセスの操作が行われうる順番を最適化することにより行う。GPUのような、コンテンツレンダリングを行う特殊ハードウェアは、他のタイル群に対応するコンテンツのレンダリングを行う前に、あるタイルに対応する1つよりも多くのコンテンツレイヤをレンダリングするように構成することができる。その結果、上記1つのタイルに関連する画素値群をメモリに取り込む回数を減らすことができる。これにより、各コンテンツレイヤが複数のタイルとして体系付けされているようなコンテンツを1度に1コンテンツレイヤの割合でレンダリングし、それがキャッシュスラッシングおよび総合的な性能低下を引き起こす従来のアプローチよりも、レンダリングプロセス全体を効率的にすることができる。レンダリングプロセスがより効率的になると、電力およびメモリのようなリソースの利用頻度を低くするか、または利用効率を向上させることができ、これは、このようなリソースが制限される計算装置(例えば、ラップトップ、携帯電話機、スレート・フォーム・ファクタ(slate form factor)を有する機器、他のバッテリ駆動機器など)にとって有利となりうる。
したがって、いくつかの実施形態では、複数のレイヤを含むコンテンツのタイルベースレンダリングを行う方法が提供され、上記コンテンツは、少なくとも第1タイルおよび第2タイルを含む複数のタイルとして体系付けされる。上記方法は、上記第1タイルに対応する上記コンテンツの少なくとも第1構成部分を、少なくとも1つのプロセッサを使用して1つ以上の画素値を計算することによりレンダリングするステップと、上記レンダリングするステップに応じて、他のタイルに対応するコンテンツをレンダリングする前に、少なくとも1つの操作を行うステップであって、上記少なくとも1つの操作は上記複数のレイヤのうちの少なくとも2つのレイヤを合成する操作を含む、ステップと、を含むことができる。
例えば、いくつかの実施形態では、上記コンテンツを1度に1タイルの割合でレンダリングして、上記レンダリングプロセスの一部として計算される画素値群を各タイルに対応するグループ群で計算することができる。更に、画素値群をあるタイルに対応するグループにまとめて計算する際、画素値群を複数のコンテンツレイヤに基づいて計算することができる。したがって、いくつかの実施形態では、コンテンツが1度に1レイヤの割合ではなく1度に1タイルの割合でレンダリングされ、したがって、任意の他のタイルに対応するコンテンツをレンダリングする前に、特定のタイルに対応する複数のコンテンツレイヤをレンダリングし、かつ合成することができる。
いくつかの実施形態では、少なくとも1つのコンピュータ可読記憶媒体が提供される。上記少なくとも1つのコンピュータ可読記憶媒体は、プロセッサ実行可能命令を含むアプリケーションを記憶することができ、上記プロセッサ実行可能命令は、少なくとも1つのプロセッサにより実行されると、第1タイルおよび第2タイルを含む複数のタイルとして体系付けされたコンテンツをレンダリングするようにグラフィック処理ユニット(GPU)を構成する方法を実行する。上記方法では、以下の動作、すなわち、少なくとも1つの操作を、上記第1タイルに対応するコンテンツをレンダリングすることにより取得される1つ以上の画素値に対して行う動作、または上記第2タイルに対応する上記コンテンツの少なくとも1つの構成部分をレンダリングする動作、のうちのいずれを最初に行うかについて決定し、上記少なくとも1つの操作が最初に行われるべきであることが決定された場合、上記GPUに通知して、まず、上記少なくとも1つの操作を最初に行なわせ、次に、上記レンダリングを行なわせる。
いくつかの実施形態では、複数のコンテンツレイヤを含むコンテンツをレンダリングするシステムが提供され、上記コンテンツは、第1タイルおよび第2タイルを含む複数のタイルとして体系付けられる。上記システムは、グラフィック処理ユニット(GPU)に通信可能に接続されたメモリと上記GPUとを備えることができ、上記GPUは、上記第1タイルに対応する上記コンテンツの少なくとも第1構成部分をレンダリングして1つ以上の画素値を計算する動作と、以下の動作群、すなわち、上記複数のレイヤのうちの少なくとも2つのレイヤを合成する操作を含む少なくとも1つの操作を1つ以上の画素値に対して行う動作、または上記第2タイルに対応する上記コンテンツの少なくとも第2構成部分をレンダリングする動作、のうちのいずれの処理を最初に行うかについての指示を受信する動作と、をなすように構成され、上記指示が上記少なくとも1つの操作が最初に行われるべきであることを示す場合、上記GPUは、上記少なくとも1つの操作を、上記第1タイルに含まれる上記1つ以上の画素値に対して行い、上記少なくとも1つの操作を行った後に、上記第2タイルに対応する上記コンテンツの上記第2構成部分をレンダリングするように構成される。
これまでの内容は、添付の請求項により規定される本発明についての非限定的な要約である。
添付の図面は、寸法通りに描いてはいない。これらの図面では、種々の図に図示されるそれぞれの同一の構成要素、またはほぼ同一の構成要素が、同様の参照番号により表示されている。明瞭性を期して、全ての構成要素に全ての図面において記号を付けることはしていない。
本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的な計算環境を示している。 本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的な計算装置内のハードウェア構成要素およびソフトウェア構成要素のブロック図である。 本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的なプロセスのフローチャートである。 本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的なプロセスのフローチャートを示している。 本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的なプロセスのフローチャートを示している。 本開示の態様を実施するために使用することができる計算装置の一例を概略的に示すブロック図である。
本願発明者らは、タイルベースレンダリングをサポートするGPUが1つ以上のコンテンツレイヤを含むコンテンツのタイルベースレンダリングをより高い効率で実行するように構成することができる場合、より大きな有用性が上記GPUからもたらされうると認識し、かつ評価している。具体的には、本願発明者らは、このようなコンテンツを1度に1レイヤの割合でレンダリングするのではなく、上記コンテンツを1度に1タイルの割合でレンダリングすると有利であることを認識している。前者の「レイヤの次にタイル(layer−then−tile)」アプローチでは、コンテンツは、1度に1コンテンツレイヤの割合でレンダリングすることができ、このような各コンテンツレイヤは、1度に1タイルの割合でレンダリングすることができる。これとは異なり、後者の「タイルの次にレイヤ(tile−then−layer)」アプローチでは、コンテンツは、1度に1タイルの割合でレンダリングすることができる−各タイルに関連する画素値群の計算では、画素値群を複数のコンテンツレイヤに基づいて計算することができる。
本願発明者らは、タイルベースレンダリングは、タイルベースレンダリングの利点を生かすことができる装置が更に広く普及しているので、更に広く普及する可能性があると認識している。タイルベースレンダリングは、タイルベースレンダリングがタイルベースレンダリング以外の従来のレンダリング技術よりも小さなメモリ帯域幅、および少ない計算能力しか必要としないので、モバイルデバイスに使用されると有利となりうる。モバイルデバイス(例えば、スマートフォン、PDA,タブレットなど)は更に広く普及しており、これらのモバイルデバイスは、タイルベースレンダリングをサポートするグラフィック処理ユニット群を含む。
本願発明者らは更に、タイルベースレンダリング技術が他の種類のレンダリング技術よりも効率的となり得るのであるが、タイルベースレンダリングをサポートするGPU上でタイルベースレンダリングを用いる従来の技術を更に向上させることができることを認識している。本願発明者らは、GPUがタイルベースレンダリングを実行するように構成することができる方法を改善すると、更に効率的なレンダリングを行うことができ、これにより今度は、更なる利点(例えば、バッテリ寿命が延びる)がこのようなGPUを収容するモバイルデバイスにもたらされると理解している。具体的には、本願発明者らは、複数のコンテンツレイヤを含むコンテンツのタイルベースレンダリングを行う従来の技術を改善することができると認識している。
複数のコンテンツレイヤを含むコンテンツのタイルベースレンダリングを行う1つの従来のアプローチが、前述の「レイヤの次にタイル」アプローチである。このアプローチでは、コンテンツレイヤ群は、1度に1コンテンツレイヤの割合で次々にレンダリングすることができる。更に、各コンテンツレイヤは1度に1タイルの割合でレンダリングすることができる。したがって、このアプローチでは、特定のタイルに対応するコンテンツレイヤの構成部分をレンダリングした後、残りのタイル群に対応する上記コンテンツレイヤの未レンダリング部分を、上記特定のタイルに対応する別のコンテンツレイヤの任意の構成部分をレンダリングする前にレンダリングする。これは、「ミッドシーンフラッシュ(mid−scene flush)」と表記される場合があるが、その理由は、ミッドシーンフラッシュが、別のレイヤをレンダリングすることに関連する任意の操作が行われうる前に、コンテンツレイヤをレンダリングすることに関連する全てのレンダリング操作を強制する(それにより、レンダリング操作の「パイプライン」からこれらの操作をフラッシュする)からである。
別のレイヤをレンダリングすることに関連する操作は、任意の適切な種類の操作とすることができる。1つの例として、これらの操作では、1つ以上の計算を、既に計算されている画素値群を用いて行うことができる。このような操作は、非常に多くの状況において用いることができ、例えば既にレンダリングされているレイヤと他のレイヤとに関する情報を合成する場合に用いることができる。具体的な例として、このような操作を用いて、透過性またはクリッピング効果のような1つ以上の効果をレンダリングコンテンツに適用することができる。
ミッドシーンフラッシュの特定の非限定的な例として、2つのコンテンツレイヤをタイルベースレンダリングするときに生じる可能性のある一連の事象について考察する。一連の事象には、第1コンテンツレイヤ全体がレンダリングされるまで、タイルAに対応する第1コンテンツレイヤの一構成部分をレンダリングすること、取得された画素値群を、レンダリングに使用される高速メモリ(例えば、GPUキャッシュ)から別のメモリにコピーすること、タイルBに対応する第1コンテンツレイヤの別の構成部分をレンダリングすること、そして取得された画素群を高速メモリから他のメモリにコピーすることなどを含むであろう。第1コンテンツレイヤ全体がレンダリングされた後、タイルAに対応する第2コンテンツレイヤの一構成部分をレンダリングすることができる。この時点で、第1および第2コンテンツレイヤの構成部分を合成して、透過性またはクリッピングのような可視効果を提供することが望ましい場合がある。しかしながら、タイルAに対応する第1および第2コンテンツレイヤの構成部分を合成するために、高速メモリから別のメモリに既にコピーされている画素値群を高速メモリに戻す必要がある。
本願発明者らは、従来の「レイヤの次にタイル」アプローチでは、ミッドシーンフラッシュを実行する(例えば、上に説明した例におけるように)と、特定のタイルに関連する画素値群がGPUキャッシュに複数回にわたって格納されることになってしまうことを認識している。例えば、(上に説明した例の場合に見られるように)これらの画素値は別のコンテンツレイヤがレンダリングされるたびにGPUキャッシュに格納されることになり、したがって、新たな画素値群が複数のコンテンツレイヤから取得される値の関数として計算されることができる(例えば、複数のコンテンツレイヤが合成されている場合)。
本願発明者らはまた、GPUキャッシュのサイズが限定され、1タイルに対応するコンテンツに関連する画素値群は、別のタイルに対応するコンテンツに関連する画素値群がキャッシュに格納される前にキャッシュから取り出されるか、またはキャッシュにおいて上書きされる可能性があることを認識している。その結果、「レイヤの次にタイル」アプローチでは、コンテンツがレンダリングされているときに、特定のタイルに対応するコンテンツに関連する画素値群を複数回にわたってキャッシュに格納したりキャッシュから取り出したりする可能性があり、この現象は「キャッシュスラッシング」と表記される場合がある。キャッシュスラッシングは、別の、典型的にはより低速のメモリからキャッシュに値を繰り返し読み込むこと、および/またはキャッシュから他のメモリに値を繰り返し書き込むことが遅延を招くので、非効率的である。
本願発明者らはまた、コンテンツを1度に1タイルの割合でレンダリングし、各タイルについて、計算を複数のコンテンツレイヤに関連する値に基づいて行うと、タイルベースレンダリングに関する従来の技術についての上述した欠点のうちいくつかを克服することができることを認識し、かつ理解している。しかしながら、それぞれの実施形態が、これらの欠点を1つ残らず解決するものではなく、いくつかの実施形態は、これらの欠点のうちいずれも解決しない可能性がある。したがって、本発明は、タイルベースレンダリングに関するこれらの従来の技術についての上記欠点のうち全てまたはいずれかを解決する構成に限定されないことを理解されたい。
したがって、いくつかの実施形態では、レンダリングに関する前述の「タイルの次にレイヤ」アプローチを実行することができる。このような実施形態では、あるタイルに対応するコンテンツレイヤの少なくとも1つの構成部分をレンダリングすることができ、同一タイルに対応する別のコンテンツレイヤの少なくとも別の構成部分をレンダリングすることができ、両動作は、別のタイルに対応する任意のコンテンツがレンダリングされる前に行われる。あるタイルに対応するコンテンツのレンダリングでは、上記コンテンツの構成部分を、GPUに搭載される高速メモリを使用することによりレンダリングすることができる。上記タイルに対応する他のコンテンツレイヤのレンダリングでは、操作を、既にレンダリングされている画素値群に対して行うことができる。上記操作は、任意の適切な操作とすることができ、ある効果をレンダリング対象のコンテンツに適用する操作の一部として行うことができる。いくつかの実施形態では、ある操作を上記タイルに関連する画素値群に対して行う際に、上記操作をGPUに搭載された高速メモリ(例えば、GPUキャッシュ)に格納された値に対して行うことができる。
この「タイルの次にレイヤ」アプローチにおいて、2つのレイヤを含むコンテンツをレンダリングする上記例における一連の事象には、タイルAに対応する第1コンテンツレイヤの構成部分をレンダリングして1つ以上の画素値を取得すること、計算された画素値群を別のメモリにコピーすること、それから、タイルAに対応する第2レイヤの構成部分をレンダリングすること、そして最後に、既にコピーされている画素値群と第2レイヤの構成部分をレンダリングすることにより取得される値とを合成して2つのコンテンツレイヤのコンテンツをブレンドすることを含むことができる。この例では、タイルAに対応するコンテンツに関連する画素値群に対する全ての操作を一括して行うことができるので、キャッシュスラッシングを回避することができる。
したがって、いくつかの実施形態では、複数のコンテンツレイヤを含むコンテンツを処理する際、上記コンテンツのレンダリング操作を処理できる順番の決定を必要とすることができる。例えば、第1タイルに対応するコンテンツレイヤの構成部分をレンダリングした後、上記第1タイルに関連する画素値群に対して何らかの操作を行うか(例えば、上記第1タイルに対応するより多くのコンテンツをレンダリングし、上記レイヤの既にレンダリングされている構成部分と別のレイヤとを合成する操作などを行うためなど)、あるいは異なるタイルに対応するコンテンツの別の構成部分をレンダリングするかについて選択を行うことができる。「レイヤの次にタイル」アプローチを用いる場合、「タイルの次にレイヤ」アプローチを用いる場合とは異なる決定を行うことができる。後者の「タイルの次にレイヤ」アプローチの場合、第1タイルに対応するコンテンツに関連する画素値群に対する操作は、他のタイル群に対応する任意のコンテンツがレンダリングされうる前に行うことができる。
いくつかの実施形態では、GPUは、複数のレイヤを含むコンテンツを「タイルの次にレイヤ」アプローチを用いてレンダリングするか、あるいは従来の「レイヤの次にタイル」アプローチを用いてレンダリングするかを示す指示を受信することができる。以下に更に詳細に説明するように、このような指示は、コンテンツを生成してレンダリングするソフトウェアが行う決定の結果として受信することができ、いくつかの例では、このような指示には、ソフトウェアが設定したパラメータ、および/またはソフトウェアが行った関数呼出しを含むことができる。具体的な例として、コンテンツをレンダリングするコンポーネントは、レンダリング操作の各タイルが合成対象のレイヤ群の対応するタイル群のコンテンツにのみ依存するシナリオにおいて、複数のレイヤを合成することを含むレンダリング操作に関連付けて上記のような指示を供給するように構成することができる。
任意の適切な計算環境を用いて、本発明の実施形態を実施することができる。1つのこのような計算環境が、コンテンツをレンダリングする例示的な計算環境100を示している図1に図示される。
計算環境100は、ディスプレイ106に通信可能に接続される計算装置102を含む。計算装置102は、コンテンツをレンダリングして、レンダリングコンテンツをディスプレイ106に表示することができるように構成することができる。この図示の例では、ユーザ(例えば、ユーザ108)が、レンダリングコンテンツをディスプレイ106で閲覧することができる。しかしながら、レンダリングコンテンツを閲覧するユーザの数が本発明に対する限定とはならないので、任意の適切な数のユーザがレンダリングコンテンツを閲覧することができることを認識されたい。
計算装置102は、任意の適切な方法で、任意の適切な技術を用いてコンテンツをレンダリングするように構成することができる。いくつかの実施形態では、計算装置102は、タイルベースレンダリングを用いてコンテンツをレンダリングするように構成することができる。更に、他の実施形態では、計算装置102は、あるコンテンツを、タイルベースレンダリングを用いてレンダリングし、かつ他のコンテンツを、タイルベースレンダリングを用いることなくレンダリングするように構成することができる。
計算装置102は、任意の適切なコンテンツをレンダリングするように構成することができる。コンテンツには、視覚的に提示することができる任意の適切な種類のコンテンツを含むことができる。例えば、コンテンツには、いかなる適切な種類の画像データ(例えば、画像、写真、コンピュータ生成画像、クリップアートなど)も含むことができる。別の例として、コンテンツには、いかなる適切な種類のテキストデータも含むことができる。
いくつかの実施形態では、コンテンツは、1つ以上のプリミティブを含むことができる。プリミティブは、コンテンツ内の任意の適切な要素とすることができる。例えば、プリミティブは、任意の適切な2D形状または3D形状とすることができ、例えば、点、平面、線分、曲線、スプライン曲線、多角形、円、楕円、球、立方体、箱、環状体、円筒体、角錐などとすることができる。別の例として、プリミティブは、ウィンドウ、フレーム、ボタン、フィールドなどとすることができる。しかしながら、プリミティブについて上に挙げた例は、単なる例示に過ぎず、コンテンツは、この技術分野において知られている任意の他の適切なプリミティブを含むことができることを認識されたい。
プリミティブは複数のレイヤとして表示することができ、上記のレイヤを合成してレンダリング画像を作成することができる。しかしながら、「タイルの次にレイヤ」技術は、どのようにグラフィック情報が表示されるかに関係なく、レンダリング対象の上記情報に適用されうることを理解されたい。
計算装置102は、コンテンツを任意の適切な目的に関連付けてレンダリングするように構成することができる。いくつかの実施形態では、計算装置102は、計算装置102上で少なくとも部分的に実行される1つ以上のソフトウェア構成要素のコンテンツをレンダリングするように構成することができる。ソフトウェア構成要素は、任意の適切なソフトウェアを含むことができ、例えば、1つ以上のオペレーティングシステム、および/または1つ以上のソフトウェアアプリケーションを含むことができる。ソフトウェアアプリケーションは、ユーザ向けにコンテンツをレンダリングすることを要求しうる任意の適切なアプリケーションとすることができ、例えば、テキストユーザインターフェースおよび/またはグラフィカルユーザインターフェースを含む任意のアプリケーションとすることができる。このようなアプリケーションの具体的な例として、ビデオゲームアプリケーション、テキスト処理アプリケーションおよび/または画像処理アプリケーション、ならびに任意のウェブブラウジングアプリケーションを挙げることができる。多くの他の例が、この技術分野の当業者には明らかであろう。
計算システム102は、任意の適切な種類の計算システムとすることができ、任意の適切なフォームファクタを有することができる。例えば、計算システム102は、1つ以上のパーソナルコンピュータ、1つ以上のサーバ、1つ以上のラップトップ、および1つ以上のハンドヘルドデバイスとすることができ、これらの要素の各々は、スマートフォン、タブレット、スレート、携帯情報端末、テキストリーダなどとすることができる。計算システムの種類の他の例は、図5を参照して以下に更に詳細に説明される。
ディスプレイ106は、任意の適切な種類のディスプレイとすることができ、任意の適切な技術を実現することができ、かつ任意の適切なフォームファクタを有することができる。したがって、ディスプレイ106は、テキストおよび/または画像を表示するように構成される任意のディスプレイとすることができる。計算環境100では、ディスプレイ106は、計算システム102に有線接続104を介して通信可能に接続されるものとして図示されているが、これは、ディスプレイ106を計算システム102に任意の適切な方法で通信可能に接続することができるので、本発明に対する限定とはならない。例えば、ディスプレイ106は、計算システム102の外部にあってよく、かつ計算システム102に無線接続を介して通信可能に接続することができる。別の例として、ディスプレイ106は、例えば計算システム102がラップトップまたはタブレットコンピュータのような持ち運び可能な計算システムである場合のように、計算システム102と一体化することができる。
計算システム102は、任意の適切な種類の1つ以上のプロセッサを備えることができる。例えば、計算システム102は、CPU130のような1つ以上のCPUと、GPU110のような1つ以上のグラフィック処理ユニット(GPUs)と、を備えることができる。これらのプロセッサの各々は、データをメモリ120のようなメモリから読み出し、データを上記メモリに書き込むことができる。メモリ120は、図5を参照して以下に説明される任意のメモリを含む非常に多くの種類のメモリのうちのいずれかとすることができる。
GPU110は、任意の適切な種類のGPUとすることができる。いくつかの実施形態では、GPU110が、コンテンツのタイルベースレンダリングをサポートすることができるのに対し、他の実施形態では、GPU110は、コンテンツのタイルベースレンダリングのサポートを提供しなくてよい。
いくつかの実施形態では、GPU110は、1つ以上の画素値をコンテンツに基づいて計算し、これらの画素値をメモリに格納することにより上記コンテンツをレンダリングすることができる。どのようにこれらの画素値を計算する、または格納することができるかに関係なく、これらの格納画素値をディスプレイ(例えば、ディスプレイ106)が用いることによりコンテンツを表示することができる。
GPU110は、画素値群を任意の適切なメモリに格納することができる。例えば、GPU110は、画素値群をメモリ120に格納することができる。いくつかの例では、GPU110は画素値群を、イメージプレーン122のようなメモリ120のある領域に格納することができる。イメージプレーン122は、任意の適切なメモリ領域とすることができ、かつ任意の適切なサイズを有することができる。例えば、イメージプレーン122のサイズは、上記イメージプレーンが、コンテンツをレンダリングするために計算される画素値群の大部分を格納することができるようなサイズとすることができる。イメージプレーン122に格納される画素値群を用いて、レンダリングコンテンツをディスプレイ106のようなディスプレイに提示することができる。しかしながら、画素値群はメモリ120の任意の適切なメモリ部分に格納することができ、かつイメージプレーン122に格納されることに限定されないことを認識されたい。例えば、画素値群は、画素値群を一時的に格納するように構成されたメモリ120の別のメモリ領域に格納することができ、あるいは任意の他の適切なメモリ領域に格納することができる。
レンダリングコンテンツを格納するために使用されるイメージプレーン122のようなメモリ領域を体系付けして、1つ以上のサブ領域(または、タイル)とすることができる。各タイルは、任意の適切なサイズとすることができる。いくつかの例では、上記メモリ領域をタイル分割して、同じサイズの1つまたは複数のタイルとすることにより、各タイルが他の任意のタイルと同じ量のデータを格納することができる。しかしながら、他の例では、タイル群は異なるサイズを有することにより、1つのタイルが、別のタイルが格納することができるデータの量とは異なる量のデータを格納することができる。各コンテンツレイヤが1度に1タイルの割合でレンダリングされているとき、レンダリングコンテンツの各構成部分は、メモリ120のあるメモリ領域(例えば、イメージプレーン122)に格納することができる。したがって、イメージプレーン122を用いて全てのレンダリングコンテンツを格納することができる。
コンテンツをレンダリングするために、GPU110はオンチップメモリ112を使用することができる。オンチップメモリ112は、オンチップメモリ112がGPU110に集積化されうるので、高速低遅延メモリとすることができる。例えば、オンチップメモリ112はオンチップキャッシュとすることができる。オンチップメモリ112は、任意の適切なサイズを有することができ、例えば、コンテンツをレンダリングするために計算される画素値群の1つの構成部分を格納するほど十分に大きくすることができる。
いくつかの実施形態では、オンチップメモリ112のサイズは、コンテンツをレンダリングするために使用されるタイルのサイズと同一とすることができる。しかしながら、他の実施形態では、オンチップメモリ112のサイズは、タイルのサイズと同じでなくてよい。例えば、オンチップメモリ112のサイズは、タイルのサイズよりも大きくすることができる。具体的な例として、オンチップメモリのサイズは、コンテンツをレンダリングするために使用されるタイルのサイズの複数倍(例えば、コンテンツをレンダリングするために使用されるタイルのサイズの2,3,4,5,6倍など)とすることができる。
図2は、計算装置102のアーキテクチャを詳細に示している。具体的には、図2は、計算装置102内のハードウェア構成要素およびソフトウェア構成要素の例示的なブロック図である。
計算装置102はハードウェア構成要素群240を備える。ハードウェア構成要素群240は、この技術分野で既知の物理的計算装置の非常に多くのハードウェア構成要素のうちのいずれかを含むことができる。例えば、ハードウェア構成要素群240は、図1を参照して説明したGPU110、メモリ120、およびCPU130を含むことができる。しかしながら、ハードウェア構成要素群240はこれらの例による限定を受けず、かつコンテンツのレンダリングをサポートするために必要とされうる任意の他のハードウェア構成要素群を含むことができる。
図2は更に、計算装置102内で実行することができるソフトウェア構成要素群を示している。図示の実施形態では、上記のソフトウェア構成要素は、プロセッサ実行可能命令および構成パラメータとして格納することができ、例えば、メモリ120に、またはCPU130および/もしくはGPU110に関連付けられた任意の他のメモリに格納することができる。
計算装置102内で実行されるソフトウェア構成要素群は、任意の適切なソフトウェア構成要素群とすることができ、1つ以上のアプリケーション220、オペレーティングシステム230、および/または本明細書に記載される機能性のいずれかを実行するようにGPUを構成することができる命令群を備えることができる。しかしながら、ソフトウェア構成要素群は、本明細書に記載されるソフトウェア構成要素群の例のいずれの例による限定も受けず、したがって計算装置102は任意の適切なソフトウェア構成要素群を備えることができることを認識されたい。
アプリケーション群220は、任意の適切な数のアプリケーションを含むことができ、各アプリケーションは、任意の適切な種類とすることができ、かつ/あるいは任意の適切な目的を有することができる。例えば、アプリケーションは、コンテンツをレンダリングすること、またはコンテンツをレンダリングさせることにより、レンダリングコンテンツを1人以上のユーザに対して表示できることを要求しうる任意の適切なアプリケーションとすることができる。このようなアプリケーションの非限定的な例には、ビデオゲームアプリケーション、テキスト処理アプリケーション、およびコンテンツ・ブラウジング・アプリケーション(例えば、インターネット・ブラウジング・ソフトウェア、読書用ソフトウェア、写真編集ソフトウェアなど)を含む。
いくつかの実施形態では、アプリケーションは、1つまたは複数のコンテンツレイヤを備えるコンテンツをレンダリングしようとし得る。各コンテンツレイヤは1つ以上のプリミティブを含むことができ、いくつかの例では、1つ以上のプリミティブは複数回現われることができる。例えば、プリミティブは1つのコンテンツレイヤにおいて複数回現われることができる。別の例として、プリミティブは1つよりも多くのコンテンツレイヤにおいて少なくとも1回現われることができる。特定の非限定的な例として、ボックスまたはアイコンのようなプリミティブがウェブページに複数回現われることができる。
いくつかの実施形態では、コンテンツをレンダリングしようとするアプリケーションは、1つ以上のコマンドを発行して、コンテンツをレンダリングさせることができる。アプリケーションは、コマンド(群)を任意の適切な方法で発行することができる。例えば、コマンドは、1つ以上のパラメータを設定することにより、および/または1つ以上の関数を呼び出すことにより発行することができる。具体的な例として、コマンドは、グラフィックライブラリのようなアプリケーション・プログラミング・インターフェース(API)を用いることにより発行することができる。しかしながら、コマンドは、この技術分野で既知の任意の他の適切な方法で発行することができることを理解されたい。
アプリケーションが出すコマンドは、任意の適切なコマンドとすることができ、任意の適切な理由により発行することができる。例えば、アプリケーションは、1つ以上のコマンドを発行して、どのコンテンツをレンダリングできるかを指示することができる。別の例として、アプリケーションは、1つ以上のコマンドを発行して、コンテンツをいつレンダリングできるかを指示することができる。更に別の例として、アプリケーションは、1つ以上のコマンドを発行して、コンテンツをレンダリングできる方法を指示することができる。この場合、コマンド(群)は、コンテンツレイヤ群をレンダリングする方法に影響を与えることができ、例えば、コンテンツレイヤ群の構成部分を、タイルベースレンダリングを用いてレンダリングする順番に影響を与えることができる。特定の非限定的な例として、コマンド(群)は、1つのタイルに対応するコンテンツレイヤ群の構成部分を、別のタイルに関連するコンテンツレイヤ群の構成部分をレンダリングする前にレンダリングする指示を提供することができる。
いくつかの実施形態では、アプリケーションは、1つ以上のコマンドを発行して、効果を適用するか、または効果をレンダリングコンテンツに適用させることができる。上記効果は、任意の適切な可視効果とすることができ、かつ透過性のような効果とすることができ、この場合、第1「上位」レイヤを部分的に透過的に提示することにより、第2「下位」レイヤの構成部分が第1のレイヤを通じて見えるようにすることができる。上記効果は、クリッピングのような効果とすることもでき、この場合、複数のレイヤをまとめてクリッピングすることにより、これらのレイヤの構成部分がスクリーン上で、まとめて見えるようになる。しかしながら、これらの例は単なる例示に過ぎず、この技術分野で既知の他の非常に多くの可視効果のうちの任意の可視効果を利用することができることを理解されたい。任意のこのような効果を、コンテンツの1つ以上のプリミティブに適用することができ、かつ/あるいはコンテンツが複数のレイヤを含む場合の1つ以上のレイヤに適用することができる。
いくつかの実施形態では、アプリケーションは、1つ以上のコマンドを発行して、計算装置102の特殊ハードウェアを用いてコンテンツをレンダリングする方法に影響を与えることができる。例えば、アプリケーションは、1つ以上のコマンドを発行して、GPUを用いてコンテンツをレンダリングする方法に影響を与えることができ、1つ以上のコマンドを発行して、GPUを用いてタイルベースのコンテンツレンダリングを行う方法に影響を与えることができる。例えば、アプリケーションは、1つ以上のコマンドを発行して、GPUに、コンテンツをレンダリングすることに関連する特定の操作を行う順番を通知することができる。いくつかの例では、アプリケーションは、GPUに、GPUが「タイルの次にレイヤ」アプローチを用いてレンダリングを行うように通知することができる。他の例では、アプリケーションはGPUに、GPUが「レイヤの次にタイル」アプローチを用いてレンダリングを行うように通知することができる。
アプリケーションは、タイルベースレンダリングに対する上記アプローチのうちのいずれを用いるかについて任意の適切な方法で決定を行うことができる。例えば、このような決定は、予めプログラムされた1つ以上の基準に基づいて動的に行うことができ、例えば、レンダリング対象のコンテンツに少なくとも部分的に基づいて行うことができる。具体的な例として、アプリケーションは、1つのタイルにレンダリングされるコンテンツが任意の他のタイルにレンダリングされるコンテンツに依存しない場合に、GPUが「タイルの次にレイヤ」アプローチを用いることができると決定することができる。
計算装置102内で実行されるソフトウェア構成要素の別の例が、オペレーティングシステム230である。オペレーティングシステム230は、任意の適切なオペレーティングシステムとすることができ、かつオペレーティングシステム230上で実行するように書かれた非常に多くのアプリケーションのうちの任意のアプリケーション(例えば、アプリケーション群220)をサポートすることができる。
オペレーティングシステム230は、1つ以上のグラフィックライブラリを備えることができ、これらのグラフィックライブラリを用いて、コンテンツレンダリングに関連する操作を行うことができる。例えば、オペレーティングシステム230はグラフィックライブラリ232を備えることができる。グラフィックライブラリ232はアプリケーションプログラミングインターフェースを含むことができ、このアプリケーションプログラミングインターフェースに1つ以上のアプリケーション(例えば、アプリケーション群220)がアクセスして1つ以上のコマンドを発行することにより、コンテンツをレンダリングすることができる。このようなグラフィックライブラリの非限定的な例には、Direct2D、Direct3D、およびOpenGLグラフィックライブラリを含む。
グラフィックライブラリ232のようなグラフィックライブラリは、ハードウェア(例えば、CPU,GPU,ビデオカードなど)とインターフェースをとって、アプリケーションまたはオペレーティングシステムにより発行される、コンテンツをレンダリングすることに関連する、任意のコマンド群を実行することができる。この目的のために、グラフィックライブラリ232は、コマンド群および/またはパラメータ群234を1つ以上のデバイスドライバに供給して、ハードウェアとインターフェースをとることができる。
したがって、オペレーティングシステム230は1つ以上のデバイスドライバを備えることができ、これらのデバイスドライバを用いて、任意の適切なハードウェアとインターフェースをとることができる。例えば、オペレーティングシステム230はGPUデバイスドライバ236を備えることができ、デバイスドライバ236を用いて、GPU110のようなGPUとインターフェースをとることができる。デバイスドライバ236を用いて、非常に多くの方法のうちの任意の方法で、GPUとインターフェースをとることができる。例えば、デバイスドライバ236を用いて、データをGPUに送信すること、コマンド群をGPUに送信すること、および/またはデータをGPUから受信することができる。追加的に、または代替的に、オペレーティングシステム230は、任意の適切な数のドライバを備えることにより、計算装置102の任意の適切なハードウェア部分(例えば、図1を参照して説明したディスプレイ106のようなディスプレイ)とインターフェースをとることができ、あるいは計算装置102に通信可能に接続された任意の適切なハードウェア部分とインターフェースをとることができる。
いくつかの実施形態では、GPUデバイスドライバ236は、コンテンツをレンダリングするプロセスの一部として、データをGPUに送信することを容易にすることができる。デバイスドライバ236は、コンテンツをレンダリングするプロセスの一部として、任意の適切なデータの送信を容易にすることができ、例えば、レンダリング対象のコンテンツに関連する任意のデータの送信を容易にすることができる。
いくつかの実施形態では、コンテンツをレンダリングするプロセスの一部として、GPUデバイスドライバ236は、1つ以上のコマンドおよび/またはパラメータ238をGPU110および/またはレンダリングプロセスの種々段階を実行する任意の他の適切なハードウェアに送信することができる。上記のコマンド(および/またはパラメータ群)は、任意の適切な種類とすることができ、例えば、GPUを構成してタイルベースレンダリングを行なわせるコマンド群および/またはパラメータ群とすることができる。例えば、コマンド群および/またはパラメータ群238によってGPUを構成して、特定サイズのタイル群を用いてタイルベースレンダリングを行なわせることができる。別の例として、コマンド群および/またはパラメータ群238によってGPUを構成して、複数のレイヤを含むコンテンツのタイルベースレンダリングを、上に既に説明している「タイルの前にレイヤ」アプローチまたは「レイヤの前にタイル」アプローチのうちの一方を用いて行なわせることができる。
図1および図2を参照して説明した計算装置102のような計算装置は、コンテンツをレンダリングするように構成することができる。1つのこのようなプロセスについて、少なくとも2つのレイヤを含むコンテンツをレンダリングする例示的なプロセス300のフローチャートである図3を参照して説明する。プロセス300の動作の少なくとも一部は、GPUまたはCPUのようなプロセッサが実行することができる。
プロセス300は、動作302から始まり、この動作302では、レンダリング対象のコンテンツを取得することができる。コンテンツは任意の適切なコンテンツとすることができ、例えば、1つ以上のコンテンツレイヤを含むことができる。各コンテンツレイヤは、任意の適切な種類のコンテンツを含むことができ、既に説明した様々な種類のコンテンツのうちの任意の種類のコンテンツを含むことができる。具体的には、各コンテンツレイヤは、1つ以上のプリミティブを含むことができる。
レンダリング対象のコンテンツは、任意の適切な方法で取得することができる。いくつかの実施形態では、レンダリング対象のコンテンツは、プロセス300を実行するように構成される計算装置の1つ以上のソフトウェア構成要素から受信することができる。例えば、レンダリング対象のコンテンツは、図2を参照して説明されるソフトウェア構成要素群のうちのいずれかのソフトウェア構成要素から受信することができる。具体的な例として、レンダリング対象のコンテンツは、コンテンツのレンダリングを要求し、かつコンテンツをレンダリングするための1つ以上のコマンドを発行しているソフトウェアアプリケーションから受信することができる。
どのようにしてレンダリング対象のコンテンツを動作302で取得するかに関係なく、プロセス300は判断ブロック304に進み、この判断ブロック304では、コンテンツを、ミッドシーンフラッシュを用いることができる「レイヤの次にタイル」アプローチを用いてレンダリングするか、あるいはミッドシーンフラッシュを用いなくてよい「タイルの次にレイヤ」アプローチを用いてレンダリングするかについて決定することができる。換言すると、判断ブロック304では、タイルAに対応するコンテンツの少なくとも1つの構成部分をレンダリングした後、少なくとも1つの操作をタイルAに対応するコンテンツに関連する画素値群に対して行う前に、他のタイル群に対応するコンテンツをレンダリングするかどうかを決定することができる。したがって、判断ブロック304では、レンダリングに関連するコマンド群を、コマンドが生成された順番で処理するかどうか、またはこれらのコマンドを異なる順番で処理して、コマンド群を、各グループが特定のタイルに対応するコンテンツのレンダリングに関連付けられるように、グループ群で処理するかどうかについて決定することができる。
この決定は、任意の適切な方法で行うことができる。例えば、上記決定は、コンテンツレンダリングに関する上記2つのアプローチのうちのいずれのアプローチを用いるかについて示すことができる指示を受信することにより行うことができる。上記指示は、任意の適切な種類の指示とすることができ、例えば、コンテンツレンダリングに関する上記アプローチ群のうちのいずれのアプローチを用いるかについて通知することができる値を有するパラメータを含むことができる。したがって、上記指示を受信する際、このようなパラメータを受信することができる。1つの例として、このようなパラメータは、ミッドシーンフラッシュを行うのを回避した方が安全である場合を示すことができ、例えばあるタイルに関連する合成画像の画素値群が、合成画像を形成するために合成される画像レイヤ群の対応するタイル群のコンテンツにのみ依存することを示すことができ、これにより、レンダリングに関する「タイルの次にレイヤ」アプローチを用いることができる。この場合、少なくとも1つの操作を、タイルAに対応するコンテンツに関連する画素値群に対して、任意の他のタイル群に対応するコンテンツをレンダリングする前に行うかどうかを決定することには、少なくとも1つの操作を上記の1つ以上の画素値に対して最初に行うための指示を受信することを含むことができる。
いくつかの実施形態では、「レイヤの次にタイル」アプローチを用いることができると決定することができる。この決定は、非常に多くのシナリオのうちの任意のシナリオにおいて生じうる。例えば、アプリケーションは、1つのレイヤをレンダリングするにあたり既にレンダリングされている別のレイヤ内の任意の位置に関連付けられた画素値群の読み出しを要求することができるようにして、複数のレイヤを含むコンテンツをレンダリングするように構成することができる。この場合、上記1つのレイヤをレンダリングするためには、他のレイヤの全てのタイルがレンダリングされている必要がある可能性がある。具体的な例として、この状況は、空間的にボケさせる効果をレンダリング対象のコンテンツに適用する場合に起こりうる。これとは異なり、「タイルの次にレイヤ」アプローチは、1つのレイヤの画素をレンダリングするにあたり、上記レイヤ内の上記画素と同じ位置にある他のレイヤ群の画素値が必要となる場合に用いることを決定することができる。
判断ブロック304において、「レイヤの次にタイル」アプローチを用いることにより、ミッドシーンフラッシュを用いることができると決定される場合、プロセス300は、コンテンツレイヤをレンダリングすることができる動作306に進む。コンテンツレイヤは、任意の適切な方法でレンダリングすることができる。例えば、コンテンツレイヤをレンダリングする際、1つ以上の画素値をコンテンツレイヤに基づいて計算することができる。いくつかの場合では、計算された画素値(群)はイメージプレーンに格納することができる。いくつかの例では、コンテンツレイヤは、タイルベースレンダリングを用いてレンダリングすることにより、コンテンツレイヤをタイル単位で計算して、画素値群を、タイル群に対応するコンテンツに関連するグループ群で計算することができる。この場合、コンテンツレイヤは、複数のタイルに対応するコンテンツを処理することによりレンダリングすることができる。
コンテンツレイヤを動作306において、タイル単位でレンダリングする際、プロセッサ(例えば、GPUまたはCPU)に通信可能に接続された高速メモリを使用することができる。例えば、あるタイルに対応するコンテンツ(または、上記タイルに対応するコンテンツの少なくとも1つの構成部分)をレンダリングする際、オンチップメモリ112(図1)を使用することができる。高速メモリは、任意の適切な方法で使用することができ、例えば、上記タイルに対応するコンテンツレイヤコンテンツに基づいて計算される1つ以上の画素値を格納するために使用することができる。
あるタイルに対応するコンテンツレイヤの少なくとも1つの構成部分をレンダリングする際、オンチップメモリがコンテンツレイヤ全体に関連する画素値群を格納するほど十分に大きくない場合があるため、オンチップメモリ112に格納された1つ以上の画素値に上書きする場合があることを理解されたい。その結果、コンテンツレイヤをレンダリングする際、各タイルに関連する画素値群を高速メモリから、速度が遅い可能性がある別のより大容量のメモリ(例えば、メモリ120、イメージプレーン122など)にコピーすることにより、同じコンテンツレイヤの別のタイルを、既に計算されている画素値群を失うことなくレンダリングすることができる。しかしながら、コンテンツレイヤに関連する1つ以上の画素値を格納するほど十分な容量を持つ任意のメモリを用いることができることを認識されたい。したがって、動作306の最後では、第1コンテンツレイヤに基づいて計算される画素値群は、メモリ(例えば、メモリ120、イメージプレーン122など)に格納することができる。
画素値群を、高速メモリ(例えば、オンチップメモリ112)とより大容量のメモリとの間でコピーする操作は、GPU、および/またはGPUを制御するソフトウェア(例えば、GPUデバイスドライバ236)が自動的に実行する操作とすることができ、したがって「暗黙的」コピーと表記することができるが、その理由は、アプリケーションは、GPU、および/またはGPUを制御するソフトウェアに明示的に命令して上記操作を実行させる必要がないからである。前述したように、複数の暗黙的コピーをオンチップメモリと速度が低い可能性のある別のメモリとの間で行うと、メモリがキャッシュスラッシングを引き起こしてしまう場合がある。
第1コンテンツレイヤを動作306でレンダリングした後、プロセス300は動作308に進み、この動作308では、イメージプレーンに格納されたデータをコピーすることができる。イメージプレーンに格納されデータは、任意の適切なデータとすることができ、例えば、1つ以上の画素値を含むことができる。具体的な例として、上記データには、動作306において第1コンテンツレイヤに基づいて計算され、かつイメージプレーンに格納された1つ以上の画素値を含むことができる。上記データの任意の適切な構成部分を、コピーすることができる。いくつかの実施形態では、イメージプレーンに格納された全データをコピーすることができるのに対し、他の実施形態では、イメージプレーンに格納されたデータの一構成部分をコピーすることができる。
上記データは、動作308において、任意の適切な理由によりコピーすることができる。いくつかの実施形態では、上記データは、上記データをコピーすべきであることを示す指示(例えば、コマンド、関数呼出し、パラメータなど)の結果としてコピーすることができる。この場合、上記コピーは、明示的コピーと表記される。このような指示は、任意の適切なソースから供給することができ、例えば、計算装置のソフトウェア構成要素(例えば、図2を参照して説明したソフトウェア構成要素群のうちのいずれかのソフトウェア構成要素)により供給することができる。
上記データのどの構成部分をコピーすることができるかに関係なく、上記データは任意の適切な宛先にコピーすることができる。例えば、上記データは、上記データのコピーを格納するほど十分な容量を有することができる任意のメモリ領域にコピーすることができる。このようなメモリ領域は、任意の適切なメモリの領域とすることができる。例えば、上記メモリ領域は、図1を参照して説明したメモリ120のような、プロセッサ(例えば、CPU又はGPU)に通信可能に接続された任意のメモリの領域とすることができる。したがって、いくつかの実施形態では、上記データは、メモリ120の1つの領域(例えば、イメージプレーン122)からメモリ120の別の領域にコピーすることができる。
いくつかの実施形態では、動作308において行われるコピーのような明示的なデータのコピーを行って、任意の適切な後続の使用のためにデータのコピーを作成することができる。例えば、コピーされたデータは、合成操作、および/または効果をレンダリングコンテンツに適用する操作の一部として使用することができる。具体的な例として、コピーされたデータは、以下に説明するように、動作306において第1コンテンツレイヤに基づいて計算された画素値群と、動作310において第2コンテンツレイヤに基づいて計算される画素値群との間のブレンド操作の一部として使用することができる。この場合、第2レイヤをレンダリングしているときに、上記コピーされたデータの構成部分を高速メモリに取り込むことができる。
次に、プロセス300は動作310に進み、この動作310では、別のコンテンツのレイヤをレンダリングすることができる。他のコンテンツのレイヤは、任意の適切な方法でレンダリングすることができ、例えば、第1レイヤをレンダリングした方法と同様の方法で、1度に1タイルの割合でレンダリングすることができる。したがって、他のコンテンツレイヤをレンダリングする際、高速メモリを使用し、かつ1つ以上の暗黙的コピー操作を行うことができる。更に、他のレイヤをレンダリングする際、イメージプレーンに格納することができる1つ以上の画素値に上書きすることができることを理解されたい。例えば、第2レイヤをレンダリングする際、第1コンテンツレイヤをレンダリングしながら動作306において計算された1つ以上の画素値に上書きすることができる。実際、格納画素値にこのように上書きできることが、画素値群を動作308においてコピーすることの動機づけとなりうる。したがって、コピーされた画素値を取り出し、かつ使用して、コンテンツをレンダリングすることができる。
いくつかの実施形態では、1つ以上の操作は、高速メモリおよび/またはより大容量のメモリ(例えば、メモリ120)に格納されるデータに対して、動作310の一部として行うことができる。操作(群)は、任意の適切な操作(群)とすることができ、かつ高速メモリおよび/またはより大容量のメモリに格納される1つ以上の画素値に対して行うことができる。いくつかの実施形態では、操作(群)において、高速メモリおよび/またはより大容量のメモリ内の1つ以上の画素を使用して、1つ以上の新たな画素値を計算することができる。いくつかの場合では、操作(群)において、高速メモリに格納された1つ以上の画素と動作306においてコピーされたデータ(例えば、イメージプレーンに既に格納されている1つ以上の画素値)とを使用して、1つ以上の新たな画素値を計算することができる。
いくつかの実施形態では、操作(群)は、コンテンツの少なくとも1つの構成部分に効果を適用する操作の一部として行うことができる。上記効果は、非常に多くの種類の効果のうちのいずれかの効果とすることができ、例えば、透過性、クリッピングなどのような効果とすることができる。具体的な例として、操作群は、第2コンテンツレイヤに基づいて計算される1つ以上の画素値と動作308においてイメージプレーンからコピーされる予め計算済みの1つ以上の画素値とに基づいて1つ以上の新たな画素値を計算することにより、透過性またはクリッピング効果のようなブレンド効果を達成することができる。しかしながら、これらの効果は単なる例示に過ぎず、操作(群)は、任意の他の適切な効果をコンテンツの少なくとも1つの構成部分に適用する操作の一部として行うことができることを認識されたい。動作310において、第2コンテンツレイヤをレンダリングし、1つ以上の操作を行った後、プロセス300は完了する。
動作306〜310において、複数の暗黙的コピーがレンダリング対象のコンテンツの各タイルについて行われる可能性があることを認識されたい。具体的には、暗黙的コピーは、レンダリング対象のコンテンツレイヤの各タイルについて行われる可能性がある。以下に説明するように、「タイルの次にレイヤ」アプローチでは、暗黙的コピーをコンテンツの各タイルについて1回行えばよいので、暗黙的コピー群の数は減らすことができる。
判断ブロック304において「タイルの次にレイヤ」アプローチをプロセス300の一部として用いると決定することもでき、それにより、さらなるレイヤを、ミッドシーンフラッシュを用いることなくレンダリングすることができることを思い起こされたい。換言すると、判断ブロック304では、タイルAに対応するコンテンツの少なくとも1つの構成部分をレンダリングした後、タイルA以外のタイルに対応するコンテンツの少なくとも1つの別の構成部分をレンダリングする前に、少なくとも1つの操作を、タイルAに対応するコンテンツに関連する画素値群に対して行うことができると決定することができる。
この場合、プロセス300は動作316に進み、この動作316では、あるタイルに対応する第1コンテンツレイヤの少なくとも1つの構成部分をレンダリングすることができる。上記タイルに対応するコンテンツレイヤの任意の適切な構成部分を、レンダリングすることができる。上記タイルに対応するコンテンツレイヤの構成部分は、任意の適切な方法でレンダリングすることができる。例えば、上記コンテンツレイヤの構成部分をレンダリングする際、プロセッサの高速オンチップメモリを使用して、上記コンテンツレイヤの構成部分に基づいて、1つ以上の画素値を計算することができる。
どのように第1コンテンツレイヤの構成部分をレンダリングすることができるかに関係なく、プロセス300は動作318に進み、この動作318では、上記構成部分がレンダリングされた高速メモリに格納されたデータをコピーすることができる。高速メモリに格納されるデータは、任意の適切なデータとすることができ、例えば、動作316において計算された1つ以上の画素値を含むことができる。具体的な例として、上記データには、動作316においてコンテンツレイヤの構成部分をレンダリングする操作の一部として計算された1つ以上の画素値を含むことができる。高速メモリに格納されるデータの任意の適切な構成部分を、コピーすることができる。
上記データのどの構成部分をコピーすることができるかに関係なく、上記データは任意の適切な宛先にコピーすることができる。例えば、上記データは、上記データのコピーを格納するほど十分な容量を有しうる任意のメモリ領域にコピーすることができる。このようなメモリ領域は、任意の適切なメモリの領域とすることができる。例えば、上記メモリ領域は、図1を参照して説明したメモリ120のような、プロセッサ(例えば、CPUまたはGPU)に通信可能に接続された任意のメモリの領域とすることができる。
上記データは、動作318において、任意の適切な理由によりコピーすることができる。いくつかの実施形態では、上記データは、上記データをコピーすべきであることを示す指示(例えば、コマンド、関数呼出し、パラメータなど)の結果としてコピーすることができる。このような指示は、動作308を参照して説明したソースを含む任意の適切なソースから供給することができる。したがって、動作318において行われるコピーは、明示的コピーとすることができる。
いくつかの実施形態では、動作318において行われるコピーを実行して、任意の適切な後続の使用のためにコピーを作成することができる。例えば、コピーされたデータは、合成操作および/またはレンダリングコンテンツに効果を適用する操作の一部として使用することができる。具体的な例として、コピーされたデータは、以下に説明するように、動作316において第1コンテンツレイヤに基づいて計算された画素値群と動作320において第2コンテンツレイヤに基づいて計算される画素値群との間のブレンド操作の一部として使用することができる。この場合、第2レイヤをレンダリングしているときに、コピーされたデータの構成部分を高速メモリに取り込むことができる。
次に、プロセス300は動作320に進み、この動作320では、同一タイルに対応する第2コンテンツレイヤの少なくとも1つの構成部分をレンダリングすることができる。第2レイヤの上記構成部分は、任意の適切な方法でレンダリングすることができ、例えば、第1レイヤの構成部分をレンダリングした方法と同じ方法でレンダリングすることができる。既に説明しているように、第2レイヤの構成部分を上記タイルにレンダリングする際、高速オンチップメモリに格納することができる1つ以上の画素値に上書きすることができる。例えば、第2レイヤの構成部分をレンダリングする際、第1コンテンツレイヤの構成部分をレンダリングしながら動作316において計算された1つ以上の画素値に上書きすることができる。
次に、プロセス300は動作322に進み、この動作322では、1つ以上の操作を上記の画素値に対して行うことができる。操作(群)は、任意の適切な操作(群)とすることができる。いくつかの実施形態では、操作(群)は、高速オンチップメモリに格納された1つ以上の画素に対して行うことができる。いくつかの実施形態では、操作(群)において、より低速のメモリ(例えば、メモリ120)に格納された1つ以上の画素を使用して、1つ以上の新たな画素値を計算することができる。いくつかの場合では、操作(群)において、高速オンチップメモリに格納された1つ以上の画素と動作318においてコピーされたデータ(例えば、第1レイヤの構成部分に基づいて計算された1つ以上の画素値)とを使用して、1つ以上の新たな画素値を計算することができる。追加的に、または代替的に、操作(群)では、1つ以上の新たな画素値を上記タイルに保存することができる。
既に説明したように、いくつかの実施形態では、1つ以上の操作は、コンテンツの少なくとも1つの構成部分に効果を適用する操作の一部として実行することができる。上記効果は、非常に多くの種類の効果のうちのいずれかの効果とすることができ、例えば、透過性、クリッピングなどのような効果とすることができる。具体的な例として、操作群を行って、高速オンチップメモリに格納された1つ以上の画素値と動作318において高速オンチップメモリからコピーされた1つ以上の画素値とに基づいて1つ以上の新たな画素値を計算することにより、透過性またはクリッピング効果のようなブレンド効果を達成することができる。
1つ以上の操作を動作322において行った後、プロセス300は動作323に進み、この動作323では、高速メモリ(例えば、GPUオンチップメモリ112)に格納された任意のデータを別のメモリ(例えば、メモリ120)にコピーすることができるように、暗黙的コピーが行われうる。次に、プロセス300は判断ブロック324に進み、この判断ブロック324では、レンダリングされうるさらなるコンテンツタイルがあるかどうかを決定することができる。この決定は、任意の適切な方法で行うことができ、例えば、動作316〜323がコンテンツの各構成部分について実施されたかどうかを確認することにより行うことができる。別の例として、コンテンツをレンダリングするためにイメージプレーン内の全てのタイルを用いる訳ではない(例えば、コンテンツはスクリーンのうちのある構成部分のみに対応するコンテンツを含むことができる)ため、上記決定は、動作316〜323がコンテンツに基づいて取得された画素値群を格納することができるイメージプレーン内の各タイルについて実施されたかどうかを確認することにより行うことができる。
判断ブロック324において、レンダリングされうるさらなるコンテンツタイルがあると決定された場合、プロセス300は動作316にループバックし、動作316〜323を繰り返すことができる。代わりに、判断ブロック324において、レンダリングされうるさらなるコンテンツタイルが無いと決定された場合、プロセス300は完了する。
プロセス300は例示であり、プロセス300の多くの変更が可能であることを認識されたい。例えば、図示の実施形態では、レンダリング対象のコンテンツは2つのコンテンツレイヤを含んでいる。しかしながら、これは、コンテンツが任意の適切な数のコンテンツレイヤを含むことができるので、本発明に対する限定ではない。したがって、プロセス300は、任意の適切な数のコンテンツレイヤ(例えば、少なくとも3レイヤ、少なくとも4レイヤなど)をレンダリングするように変更することができる。これは任意の適切な方法で行うことができ、例えば、プロセス300の一部として、2つよりも多くのコンテンツレイヤ(例えば、3レイヤ、4レイヤなど)の1つのタイルに対応するコンテンツの構成部分をレンダリングすることができ、別のタイルに対応するコンテンツをレンダリングする操作に移行する前に、任意の適切な操作(例えば、透過性またはクリッピング効果を適用する操作)を上記1つのタイルに対応するコンテンツに関連する1つ以上の画素値に対して行うことができる。
別の例として、図示の実施形態において、レイヤ群の合成を行う操作は、別のメモリ(例えば、メモリ120)にコピーされて格納された画素値群を用いて、高速オンチップメモリに格納された画素値群に対して行うことができる。しかしながら、他の実施形態では、このような操作は、オンチップメモリ内の画素値群を用いて、他のメモリに格納された画素値群に対して行うことができる。より一般的に、操作群は、任意の適切なメモリ内の画素群に対して行うことにより、レンダリング性能を向上させることができ、したがって、「タイルの次にレイヤ」アプローチでは、あるタイルに対応するコンテンツに関連する画素グループに対する操作群は、任意のメモリ内で行うことができ、例えば、GPUに通信可能に接続された任意の高速メモリ内で行うことができる。
プロセス300の2つの経路(すなわち、動作306〜310、および動作316〜323)の差をさらに理解するために、図4a〜4bは、各場合においてどのようにコンテンツをレンダリングすることができるかを示している。具体的には、図4aは、「レイヤの次にタイル」アプローチを用い、かつミッドシーンフラッシュを用いる例示的なプロセス400を示している。これとは異なり、図4bは、「タイルの次にレイヤ」アプローチを用い、かつミッドシーンフラッシュを用いない例示的なプロセス420を示している。
図示のように、プロセス400および420は、各レイヤが2つのプリミティブを含む構成の2つのコンテンツレイヤを含むコンテンツをレンダリングすることにより、各コンテンツレイヤが2タイルにおいてレンダリングされるものとして図示されている。詳細には、この非限定的な例では、第1コンテンツレイヤおよび第2コンテンツレイヤはそれぞれ、2つのプリミティブを含み、各プリミティブが特定のタイルに対応している。しかしながら、これは本発明に対する限定ではなく、これらのプロセスの各々を用いて任意の適切な数のレイヤを含むコンテンツをレンダリングすることができ、各コンテンツレイヤには任意の適切な数のタイルに対応する任意の適切なコンテンツを含むことができる。また、この例では、図示のプリミティブ群の各プリミティブは1タイルに対応しているが、これは本発明に対する限定ではなく、あるプリミティブが任意の適切な数のタイルに対応することにより、複数のタイルに関連する画素値群を用いて上記プリミティブをレンダリングすることができることを認識されたい。
プロセス400は、動作402〜405において始まり、これらの動作402〜405では、第1コンテンツレイヤをレンダリングすることができる。第1コンテンツレイヤは、任意の適切な方法でレンダリングすることができ、例えば、タイルベースレンダリングを用いてレンダリングすることができる。したがって、動作402において、第1タイルに対応する第1コンテンツレイヤの少なくとも1つの構成部分をレンダリングすることができ、動作404において、第2タイルに対応する第1コンテンツレイヤの少なくとも1つの別の構成部分をレンダリングすることができる。暗黙的コピーが動作402および404それぞれの後に続く動作403および405において行われることにより、動作402および404において計算される画素値群を記憶することができることに留意されたい。動作403および405において、上記の画素値は、高速メモリ(例えば、GPUオンチップメモリ112)からイメージプレーン(例えば、イメージプレーン122)または任意の他の適切なメモリにコピーすることができる。
次に、プロセス400は動作406に進み、この動作406では、イメージプレーン(例えば、イメージプレーン122)のデータをコピーすることができる。コピーされるデータは、任意の適切なデータであってよく、第1コンテンツレイヤをレンダリングする操作の一部として計算される画素値群を含むことができる。上記データは任意の適切な宛先にコピーすることができ、例えば、コピーされたデータを格納するほど十分な容量を有するメモリの任意の他の領域にコピーすることができる。動作406において行われるコピー操作は、明示的コピー操作とすることができる。
どのようにデータをコピーできるか、またはどの宛先にデータをコピーできるかに関係なく、プロセス400は動作408〜412に進み、これらの動作408〜412では、第2コンテンツレイヤをレンダリングすることができる。第2レイヤは、任意の適切な方法でレンダリングすることができ、例えば、タイルベースレンダリングを用いてレンダリングすることができる。したがって、動作408において、第1タイルに対応する第2コンテンツレイヤの少なくとも1つの構成部分をレンダリングすることができる。
次に、動作409において、1つ以上の操作を、第1タイルに対応するコンテンツに関連する画素群に対して行うことができる。例えば、動作409では、1つ以上の操作を行ってブレンド効果を適用することができる。このような操作では、タイル1に対応する第1コンテンツレイヤの構成部分に基づいて計算された(動作402における)画素値群とタイル1に対応する第2コンテンツレイヤの構成部分に基づいて計算された(動作408における)画素値群とに基づいて、新たな画素値群を計算することができる。1つ以上の操作を行った後、暗黙的コピーが動作409の一部として行われうることにより、動作408〜409において計算された任意の画素値群を記憶することができる。
動作408〜409の後、動作410において、第2タイルに対応する第2コンテンツレイヤの少なくとも1つの別の構成部分をレンダリングすることができる。次に、動作412において、1つ以上の操作を、第2タイルに対応するコンテンツに関連する画素群に対して行うことができる。例えば、1つ以上の操作を行ってブレンド効果を適用することができる。このような操作では、タイル2に対応する第1コンテンツレイヤの構成部分に基づいて計算された(動作404における)画素値群とタイル2に対応する第2コンテンツレイヤの構成部分に基づいて計算された(動作410における)画素値群とに基づいて、新たな画素値群を計算することができる。1つ以上の操作を行った後、暗黙的コピーが動作412の一部として行われうることにより、動作410〜412において計算された任意の画素値群を記憶することができる。
プロセス400において、タイル2に対応する第1コンテンツレイヤの少なくとも1つの別の構成部分をレンダリングする動作404が終わるまで、タイル1に対応するコンテンツに関連する画素値群に対する操作はまったく行われないことをさらに理解されたい。その結果、プロセス400は、ミッドシーンフラッシュを行うプロセスであると言うことができ、すなわち、既に計算されている画素値群に対する任意の操作が行われる前に第1コンテンツレイヤの全てのタイルが処理される。
これとは異なり、ミッドシーンフラッシュは、プロセス420では行われない。プロセス420は動作422において始まり、この動作422では、第1タイルに対応する第1コンテンツレイヤの少なくとも1つの構成部分をレンダリングすることができる。次に、プロセス420は動作424に進み、この動作424では、第1タイルに格納されたデータをコピーすることができる。プロセス300の動作318について説明したように、上記データは、任意の適切なデータとすることができ、第1コンテンツレイヤの少なくとも1つの構成部分をレンダリングする操作の一部として計算された画素値群を含むことができる。上記データは、高速メモリ(例えば、オンチップメモリ112)からイメージプレーン(例えば、イメージプレーン122)または任意の他の適切なメモリにコピーすることができる。
どのようにデータをコピーできるか、またはどの宛先にデータをコピーできるかに関係なく、プロセス420は動作426に進み、この動作426では、第1タイルに対応する第1コンテンツレイヤの少なくとも1つの別の構成部分をレンダリングすることができる。
次に、プロセス420は動作428に進み、この動作428では、1つ以上の操作を、第1タイルに対応するコンテンツに関連する画素値群に対して行うことができる。前に説明したように、このような操作は、任意の適切な目的で行うことができ、例えば、ブレンド効果を適用するために行うことができる。この場合、新たな画素値群を、動作424においてコピーされた画素値群と動作426において計算された画素値群とに基づいて計算することができる。1つ以上の操作を行った後、暗黙的コピーが動作428の一部として行われうることにより、動作426〜428において計算されたいかなる画素値群も記憶することができる。
動作428の後、プロセス420は動作430〜436に進み、これらの動作430〜436では、動作422〜428において第1レイヤおよび第2レイヤの構成部分を第1タイルにレンダリングした方法に類似する方法で、第1レイヤおよび第2レイヤの双方の構成部分を第2タイルにレンダリングすることができる。プロセス420は動作436の後に完了する。
プロセス420では、1つ以上の操作を第1タイルに格納された画素値群に対して行った後になるまで、コンテンツの構成部分が第2タイルにまったくレンダリングされないことを理解されたい。具体的には、任意のコンテンツが第2タイルにレンダリングされる前に、両コンテンツレイヤの構成部分が第1タイルにレンダリングされる。その結果、プロセス400におけるよりもプロセス420においてキャッシュスラッシングが起こり難くなりうる。明らかなことであるが、プロセス420では、2つの暗黙的コピーしか行われない(動作428および436)のに対し、プロセス400では、4つの暗黙的コピーが行われる(動作403,405,409,および412)。
図5は、本発明を実施することができる適切な計算システム環境500の一例を示している。計算システム環境500は、適切な計算環境の一例に過ぎず、本発明の使用法または機能性の範囲について限定を示唆するものではない。計算環境500は、例示的な動作環境500に図示されている任意の1つの構成要素、または構成要素群の組合せに関するいかなる依存性も要件も有するものとして解釈されるべきではない。
本発明は、非常に多くの他の汎用計算システム環境若しくは構成、または専用計算システム環境若しくは構成で動作する。本発明での使用に適した周知の計算システム、環境、および/または構成の例として、これらには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マイクロプロセッサシステム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブルコンシューマ電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システム群または装置群のうちのいずれかを含む分散計算環境などが挙げられる。
計算環境では、プログラムモジュールのようなコンピュータ実行可能命令を実行することができる。一般的に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、タスクが通信ネットワークを介してリンクされたリモート処理装置群により実行されるところの分散計算環境において実施することもできる。分散計算環境では、プログラムモジュールは、メモリ記憶装置を含むローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体の双方に格納することができる。
図5を参照するに、本発明を実施する例示的なシステムは、コンピュータ510の形態の汎用計算装置を含む。コンピュータ510の構成要素として、これらには限定されないが、処理ユニット520、システムメモリ530、およびシステムメモリを含む種々のシステム構成要素を処理ユニット520に接続するシステムバス521を挙げることができる。システムバス521は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および多種多様なバスアーキテクチャのうちの任意のバスアーキテクチャを用いるローカルバスを含むいくつかの種類のバスアーキテクチャのうちの任意の種類のバスアーキテクチャとすることができる。一例として、これらには限定されないが、このようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、およびメザニン(Mezzanine)バスとしても知られているペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
コンピュータ510は典型的には、多種多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ510がアクセスすることができる任意の可用媒体とすることができ、揮発性媒体および不揮発性媒体、着脱可能媒体および着脱不能媒体を共に含むことができる。一例として、これらには限定されないが、コンピュータ可読媒体として、コンピュータ記憶媒体および通信媒体を挙げることができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータのような情報を記憶する任意の方法または技術において実装される揮発性媒体および不揮発性媒体、着脱可能媒体および着脱不能媒体を含む。コンピュータ記憶媒体として、これらには限定されないが、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デシタル多用途ディスク(DVD)若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は所望の情報を記憶するために用いることができ、かつコンピュータ510がアクセスすることができる任意の他の媒体が挙げられる。通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波または他の輸送機構のような変調データ信号において具体化し、任意の情報伝送媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するように設定される、または変更される信号特性群のうちの1つ以上の特性を有する信号を意味する。一例として、これらには限定されないが、通信媒体として、有線ネットワークまたは直接ワイヤ接続のような有線媒体、並びに音波、RF、赤外線および他の無線媒体のような無線媒体を挙げることができる。上に挙げた要素のうちの任意の要素の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
システムメモリ530は、リードオンリーメモリ(ROM)531およびランダムアクセスメモリ(RAM)532のような揮発性メモリおよび/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ510内の要素間での情報の転送を容易にする基本ルーチンを含むベーシック入力/出力システム533(BIOS)は典型的には、ROM531に格納される。RAM532は典型的には、処理ユニット520が直接的にアクセス可能であり、かつ/あるいは処理ユニット520により現在実行されているデータおよび/またはプログラムモジュールを記憶する。一例として、非限定的に、図5は、オペレーティングシステム534、アプリケーションプログラム535、他のプログラムモジュール536、およびプログラムデータ537を示している。
コンピュータ510は更に、他の着脱可能/着脱不能な揮発性/不揮発性コンピュータ記憶媒体を含むことができる。一例に過ぎないが、図5は、着脱不能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ541、着脱可能な不揮発性磁気ディスク552に対して読み取りまたは書き込みを行う磁気ディスクドライブ551、およびCD ROMまたは他の光媒体のような着脱可能な不揮発性光ディスク556に対して読み取りまたは書き込みを行う光ディスクドライブ555を示している。例示的な動作環境において使用することができる他の着脱可能/着脱不能な揮発性/不揮発性のコンピュータ記憶媒体として、これらには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが挙げられる。ハードディスクドライブ541は典型的には、インターフェース540のような着脱不能なメモリインターフェースを介してシステムバス521に接続され、磁気ディスクドライブ551および光ディスクドライブ555は典型的には、インターフェース550のような着脱可能なメモリインターフェースを介してシステムバス521に接続される。
上に説明され、かつ図5に図示されるドライブ群、およびこれらのドライブに関連するコンピュータ記憶媒体は、コンピュータ510用のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を行う。図5では、例えばハードディスクドライブ541は、オペレーティングシステム544、アプリケーションプログラム545、他のプログラムモジュール546、およびプログラムデータ547を記憶するものとして図示されている。これらの構成要素は、オペレーティングシステム534、アプリケーションプログラム535、他のプログラムモジュール536、およびプログラムデータ537と同一であってもよく、あるいは異なってもよいことに留意されたい。オペレーティングシステム544、アプリケーションプログラム545、他のプログラムモジュール546、およびプログラムデータ547には、これらが少なくとも異なるコピーであることを示すために、ここでは異なる参照番号が付与されている。ユーザは、キーボード562と、マウス、トラックボール、またはタッチパッドと広く表記されるポインティングデバイス561となどの入力装置を介して、コンピュータ510にコマンドおよび情報を入力することができる。他の入力装置(図示せず)として、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを挙げることができる。これらの入力装置および他の入力装置は多くの場合、システムバスに接続されたユーザ入力インターフェース560を介して処理ユニット520に接続されるが、パラレルポート、ゲームポートまたはユニバーサル・シリアル・バス(USB)のような他のインターフェースおよびバス構造を介して接続することができる。モニタ591または他の種類の表示装置も、ビデオインターフェース590のようなインターフェースを介してシステムバス521に接続される。モニタの他に、コンピュータは更に、出力周辺インターフェース595を介して接続することができるスピーカ597およびプリンタ596のような他の周辺出力装置を含むことができる。
コンピュータ510は、リモートコンピュータ580のような1つ以上のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ580は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、典型的には、コンピュータ510に関して上述した要素群の多く、または全てを含むが、メモリ記憶装置581のみが図5に図示されている。図5に示す論理接続は、ローカル・エリア・ネットワーク(LAN)571およびワイド・エリア・ネットワーク(WAN)573を含むが、他のネットワークを含むことができる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて普通に見られる。LANネットワーキング環境で使用される場合、コンピュータ510は、ネットワークインターフェースまたはアダプタ570を介してLAN571に接続される。WANネットワーキング環境で使用される場合、コンピュータ510は典型的には、インターネットのようなWAN573を介して通信を確立するモデム572または他の手段を含む。内蔵または外付けとすることができるモデム572は、ユーザ入力インターフェース560または他の適切な機構を介してシステムバス521に接続することができる。ネットワーク環境では、コンピュータ510に関して図示したプログラムモジュール群、またはこれらのプログラムモジュールの一部をリモートメモリ記憶装置に記憶することができる。一例として、非限定的に、図5は、リモート・アプリケーション・プログラム585がメモリ装置581に常駐する様子を示している。図示のネットワーク接続は例示であり、通信リンクをコンピュータ間で確立する他の手段を用いることができることを理解されたい。
以上のように本発明の少なくとも1つの実施形態のいくつかの態様を説明してきたが、様々な変更、修正および改善をこの技術分野の当業者であれば容易に想到することができることを理解されたい。
このような変更、修正および改善は本開示の一部となるものであり、本発明の思想および範囲に含まれるものである。更に、本発明の利点を示してきたが、本発明の全ての実施形態が、記載の全ての利点を含んでいる訳ではないことを理解されたい。したがって、これまでの説明および図面は例示に過ぎない。
本発明の上述の実施形態は、非常に多くの方法のいずれの方法でも実施することができる。例えば、これらの実施形態は、ハードウェア、ソフトウェア、またはそれらの組合せを用いて実施することができる。ソフトウェアで実施される場合、ソフトウェアコードは、単一のコンピュータ内に設けられるか、または複数のコンピュータに分散されるかに関係なく、任意の適切なプロセッサで、またはプロセッサ集合体で実行することができる。このようなプロセッサは、集積回路部品内に1つ以上のプロセッサを備える集積回路として実現することができる。しかしながら、プロセッサは、任意の適切な構成の回路を用いて実現することができる。
更に、コンピュータは、ラックマウントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータのような多数の構成のうちの任意の構成で具体化することができることを理解されたい。更に、コンピュータは、パーソナル・デジタル・アシスタント(PDA)、スマートフォン、または任意の他の適切な携帯電子機器若しくは固定電子機器を含む、コンピュータとは一般的にはみなされないが適切な処理能力を備える装置に内蔵させることができる。
また、コンピュータは、1つ以上の入力装置および出力装置を有することができる。これらの装置は、とりわけ、ユーザインターフェースを提示するために使用することができる。ユーザインターフェースを提供するために使用することができる出力装置の例として、出力を視覚的に提示するプリンタまたはディスプレイスクリーン、および出力を聴覚的に提示するスピーカまたは他の音声生成装置が挙げられる。ユーザインターフェースに使用できる入力装置の例として、キーボードおよびポインティングデバイスが挙げられ、ポインティングデバイスにはマウス、タッチパッドおよびデジタイジングタブレットなどがある。別の例として、コンピュータは、音声認識により、または他の可聴形式で、入力情報を受信することができる。
このようなコンピュータは、企業ネットワークまたはインターネットのようなローカル・エリア・ネットワークまたはワイド・エリア・ネットワークを含む、任意の適切な方法の1つ以上のネットワークを介して相互接続することができる。このようなネットワークは、任意の適切な技術に基づくことができ、任意の適切なプロトコルに従って動作することができ、無線ネットワーク、有線ネットワークまたは光ファイバネットワークを含むことができる。
また、本明細書で概要説明した種々の方法またはプロセスは、多種多様なオペレーティングシステムまたはプラットフォームのうちの任意の1つを用いる1つ以上のプロセッサ上で実行可能なソフトウェアとして符号化することができる。更に、このようなソフトウェアは、多数の適切なプログラミング言語、および/またはプログラミングツール若しくはスクリプティングツールのうちのいずれかを用いて書くことができ、更に、フレームワーク上で、または仮想マシン上で実行される実行可能な機械語コードまたは中間コードとしてコンパイルすることができる。
この点に関して、本発明は、1つ以上のコンピュータ上で、または他のプロセッサ上で実行されると、上に説明した本発明の種々の実施形態を実施する方法を実行する1つ以上のプログラムで符号化されたコンピュータ可読記憶媒体(または、複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1つ以上のフロッピディスク、コンパクトディスク(CD)、光ディスク、デジタルビデオディスク(DVD)、磁気テープ、フラッシュメモリ、フィールド・プログラマブル・ゲート・アレイ若しくは他の半導体装置における回路構成、または他の有形コンピュータ記憶媒体)として具体化することができる。これまでの例から明らかなように、コンピュータ可読記憶媒体は、情報を、非一時的な形式でコンピュータ実行可能命令を供給するほど十分長い時間にわたって保持することができる。このようなコンピュータ可読記憶媒体または媒体群は、可搬型とすることにより、媒体に格納されるプログラムまたはプログラム群を1つ以上の異なるコンピュータ、または他のプロセッサに読み込んで、上に説明した本発明の種々の態様を実施することができる。本明細書において、「コンピュータ可読記憶媒体」という用語は、製造物(すなわち、製造物品)または機械であると考えることができるコンピュータ可読媒体のみを包含する。代替的に、または追加的に、本発明は、伝達信号のような、コンピュータ可読記憶媒体以外のコンピュータ可読媒体として具体化することができる。
「プログラム」または「ソフトウェア」という用語は、本明細書では、コンピュータまたは他のプロセッサをプログラムして上に説明した本発明の種々の態様を実施するために用いることができる任意の種類のコンピュータコードまたはコンピュータ実行可能命令セットを指す一般的な意味で使用される。更に、本実施形態の1つの態様によれば、実行されると、本発明の方法を実施する1つ以上のコンピュータプログラムは、単一のコンピュータまたはプロセッサに常駐させる必要はないが、多数の異なるコンピュータまたはプロセッサにモジュール形式で分散させて本発明の種々の態様を実施させることができることを理解されたい。
コンピュータ実行可能命令は、1つ以上のコンピュータまたは他の装置が実行するプログラムモジュールのような多数の形式の命令とすることができる。一般的に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能は、種々の実施形態において必要に応じて組み合わせるか、または分散させることができる。
また、データ構造は、コンピュータ可読媒体に任意の適切な形式で格納することができる。説明を簡単にするため、データ構造は、データ構造内の位置を介して関連付けられるフィールド群を有するものとして示すことができる。このような関係は同様にして、上記フィールド用の記憶領域に、上記フィールド間の関係を伝達するコンピュータ可読媒体内の位置を割り当てることによって実現することができる。しかしながら、任意の適切な機構を用いて、データ要素間の関係を確立するポインタ、タグまたは他の機構を使用することにより、データ構造のフィールド群に含まれる情報の関係を確立することができる。
本発明の種々の態様は、単独で、組み合わせで、またはこれまで説明してきた実施形態では詳細には説明していない多種多様な構成で用いることができ、ゆえに、本発明の応用形態において、これまでの説明に開示され、または図面に図示された詳細と構成要素群の配置とに限定されない。例えば、1つの実施形態において記載される態様は、他の実施形態において記載される態様と、任意の方法で組み合わせることができる。
また、本発明は1つの方法として具体化することができ、上記方法の例が提供されてきた。上記方法の一部として行われる動作は、任意の適切な方法で順序付けることができる。したがって、動作が図示された順序とは異なる順序で行われる実施形態を構築することができ、それにより、いくつかの動作が、図示の実施形態において順次的な動作として示されていたとしても、同時に行われうる。
クレーム要素を修飾するために請求項において「第1の」、「第2の」、「第3の」などのような序数詞表現を用いることは、それ自体、1つのクレーム要素の、別のクレーム要素に対するいかなる優先度、先行性、または順序も含意しておらず、あるいは方法の動作が行われる時間的順序を含意しておらず、単に、特定の名前を有する1つのクレーム要素と同じ名前を有する(序数詞表現の使用を除く)別の要素とを区別してこれらのクレーム要素を区別するためのラベルとして用いられる。
また、本明細書において使用される表現および専門用語は説明を目的としており、限定的に捉えられるべきではない。「含む」または「有する」、およびこれらの単語の変形の使用は、本明細書では、上記単語に続いて列挙されるアイテム、およびこれらのアイテムの均等物のみならず更に別のアイテムを含むことを意味している。

Claims (10)

  1. 複数のコンテンツレイヤを含むコンテンツのタイルベースレンダリングを行う方法であって、前記コンテンツは少なくとも第1タイルおよび第2タイルを含む複数のタイルとして体系付けられ、当該方法は、
    少なくとも1つのプロセッサを使用して1つ以上の画素値を計算することにより、前記第1タイルに対応する前記コンテンツの少なくとも第1構成部分をレンダリングするステップと、
    前記レンダリングするステップに応じて、他のタイルに対応するコンテンツをレンダリングする前に、少なくとも1つの操作を前記1つ以上の画素値に対して行うステップであって、前記少なくとも1つの操作は前記複数のレイヤのうち少なくとも2つを合成する操作を含む、ステップと、
    を含む方法。
  2. 前記少なくとも1つの操作を行うステップに応じて、前記第2タイルに対応する前記コンテンツの少なくとも第2構成部分をレンダリングするステップ
    をさらに含む請求項1記載の方法。
  3. 前記少なくとも1つの操作を前記1つ以上の画素値に対して行うステップは、
    前記1つ以上の画素値を用いて1つ以上の新たな画素値を計算するステップ
    を含む請求項1記載の方法。
  4. 前記少なくとも1つの操作を行うステップは、
    前記少なくとも1つの操作を、透過効果および/またはクリッピング効果のいずれかを前記コンテンツの前記第1構成部分に適用することの一部として行うステップ
    を含む請求項1記載の方法。
  5. 前記少なくとも1つのプロセッサはグラフィック処理ユニット(GPU)である、請求項1記載の方法。
  6. 複数のコンテンツレイヤを含むコンテンツをレンダリングするシステムであって、前記コンテンツは第1タイルおよび第2タイルを含む複数のタイルとして体系付けられ、当該システムは、
    グラフィック処理ユニット(GPU)
    を備え、
    前記GPUは、
    前記第1タイルに対応する前記コンテンツの少なくとも第1構成部分をレンダリングして1つ以上の画素値を生成する動作と、
    以下の動作群、すなわち、
    前記複数のレイヤのうちの少なくとも2つのレイヤを合成する操作を含む少なくとも1つの操作を前記1つ以上の画素値に対して行う動作、または
    前記第2タイルに対応する前記コンテンツの少なくとも第2構成部分をレンダリングする動作
    のうちのいずれを最初に行うかについての指示を受信する動作と、
    をなすように構成され、
    前記指示が前記少なくとも1つの操作を最初に行うべきであることを示す場合、前記GPUは、
    前記少なくとも1つの操作を前記1つ以上の画素値に対して行い、前記少なくとも1つの操作を行った後に、前記第2タイルに対応する前記コンテンツの前記第2構成部分をレンダリングするように構成される、
    システム。
  7. 前記コンテンツの前記少なくとも第1構成部分は、第1コンテンツレイヤおよび第2コンテンツレイヤを含み、前記1つ以上の画素値は、第1画素値集合および第2画素値集合を含み、前記GPUは、
    前記第1タイルに対応する前記第1コンテンツレイヤの少なくとも1つの構成部分をレンダリングして第1画素値集合を計算する動作と、
    前記第1コンテンツレイヤの前記少なくとも1つの構成部分をレンダリングする動作に応じて、前記第1画素値集合を別のメモリ領域にコピーする動作と、
    前記コピーする動作に応じて、前記第1タイルに対応する前記第2コンテンツレイヤの少なくとも1つの構成部分をレンダリングして第2画素値集合を計算する動作と、
    により前記第1タイルに対応する前記コンテンツの前記少なくとも第1構成部分をレンダリングするようにさらに構成される、
    請求項6記載のシステム。
  8. 前記別のメモリ領域は前記GPUに搭載されない、請求項7記載のシステム。
  9. 前記少なくとも1つの操作を前記1つ以上の画素値に対して行う動作は、前記第1画素値集合および前記第2画素値集合を用いて1つ以上の新たな画素値を取得する動作を含む、請求項7記載のシステム。
  10. 前記指示を受信する動作は、
    前記指示をグラフィック処理ルーチンに至るインターフェースを介して受信する動作を含み、
    前記指示はパラメータを含み、該パラメータの値が最初に前記少なくとも1つの操作を前記1つ以上の画素値に対して行うことを示す、
    請求項6記載のシステム。
JP2014529934A 2011-09-12 2012-09-10 タイル単位レンダラーを用いてレイヤリングするシステムおよび方法 Active JP6062438B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/230,436 2011-09-12
US13/230,436 US9342322B2 (en) 2011-09-12 2011-09-12 System and method for layering using tile-based renderers
PCT/US2012/054386 WO2013039812A2 (en) 2011-09-12 2012-09-10 System and method for layering using tile-based renderers

Publications (3)

Publication Number Publication Date
JP2014530403A true JP2014530403A (ja) 2014-11-17
JP2014530403A5 JP2014530403A5 (ja) 2015-10-01
JP6062438B2 JP6062438B2 (ja) 2017-01-18

Family

ID=47696791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014529934A Active JP6062438B2 (ja) 2011-09-12 2012-09-10 タイル単位レンダラーを用いてレイヤリングするシステムおよび方法

Country Status (6)

Country Link
US (2) US9342322B2 (ja)
EP (1) EP2756481B1 (ja)
JP (1) JP6062438B2 (ja)
KR (1) KR101952983B1 (ja)
CN (1) CN102937892B (ja)
WO (1) WO2013039812A2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013057889A (ja) * 2011-09-09 2013-03-28 Toshiba Corp 画像処理装置及びカメラモジュール
US8982134B2 (en) * 2012-03-12 2015-03-17 Advanced Micro Devices, Inc. Area-based dependency chain analysis of shaders and command stream
US9449410B2 (en) 2013-04-11 2016-09-20 Qualcomm Incorporated Intra-frame timestamps for tile-based rendering
US9805478B2 (en) 2013-08-14 2017-10-31 Arm Limited Compositing plural layer of image data for display
GB2517185B (en) * 2013-08-14 2020-03-04 Advanced Risc Mach Ltd Graphics tile compositing control
KR101663023B1 (ko) * 2015-04-23 2016-10-06 (주)넥셀 그래픽 처리 장치 및 방법
CN105511825B (zh) * 2015-12-01 2018-12-28 上海兆芯集成电路有限公司 显示图层的方法及装置
CN107292945B (zh) * 2016-03-31 2021-01-26 阿里巴巴集团控股有限公司 视频图像的图层渲染处理方法及其系统
KR102637736B1 (ko) 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
US11379577B2 (en) 2019-09-26 2022-07-05 Microsoft Technology Licensing, Llc Uniform resource locator security analysis using malice patterns
US11509667B2 (en) 2019-10-19 2022-11-22 Microsoft Technology Licensing, Llc Predictive internet resource reputation assessment
US11431751B2 (en) 2020-03-31 2022-08-30 Microsoft Technology Licensing, Llc Live forensic browsing of URLs
CN113052928A (zh) * 2021-03-08 2021-06-29 北京房江湖科技有限公司 图像处理方法及图像处理系统
CN113763286A (zh) * 2021-09-27 2021-12-07 北京市商汤科技开发有限公司 图像处理方法及装置、电子设备和存储介质
CN114332324A (zh) * 2021-12-27 2022-04-12 北京字节跳动网络技术有限公司 图像处理方法、装置、设备及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544544A (ja) * 1999-05-10 2002-12-24 アップル コンピュータ インコーポレイテッド 半透明層の描写

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321750A (en) 1989-02-07 1994-06-14 Market Data Corporation Restricted information distribution system apparatus and methods
US5339392A (en) 1989-07-27 1994-08-16 Risberg Jeffrey S Apparatus and method for creation of a user definable video displayed document showing changes in real time data
US5297032A (en) 1991-02-01 1994-03-22 Merrill Lynch, Pierce, Fenner & Smith Incorporated Securities trading workstation
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5581670A (en) 1993-07-21 1996-12-03 Xerox Corporation User interface having movable sheet with click-through tools
CA2124624C (en) 1993-07-21 1999-07-13 Eric A. Bier User interface having click-through tools that can be composed with other tools
US5819284A (en) 1995-03-24 1998-10-06 At&T Corp. Personalized real time information display as a portion of a screen saver
US5867166A (en) 1995-08-04 1999-02-02 Microsoft Corporation Method and system for generating images using Gsprites
US5883627A (en) 1996-09-25 1999-03-16 Microsoft Corporation Advanced graphics controls
US6216141B1 (en) 1996-12-06 2001-04-10 Microsoft Corporation System and method for integrating a document into a desktop window on a client computer
US5959621A (en) 1996-12-06 1999-09-28 Microsoft Corporation System and method for displaying data items in a ticker display pane on a client computer
US5870098A (en) 1997-02-26 1999-02-09 Evans & Sutherland Computer Corporation Method for rendering shadows on a graphical display
US6031529A (en) 1997-04-11 2000-02-29 Avid Technology Inc. Graphics design software user interface
US6219058B1 (en) * 1997-09-08 2001-04-17 Intel Corporation Bin-per-span based representation and communication of graphical data
WO1999026127A1 (en) 1997-11-14 1999-05-27 Avesta Technologies, Inc. System and method for displaying multiple sources of data in near real-time
US6856320B1 (en) 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6449638B1 (en) 1998-01-07 2002-09-10 Microsoft Corporation Channel definition architecture extension
US6311058B1 (en) 1998-06-30 2001-10-30 Microsoft Corporation System for delivering data content over a low bit rate transmission channel
US6278448B1 (en) 1998-02-17 2001-08-21 Microsoft Corporation Composite Web page built from any web content
US6570578B1 (en) 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6832355B1 (en) 1998-07-28 2004-12-14 Microsoft Corporation Web page display system
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6188405B1 (en) 1998-09-14 2001-02-13 Microsoft Corporation Methods, apparatus and data structures for providing a user interface, which exploits spatial memory, to objects
US6510553B1 (en) 1998-10-26 2003-01-21 Intel Corporation Method of streaming video from multiple sources over a network
US6792615B1 (en) 1999-05-19 2004-09-14 New Horizons Telecasting, Inc. Encapsulated, streaming media automation and distribution system
US6456334B1 (en) 1999-06-29 2002-09-24 Ati International Srl Method and apparatus for displaying video in a data processing system
US6976210B1 (en) 1999-08-31 2005-12-13 Lucent Technologies Inc. Method and apparatus for web-site-independent personalization from multiple sites having user-determined extraction functionality
US6657635B1 (en) * 1999-09-03 2003-12-02 Nvidia Corporation Binning flush in graphics data processing
US7028264B2 (en) 1999-10-29 2006-04-11 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US7987431B2 (en) 1999-10-29 2011-07-26 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US6724403B1 (en) 1999-10-29 2004-04-20 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US6697825B1 (en) 1999-11-05 2004-02-24 Decentrix Inc. Method and apparatus for generating and modifying multiple instances of element of a web site
US6819321B1 (en) 2000-03-31 2004-11-16 Intel Corporation Method and apparatus for processing 2D operations in a tiled graphics architecture
US7071937B1 (en) 2000-05-30 2006-07-04 Ccvg, Inc. Dirt map method and apparatus for graphic display system
US6734873B1 (en) 2000-07-21 2004-05-11 Viewpoint Corporation Method and system for displaying a composited image
US20040039934A1 (en) 2000-12-19 2004-02-26 Land Michael Z. System and method for multimedia authoring and playback
US6639594B2 (en) 2001-06-03 2003-10-28 Microsoft Corporation View-dependent image synthesis
US6919891B2 (en) 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
US6717584B2 (en) 2001-11-06 2004-04-06 General Motors Corporation Method and system for visualizing paint on a computer-generated object
US20030197716A1 (en) 2002-04-23 2003-10-23 Krueger Richard C. Layered image compositing system for user interfaces
US20040015610A1 (en) 2002-07-18 2004-01-22 Sytex, Inc. Methodology and components for client/server messaging system
US20040075699A1 (en) 2002-10-04 2004-04-22 Creo Inc. Method and apparatus for highlighting graphical objects
US7106343B1 (en) 2003-04-08 2006-09-12 Carter Hickman Method and process for virtual paint application
US20050132305A1 (en) 2003-12-12 2005-06-16 Guichard Robert D. Electronic information access systems, methods for creation and related commercial models
US7403209B2 (en) 2004-03-24 2008-07-22 Canon Kabushiki Kaisha Rendering images containing video
US7145562B2 (en) 2004-05-03 2006-12-05 Microsoft Corporation Integration of three dimensional scene hierarchy into two dimensional compositing system
JP2006094297A (ja) 2004-09-27 2006-04-06 Fuji Xerox Co Ltd 画像形成装置、画像処理装置、画像処理方法及びそのプログラム
US7474314B2 (en) 2005-01-10 2009-01-06 Columbia Insurance Company Method for representing true colors with device-dependent colors on surfaces and for producing paints and coatings matching the true colors
US7551182B2 (en) * 2005-01-18 2009-06-23 Oculus Info Inc. System and method for processing map data
US8819569B2 (en) 2005-02-18 2014-08-26 Zumobi, Inc Single-handed approach for navigation of application tiles using panning and zooming
US7312801B2 (en) 2005-02-25 2007-12-25 Microsoft Corporation Hardware accelerated blend modes
US7535480B2 (en) 2005-08-24 2009-05-19 Microsoft Corporation Compositing rendering layers
US7933632B2 (en) 2005-09-16 2011-04-26 Microsoft Corporation Tile space user interface for mobile devices
GB0524804D0 (en) * 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
US7474313B1 (en) * 2005-12-14 2009-01-06 Nvidia Corporation Apparatus, method, and system for coalesced Z data and color data for raster operations
US8130226B2 (en) 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
ITMI20070038A1 (it) 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
ITMI20082342A1 (it) 2008-12-30 2010-06-30 St Microelectronics Srl Modulo di renderizzazione per grafica a due dimensioni, preferibilmente basato su primitive di tipo bordo attivo
KR20100132605A (ko) * 2009-06-10 2010-12-20 삼성전자주식회사 하이브리드 렌더링 장치 및 방법
US8587581B2 (en) 2009-10-15 2013-11-19 Nvidia Corporation Order-preserving distributed rasterizer
KR101609266B1 (ko) 2009-10-20 2016-04-21 삼성전자주식회사 타일 기반의 랜더링 장치 및 방법
US8589815B2 (en) 2010-03-10 2013-11-19 Microsoft Corporation Control of timing for animations in dynamic icons
US8339409B2 (en) * 2011-02-16 2012-12-25 Arm Limited Tile-based graphics system and method of operation of such a system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544544A (ja) * 1999-05-10 2002-12-24 アップル コンピュータ インコーポレイテッド 半透明層の描写

Also Published As

Publication number Publication date
EP2756481A2 (en) 2014-07-23
WO2013039812A2 (en) 2013-03-21
JP6062438B2 (ja) 2017-01-18
CN102937892A (zh) 2013-02-20
EP2756481B1 (en) 2019-12-18
EP2756481A4 (en) 2015-04-15
WO2013039812A3 (en) 2013-05-10
KR20140060307A (ko) 2014-05-19
US20130063473A1 (en) 2013-03-14
CN102937892B (zh) 2016-08-24
US20170061662A1 (en) 2017-03-02
KR101952983B1 (ko) 2019-02-27
US9715750B2 (en) 2017-07-25
US9342322B2 (en) 2016-05-17

Similar Documents

Publication Publication Date Title
JP6062438B2 (ja) タイル単位レンダラーを用いてレイヤリングするシステムおよび方法
KR102419745B1 (ko) 게임 렌더링 방법, 및 게임 자원 파일 생성 방법, 장치, 및 기기
US10127628B2 (en) Method and system to virtualize graphic processing services
WO2020156264A1 (zh) 渲染方法及装置
WO2021008373A1 (zh) 显示方法、装置、电子设备及计算机可读介质
EP3111318B1 (en) Cross-platform rendering engine
US11069106B1 (en) Dynamic mesh generation to minimize fillrate utilization
JP2024506037A (ja) 機械学習ワークロードにおけるテンソルオブジェクトサポートのための方法および装置
US8561038B1 (en) High performance execution environment
US20220292628A1 (en) Image processing method and apparatus
JP6595101B2 (ja) 後期深度試験と保守的深度試験との間の動的切替え
CN110554976B (zh) 用于图形处理的存储器高速缓存管理
US10319068B2 (en) Texture not backed by real mapping
CN107533752A (zh) 用于图形处理的基于表面格式的自适应存储器地址扫描
WO2022095526A1 (zh) 图形引擎和适用于播放器的图形处理方法
US10657678B2 (en) Method, apparatus and device for creating a texture atlas to render images
CN111311478B (zh) 一种gpu渲染核数据的预读取方法、装置及计算机存储介质
CN111080505B (zh) 一种提高图元装配效率的方法、装置及计算机存储介质
US11010863B2 (en) Bindpoint emulation
US8203567B2 (en) Graphics processing method and apparatus implementing window system
McCaffrey Exploring mobile vs. desktop opengl performance
TWI556167B (zh) 用於多重本機軟體應用程式使用者介面組成之系統及方法
WO2023241210A1 (zh) 虚拟场景的渲染方法、装置、设备及存储介质
WO2023020124A1 (zh) 数据处理方法、装置、计算设备和系统
CN111402375A (zh) 百叶窗效果的形成方法、装置和渲染引擎

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150811

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150811

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160809

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161214

R150 Certificate of patent or registration of utility model

Ref document number: 6062438

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250