JP6235123B2 - グラフィックス・パイプラインを用いた2次元曲線のテッセレーション - Google Patents

グラフィックス・パイプラインを用いた2次元曲線のテッセレーション Download PDF

Info

Publication number
JP6235123B2
JP6235123B2 JP2016511720A JP2016511720A JP6235123B2 JP 6235123 B2 JP6235123 B2 JP 6235123B2 JP 2016511720 A JP2016511720 A JP 2016511720A JP 2016511720 A JP2016511720 A JP 2016511720A JP 6235123 B2 JP6235123 B2 JP 6235123B2
Authority
JP
Japan
Prior art keywords
bezier
instruction
curve
fan
graphics pipeline
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.)
Expired - Fee Related
Application number
JP2016511720A
Other languages
English (en)
Other versions
JP2016520920A5 (ja
JP2016520920A (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 JP2016520920A publication Critical patent/JP2016520920A/ja
Publication of JP2016520920A5 publication Critical patent/JP2016520920A5/ja
Application granted granted Critical
Publication of JP6235123B2 publication Critical patent/JP6235123B2/ja
Expired - Fee Related 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/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • 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

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

Description

2次元(2−D)グラフィックス・ライブラリの主要なタスクのうちの1つは、シーン・データを取得し、シーン・データを、弧、ベジェ曲線、及び直線セグメント等の高レベル・プリミティブにテッセレーションし、コンピュータ・ディスプレイ上での出力又はビットマップ・ファイル・フォーマットでの記憶のために、データをラスタライズすることである。高速化のために、グラフィックス・ライブラリは、レンダリングのいくつかの段階をグラフィックス処理装置(GPU)にオフロードすることがある。弧及びベジェ曲線等のジオメトリ(幾何学的形状)(geometry)は、一般に、オフロードに対する特定の課題をもたらしている。というのは、GPUは、通常、そのようなジオメトリを処理することができないからである、あるいは、高いピクセル単位のコストでしか、そのようなタイプのジオメトリを処理することができないからである。したがって、オフロードする前に、中央処理装置(CPU)は、まず、弧及びベジェ曲線を、GPUが処理できる三角形等の低レベル・プリミティブに変換しなければならない。これは、貴重なCPU処理能力を消費し、しばしば、レンダリング・プロセスにおけるボトルネックの原因となる。
この概要は、発明を実施するための形態において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものでもない。
本発明の実施形態は、とりわけ、GPU上で実行されるグラフィックス・パイプラインを用いて2−D曲線を効率的にテッセレーションするためのシステム、方法、及びコンピュータ記憶媒体に関する。CPUは、1以上の2−D曲線を有するシーン・データ及び/又はオブジェクトを、少なくとも1つのベジェ扇形(Bezier fan)を有する中間テッセレーション(intermediate tessellation)に変換する。中間テッセレーションは、グラフィックス・パイプラインに送信される。グラフィックス・パイプラインにおけるハル・シェーダは、ベジェ扇形の制御点を含むバウンディング・ボックス(bounding box)の幅又は高さの最大値に基づいてベジェ扇形曲線を定められた数の三角形に細分割することにより、ベジェ扇形曲線を近似するよう構成される。グラフィックス・パイプラインにおけるドメイン・シェーダは、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するよう構成される。
本発明の実施形態は、ターゲット独立ラスタライゼーション(TIR:target independent rasterization)とともに使用することができる。TIRは、グラフィックス・パイプラインにおけるラスタライゼーション段階中に取得されるピクセル・サンプルの数(「サンプリング・レート」として知られている)が、レンダリング画像用に割り当てられるメモリから独立して指定されることを可能にする。
以下において、添付の図面を参照しながら本発明が詳細に説明される。
本発明の実施形態を実施する際に使用するのに適した例示的なコンピューティング環境のブロック図。 本発明の実施形態を実施する際に使用するのに適した、2次元曲線用のテッセレーション方法を定めるための例示的なコンピューティング・システム・アーキテクチャのブロック図。 本発明の実施形態を実施する際に使用するのに適した、1以上の三角形及び1以上のベジェ扇形を有する中間テッセレーションをラスタライズする際に使用されるグラフィックス・パイプラインの図。 本発明の一実施形態に従ったベジェ扇形の図。 本発明の一実施形態に従った中間テッセレーションの図。 本発明の一実施形態に従った、グラフィックス処理装置上で実行されるグラフィックス・パイプラインにおいてテッセレーションされた中間テッセレーションの図。 本発明の一実施形態に従ったベジェ扇形の4つの制御点を含むバウンディング・ボックスの図。 本発明の一実施形態に従った、グラフィックス処理装置上で実行されるグラフィックス・パイプラインにおいてテッセレーションされた中間テッセレーションの図。 本発明の一実施形態に従った、アンチエイリアシングされた2次元曲線をレンダリングする例示的な方法のフロー図。 本発明の一実施形態に従った、2次元曲線をテッセレーションするようグラフィックス処理装置に指示する例示的な方法のフロー図。
本発明の主題が、法的要件を満たすよう、本明細書において特定的に説明される。しかしながら、説明自体は、本特許の範囲を限定するよう意図されるものではない。そうではなく、本発明者らは、特許請求される主題が、他の現在の技術又は将来の技術と協働して、本明細書で説明するステップとは異なるステップ又は類似のステップの組合せを含む他の形でも具現化され得ることを意図している。さらに、用語「ステップ」及び/又は用語「ブロック」は、使用される方法の様々な要素を含むよう本明細書において使用され得るが、これらの用語は、個々のステップの順序が明示的に記載されない限り、及び、個々のステップの順序が明示的に記載されるときを除いて、本明細書で開示する様々なステップ間のいずれかの特定の順序を示すものとして解釈されるべきではない。
本明細書で説明する技術の様々な態様は、概して、とりわけ、GPU上で実行されるグラフィックス・パイプラインを用いて2−D曲線を効率的にテッセレーションするためのシステム、方法、及びコンピュータ記憶媒体を対象とする。CPUは、1以上の2−D曲線を有するシーン・データ・オブジェクトを、扇形基点(fan origin)及び4つの制御点を有する少なくとも1つのベジェ扇形を有する中間テッセレーションに変換する。中間テッセレーションは、グラフィックス・パイプラインに送信される。グラフィックス・パイプラインにおけるハル・シェーダは、ベジェ扇形の4つの制御点を含むバウンディング・ボックスの幅又は高さの最大値に基づいてベジェ扇形曲線を定められた数の三角形に細分割することにより、ベジェ扇形曲線を近似するよう構成される。グラフィックス・パイプラインにおけるドメイン・シェーダは、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するよう構成される。
本発明の実施形態は、ターゲット独立ラスタライゼーション(TIR)とともに使用することができる。TIRは、グラフィックス・パイプラインにおけるラスタライゼーション段階中に取得されるピクセル・サンプルの数(「サンプリング・レート」として知られている)が、レンダリング画像用に割り当てられるメモリから独立して指定されることを可能にする。
したがって、一実施形態において、本発明は、実行されたときにアンチエイリアシングされた2−D曲線をレンダリングする方法を実行する、1以上のコンピュータ記憶媒体上に具現化されたコンピュータ実行可能命令を有する1以上のコンピュータ記憶媒体を対象とする。この方法は、シーン・データを、シーン・データ内のオブジェクトからテッセレーションされたジオメトリック形状(geometric shape)のセットを含む中間テッセレーションに変換するステップを含む。ジオメトリック形状のセットは、4つの制御点及び扇形基点を有する少なくとも1つのベジェ扇形を含む。とりわけ、少なくとも1つのベジェ扇形の4つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて少なくとも1つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、少なくとも1つのベジェ扇形の曲線を近似するようにグラフィックス・パイプラインにおけるハル・シェーダを構成するための第1の命令が生成される。少なくとも1つのベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するようにグラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第2の命令が生成される。中間テッセレーションは、グラフィックス・パイプラインに送信される。
別の実施形態において、本発明は、GPU上で実行されるグラフィックス・パイプラインにおいてオブジェクトの中間テッセレーションをラスタライズする方法を対象とし、ここで、中間テッセレーションは、4つの制御点及び扇形基点を有する少なくとも1つのベジェ扇形を含む。当該方法は、コンピューティング・デバイスのCPUから中間テッセレーションを受信するステップと、とりわけ、少なくとも1つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、少なくとも1つのベジェ扇形の曲線を近似するようにグラフィックス・パイプラインにおけるハル・シェーダを構成するための第1の命令を受信するステップと、を含む。ハル・シェーダは、コンピューティング・デバイスを通じて、第1の命令に基づいて構成される。少なくとも1つのベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するようにグラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第2の命令が受信される。ドメイン・シェーダは、コンピューティング・デバイスを通じて、第2の命令に基づいて構成される。
さらに別の実施形態において、本発明は、GPUを制御するためのアプリケーション・プログラム・インタフェース(API)を記憶しているコンピュータ記憶媒体を対象とする。APIは、とりわけ、ベジェ扇形を定める4つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて少なくとも1つのベジェ扇形の曲線を定められた数の三角形に細分割することにより少なくとも1つのベジェ扇形の曲線を近似するためにハル・シェーダ・コンポーネントにより使用されるパラメータを定める細分割ファクタ・プロパティ(subdivision-factor property)を含む。APIはまた、少なくとも1つのベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するためにドメイン・シェーダ・コンポーネントにより使用されるパラメータを定める位置ファクタ・プロパティ(position-factor property)を含む。
本発明の実施形態の概要について簡潔に説明したが、次いで、本発明の実施形態を実施する際に使用するのに適した例示的な動作環境について説明する。概して複数の図、特に図1をまず参照すると、本発明の実施形態を実施するための例示的な動作環境が、コンピューティング・デバイス100として、概して図示及び規定されている。コンピューティング・デバイス100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用又は機能の範囲に関して何らかの限定を示唆するよう意図されるものではない。コンピューティング・デバイス100は、図示されるコンポーネントのいずれか1つ又は組合せに関連する何らかの依存関係又は要件を有するものとして解釈されるべきではない。
本発明は、携帯情報端末又は他のハンドヘルド・デバイス等のコンピュータ又は他のマシンにより実行されるプログラム・コンポーネント等のコンピュータ実行可能命令を含むコンピュータ・コード又はマシンが使用可能な命令の一般的コンテキストにおいて説明され得る。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、及び同様のものを含むプログラム・コンポーネントは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するコードを指す。本発明の実施形態は、ハンドヘルド・デバイス、コンシューマ向け電子デバイス、汎用コンピュータ、特殊コンピューティング・デバイス等を含む様々なシステム構成において実施され得る。本発明の実施形態はまた、タスクが通信ネットワークを介してリンクされているリモート処理デバイスにより実行される分散コンピューティング環境において実施されてもよい。
引き続き図1を参照すると、コンピューティング・デバイス100は、次のデバイスを直接的又は間接的に接続するバス110を含む:メモリ112、1以上のプロセッサ114、1以上のプレゼンテーション・コンポーネント116、入力/出力(I/O)ポート118、I/Oコンポーネント120、例示的な電源122、及びGPU124。バス110は、(アドレス・バス、データ・バス、又はこれらの組合せ等の)1以上のバスであり得るものを表す。明瞭さのために、図1の様々なブロックが線を用いて示されているが、実際には、様々なコンポーネントを描くことはそれほど明瞭ではなく、たとえて言うならば、線は、より正確にはグレーであり曖昧であろう。例えば、ディスプレイ・デバイス等のプレゼンテーション・コンポーネントはI/Oコンポーネント120であるとみなすことができる。また、CPU及びGPUはメモリを有する。図1の図は、本発明の1以上の実施形態に関連して使用することができる例示的なコンピューティング・デバイスの単なる例である。「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルド・デバイス」等のカテゴリ間で区別はなされない。なぜならば、これら全てが、図1の範囲内であることが意図され、「コンピュータ」又は「コンピューティング・デバイス」を指すからである。
コンピューティング・デバイス100は、通常、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピューティング・デバイス100によりアクセス可能な任意の利用可能な媒体とすることができ、揮発性媒体及び不揮発性媒体、リムーバブル媒体及び非リムーバブル媒体の両方を含む。コンピュータ読み取り可能媒体は、コンピュータ記憶媒体及び通信媒体を含む。コンピュータ記憶媒体は、信号自体を含まない。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータ等の情報の記憶のために任意の方法又は技術により実装された揮発性及び不揮発性のリムーバブル媒体及び非リムーバブル媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ、若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくは他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、若しくは他の磁気記憶デバイス、又は、所望の情報を記憶するために使用することができ、コンピューティング・デバイス100によりアクセスされ得る任意の他の媒体を含むが、これらに限定されるものではない。一方、通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータを、搬送波又は他の伝送機構等の変調されたデータ信号内に具現化するものであり、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、信号内の情報を符号化するように設定又は変更された特性のうちの1以上の有する信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、RF、赤外線、及び他の無線媒体等の無線媒体と、を含む。上記の任意の組合せも、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
メモリ112は、揮発性メモリ及び/又は不揮発性メモリの形態のコンピュータ記憶媒体を含む。メモリ112は、リムーバブルであってもよいし、非リムーバブルであってもよいし、これらの組合せであってもよい。例示的なメモリは、ソリッドステート・メモリ、ハード・ドライブ、光ディスク・ドライブ等を含む。コンピューティング・デバイス100は、バス110、メモリ112、又はI/Oコンポーネント120等の様々なエンティティからデータを読み出す1以上のプロセッサ114を含む。1以上のプレゼンテーション・コンポーネント116は、データ・インジケーションをユーザ又は他のデバイスに提示する。例示的なプレゼンテーション・コンポーネント116は、ディスプレイ・デバイス、スピーカ、印刷コンポーネント、振動コンポーネント等を含む。I/Oポート118は、コンピューティング・デバイス100が、いくつかは内蔵式であり得るI/Oコンポーネント120を含む他のデバイスに論理的に接続されることを可能にする。例示的なI/Oコンポーネント120は、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、カメラ、スキャナ、プリンタ、無線デバイス等を含む。例示的なI/Oコンポーネント120とのインタラクションは、タッチ、音声、ジェスチャ、及び同様のものを介するものであり得る。
コンピューティング・デバイス100のコンポーネントは、画像処理において使用され得る。例えば、コンピューティング・デバイス100を使用して、生画像を処理して様々なエフェクト及び調整を生画像に適用する、図3のグラフィックス・パイプライン300と同様のグラフィックス・パイプラインを実装することができる。グラフィックス・パイプラインは、デジタル画像に対して実行される一連のオペレーションを含む。このようなパイプラインは、一般に、利用可能なハードウェアを活用しながらデジタル画像の効率的な処理を可能にするよう設計される。
グラフィックス・パイプラインを実装するために、GPU124上の1以上の手続き型シェーダが使用される。手続き型シェーダは、グラフィックス・データに対して特殊オペレーションを実行するための、GPU124の特殊処理サブユニットである。手続き型シェーダの一例は、例えば、ベジェ扇形等の2−D曲線を概して処理するハル・シェーダ126である。例えば、ハル・シェーダ126は、2−D曲線を定める制御点を含む最小バウンディング・ボックスに関連付けられた寸法に基づいて、2−D曲線を定められた数の三角形に細分割することに関連する演算を適用することができる。手続き型シェーダの別の例は、ドメイン・シェーダ128である。例えば、ハル・シェーダ126の出力は、ドメイン・シェーダ128に渡され、次いで、ドメイン・シェーダ128は、2−D曲線に沿った定められた数の三角形の各々についての頂点位置を決めるための演算を適用する。頂点シェーダ及びピクセル・シェーダ等の他の手続き型シェーダも使用される。これらのシェーダについては、図3を参照して以下でより詳細に説明する。手続き型シェーダが、そのオペレーションを終えた後、情報がGPUバッファ130に配置され得る。この情報は、取り付けられたディスプレイ・デバイス上に表示されてもよいし、さらなるオペレーションのためにホストに返送されてもよい。
GPUバッファ130は、処理されたシーン・データが記憶され得るGPU124上の記憶位置を提供する。様々な処理オペレーションが、シーン・データに対して実行されるので、そのデータは、GPUバッファ130からアクセスされ、変更され、そして、GPUバッファ130に再度記憶され得る。GPUバッファ130は、処理中のデータがグラフィックス・パイプラインにより変換されている間、処理中のデータがGPU124に存在し続けることを可能にする。GPU124からメモリ112へのデータの転送は、時間を消費するので、処理オペレーションが完了するまでデータはGPUバッファ130に存在し続けることが好ましいことであり得る。
ハル・シェーダ126及びドメイン・シェーダ128に関して、命令をハル・シェーダ126及びドメイン・シェーダ128にダウンロードすることにより、特殊機能が実現され得る。さらに、多くの異なるオペレーションの機能が、ピクセル・シェーダ及びラスタライザ等の他のコンポーネント向けに調整された命令セットにより提供され得る。例えば、ネゲート、再マッピング、バイアシング、及び他の機能が、多くのグラフィックス・アプリケーションに有用である。2−D曲線を処理するようにGPU124上でハル・シェーダ126及びドメイン・シェーダ128をプログラムできることは、GPU124のパラレル・アーキテクチャを使用することにより実現される処理速度のため、グラフィックス・オペレーションにとって有効である。このような特殊命令セットは、開発を容易にしてパフォーマンスを向上させることにより、付加価値を与えることができる。命令数制限、及び、シェーダ126及び128の他のハードウェア制限を超えないと仮定すると、これらの命令を実行することにより、ハル・シェーダ126及びドメイン・シェーダ128は、様々な機能を実行することができる。ハル・シェーダ126、ドメイン・シェーダ128、及び他のコンポーネントは、1以上のアプリケーション・プログラム・インタフェース(API)を通じて命令を受信することができる。
図2を参照すると、本発明の実施形態とともに使用するのに適した例示的なコンピューティング・システム・アーキテクチャ200を示すブロック図が示されている。図2に示されるコンピューティング・システム・アーキテクチャ200は、1つの適切なコンピューティング・システムの単なる例であり、本発明の使用又は機能の範囲を限定するものではない。コンピューティング・システム・アーキテクチャ200は、いずれか1つのモジュール/コンポーネント又はモジュール/コンポーネントの組合せに関連する何らかの依存関係又は要件を有するものとして解釈されるべきではない。
コンピューティング・システム・アーキテクチャ200は、コンピューティング・デバイス206及びディスプレイ216を含む。コンピューティング・デバイス206は、画像モジュール208、GPUドライバ210、APIモジュール212、及びオペレーティング・システム214を備える。コンピューティング・デバイス206は、例えば、図1を参照して上述したコンピューティング・デバイス100等の任意のタイプのコンピューティング・デバイスとすることができる。限定ではなく、例に過ぎないが、コンピューティング・デバイス206は、パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・デバイス、モバイル・ハンドセット、コンシューマ向け電子デバイス、又は同様のものであり得る。
画像モジュール208は、レンダリングされるオブジェクト又はシーンのデータを送信する。画像モジュール208は、オブジェクト又はシーンがレンダリングされるためのコンピュータ・プログラムであり得る。レンダリングされるオブジェクト又はシーンは、ビデオ・ゲーム画像、ビデオ・クリップ、動画像、及び静止スクリーン画像を含み得るが、これらに限定されるものではない。オブジェクトは、3次元又は2次元であり得る。APIモジュール212は、画像モジュール208等のコンピュータ・プログラムによりなされるリクエストをサポートするための、オペレーティング・システム214により提供され得るインタフェースである。Direct3D(登録商標)及びOpenGL(登録商標)は、画像モジュール208のリクエストをサポートするAPIの例である。デバイス206は、ディスプレイ・デバイス216と通信する。
画像モジュール208は、グラフィックス・パイプラインにおける1以上のコンポーネント用の構成命令を提供することができる。この命令は、オペレーティング・システム214により提供されてもよい。この命令は、GPUドライバ210の関数を画像モジュール208に公開しているAPIモジュール212に渡され得る。APIモジュール212は、受信した命令に基づいて、GPUドライバ210内の関数を構成することができる。後でより詳細に説明するように、APIモジュール212は、とりわけ、2−D曲線を定める制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいて2−D曲線を定められた数の三角形に細分割することにより2−D曲線を近似するために図1のハル・シェーダ126等のハル・シェーダにより使用されるパラメータを定める細分割ファクタ・プロパティを有する。APIモジュール212はまた、2−D曲線に沿った定められた数の三角形の各々についての頂点位置を決定することにより2−D曲線を位置決めするために図1のドメイン・シェーダ128等のドメイン・シェーダにより使用されるパラメータを定める位置ファクタ・プロパティを有することができる。さらに、APIモジュール212は、レンダリング画像に対してGPU上で割り当てられるメモリの量を定めるレンダリング・ターゲット記憶プロパティ(render-target storage property)と、ラスタライザ・コンポーネントにより使用されるサンプリング・レートを定めるサンプリング・レート・プロパティと、を有することができる。画像モジュール208は、これらのプロパティ用の命令をフレーム単位で提供してもよいし、1つのシーン又はオブジェクトをレンダリングしている間に、これらの関数を複数回変更してもよい。
図3を参照すると、例示的なグラフィックス・パイプライン300が示されている。グラフィックス・パイプライン300は、シーン・データを、ディスプレイ・デバイス上に表示され得るそのシーン・データのラスタライズされたビットマップ表現(カバレッジ・マスク(coverage mask)又はレンダリング画像としても知られている)に変換する段階を含む。グラフィックス・パイプライン300は、入力アセンブラ310、頂点シェーダ312、ハル・シェーダ314、テッセレータ316、ドメイン・シェーダ318、ジオメトリ・シェーダ320、ラスタライザ324、ピクセル・シェーダ326、及び出力マージャ328を含む。(例えば、グラフィックス・パイプライン300とGPUバッファ330とを結んでいる矢印により示されるように、)グラフィックス・パイプライン300により生成されたレンダリング画像は、レンダリング画像用に割り当てられたGPUバッファ330に書き込まれ得る。図3に示されるグラフィックス・パイプライン300は、例示的なものであり、さらなるコンポーネントが追加されてもよいし、コンポーネントが除去されてもよい。
入力アセンブラ310は、メモリ(例えば、GPUバッファ330)から、頂点、並びに、ベジェ扇形に関連付けられた制御点及び扇形基点を読み出し、それらのデータ点(例えば、三角形及びベジェ扇形のセット)からジオメトリを形成し、パイプライン・ワーク・アイテム(pipeline work item)を作成する。プリミティブの各セット(例えば、三角形及びベジェ扇形)が、グラフィックス・パイプライン300上で、別個のパス(pass)として処理される。しかしながら、効率化のために、複数のジオメトリからの同様のプリミティブが、グラフィックス・パイプライン上で、単一のパスにおいて一緒に処理されてもよい。
三角形プリミティブは、頂点シェーダ312及びピクセル・シェーダ326を用いてラスタライズされる。頂点シェーダ312は、数学操作を3−D環境におけるオブジェクトの頂点データに対して実行することにより3−D環境におけるオブジェクトに特別なエフェクトを加算するために使用されるグラフィックス処理関数である。ジオメトリ・シェーダ320は、グラフィックス・パイプライン300の最初の部分に送信されたプリミティブから、点、線、及び三角形等の新たなグラフィックス・プリミティブを生成する。ラスタライザ324は、ディスプレイ又はファイルへの出力のために、シーン・データをラスタ画像(例えば、ピクセル)に変換する。ラスタライザ324は、複数サブピクセル毎ピクセルで(at several sub-pixels per pixel)、シーン・データをサンプリングすることができる。ピクセル・シェーダ326は、通常は、例えば、リアリズム、バンプ・マッピング、シャドウ、アンチエイリアシング、及び爆発エフェクト(explosion effect)といったエフェクトを画像上に適用するために、ピクセル・カラーを操作する機能を果たす。これは、ピクセル単位でエフェクトを計算するグラフィックス関数である。出力マージャ328は、ブレンド・オペレーション、デプス・オペレーション、及びステンシル・オペレーションを実行する。出力マージャ328により生成されたレンダリング画像は、GPUバッファ330に書き込まれる。
ベジェ扇形プリミティブは、ハル・シェーダ314、テッセレータ316、及びドメイン・シェーダ318に加えて、上記にて概説した他のシェーダ及び/又はコンポーネントを用いてラスタライズされる。以下でより詳細に説明するように、ハル・シェーダ314は、とりわけ、ベジェ扇形が変形三角形(deformed triangle)として扱われることを指定し、その変形三角形の内部を1以上の三角形及び曲線セグメントに分割し、その曲線セグメントがどのように細分割されるかを指定することによりその曲線セグメントを近似する。例えば、ハル・シェーダ314は、ベジェ扇形の制御点を含むバウンディング・ボックスの寸法に基づいて曲線セグメントを近似するために使用される三角形の数を指定する。テッセレータ316は、ハル・シェーダ314により指定されたパラメータに基づいて、ベジェ扇形のテッセレーションを実行する。
テッセレータ316の出力は、ドメイン・シェーダ318に渡される。ドメイン・シェーダ318はまた、ハル・シェーダ314からの直接的な入力として、ベジェ扇形に関連付けられた4つの制御点及び扇形基点を少なくとも受信する。ドメイン・シェーダ318は、ベジェ扇形の曲線セグメントに沿った三角形の各々の頂点位置を出力するために、例えば、ベルンシュタイン多項式を用いて、これらの値を処理する。したがって、高レベルにおいて、ハル・シェーダ314は、2−D曲線を有するジオメトリの全体形状を表すために使用されるパラメータを指定し、ドメイン・シェーダ318は、ジオメトリを位置決めする。
次に図4に移ると、ベジェ扇形の図が示され、概して符号400により参照される。ベジェ扇形400は、扇形基点Oとして知られている1つの頂点410と、扇形外形(fan contour)411として知られている3次ベジェ(cubic Bezier)と、により定められる。図4に示されるように、扇形外形411は、全ての点(t,v)=B(t)*v+O*(1−v)(0≦t,v≦1)をカバーする。ここで、B(t)は、[0,1]間隔(例えば、点412と点414との間)にわたるベジェ扇形のパラメータ表示(parameterization)であり、Oは、扇形基点410である。図4に見られるように、変数tは、ベジェ曲線に沿って第1の点(点416)がどれくらい離れて位置するかを表し、変数vは、扇形基点Oと第1の点416とを結ぶ線に沿った第2の点(点418)の距離を表す。
図4に示されるベジェ扇形400は、CPUが、オブジェクトを取得し、そのオブジェクトを、ベジェ扇形400及び三角形等の高レベル・プリミティブを有する中間テッセレーションにテッセレーションした後に生成される。例えば、図5に示されるオブジェクト510等のオブジェクトについて、CPUは、図形基点(figure origin)512として、オブジェクト510のバウンディング・ボックスの中心を選択する。次いで、オブジェクト510の各セグメントが「ウォークされる(walked)」。直線セグメントに遭遇すると、その直線セグメントの両端点及び図形基点512により定められる頂点を有する三角形が出力される。これが、図5の三角形514、516、及び518により示されている。ベジェ・セグメントに遭遇すると、ベジェ扇形が、扇形外形としてのベジェ曲線自体と扇形基点としての図形基点512とを用いて出力される。図5は、2つのベジェ扇形520及び522を示している。このようにして生成されたベジェ扇形は、4つの制御点及び扇形基点のセットとして定められ得る、あるいはコード化され得る。例えば、ベジェ扇形520は、扇形基点としての図形基点512と制御点524、526、528、及び530とを用いてコード化され得る。
上記プロセスから生成されるベジェ扇形は、自己交差していることがあり、プリミティブは、オーバーラップすることがある。これは、ベジェ扇形が自己交差せず、プリミティブがオーバーラップしないことを確実にするために、CPUがベジェ扇形をさらに細分割することにより対処され得る。あるいは、結果として生じるカバレッジ・マスクの任意の部分がオーバーラップする場合、カバレッジ・マスクは、まず、XOR論理ブレンドにより、中間ビットマップにレンダリングされ得る。図5に示される中間テッセレーションは、3次ベジェ扇形を含むが、本発明の実施形態は、グラフィックス・パイプラインを通じたさらなるパスを費やして、弧及び2次ベジェ等のさらなるセグメント・タイプをサポートするように拡張され得る。代替実施形態において、N個のセグメント・タイプを有するオブジェクトが、三角形と、扇形外形が対応するタイプのセグメントにより定められる扇形タイプの(N−1)個のセットと、に対応するプリミティブのN個のセットに細分割され得る。
次に図6に移ると、図6は、図3のハル・シェーダ314等のハル・シェーダにより処理された後のベジェ扇形600を示している。図5を参照して上述したように、ハル・シェーダは、入力として、ベジェ扇形600を定める扇形基点610と4つの制御点612、614、616、及び618とを受信する。ハル・シェーダは、ベジェ扇形600を処理するために、パラメータのセットを使用する。そのパラメータのセットは、
Domain: “tri”
Partitioning: “integer”
Output topology: “triangle_cw”
SV_TessFactor: {1, 1, contourTessellationFactor}
SV_InsideTessFactor: 1
を含む。
triというドメイン(domain)・パラメータは、ベジェ扇形600が変形三角形として扱われることを指定する。代替実施形態において、ベジェ扇形600は、変形四角形として扱われてもよい。integerという分割(partitioning)パラメータは、変形三角形の内部が、整数分割(integer partitioning)を用いて分割されることを示す。例えば、内部点620を用いて、ベジェ扇形600は、曲線セグメント626と、2つの三角形622及び624と、に分割されている。ここで、2つの三角形622及び624はそれぞれ、曲線セグメント626の境界(例えば、線628及び630)とエッジを共有している。曲線セグメント626は、点612から点618へ延びる。代替実施形態において、フラクショナル分割(fractional partitioning)を用いて、変形三角形の内部を分割してもよい。出力トポロジ(output topology)・パラメータは、曲線セグメント626が、各三角形の頂点が時計回りに指定される三角形のセットを用いて近似されることを指定する。
内部テッセレーション・ファクタ(inside tessellation factor)は、テッセレーションによりどれだけの数の三角形が生成されるかに影響を及ぼす。内部三角形は、ベジェ扇形600の曲線セグメントの境界(例えば、線628及び630)とエッジを共有しない三角形として定められる。内部テッセレーション・ファクタは、内部三角形がテッセレーションにより生成されないことを示す1に設定されている。外形テッセレーション・ファクタ(contour tessellation factor)は、オフラインで生成されるルックアップ・テーブルを使用することにより実行時に動的に選択される整数である。外形テッセレーション・ファクタは、図6に示される内部点620から放射状に広がる三角形を用いて曲線セグメント626をどれくらい細かく細分割するかを指定する。すなわち、外形テッセレーション・ファクタは、細分割において使用される三角形の数を指定する。一般に、曲線セグメントが、過度に粗くテッセレーションされると、レンダリング画像は、可視のファセッティング(faceting)を有することになる。一方、曲線セグメントが、過度に細かくテッセレーションされると、GPUは過負荷となり、処理時間が長くなる。本発明は、過度に粗いテッセレーションと過度に細かいテッセレーションとの間の均衡をとるために、外形テッセレーション・ファクタを使用する。
上述したように、外形テッセレーション・ファクタは、ルックアップ・テーブルを使用することにより実行時に動的に選択される整数である。ルックアップ・テーブルは、外形テッセレーション・ファクタの予め定められたセット(例えば、2、4、8、16、32、及び64)を選択し、それら外形テッセレーション・ファクタの各々について関連するバウンディング・ボックスの寸法を算出することにより、(コンパイルに先立って)オフラインで生成される。詳細には、各テッセレーション・ファクタnについて、distChebychev(B(t),L(t))の最大値(以降Dと呼ばれる)が、
distChebychev(p,q)=max(|p−q|,|p−q|)
により算出される。B(t)は、3次ベジェについての、ベルンシュタイン基底関数に基づくベジェの正準パラメータ表示であり(tは0〜1の範囲をとる)、
B(t)=t*C+3(1−t)t*C+3(1−t)t*C+(1−t)*C
である。ここで、C,...,Cは、4つのベジェ制御点であり、これらのx座標及びy座標はそれぞれ、間隔[0,1]の範囲をとることが可能である。L(t)は、点B(0)と点B(1/n)と点B(2/n)と,...,点(n/n)とを結ぶポリライン・セグメントの正規化弧長パラメータ表示であり(tは0〜1の範囲をとる)、tは、間隔[0,1]の範囲をとる。これは、9個の未知数(4つの制御点のx座標及びy座標、並びにt)と、18個の制約(制御点についての16個及びtについての2個)と、を含む非線形制約最適化問題であり、周知技術を用いて解析的又は数値的に解くことができる。本発明は、実装調整可能な定数εを含み、この定数εは、ベジェ・テッセレーションが真のベジェから外れ得る最大距離についての上限である(本発明では1/4を選択している)。最後に、値
Figure 0006235123
が、ハル・シェーダがアクセス可能なテーブルに記憶される。
例示的なルックアップ・テーブルが以下に提供される。
Figure 0006235123
実行時において、ベジェ扇形の4つの制御点を含む最小バウンディング・ボックスが算出される。例示的なバウンディング・ボックス724が、図7に示されている。バウンディング・ボックス724は、点C 710、点C 712、点C 714、及び点C 716に示されるベジェ扇形の4つの制御点を含む。バウンディング・ボックス724は、高さ720及び幅722を有する。バウンディング・ボックス724の最大寸法が決定される(例えば、高さ720又は幅722の一方)。最大寸法が、ルックアップ・テーブルにおける適切な範囲とマッチングされ、最小外形テッセレーション・ファクタnが、
Figure 0006235123
であるように選択される。maxDimensionが、
Figure 0006235123
を超える場合、ベジェ扇形は、CPU上で、三角形にテッセレーションされる。
ドメイン・シェーダは、入力として、ハル・シェーダから、ベジェ扇形制御点C、C、C、C、扇形基点O、及びSV_DomainLocation(t, u, v)を受信する。ドメイン位置(domain location)は、0≦t,u,v≦1且つt+u+v=1を意味し、uを無視することが可能である重心座標(Barycentric coordinate)で指定される。ドメイン・シェーダは、出力として、曲線セグメント(例えば、図6の曲線セグメント626)に沿った三角形の各々についての頂点位置Pを送信する。各頂点位置Pは、以下の式を用いて計算される。
P(t,v)=B(t)*v+O*(1−v)
ここで、B(t)は、以下のベルンシュタイン多項式である。
B(t)=t*C+3(1−t)t*C+3(1−t)t*C+(1−t)*C
ドメイン・シェーダの出力が、図8に示されている。図8は、図6に示されたベジェ扇形と同じベジェ扇形を示している(図8ではベジェ扇形800としてラベリングされている)。三角形の各々は、頂点位置P(例えば、頂点位置P,...,P)において、曲線セグメント626と交わる。2つの例示的な頂点位置が、符号810及び812で示されている。
次に図9に移ると、アンチエイリアシングされた2−D曲線をレンダリングする例示的な方法のフロー図が示され、概して符号900により参照される。アンチエイリアシングされたグラフィックスは、段々状ではなく、真っ直ぐか、あるいは滑らかに見える直線及び/又は曲線を含むレンダリング画像である。アンチエイリアシングされたレンダリング画像は、図3のグラフィックス・パイプライン300等のグラフィックス・パイプラインのコンポーネントを使用するアンチエイリアシング・プロセスにより生成される。レンダリングは、シーン・データのラスタライズされたビットマップ表現を生成するプロセスである。レンダリング画像は、レンダリング・プロセスの完了のために実際に表示される必要はない。方法900は、画像コンポーネントにより実行され得る。画像コンポーネントの例は、ワープロ・アプリケーション、スプレッドシート・アプリケーション、プレゼンテーション・アプリケーション、個人連絡帳アプリケーション、ゲーム、及び2次元画像を生成する他のアプリケーションを含む。
ステップ910において、シーン・データが、シーン・データ内のオブジェクトからテッセレーションされたジオメトリック形状のセットを生成することにより、中間テッセレーションに変換される。中間テッセレーションは、扇形基点及び4つの制御点により定められる少なくとも1つのベジェ扇形を含む。他の例示的なジオメトリック形状は、三角形及び弧セグメントを含み得る。一実施形態において、この変換ステップは、CPU上で実行されるソフトウェアにより行われる。
ステップ912において、グラフィックス・パイプラインにおけるハル・シェーダを構成するための第1の命令が生成される。ハル・シェーダは、ベジェ扇形を定める4つの制御点を含む最小バウンディング・ボックスの幅又は高さの最大値に基づいてベジェ扇形の曲線又は曲線セグメントを定められた数の三角形に細分割することによりベジェ扇形の曲線又は曲線セグメントを近似するよう構成される。上述したように、曲線を近似するために使用される三角形の数は、最大高さ値又は最大幅値の1以上の範囲と、対応する細分割ファクタ又は外形テッセレーション・ファクタと、を含む予め算出されているルックアップ・テーブルに基づいて決定される。第1の命令は、APIに送信され得、次いで、APIが、GPU上のハル・シェーダを構成する。
ステップ914において、グラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第2の命令が生成される。ドメイン・シェーダは、例えば、ベルンシュタイン多項式を用いて、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するよう構成される。第2の命令も、APIに送信され得、次いで、APIが、GPU上のドメイン・シェーダを構成する。ステップ916において、中間テッセレーションが、CPUからGPU上で実行されているグラフィックス・パイプラインに送信される。
方法900は、グラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための第3の命令を生成するステップをさらに含み得る。レンダリング・ターゲット記憶値は、レンダリング画像に割り当てられるメモリの量を定める。レンダリング画像は、グラフィックス・パイプラインを通じた中間テッセレーションの実行の最終結果であり得る。第3の命令は、APIに送信され得、次いで、APIが、GPU上のプロセスを構成する。
グラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための第4の命令も生成され得る。サンプリング・レートは、レンダリング・ターゲット記憶値から独立して定められる。これらの項目は別々に定められるので、これらの項目の値は、ともに関連付けられる必要はない。一実施形態において、メモリ、すなわち、レンダリング・ターゲット記憶値は、レンダリング・ビットマップ表現の1倍(1x)に設定される。例えば、レンダリング画像が、480ピクセル×480ピクセルである場合、割り当てられるメモリは、230400ピクセルを記憶するのに十分であればよい。サンプリング・レートは独立して定められるので、サンプリング・レートは、480×480のレンダリング・ビットマップ表現に対して230400ピクセルのメモリ割り当てがなされる場合であっても、4サブピクセル毎ピクセルとすることができる。第4の命令は、APIに送信され得、次いで、APIが、GPU上のプロセスを構成する。
さらなる命令が生成されてもよい。例えば、中間テッセレーションを処理するようにグラフィックス・パイプラインにおけるピクセル・シェーダを構成するための命令が生成されてもよい。命令は、中間テッセレーション内のジオメトリック形状がオーバーラップしているかオーバーラップしていないかに応じて変わり得る。ジオメトリック形状がオーバーラップしていないシナリオにおいて、ピクセル・シェーダは、中間テッセレーション内に設定されたビットの数をカウントし、その結果を実数に正規化し(normalize)、その実数をレンダリング・ターゲットの現在のコンテンツに加算する(add)よう構成される。一方、ジオメトリック形状間にオーバーラップが存在する場合、ピクセル・シェーダは、レンダリング・ターゲットにどの色が加算される(added)か、あるいはレンダリング・ターゲットからどの色が減算される(subtracted)かを判定するための論理プロセスを用いて、ドメイン・シェーダにより送信された1以上の三角形を、レンダリング・ターゲットの現在のコンテンツと結合するよう構成される。一実施形態において、この論理プロセスは、ビットマップ排他的論理和(XOR)演算である。別の実施形態において、この論理プロセスは、ビットマップOR演算である。
次に図10に移ると、オブジェクトの中間テッセレーションをラスタライズするようGPUに指示する方法1000のフロー図が示されている。中間テッセレーションは、4つの制御点及び扇形基点を有する少なくとも1つのベジェ扇形を含む。方法1000は、APIにより実行され得る。
ステップ1010において、GPUは、コンピューティング・デバイスのCPUから、中間テッセレーションを受信する。中間テッセレーションは、1以上の直線セグメントと、扇形基点及び4つの制御点により定められる少なくとも1つのベジェ扇形と、を有するオブジェクトの高レベル表現を含む。ステップ1012において、GPUは、とりわけ、ベジェ扇形の曲線を定められた数の三角形に細分割することによりベジェ扇形の曲線を近似するように、GPU上で実行されるグラフィックス・パイプラインにおけるハル・シェーダを構成するための第1の命令を受信する。
第1の命令はまた、ハル・シェーダが、ベジェ扇形を2つの辺及び1つの湾曲辺(curved side)を有する変形三角形として扱うことを指定するtriというドメイン命令を含み得る。第1の命令はまた、ベジェ扇形の内部を分割するための分割命令と、ベジェ扇形の曲線が、各三角形の頂点が時計回りに指定される三角形のセットを用いて細分割されることを指定する出力トポロジ命令と、を含み得る。第1の命令は、内部三角形(例えば、ベジェ扇形の曲線セグメントの境界とエッジを共有しない三角形)が存在しないことを確実にする1という内部テッセレーション・ファクタ命令をさらに含む。
ステップ1014において、ハル・シェーダが、第1の命令に基づいて、コンピューティング・デバイスにより構成される。ステップ1016において、GPUは、ベジェ扇形の曲線に沿った定められた数の三角形の各々についての頂点位置を決定するようにグラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第2の命令を受信する。ステップ1018において、ドメイン・シェーダが、第2の命令に基づいて構成される。
方法1000は、ハル・シェーダが、中間テッセレーションのベジェ扇形に対して第1の命令を実行するステップをさらに含む。ハル・シェーダは、ベジェ扇形の4つの制御点を含む最小バウンディング・ボックスを算出し、バウンディング・ボックスの幅又は高さいずれかの最大値を決定する。最大高さ値又は最大幅値の範囲と、対応する外形テッセレーション・ファクタと、を含むルックアップ・テーブルがアクセスされ、バウンディング・ボックスの最大値が、ルックアップ・テーブルにおける範囲のうちの1つとマッチングされる。マッチングされた範囲に対応する細分割ファクタ又は外形テッセレーション・ファクタが、ルックアップ・テーブルから決定され、このファクタが、ベジェ扇形曲線を外形テッセレーション・ファクタと等しい数の三角形に細分割するために使用される。方法1000は、ドメイン・シェーダが、ベジェ扇形曲線に沿った定められた数の三角形の各々についての頂点位置を決定するためにベジェ扇形に対して第2の命令を実行するステップをさらに含む。
さらなる命令が、GPUにより受信され得る。例えば、GPU上で実行されるグラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための命令が受信される。この命令は、プログラムから受信されてもよい。レンダリング・ターゲット記憶値に対応する、GPUにおけるメモリの量が割り当てられる。メモリは、GPU用のドライバにより割り当てられてもよい。GPU上のグラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための命令も受信され得る。サンプリング・レートは、レンダリング・ターゲット記憶値から独立して定められる。ラスタライザは、そのサンプリング・レートでシーン・データをサンプリングするよう構成される。ラスタライザは、GPU内のドライバを通じて構成されてもよい。サンプリング・レート及びレンダリング・ターゲット記憶値は、互いから独立したものであり得る。一態様において、レンダリング・ターゲット記憶値が、レンダリング画像における1ピクセル毎ピクセル(one pixel per pixel)と等しい場合、サンプリング・レートは、レンダリング・ターゲット記憶値よりも大きいものであり得、サンプリング・レートは、4サブピクセル毎ピクセルに設定される。
本発明の実施形態について、限定ではなく例示として説明した。所定の特徴及び下位組合せが有用であり、他の特徴及び下位組合せを参照することなく使用されてもよいことが理解されよう。これは、請求項により考慮されるものであり、請求項の範囲内である。

Claims (10)

  1. コンピュータに、アンチエイリアシングされた2次元曲線をレンダリングする方法を実行させるコンピュータ・プログラムであって、前記方法は、
    シーン・データ内のオブジェクトからテッセレーションされたジオメトリック形状のセットを生成することにより、前記シーン・データを中間テッセレーションに変換するステップであって、前記ジオメトリック形状のセットは、4つの制御点及び扇形基点を有する少なくとも1つのベジェ扇形を含む、ステップと、
    記少なくとも1つのベジェ扇形の前記4つの制御点を含む最小バウンディング・ボックスの幅及び高さのうちの1つの最大値に基づいて前記少なくとも1つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、前記少なくとも1つのベジェ扇形の前記曲線を近似するように、グラフィックス・パイプラインにおけるハル・シェーダを構成するための第1の命令を生成するステップであって、前記定められた数の三角形は、前記幅及び前記高さのうちの前記1つの前記最大値と、対応する細分割ファクタと、を含むルックアップ・テーブルに基づいて決定される、ステップと、
    前記少なくとも1つのベジェ扇形の前記曲線に沿った前記定められた数の三角形の各々についての頂点位置を決定するように、前記グラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第2の命令を生成するステップと、
    前記中間テッセレーションを前記グラフィックス・パイプラインに送信するステップと、
    を含む、コンピュータ・プログラム
  2. 前記方法は、
    前記グラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための第3の命令を生成するステップと、
    前記グラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための第4の命令を生成するステップであって、前記サンプリング・レートは、前記レンダリング・ターゲット記憶値から独立して定められる、ステップと、
    をさらに含む、請求項1記載のコンピュータ・プログラム
  3. 前記方法は、
    前記第1の命令、前記第2の命令、前記第3の命令、及び前記第4の命令を、グラフィックス処理装置における関数を構成するアプリケーション・プログラミング・インタフェースに送信するステップ
    をさらに含む、請求項2記載のコンピュータ・プログラム
  4. グラフィックス処理装置(GPU)上で実行されるグラフィックス・パイプラインにおいてオブジェクトの中間テッセレーションをラスタライズする方法であって、前記中間テッセレーションは、4つの制御点及び扇形基点を有する少なくとも1つのベジェ扇形を含み、前記方法は、
    コンピューティング・デバイスの中央処理装置(CPU)から、前記中間テッセレーションを受信するステップと、
    前記少なくとも1つのベジェ扇形の前記4つの制御点を含む最小バウンディング・ボックスの幅及び高さのうちの1つの最大値に基づいて前記少なくとも1つのベジェ扇形の曲線を定められた数の三角形に細分割することにより、前記少なくとも1つのベジェ扇形の前記曲線を近似するように、前記グラフィックス・パイプラインにおけるハル・シェーダを構成するための第1の命令を受信するステップと、
    前記コンピューティング・デバイスを通じて、前記第1の命令に基づいて前記ハル・シェーダを構成するステップと、
    前記少なくとも1つのベジェ扇形の前記曲線に沿った前記定められた数の三角形の各々についての頂点位置を決定するように、前記グラフィックス・パイプラインにおけるドメイン・シェーダを構成するための第2の命令を受信するステップと、
    前記コンピューティング・デバイスを通じて、前記第2の命令に基づいて前記ドメイン・シェーダを構成するステップと、
    を含む、方法。
  5. 前記ハル・シェーダが、前記少なくとも1つのベジェ扇形に対して前記第1の命令を実行するステップと、
    前記ドメイン・シェーダが、前記少なくとも1つのベジェ扇形に対して前記第2の命令を実行するステップと、
    をさらに含む、請求項記載の方法。
  6. 前記グラフィックス・パイプラインにおけるレンダリング・ターゲット記憶値を定めるための第3の命令を受信するステップと、
    前記コンピューティング・デバイスを通じて、前記レンダリング・ターゲット記憶値に対応する、前記GPUにおけるメモリの量を割り当てるステップと、
    前記グラフィックス・パイプラインにおけるラスタライザ用のサンプリング・レートを定めるための第4の命令を受信するステップであって、前記サンプリング・レートは、前記レンダリング・ターゲット記憶値から独立して定められる、ステップと、
    前記コンピューティング・デバイスを通じて、前記サンプリング・レートでシーン・データをサンプリングするように前記ラスタライザを構成するステップと、
    をさらに含む、請求項記載の方法。
  7. 前記サンプリング・レートは、前記レンダリング・ターゲット記憶値より大きい、請求項記載の方法。
  8. 前記第1の命令は、
    (A)前記ハル・シェーダが、前記少なくとも1つのベジェ扇形を2つの辺及び1つの湾曲辺を有する変形三角形として扱うことを指定するtriというドメイン命令と、
    (B)前記少なくとも1つのベジェ扇形の内部を分割するための分割命令と、
    (C)前記少なくとも1つのベジェ扇形の前記湾曲辺が三角形のセットに細分割されることを指定する出力トポロジ命令と、
    (D)前記少なくとも1つのベジェ扇形の前記分割により内部三角形が生成されないことを指定する内部テッセレーション・ファクタ命令であって、内部三角形は、前記少なくとも1つのベジェ扇形の前記曲線の境界とエッジを共有しない三角形を含む、内部テッセレーション・ファクタ命令と、
    をさらに含む、請求項記載の方法。
  9. 1以上のプロセッサと、
    グラフィックス処理装置(GPU)と、
    前記GPUを制御するためのアプリケーション・プログラム・インタフェース(API)モジュールであって、前記APIモジュールは、
    なくとも1つのベジェ扇形を定める4つの制御点を含む最小バウンディング・ボックスの幅及び高さのうちの1つの最大値に基づいて前記少なくとも1つのベジェ扇形の曲線を定められた数の三角形に細分割することにより前記少なくとも1つのベジェ扇形の前記曲線を近似するためにハル・シェーダ・コンポーネントにより使用されるパラメータを定める細分割ファクタ・プロパティと、
    前記少なくとも1つのベジェ扇形の前記曲線に沿った前記定められた数の三角形の各々についての頂点位置を決定するためにドメイン・シェーダ・コンポーネントにより使用されるパラメータを定める位置ファクタ・プロパティと、
    を含む、APIモジュールと、
    を有する、システム
  10. 前記APIモジュールは、
    レンダリング画像に対して前記GPU上で割り当てられるメモリの量を定めるレンダリング・ターゲット記憶プロパティと、
    ラスタライザ・コンポーネントにより使用されるサンプリング・レートを定めるサンプリング・レート・プロパティと、
    をさらに含む、請求項記載のシステム
JP2016511720A 2013-04-30 2013-09-21 グラフィックス・パイプラインを用いた2次元曲線のテッセレーション Expired - Fee Related JP6235123B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/873,403 US9401034B2 (en) 2013-04-30 2013-04-30 Tessellation of two-dimensional curves using a graphics pipeline
US13/873,403 2013-04-30
PCT/US2013/061069 WO2014178905A1 (en) 2013-04-30 2013-09-21 Tessellation of two-dimensional curves using a graphics pipeline

Publications (3)

Publication Number Publication Date
JP2016520920A JP2016520920A (ja) 2016-07-14
JP2016520920A5 JP2016520920A5 (ja) 2016-10-13
JP6235123B2 true JP6235123B2 (ja) 2017-11-22

Family

ID=49305181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016511720A Expired - Fee Related JP6235123B2 (ja) 2013-04-30 2013-09-21 グラフィックス・パイプラインを用いた2次元曲線のテッセレーション

Country Status (6)

Country Link
US (1) US9401034B2 (ja)
EP (1) EP2992510A1 (ja)
JP (1) JP6235123B2 (ja)
KR (1) KR20160003223A (ja)
CN (1) CN105493149B (ja)
WO (1) WO2014178905A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102329475B1 (ko) * 2014-08-27 2021-11-19 삼성전자주식회사 렌더링 퀄리티 제어 장치 및 방법
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
KR102657587B1 (ko) * 2016-11-21 2024-04-15 삼성전자주식회사 커브 렌더링을 수행하는 방법 및 장치.
CN106709863B (zh) * 2016-12-28 2020-04-28 杭州趣维科技有限公司 一种基于gpu的高效2d矢量图形渲染方法
US10043233B1 (en) * 2017-07-20 2018-08-07 Adobe Systems Incorporated Digital media environment for processing vector objects of vector artwork
US11250817B2 (en) * 2017-11-16 2022-02-15 Synaptics Incorporated Display driver
US10580209B2 (en) * 2018-03-06 2020-03-03 Qualcomm Incorporated Removal of degenerated sub-primitives in tessellation
SG11202010671PA (en) * 2019-12-20 2020-11-27 Alipay Hangzhou Inf Tech Co Ltd System and method for evaluating risk
CN111581464A (zh) * 2020-04-10 2020-08-25 北京明略软件系统有限公司 一种数据信息的展示方法和装置

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4918626A (en) 1987-12-09 1990-04-17 Evans & Sutherland Computer Corp. Computer graphics priority system with antialiasing
CA2030022A1 (en) 1989-11-17 1991-05-18 Brian M. Kelleher System and method for drawing antialiased polygons
JPH03209499A (ja) * 1990-01-12 1991-09-12 Nec Corp アウトライン・フォントの形成方法およびその描画装置
US6008820A (en) 1995-08-04 1999-12-28 Microsoft Corporation Processor for controlling the display of rendered image layers and method for controlling same
US6317525B1 (en) 1998-02-20 2001-11-13 Ati Technologies, Inc. Method and apparatus for full scene anti-aliasing
US6501483B1 (en) 1998-05-29 2002-12-31 Ati Technologies, Inc. Method and apparatus for antialiasing using a non-uniform pixel sampling pattern
US7375727B1 (en) 1998-07-22 2008-05-20 Nvidia Corporation System, method and computer program product for geometrically transforming geometric objects
JP2000099732A (ja) * 1998-09-22 2000-04-07 Sony Corp 曲線編集装置及び方法
JP4332934B2 (ja) 1999-06-17 2009-09-16 株式会社セガ アンチエイリアシング方法及びこれを用いた画像処理装置
US6819332B2 (en) 2001-02-27 2004-11-16 3Dlabs Inc. Ltd. Antialias mask generation
US6940503B2 (en) * 2001-05-10 2005-09-06 Ati International Srl Method and apparatus for processing non-planar video graphics primitives
US7006101B1 (en) 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
US7027056B2 (en) 2002-05-10 2006-04-11 Nec Electronics (Europe) Gmbh Graphics engine, and display driver IC and display module incorporating the graphics engine
CN1653488A (zh) 2002-05-10 2005-08-10 比特波伊斯有限责任公司 显示驱动器ic、显示模块以及合并有图形引擎的电子装置
US6943805B2 (en) 2002-06-28 2005-09-13 Microsoft Corporation Systems and methods for providing image rendering using variable rate source sampling
US6967663B1 (en) 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
EP1580694A1 (en) 2004-03-22 2005-09-28 STMicroelectronics S.r.l. Image rendering with adaptive filtering for anti-aliasing
GB0426170D0 (en) 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US20060250407A1 (en) 2005-05-05 2006-11-09 Via Technologies, Inc. Texture filtering using a programmable table filter to improve computer graphics performmance
US20070018988A1 (en) 2005-07-20 2007-01-25 Michael Guthe Method and applications for rasterization of non-simple polygons and curved boundary representations
US7408553B1 (en) 2005-12-15 2008-08-05 Nvidia Corporation Inside testing for paths
US7924278B2 (en) 2006-07-28 2011-04-12 Microsoft Corporation Real-time GPU rendering of piecewise algebraic surfaces
US8269792B2 (en) 2006-11-21 2012-09-18 Qualcomm Incorporated Efficient scissoring for graphics application
US20080284780A1 (en) 2007-05-15 2008-11-20 R-Ming Hsu Method for enabling alpha-to-coverage transformation
JP2008299642A (ja) * 2007-05-31 2008-12-11 Mitsubishi Electric Corp 図形描画装置
US8115773B2 (en) 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors
US8044955B1 (en) 2007-08-31 2011-10-25 Adobe Systems Incorporated Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
US20090141038A1 (en) * 2007-11-02 2009-06-04 Newaskar Saket Prashant Bezier Curves for Low Memory Embedded Graphics Systems
US8963930B2 (en) 2007-12-12 2015-02-24 Via Technologies, Inc. Triangle setup and attribute setup integration with programmable execution unit
US7928979B2 (en) 2008-02-01 2011-04-19 Microsoft Corporation Efficient geometric tessellation and displacement
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
EP2107528B1 (en) 2008-04-01 2012-12-26 Telefonaktiebolaget L M Ericsson (PUBL) Method of and arrangement for rendering a path
JP5520286B2 (ja) 2008-04-04 2014-06-11 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド アンチエイリアシングのためのフィルタ処理方法及び装置
US8933943B2 (en) 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
US8605087B2 (en) 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
GB0819570D0 (en) 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
JP5294313B2 (ja) * 2008-11-07 2013-09-18 Necシステムテクノロジー株式会社 ベジェ曲線描画装置、ベジェ曲線描画方法およびプログラム
US8269775B2 (en) 2008-12-09 2012-09-18 Qualcomm Incorporated Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware
US8325177B2 (en) 2008-12-29 2012-12-04 Microsoft Corporation Leveraging graphics processors to optimize rendering 2-D objects
US8482560B2 (en) * 2008-12-31 2013-07-09 Intel Corporation Image forming techniques
US8274521B2 (en) 2009-05-08 2012-09-25 Oracle America, Inc. System available cache color map
US9245371B2 (en) 2009-09-11 2016-01-26 Nvidia Corporation Global stores and atomic operations
US8144147B2 (en) * 2010-04-07 2012-03-27 Intel Corporation Hierarchical bounding of displaced parametric surfaces
US8773448B2 (en) 2010-04-09 2014-07-08 Intel Corporation List texture
US20110285736A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Decomposing cubic bèzier segments for tessellation-free stencil filling
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
US9183651B2 (en) 2010-10-06 2015-11-10 Microsoft Technology Licensing, Llc Target independent rasterization
CN102663384B (zh) * 2012-03-31 2014-01-22 北京智安邦科技有限公司 基于贝塞尔控制点搜索的曲线识别方法及装置

Also Published As

Publication number Publication date
US20140320523A1 (en) 2014-10-30
US9401034B2 (en) 2016-07-26
CN105493149B (zh) 2018-11-16
KR20160003223A (ko) 2016-01-08
EP2992510A1 (en) 2016-03-09
WO2014178905A1 (en) 2014-11-06
JP2016520920A (ja) 2016-07-14
CN105493149A (zh) 2016-04-13

Similar Documents

Publication Publication Date Title
JP6235123B2 (ja) グラフィックス・パイプラインを用いた2次元曲線のテッセレーション
US9183651B2 (en) Target independent rasterization
US8704830B2 (en) System and method for path rendering with multiple stencil samples per color sample
US9177351B2 (en) Multi-primitive graphics rendering pipeline
JP5721358B2 (ja) グラフィックス処理システム
JP5336067B2 (ja) グラフィックスを処理する方法および装置
US8044955B1 (en) Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
TWI728986B (zh) 圖形處理系統、運行圖形處理系統的方法及執行該方法的電腦軟體碼
US7843463B1 (en) System and method for bump mapping setup
KR102278147B1 (ko) 그래픽 프리미티브의 클립핑
JP6863693B2 (ja) グラフィックス処理システムおよび方法
US10540789B2 (en) Line stylization through graphics processor unit (GPU) textures
GB2463993A (en) Stroked curve rendering
KR20090083398A (ko) 그래픽 어플리케이션에 대한 효과적인 씨저링
US10332290B2 (en) Fast, coverage-optimized, resolution-independent and anti-aliased graphics processing
CN106530379B (zh) 用于执行路径描边的方法和设备
KR20180060198A (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
US6947054B2 (en) Anisotropic filtering
JP2017062789A (ja) グラフィックス処理装置、及びテクスチャリングのためのlodを決定する方法
JP2009301284A (ja) 描画装置および方法
WO2012137243A1 (ja) テクスチャマッピング装置
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
US11030791B2 (en) Centroid selection for variable rate shading
US6924805B2 (en) System and method for image-based rendering with proxy surface animation
CN117057972A (zh) 图形处理单元实例化控制

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160824

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160824

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170913

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171025

R150 Certificate of patent or registration of utility model

Ref document number: 6235123

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees