JP2012511783A - 3次元グラフィックスハードウェアを使用した2次元グラフィックスレンダリング中の頂点ポイントの廃棄 - Google Patents

3次元グラフィックスハードウェアを使用した2次元グラフィックスレンダリング中の頂点ポイントの廃棄 Download PDF

Info

Publication number
JP2012511783A
JP2012511783A JP2011540806A JP2011540806A JP2012511783A JP 2012511783 A JP2012511783 A JP 2012511783A JP 2011540806 A JP2011540806 A JP 2011540806A JP 2011540806 A JP2011540806 A JP 2011540806A JP 2012511783 A JP2012511783 A JP 2012511783A
Authority
JP
Japan
Prior art keywords
vertex
position coordinates
point
vertex point
points
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
JP2011540806A
Other languages
English (en)
Other versions
JP5270004B2 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012511783A publication Critical patent/JP2012511783A/ja
Application granted granted Critical
Publication of JP5270004B2 publication Critical patent/JP5270004B2/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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本開示では、3次元(3D)グラフィックスハードウェアを使用して2次元(2D)グラフィックスレンダリング中に頂点ポイントを除去するための技法について説明する。説明する技法によれば、3Dグラフィックスハードウェアを使用して2Dグラフィックスレンダリング中に1つまたは複数の頂点ポイントを除去することができる。たとえば、本技法では、ディスプレイ座標空間において前の頂点ポイントと実質的に同じ位置座標を有する頂点ポイントを廃棄することによって、ディスプレイ座標空間における冗長な頂点ポイントを除去することができる。代替または追加として、本技法では、直線上にある余分の頂点ポイントを除去することができる。冗長な頂点ポイントまたは直線上にある頂点ポイントを除去することは、GPUのハードウェアリソースのより効率的な利用を可能にし、GPUが画像を表示のためにレンダリングする速度を増加させる。
【選択図】図5

Description

本開示は、コンピューティングデバイスに関し、より詳細には、コンピューティングデバイスによるグラフィックスレンダリングに関する。
コンピューティングデバイスでは、しばしば、2次元(2D)曲線をディスプレイにレンダリングする必要がある。コンピューティングデバイスでは、文書を、たとえば、Portable Document Format(PDF)にレンダリングするために2D曲線をレンダリングする必要があることがある。コンピューティングデバイスではまた、たとえば、円、楕円、角丸長方形など、様々な幾何学的形状の解像度独立表現のために2D曲線をレンダリングする必要があることがある。そのような形状はユーザインターフェースメニューおよびウェブサイトにおいて普及している。パラメトリック曲線による2D形状のレンダリングは、Adobe FlashおよびMicrosoft Silverlightなどのウェブアニメーションフォーマットにおいて使用されることがある。
ビデオゲーム、キャラクタアニメーションなどのために、3次元(3D)グラフィックスでのグラフィックスの需要が増加しているので、コンピューティングデバイスは、しばしば、専用3Dグラフィックスハードウェアを含む。しかしながら、従来の3Dグラフィックスハードウェアは、2D曲線をレンダリングするための直接的なサポートを行わない。したがって、コンピューティングデバイスは、2D曲線および3D曲線をレンダリングするために別々のグラフィックスハードウェアを含むことがある。別々のグラフィックスハードウェアを維持しなければならないことは、シリコン面積と電力消費量の両方においてコストがかかる。携帯情報端末(PDA)、ワイヤレス通信デバイス、全地球測位デバイスなどのモバイルコンピューティングデバイスに関して、面積または電力消費量の増加は、デバイスの大型化、バッテリー時間の短縮などをもたらすので望ましくない。
本開示では、3Dグラフィックスハードウェアを使用して2D曲線をレンダリングするための技法について説明する。説明する技法によれば、コンピューティングデバイスが、3Dグラフィックスハードウェアを使用して2Dグラフィックスレンダリング中に1つまたは複数の頂点ポイントを除去することができる。一例として、コンピュータグラフィックスをディスプレイ上に表示するためにグラフィックスレンダリング演算を実行するための専用のグラフィックスハードウェアである、グラフィックス処理ユニット(GPU)が、繰返しの(すなわち、冗長な)頂点ポイントを除去することができる。繰返しの、すなわち冗長な頂点ポイントは、ディスプレイ座標空間において実質的に同じ位置座標を有する頂点ポイントである。たとえば、2つの頂点ポイントが互いから1/8ピクセル以内にある場合、すなわち、それらの座標が0.125未満だけ異なる場合、その2つの頂点ポイントを繰返しの、すなわち冗長な頂点ポイントと見なすことができる。グラフィックスパイプラインから冗長な頂点ポイントを除去するために、GPUは、各頂点ポイントの位置座標の各々を前の頂点ポイントの位置座標と比較し、ディスプレイ座標空間において前の頂点ポイントと実質的に同じ位置座標を有する頂点ポイントを廃棄することができる。
代替または追加として、GPUは、直線上にある1つまたは複数の頂点ポイントを選択的に除去することができる。そのような状況は、たとえば、3つ以上の頂点ポイントで表される曲線の部分がほとんどまたはまったく曲率を有しないときに起こり得る。そのような場合、第1の頂点ポイントから最後の頂点ポイントまでの一連の直線セグメント代わりに、第1の頂点ポイント、たとえば、エンドポイントから、最後の頂点ポイント、エンドポイントまでの直線を使用して、曲線の直線部分を等しく十分に表すことができる。ほとんどまたはまったく曲率をもたない曲線の部分の第1の頂点ポイントと最後の頂点ポイントとの間の1つまたは複数の頂点ポイントを除去するために、GPUは一連のラインセグメントの傾きを比較することができる。その傾きが実質的に同じであるとき、たとえば、許容しきい値内であるとき、GPUは、ほとんどまたはまったく曲率をもたないその曲線の部分の第1の頂点ポイントと最後の頂点ポイントとの間の1つまたは複数の中間頂点ポイントを除去することができる。冗長な頂点ポイントまたは直線上にある頂点ポイントを除去することは、3Dまたは他のより高い次元用に設計されたGPUのハードウェアリソースのより効率的な利用を可能にし、GPUが画像を表示のためにレンダリングする速度を増加させることができる。
一態様では、方法が、レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断することと、複数の頂点ポイントの少なくとも一部分の位置座標を分析することと、その分析に基づいて複数の頂点ポイントのうちの少なくとも1つを廃棄することとを備える。
別の態様では、デバイスが、レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断することと、複数の頂点ポイントの少なくとも一部分の位置座標を分析することと、その分析に基づいて複数の頂点ポイントのうちの少なくとも1つを廃棄することとを行う処理ユニットを備える。
別の態様では、デバイスが、レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断するための手段と、複数の頂点ポイントの少なくとも一部分の位置座標を分析するための手段と、その分析に基づいて複数の頂点ポイントのうちの少なくとも1つを廃棄するための手段とを備える。
本開示で説明する技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装できる。ソフトウェアで実装された場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはデジタル信号プロセッサ(DSP)、あるいは他の等価な集積または個別論理回路など、1つまたは複数のプロセッサを指すことがあるプロセッサで実行できる。本技法を実行する命令を備えるソフトウェアは、最初にコンピュータ可読媒体に記憶し、プロセッサによってロードして実行できる。したがって、本開示はまた、プロセッサに、本開示で説明する様々な技法のいずれかを実行させる命令を備えるコンピュータ可読媒体を企図する。
たとえば、いくつかの態様では、本開示は、実行されたときに、レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断することと、複数の頂点ポイントの少なくとも一部分の位置座標を分析することと、その分析に基づいて複数の頂点ポイントのうちの少なくとも1つを廃棄することとを少なくとも1つのプロセッサに行わせる命令を備えるコンピュータ可読媒体を提供する。
本開示で説明する技法の1つまたは複数の態様の詳細を添付の図面および以下の説明に示す。本技法の他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
本開示で説明する技法に従ってテッセレーションを実行する例示的なコンピューティングデバイスを示すブロック図。 グラフィックス処理ユニットをさらに詳細に示すブロック図。 本開示の技法に従って1つまたは複数の頂点ポイントを廃棄する例示的な頂点シェーダのブロック図。 本開示の一態様による、複数の頂点ポイントを出力する例示的な頂点シェーダのブロック図。 ディスプレイ座標空間において繰返しの頂点ポイントを廃棄する頂点シェーダの例示的な動作を示す流れ図。 ディスプレイ座標空間において直線上にある少なくともいくつかの頂点ポイントを廃棄する頂点シェーダの例示的な動作を示す流れ図。
図1は、本開示で説明する技法に従ってテッセレーションを実行する例示的なコンピューティングデバイス2を示すブロック図である。コンピューティングデバイス2は、グラフィカル情報を出力する任意のワイヤードまたはワイヤレスデバイスを備えることができる。たとえば、コンピューティングデバイス2は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、コンピュータワークステーション、ビデオゲームプラットフォームまたはコンソール、セルラーまたは衛星電話、インターネット電話、ポータブルビデオゲームデバイスまたは携帯情報端末(PDA)などのハンドヘルドデバイス、パーソナル音楽プレーヤ、ビデオプレーヤ、テレビジョン、あるいはグラフィカル情報を出力する別のタイプのデバイスを備えることができる。
図1の例に示すように、コンピューティングデバイス2は、ユーザ入力インターフェース4と、CPU6と、デバイスメモリ8と、GPU10と、GPUメモリ12と、ディスプレイインターフェース14と、ディスプレイ16とを含む。ユーザ入力インターフェース4、CPU6、デバイスメモリ8、GPU10およびディスプレイインターフェース14は、バス18を使用して通信することができる。バス18は、第3世代バス(たとえば、HyperTransportバスまたはInfiniBandバス)、第2世代バス(たとえば、Advanced Graphics Portバス、Peripheral Component Interconnect(PCI)Expressバス、またはAdvanced eXentisible Interface(AXI)バス)、あるいは別のタイプのバスまたはデバイス相互接続など、様々なバス構造のいずれかとすることができる。
CPU6は、コンピューティングデバイス2の動作を制御する汎用または専用プロセッサを備えることができる。CPU6に1つまたは複数のソフトウェアアプリケーションを実行させるために、ユーザがコンピューティングデバイス2に入力を与えることができる。CPU6上で実行されるそれらのソフトウェアアプリケーションは、ワードプロセッサアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインターフェースアプリケーションまたは別のエンドユーザプログラムを含むことができる。ユーザは、ユーザ入力インターフェース4を介してコンピューティングデバイス2に結合される、キーボード、マウス、マイクロフォン、タッチパッドまたは別の入力デバイスなどの、1つまたは複数の入力デバイス(図示せず)を介してコンピューティングデバイス2に入力を与えることができる。
デバイスメモリ8は、スタートアップまたはリセット時にコンピューティングデバイス2を構成するために使用できるデバイス構成情報を記憶することができる。デバイスメモリはまた、CPU6によって直ちにアクセス可能であり、および/または現在作用されているデータおよび/またはプログラムモジュールを記憶することができる。デバイスメモリ8は、GPU10によって出力された情報など、コンピューティングデバイス2の他の構成要素からの情報をさらに記憶することができる。デバイスメモリ8は、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、読取り専用メモリ(ROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、磁気データ媒体または光記憶媒体など、1つまたは複数の揮発性または不揮発性のメモリまたは記憶デバイスとすることができる。
GPU10は、ディスプレイ16上にコンピュータグラフィックスをレンダリングするためのグラフィックス演算を実行することに専用のものとするができる。したがって、CPU6上で実行されるソフトウェアアプリケーションの1つがグラフィックス処理を必要とするとき、CPU6は、ディスプレイ16にレンダリングするためにグラフィックス情報をGPU10に供給する。GPU10は、いくつかの例では、複雑なグラフィックス関係の演算についてCPU6よりも効率的な処理を行う並列構造を用いて構築できる。たとえば、GPU10は、完全に並列に複数の頂点ポイントに作用する複数のグラフィックスパイプラインを含むことができる。GPU10の高度並列性質により、いくつかの例では、GPU10は、CPU6を用いて複雑な2Dまたは3D画像をディスプレイ16に直接描画するよりも迅速に、それらの画像をディスプレイ16上で作成することができる。いくつかの例では、GPU10は、3Dグラフィックスをディスプレイ16にレンダリングするように設計できる。ただし、GPU10は、2D曲線のハードウェアアクセラレーテッドレンダリングを実行するために使用できる。本開示の技法は、3Dグラフィックスハードウェア、たとえば、GPU10を使用して2D曲線をレンダリングすることの効率を改善するために使用できる。
いくつかの例では、GPU10は、コンピューティングデバイス2のマザーボード(図示せず)に統合できる。他の例では、GPU10は、コンピューティングデバイス2のマザーボードにおけるポートに設置されるグラフィックスカード上に存在するか、または場合によってはコンピューティングデバイス2と相互運用するように構成された周辺デバイス内に組み込むことができる。GPU10は、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、あるいは他の等価な集積または個別論理回路など、1つまたは複数のプロセッサとすることができる。
GPU10はGPUメモリ12に直接結合できる。したがって、GPU10は、バス18を使用することなしに、GPUメモリ12からデータを読み取り、GPUメモリ12にデータを書き込むことができる。言い換えれば、GPU10は、オフチップメモリの代わりに、ローカルストレージを使用してデータをローカルで処理することができる。これにより、GPU10は、大量のバストラフィックを受けることがある、バス18を介したデータの読取りおよび書込みの必要がなくなるので、より効率的な方法で動作できるようになる。ただし、いくつかの例では、GPU10は、別個のメモリを含まず、代わりにバス18を介してデバイスメモリ8を利用することがある。GPUメモリ12は、RAM、SRAM、DRAM、EPROM、EEPROM、フラッシュメモリ、磁気データ媒体または光記憶媒体など、1つまたは複数の揮発性または不揮発性メモリまたは記憶デバイスとすることができる。
CPU6および/またはGPU10は、ディスプレイ16を介した提示のために、画像情報をディスプレイインターフェース14に供給することができる。複雑な2Dおよび3Dグラフィックスの場合、一般に、画像情報はディスプレイ16のためにGPU10によって発生される。ディスプレイ16は、モニタ、テレビジョン、投影デバイス、液晶ディスプレイ(LCD)、プラズマディスプレイパネル、発光ダイオード(LED)アレイ、陰極線管ディスプレイ、電子ペーパー、表面伝導型電子放出素子ディスプレイ(SED)、レーザテレビジョンディスプレイ、ナノ結晶ディスプレイまたは別のタイプのディスプレイユニットを備えることができる。ディスプレイ16はコンピューティングデバイス2内で統合できる。たとえば、ディスプレイ16は、携帯電話または他のワイヤレス通信デバイスのスクリーンとすることができる。代替的に、ディスプレイ16は、ワイヤードまたはワイヤレス通信リンクを介してコンピュータデバイス2に結合されるスタンドアロンデバイスとすることができる。たとえば、ディスプレイ16は、ケーブルまたはワイヤレスリンクを介してパーソナルコンピュータに接続されるコンピュータモニタまたはフラットパネルディスプレイとすることができる。
CPU6上で実行されるソフトウェアアプリケーションの1つが、複雑な2Dグラフィックス画像を提示することを望むとき、CPU6およびGPU10は、グラフィックスをディスプレイ16にレンダリングするように一緒に動作することができる。たとえば、ワードプロセシングアプリケーションの場合、ソフトウェアアプリケーションは、パラメトリック曲線を文書、たとえば、PDF文書にレンダリングすることを望むことがある。別の例として、ソフトウェアアプリケーションは、様々な幾何学的形状を使用して、たとえば、スケーラブルベクターグラフィックス(SVG)規格に従ってユーザインターフェースをディスプレイ16上に提示するためのソフトウェアアプリケーションとすることができる。さらなる一例では、ソフトウェアアプリケーションは、Adobe FlashおよびMicrosoft Silverlightなどのウェブアニメーションフォーマットのためにパラメトリック曲線によって2D形状をレンダリングすることを望むことがある。ソフトウェアアプリケーションは、表示すべきグラフィックス画像を形成する1つまたは複数の2D曲線を定義するコマンドを含む。たとえば、PDF文書の場合、そのアプリケーションは、様々な文字および/または数字のグラフィックス画像の曲線を定義するコマンドを含むことができる。ユーザインターフェースの場合、そのアプリケーションは、円、楕円、角丸長方形などのグラフィックス画像の曲線を定義するコマンドを含むことができる。そのコマンドは、たとえば、グラフィカル画像の境界を画定するいくつかの曲線を定義することができる。言い換えれば、そのコマンドによって定義された曲線は、文字、数字または形状の曲率を近似することができる。
一例では、ソフトウェアアプリケーションは、2005年7月28日の文献「OpenVG Specification, Version 1.0」に定義されるように、OpenVGに従って複数の経路、すなわち、曲線を定義するコマンドを含むことができる。OpenVGは、1つまたは複数のセグメントコマンドを使用して2Dのグラフィックス画像の仕様を可能にするコマンドのセットを定義する。OpenVG仕様に従って、セグメントコマンドは、直線セグメント、ベジエ曲線セグメントまたは楕円弧セグメントを定義することができる。OpenVGの拡張では、他のタイプのセグメントを指定することができる。したがって、本開示の技法は、OpenVG仕様に現在定義されているセグメントコマンドに限定されない。その上、本開示の技法についてOpenVGに関して説明するが、本技法は、SVG、Adobe Illustrator、CoreIDRAW、Adobe Flash、Microsoft Silverlight、または2Dグラフィックスを使用した他のグラフィックス演算規格など、他の2Dグラフィックスオーサリング規格に関して使用できる。
上記で説明したように3D画像をレンダリングするように設計できるGPU10を使用して2D曲線をディスプレイ16にレンダリングするために、CPU6は、その曲線に関連する1つまたは複数の頂点ポイントをGPU10に供給することができる。特に、CPU6は、曲線の制御ポイントを表す1つまたは複数の頂点ポイントを計算することができる。頂点ポイントの各々はいくつかの頂点の属性情報によって表すことができ、それらの頂点の属性情報は、オブジェクト空間における曲線上のその頂点ポイントのロケーションを表す位置座標(たとえば、2D曲線の場合は(x,y)座標)を含むことができる。CPU6は、たとえば、グラフィックスオーサリング仕様(たとえば、OpenVG)で指定できる、特定のコマンドセグメントに対応する数学的表現を使用して1つまたは複数の頂点ポイントを発生することができる。制御ポイントに加えて、CPU6は、レンダリングすべき曲線のタイプ、たとえば、OpenVGの場合は、直線セグメント、ベジエ曲線セグメントまたは楕円弧セグメント、および場合によっては、インデックス番号をGPU10に示すことができる。
CPU6は、発生された頂点ポイントを描画プリミティブのための頂点ポイントの少なくとも一部分として使用して、描画プリミティブのリストを発生することができる。CPU6は、ポイント、ラインストリップ、ラインループ、別々のライン、三角形ストリップ、三角形ファン、別々の三角形、四辺形ストリップ、別々の四辺形、または他のタイプの多角形を含むいくつかの描画プリミティブのいずれかを発生することができる。CPU6は描画プリミティブのリストをデバイスメモリ8に記憶することができる。
CPU6は、一連の頂点ポイントまたは頂点ポイントの特性を定義する属性情報として描画プリミティブのリストをGPU10に通信することができる。たとえば、CPU6は、グラフィックスアプリケーションプログラミングインターフェース(API)を呼び出して、GPUドライバを介して描画プリミティブのリストをGPU10に通信することができる。グラフィックスAPIは、CPU6とGPU10との間にインターフェースを与えるソフトウェア命令のセットを備えることができる。グラフィックスAPIは、GPU10に、描画プリミティブを、表示可能なグラフィックス情報にレンダリングさせる、1つまたは複数のコマンドを作成し、発行することをGPUドライバに行わせることができる。そのコマンドは、レンダリングなど、プリミティブに対して実行すべき演算を指定することができる。さらに、そのコマンドは、プリミティブの頂点ポイントの位置座標、プリミティブの各頂点ポイントに関連するカラー情報、プリミティブの各頂点ポイントに関連するテクスチャ情報、プリミティブのためのスケーリング情報、プリミティブのための回転情報などを含むことができる。プリミティブの頂点ポイントに関連する情報は「頂点の属性情報」と呼ばれることがある。頂点の属性情報をコマンド内に含める代わりに、コマンドは、頂点の属性情報が記憶され得るデバイスメモリ8内のアドレスを指定することができる。
GPU10は、CPU6からコマンドを受信し、GPU10の1つまたは複数の処理要素を、コマンドにおいて指定された演算を実行するように構成する。GPU10のグラフィックスパイプラインの各々は、それぞれの頂点ポイントに対していくつかのグラフィックス演算を実行することができる。たとえば、グラフィックスパイプラインの各々は、ユーザ空間またはオブジェクト空間としても知られるモデル空間においてレンダリングすべき曲線に沿った頂点ポイントの位置座標を計算するように構成できる。GPU10は、たとえば、CPU6によって指定された曲線のタイプと制御ポイントとに関連する数式を使用してモデル空間における頂点ポイントを計算するように構成できる。別の例として、グラフィックスパイプラインの各々は、曲線、または曲線上の頂点ポイントの位置座標(または位置の属性情報)を異なる座標系に変換するように構成できる。特に、GPU10は、曲線、または曲線上の頂点ポイントの位置座標(または属性情報)をモデルまたはユーザ座標空間から(デバイス座標空間と呼ばれることがある)ディスプレイまたは表面座標空間に変換することができる。モデル座標空間は、グラフィックス処理を利用するソフトウェアアプリケーションの命令によってグラフィックス画像がどのように定義されるかを表す。一般に、入力頂点ポイントの位置座標は、浮動小数点数を使用してモデル座標空間において表すことができる。一方、ディスプレイ座標空間は、グラフィックス画像がデバイス、たとえば、ディスプレイ16上でどのように表示されるかを表すことができる。変換された頂点ポイントの位置座標は、ディスプレイ16上のピクセルロケーションに対応する整数を使用してディスプレイ座標空間において表すことができる。ただし、変換された頂点ポイントの位置座標は、浮動小数点数を使用してディスプレイ座標空間において表すことができる。
いくつかの例では、モデル座標空間における2つ以上の入力頂点ポイントの位置座標は、ディスプレイ座標空間における実質的に同じ位置座標に対応することがある。したがって、GPU10は、ディスプレイ座標空間において繰返しである頂点ポイントを発生することがある。この問題は、GPU10の並列構造によって悪化することがある。言い換えれば、GPU10が完全に並列に複数の入力頂点ポイントに作用するので、ディスプレイ座標系における繰返しの頂点ポイントはグラフィックスパイプラインを介して処理されることがある。これにより、利用可能なハードウェアの使用が非効率的になり、ならびに画像がディスプレイ16にレンダリングされる速度が低減する。
本開示の一態様によれば、GPU10は、GPU10のハードウェアリソースをより効率的に利用し、画像がディスプレイ16にレンダリングされる速度を増加させるために、1つまたは複数の頂点ポイントをグラフィックスパイプラインから除去することができる。たとえば、GPU10は、繰返しの(すなわち、冗長な)頂点ポイント、たとえば、ディスプレイ座標空間において実質的に同じ位置座標を有する頂点ポイントを除去することができる。たとえば、2つの頂点ポイントが互いから1/8ピクセル以内にある場合、すなわち、ディスプレイ座標空間におけるそれらの位置座標が0.125未満だけ異なる場合、その2つの頂点ポイントを繰返しの、すなわち冗長な、頂点ポイントと見なすことができる。グラフィックスパイプラインから冗長な頂点ポイントを除去するために、GPU10は、各頂点ポイントの位置座標の各々を前の頂点ポイントの位置座標と比較し、ディスプレイ座標空間において前の頂点ポイントと実質的に同じ位置座標を有する頂点ポイントを廃棄することができ、たとえば、位置座標間の差が0.125などのしきい値未満であるとき、頂点ポイントを廃棄することができる。このようにして、GPU10は、プリミティブをレンダリングするのに不要である冗長な情報の処理を省略することができる。
代替または追加として、GPU10は、直線上にある、ディスプレイ座標空間における位置座標を有する選択された頂点ポイントを除去することができる。そのような状況は、3つ以上の頂点ポイントで表される曲線の部分がほとんどまたはまったく曲率を有しないときに起こる。そのような場合、曲線の部分に沿った各中間頂点ポイント間の一連の直線セグメントとしてではなく、曲線の部分の第1の頂点ポイントから曲線の部分の最後の頂点ポイントまでの直線を使用して、曲線の直線部分を等しく十分に表すことができる。言い換えれば、直線の頂点ポイントのセットのわずか2つの頂点ポイントを使用して、直線を等しく十分に確立することができる。中間または余分の頂点ポイントは除去できる。
曲線の直線部分が3つの頂点ポイントを含む場合、一連の2つの直線セグメント、たとえば、第1の頂点ポイントから第2の頂点ポイントまでの第1の直線セグメント、および第2の頂点ポイントから第3の頂点ポイントまでの第2の直線セグメントとしてではなく、曲線の部分の第1の頂点ポイントから第3の頂点ポイントまでの直線を使用して、曲線の直線部分を等しく十分に表すことができる。GPU10は、たとえば、連続する頂点ポイントによって形成される第1および第2のラインセグメントの傾きを比較し、傾きが実質的に同じであるとき、たとえば、許容しきい値内であるとき、中間(第2の)頂点ポイントを除去することができる。
変換された頂点ポイントを廃棄した後、GPU10は、残りの変換された頂点ポイントを使用してプリミティブを形成する。一例では、GPU10は、廃棄された頂点ポイントが決して利用できないかのように、残りの変換された頂点ポイントを使用してプリミティブを形成することができる。プリミティブを発生した後、GPU10は、画像をディスプレイ16にレンダリングするためにプリミティブに対して追加のグラフィックス演算を実行することができる。
上記で説明したように、CPU6およびGPU10は、曲線をディスプレイ16にレンダリングするように互いに機能することができる。上記で説明した例では、CPU6は曲線をセグメントにテッセレーションし、GPU10は、それらのセグメントをディスプレイ16にレンダリングするためにそれらのセグメントに対して演算を実行する。しかしながら、他の例では、レンダリング機能は、CPU6とGPU10との間で別様に割り振ることができる。たとえば、GPU10は、他の演算に加えてテッセレーションを実行することができる。レンダリング機能は、CPU6の処理負荷、GPU10の処理負荷などに基づいて、CPU6とGPU10との間で割り振ることができる。
さらに、コンピューティングデバイス2はいくつかの他の要素を含むことができる。たとえば、コンピューティングデバイス2は、符号化ビデオの送信および受信のために適切な変調、復調、周波数変換、フィルタ処理、および増幅器構成要素を含み、適用可能な場合、ワイヤレス通信をサポートするのに十分な無線周波(RF)ワイヤレス構成要素およびアンテナを含むことができる。したがって、コンピューティングデバイス2はハンドヘルドワイヤレス通信デバイスを備えることができる。ただし、説明を簡単にするために、これらの追加の要素は、図1には特に示していない。むしろ、図1に示すアーキテクチャは例にすぎない。本開示で説明する技法は、様々な他のアーキテクチャを用いて実装できる。
図2は、図1のGPU10をさらに詳細に示すブロック図である。GPU10は、制御ユニット21と、頂点シェーダ22と、プリミティブセットアップユニット24と、ピクセルシェーダ26とを含むグラフィックスパイプライン20を含む。上記で説明したように、GPU10は、複雑なグラフィックス関係の演算のより効率的な処理を行う高度並列構造を有することができる。したがって、図2にはただ1つのグラフィックスパイプライン20が示されているが、GPU10は、頂点ポイントの複数のセット(たとえば、プリミティブ)に並列に作用する複数の同様のグラフィックスパイプラインを含むことができる。言い換えれば、GPU10は、完全に並列にいくつかのデータプリミティブに作用することができる、複数の頂点シェーダ22と、プリミティブセットアップユニット24と、ピクセルシェーダ26とを含むことができる。GPU10の高度並列性質により、いくつかの例では、GPU10は、CPU6を用いて複雑な2Dまたは3Dグラフィックス画像をディスプレイ16に直接描画するよりも迅速に、それらの画像をディスプレイ16上で作成することができる。一例では、GPU10は、3Dグラフィックスをレンダリングするように設計できる。
GPU10は、2Dまたは3Dグラフィック画像を表示のためにレンダリングするようにCPU6とともに動作することができる。GPU10の制御ユニット21は、プリミティブを定義する1つまたは複数の頂点ポイントに対して演算を実行するようにGPU10に命令するコマンドをCPU6から受信する。制御ユニット21は、そのコマンドを復号し、GPU10の1つまたは複数の処理要素を、そのコマンドにおいて指定された演算を実行するように構成する。制御ユニット21は、さらに、コマンド内に含まれる情報(たとえば、プリミティブまたは頂点の情報)をGPUメモリ12(図1)に、またはGPU10内の1つまたは複数のバッファ(図示せず)内に、またはGPU10の処理要素内に、記憶することができる。制御ユニット21は、GPU10の処理要素に特定のグラフィックス処理演算を実行させる命令のセットを、GPU10の処理要素の各々にロードすることができる。図2に示す例では、GPU10の処理要素には、頂点シェーダ22、プリミティブセットアップユニット24、およびピクセルシェーダ26がある。他の処理要素をGPU10中に含めることもできるが、説明を簡単で容易にするために図2には特に示していない。
頂点シェーダ22、プリミティブセットアップユニット24、およびピクセルシェーダ26は、パイプラインとして動作することができる。パイプラインとして動作するとき、頂点シェーダ22は、入力データの第1のセットに対して1つまたは複数のグラフィックス演算の第1のセットを実行し、中間結果の第1のセットを出力する。プリミティブセットアップユニット24は、頂点シェーダ22によって出力された中間結果に対して1つまたは複数のグラフィックス演算の第2のセットを実行し、中間結果の第2のセットを出力する。初期入力データの第2のセットに対して、頂点シェーダ22はグラフィックス演算の第1のセットを実行し、プリミティブセットアップユニット24はグラフィックス演算の第2のセットを実行する。表示のためにグラフィックス画像が発生されるまで、グラフィックス処理は同様の方法で続く。
頂点シェーダ22は、CPU6によって発生された1つまたは複数の頂点ポイントを定義する頂点の属性情報のシーケンスを得るように構成できる。頂点シェーダ22は、頂点の属性情報のシーケンスをデバイスメモリ8(図1)から取り出すことができる。CPU6から受信したコマンドは、頂点の属性情報が記憶されたデバイスメモリ8内のロケーションを示すことができる。代替的に、CPU6は、頂点の属性情報をそのコマンド内に、または1つまたは複数の後続のコマンドに含めることができる。
頂点の属性情報は、位置の属性情報、1つまたは複数のカラー属性情報、1つまたは複数のテクスチャ属性情報、1つまたは複数のライティング属性情報、1つまたは複数の透明度の属性情報などを含むことができる。位置の属性情報は、頂点ポイントのシーケンスにおける現在の頂点ポイントの順序位置を示すインデックス番号とすることができる。たとえば、曲線がN個の頂点ポイントを有するとき、インデックス番号は0からNまでの整数を備える。代替的に、頂点ポイントの位置の属性情報は、モデル空間における曲線上にあるポイントのロケーションを表す位置座標、たとえば、2Dの場合は(xo,yo)座標とすることができる。頂点ポイントの位置の属性情報は、たとえば、グラフィックスオーサリング仕様(たとえば、OpenVG)で指定できる、特定のコマンドセグメントに対応する数学的表現を使用してCPU6によって計算できる。たとえば、OpenVGを使用して楕円弧曲線として定義される曲線の場合、次式を使用して頂点ポイントの位置の属性情報を計算することができる。
Figure 2012511783
上式で、(xo,yo)はモデル空間における曲線上の頂点ポイントの位置座標であり、aは楕円の半長軸であり、bは楕円の半短軸であり、0≦θ≦2πである。式(1)および式(2)とともに、CPU6は、変数a、b、およびθをGPU10に送信することができる。上記で説明したように、モデル座標空間は、一般に浮動小数点数を使用して、グラフィックス処理を利用するソフトウェアアプリケーションの命令によってグラフィックス画像がどのように定義されるかを表す。
位置の属性情報に基づいて、頂点シェーダ22はディスプレイ座標空間における位置座標を判断する。(ユーザまたはデバイス座標空間と呼ばれることがある)ディスプレイ座標空間は、グラフィックス画像がデバイス、たとえば、ディスプレイ上でどのように表示されるかを表す。ディスプレイ16は整数個の物理ピクセルのアレイからなるので、デバイス座標空間における位置座標(x,y)は、ディスプレイ16上のピクセルロケーションにマッピングする。頂点シェーダ22は、以下でさらに詳細に説明するように、グラフィカルソフトウェアアプリケーションによって定義された曲線を表す同じ数式を使用して、ただしディスプレイ座標空間に変換される変数(または制御ポイント)を用いて、頂点ポイントの位置座標を計算することができる。
頂点シェーダ22は、他の入力頂点の属性情報に対していくつかの他の演算を実行することができる。頂点シェーダ22は、頂点ポイントのカラー属性情報、テクスチャ属性情報、ライティング属性情報、または透明度の属性情報のうちの1つまたは複数を変更するために、1つまたは複数の演算を実行することができる。簡単のために、本開示では、頂点ポイントの位置座標の変換のみについて説明する。ただし、頂点シェーダ22は他の頂点の属性情報に対して他の演算を実行することができることを理解されたい。
GPU10のハードウェアリソースをより効率的に利用し、画像がディスプレイ16にレンダリングされる速度を増加させるために、頂点シェーダ22は1つまたは複数の頂点ポイントを除去することができる。頂点シェーダ22は、たとえば、空間的繰返しの(すなわち、冗長な)頂点ポイントを除去するか、直線上にある余分の頂点ポイントを除去するか、または両方を行うことができる。
ディスプレイ座標空間における位置座標はピクセルロケーションの整数に対応するので、2つ以上の頂点ポイントが、いくつかの例では、同じピクセルロケーションにマッピングすることがある。言い換えれば、2つ以上の頂点ポイントが、ディスプレイ座標空間において実質的に同じ位置座標を有することがある。たとえば、モデル座標空間における、または2つの連続するインデックス番号で表される、2つ以上の頂点ポイントは、頂点シェーダ22によって変換されると、ディスプレイ座標空間における実質的に同じ位置座標に対応することがある。したがって、GPU10は、特定のピクセルロケーションと対応する2つ以上の頂点ポイントを発生することがある。このようにして、GPU10はディスプレイ座標空間において繰返しの頂点ポイントを発生することがある。ディスプレイ座標空間における頂点ポイントは、プリミティブをレンダリングするのに不要である冗長な情報と見なすことができる。
GPU10の並列構造により、GPU10の処理要素は、プリミティブをレンダリングする際に必要とされる頂点ポイントと並列に、プリミティブをレンダリングするのに不要である頂点ポイントに作用することがある。たとえば、GPU10は、直線上にある繰返しの頂点ポイントまたは余分の頂点ポイントに作用することがあり、それにより、利用可能なハードウェアの使用が非効率的になり、ならびに画像がディスプレイ16にレンダリングされる速度が低減する。繰返しの、または場合によっては余分の頂点ポイントに作用する代わりに、GPU10が、繰返しの頂点ポイント、たとえば、ディスプレイ座標空間における実質的に同じ位置座標に対応する頂点ポイントを廃棄すればより効率的となり、それによって、GPU10は、非繰返しの頂点ポイントに作用するためのGPU10のハードウェアリソースを利用することができるようになる。
この目的で、頂点シェーダ22は、本開示の一態様によれば、1つまたは複数の頂点ポイントを除去することができる。一例では、頂点シェーダ22は、GPU10のハードウェアリソースをより効率的に利用し、画像がディスプレイ16にレンダリングされる速度を増加させるために、たとえば、ディスプレイ座標空間において同じまたは実質的に同じ位置座標を有する、冗長である頂点ポイントをグラフィックスパイプラインから除去することができる。一態様では、頂点シェーダ22は、現在の頂点ポイントについての位置座標、ならびに少なくとも1つの前の頂点ポイントについての位置座標を計算することができる。頂点シェーダ22は、現在のおよび前の頂点ポイントの位置座標(すなわち、ディスプレイ座標空間における位置座標)を比較し、現在のおよび前の頂点ポイントの位置座標が実質的に同じであるとき、現在の頂点ポイントを廃棄する。現在の頂点ポイントが頂点シェーダ22によって廃棄されたとき、頂点シェーダ22は、いかなる出力をも与えないことがある。代替的に、頂点シェーダ22は、現在の頂点ポイントが廃棄されたことを示す信号を出力することがある。その信号により、パイプラインの次の処理段は、その処理段が頂点ポイントを受信しないことを知ることができ得、リソースは他の演算のために解放できる。
ディスプレイ座標空間における現在のおよび前の頂点ポイントの位置座標が実質的に同じでないとき、頂点シェーダ22は、現在の頂点ポイントの、ディスプレイ座標空間における位置座標を含む、頂点の属性情報を出力する。この場合、少なくとも1つの前の頂点ポイントの位置座標は、現在の頂点ポイントが冗長であるかどうかを判断するために使用される。GPU10は、すべてのN+1個の頂点に対して同様のプロセスを並列に実行することができる。
頂点シェーダ22を構成する際に、制御ユニット21は、頂点シェーダ22に上記で説明した機能を実行させる命令のセットを頂点シェーダ22にロードすることができる。以下でさらに詳細に説明するように、モデル空間および/またはディスプレイ座標空間において曲線の位置座標を計算するための数式、ならびにその位置座標を計算する際に必要な任意の変数を定義する、命令を頂点シェーダ22にロードすることができる。以下は、頂点シェーダ22にロードでき、繰返しの頂点ポイントを除去するために使用できる例示的な擬似コードである。
Figure 2012511783
上記の例示的な擬似コードでは、頂点シェーダ22は、インデックスまたはシーケンス番号を表す位置の属性情報(index)を使用して現在のおよび前の頂点ポイントの位置座標を頂点シェーダ22に得させる命令とともに構成される。その例示的な擬似コードでは、頂点シェーダ22は、開始角が0である1ラジアンの円弧についての位置座標を計算するように構成される。特に、頂点シェーダ22は、円弧の半径、最大インデックス値N、グラフィカルソフトウェアアプリケーションによって定義された曲線についてのモデル空間におけるxおよびyの位置座標を定義する数式、すなわち、それぞれ、x=radius*cos(t)およびy=radius*sin(t)とともに構成される。
頂点シェーダ22は、位置の属性情報(index)および最大インデックス値(N)に基づいて浮動小数点値tを計算する。頂点シェーダ22はまた、変数tのステップサイズ(delta)を1/Nであるものとして計算し、それは均一なステップサイズを表す。他の例では、ステップサイズは、曲線の曲率に基づいて適応するものとすることができる。計算された浮動小数点値tを使用して、頂点シェーダ22は、ディスプレイ座標空間におけるx軸位置座標(x_curr)とディスプレイ座標空間におけるy軸位置座標(y_curr)とを計算する。特に、頂点シェーダ22は、x_currをradius*cos(t)の整数値として計算し、ただし、tはindex/Nの浮動小数点値に等しい。言い換えれば、頂点シェーダ22は、式radius*cos(t)によって出力された値を最も近い整数値に丸める。同様に、頂点シェーダ22は、式radius*sin(t)によって出力された値を最も近い整数値に丸めることによってy_currを計算する。このようにして、頂点シェーダ22は、モデル座標空間における位置座標を最も近い整数値に丸めることによって、モデル座標空間における位置座標をディスプレイ座標空間における位置座標に変換する。
さらに、頂点シェーダ22は、前の頂点ポイントについてディスプレイ座標空間における位置座標(x_prev,y_prev)を同様に計算することができる。特に、頂点シェーダ22は、式radius*cos(t−delta)によって出力された値を最も近い整数値に丸めることによってx_prevを計算し、式radius*sin(t−delta)によって出力された値を最も近い整数値に丸めることによってy_prevを計算する。上記の例示的な擬似コードでは、頂点シェーダ22が、モデル座標空間における位置座標を最も近い整数値に丸めることによってモデル座標空間における位置座標をディスプレイ座標空間における位置座標に変換するが、頂点シェーダ22は、ディスプレイ座標空間における位置座標を浮動小数点数として保持することができる。さらに、頂点シェーダ22は、変換プロセス中に、スケーリング、回転など、他の変換演算を実行することができる。この場合、浮動小数点値を最も近い整数値に丸めることに加えて、他の数学演算が実行できる。
頂点シェーダ22は、現在の頂点ポイントの計算された位置座標を前の頂点ポイントの計算された位置座標と比較し、位置座標がディスプレイ座標系において同じであるとき、現在の頂点ポイントを廃棄する。言い換えれば、頂点シェーダ22は、両方のx軸位置座標が同じであり(x_curr=x_prev)、両方のy軸位置座標が同じである(y_curr=y_prev)とき、現在の頂点ポイントを廃棄する。gl_Position.xは、頂点のx座標の位置に等しい値をとる浮動小数点値であり、gl_Position.yは、頂点のy座標の位置に等しい値をとる浮動小数点値である。gl_Position.xおよびgl_Position.yにより、頂点シェーダ22は、その頂点位置が配置される固有のレジスタを指定することができる。ディスプレイ座標空間における位置座標が浮動小数点数として表される場合は、2つの頂点ポイントの値の差が、互いから1/8ピクセル以内であるとき、すなわち、ディスプレイ座標空間における2つの頂点ポイントの位置座標が、両方の次元(たとえば、x次元とy次元)で0.125未満だけ異なるとき、現在の頂点ポイントを廃棄する。上記ではディスプレイ座標空間において行われるものとして説明したが、頂点シェーダ22は、モデルまたはユーザ座標空間においてその比較を実行することによって頂点ポイントを廃棄することができる。
上記の例では、頂点シェーダ22は、頂点位置の属性情報として現在の頂点ポイントのインデックス値を入力する。そのインデックス値は0からNまでの整数値をとることができ、各後続の頂点ポイントはシーケンスの次のインデックス値を有する。言い換えれば、現在の頂点ポイントのインデックス値が「2」である場合、前の頂点ポイントのインデックス値は「1」であり、後続の頂点ポイントのインデックス値は「3」であり、以下同様である。本開示の技法の一態様では、GPU10は、この属性情報をデバイスメモリ8から読み取る代わりに、またはその属性情報を含むコマンドをCPU6から受信する代わりに、整数のこのシーケンスを発生することができる。GPU10内で整数のシーケンスを発生することにより、バス18上で使用される帯域幅の量を低減することができる。
制御ユニット21は、たとえば、0からNまでの処理された頂点ポイントをカウントするために使用されるカウンタ28を維持することができる。したがって、頂点ポイントの頂点の属性情報が頂点シェーダ22にロードされたとき、制御ユニット21は一般にカウンタ28を増分する。いくつかの態様では、制御ユニット21は、カウンタ28をインデックス属性情報のソースとして使用することができる。たとえば、制御ユニット21は、カウンタ28の値を現在の頂点ポイントについてのインデックス属性情報として与え、現在のインデックス値を頂点シェーダ22にロードしたときに、カウンタ28の値を1だけ増分することができる。これにより、デバイスメモリ8またはCPU6から位置頂点の属性情報をロードする必要がなくなるので、バス18上での着信帯域幅消費の量が減少する。
頂点シェーダ22は、いくつかの例では、実質的直線上にある余分の頂点ポイントを除去することによって、CPU6から受信した頂点ポイントのセットから頂点ポイントの数を低減することができる。言い換えれば、頂点シェーダ22は、前の頂点ポイントおよび後続の頂点ポイントを使用して確立される直線上に実質的にある中間頂点ポイントを除去することができる。本開示で説明するように、直線上にある中間または余分の頂点ポイントは、プリミティブをレンダリングするのに不要であることがある。頂点シェーダ22は、冗長な頂点ポイントを除去することなしに、または冗長な頂点ポイントを除去することに加えて、実質的直線上にある余分のまたは中間頂点ポイントを除去することができる。
直線上の余分のまたは中間頂点ポイントを除去するために、頂点シェーダ22は、3つの頂点ポイントをもつ直線セグメントの場合、現在の頂点ポイントについて、ならびに前の頂点ポイントおよび後続の頂点ポイントについて、ディスプレイ座標空間における位置座標を計算することができる。同様の技法は、4つ以上の頂点ポイントをもつ直線セグメントで使用できる。頂点シェーダ22は、上記で詳細に説明したように、それらの頂点ポイントの位置座標を同様に計算することができる。一例として、頂点シェーダ22は、上記の例示的な擬似コードにおいて説明したように、ディスプレイ座標空間における、現在の頂点ポイントについての位置座標(x_curr,y_curr)および前の頂点ポイントについての位置座標(x_prev,y_prev)を計算し、さらに、t=t+deltaを使用して後続の頂点ポイントの変換された位置座標(x_subs,y_subs)を計算することができる。
前の頂点ポイント、現在の頂点ポイントおよび後続の頂点ポイントについて変換された位置頂点ポイントを計算した後、頂点シェーダ22は、それらの変換された位置頂点ポイントが実質的直線上にあるかどうかを判断する。そうするために、頂点シェーダ22は、現在の頂点ポイントと前の頂点ポイントとの位置座標を接続するラインセグメントの傾きを、後続の頂点ポイントと現在の頂点ポイントとの位置座標を接続するラインセグメントの傾きと比較することができる。両方のラインセグメントの傾きが実質的に等しい(たとえば、許容差、または以下の式(3)中の「THR」以内である)とき、頂点シェーダ22は、それらの頂点ポイントが実質的直線上にあると判断する。頂点シェーダ22は、たとえば、次式が満たされたとき、変換された位置頂点ポイントが直線上にあると判断することができる。
Figure 2012511783
頂点シェーダ22は、頂点ポイントの変換された位置座標が実質的直線上にある(すなわち、THR以下である)と判断したとき、現在の頂点ポイントを廃棄する。いくつかの例では、頂点シェーダ22は、頂点ポイントが直線上にあるかどうかを判断する際に、特定の程度の誤りを許容することができる。
いくつかの例では、GPU10は、曲線の高次導関数を計算し、頂点ポイントを廃棄すべきかどうかを判断する際にその高次導関数を使用することができる。たとえば、GPU10は、曲線の曲率(たとえば、傾き)を表す2次導関数を計算し、頂点ポイントのロケーションにおける曲線の曲率に基づいて、頂点ポイントを廃棄すべきかどうかを判断することができる。たとえば、曲線の曲率が頂点ポイントのロケーションにおいて高い値を有する場合、GPU10は、その頂点ポイントを廃棄しないことを判断することができる。
頂点シェーダ22が、現在の頂点ポイントを保持することを判断したとき、たとえば、その頂点ポイントが、重複または冗長な頂点ポイントでないか、あるいは隣接頂点ポイントをもつ直線上にないとき、頂点シェーダ22は、変換された頂点ポイント、また変換された頂点ポイントを定義する属性情報を出力する。一例では、頂点シェーダ22は、その出力された頂点ポイント、または変換された頂点ポイントを定義する属性情報を、グラフィックスパイプライン20における次の段、たとえば、プリミティブセットアップユニット24に直接供給することができる。他の例では、頂点シェーダ22は、変換された頂点ポイント、または変換された頂点ポイントを定義する属性情報をGPUメモリ12またはデバイスメモリ8などのメモリに記憶することができる。
上記で説明した例では、頂点シェーダ22は、前のおよび/または後続の頂点ポイントを使用して、現在の頂点ポイントに関する判断を行う。言い換えれば、頂点シェーダ22は、前のおよび/または後続の頂点ポイントの位置座標を計算して、頂点が、前の頂点ポイントの重複であるかどうか、または前の頂点ポイントおよび後続の頂点ポイントをもつ直線上にあるかどうかを判断する。したがって、曲線上の各頂点ポイントについて、頂点シェーダ22は、現在の頂点ポイントを変換するために、2つ以上の追加の「オーバーヘッド」計算を実行する。たとえば、現在の頂点ポイントの位置座標が前の頂点ポイントの位置座標と実質的に同じであるかどうかを判断するために、頂点シェーダ22は、現在の頂点ポイントの位置座標を変換することに加えて、前の頂点ポイントの位置座標を変換する。このことは、実行されたであろう唯一の演算が現在の頂点ポイントの位置座標を変換することであると仮定すると、オーバーヘッド計算の100%の増加(たとえば、実行される演算の数の100%の増加)をもたらすことがある。別の例として、現在の頂点ポイントの位置座標が、前のおよび後続の頂点ポイントをもつ直線上にあるかどうかを判断するために、頂点シェーダ22は、前の頂点ポイントと、現在の頂点ポイントと、後続の頂点ポイントとの位置座標を変換する。このことは、実行されたであろう唯一の演算が現在の頂点ポイントの位置座標を変換することであると仮定すると、オーバーヘッド計算の200%の増加をもたらすことがある。しかしながら、これらのオーバーヘッド計算は、グラフィックスパイプライン20において後で実行されるいくつかの他のより複雑な計算をなくすことができる。
いくつかの例では、頂点シェーダ22は、複数の頂点ポイントを変換することによって、このオーバーヘッド計算を低減するように構成できる。一例として、頂点シェーダ22は、4つの頂点ポイントを同時に変換するように構成できる。この例では、頂点シェーダ22は、インデックス値(i)を得て、5つの頂点ポイント、たとえば、インデックス値i−1、i、i+1、i+2、およびi+3に対応する頂点ポイントについての位置座標を計算することができる。頂点シェーダ22は、頂点i、i+1、i+2、およびi+3の各々の位置座標を、それぞれ、インデックス値i−1、i、i+1、およびi+2と対応する、前の頂点ポイントの各々の位置座標と比較して、それらの頂点ポイントのいずれかが重複であるかどうかを判断することができる。頂点シェーダ22は、(いずれも重複でない場合は)最高4つの変換された頂点ポイントを出力することができる。このようにして、頂点シェーダ22は、計算オーバーヘッドを100%(入力頂点ポイントごとに1回のオーバーヘッド計算)から25%(4つの入力頂点ポイントごとに1回のオーバーヘッド計算)に低減することができる。
プリミティブセットアップユニット24は、変換された頂点ポイントを使用してプリミティブを発生する。プリミティブセットアップユニット24は、たとえば、3つの変換された頂点ポイントのセットを使用して、三角形プリミティブ、たとえば、三角形ストリップ、三角形ファン、または別々の三角形を発生することができる。ただし、他の例では、プリミティブセットアップユニット24は、3つ未満の変換された頂点ポイントまたは4つ以上の変換された頂点ポイントを使用して、他のタイプのプリミティブを発生することができる。たとえば、プリミティブセットアップユニット24によって発生できる他のプリミティブには、ポイント、ラインストリップ、ラインループ、別々のライン、四辺形ストリップ、別々の四辺形、または他のタイプの多角形がある。例示のために、本開示では、三角形ファンプリミティブを発生するものとしてプリミティブセットアップユニット24について説明する。ただし、本明細書で広く説明する技法は、三角形ファンプリミティブに限定されるべきではなく、むしろ任意のタイプのプリミティブに使用できる。
三角形ファンは一連の接続された三角形である。三角形ファンの接続された三角形の各々は、各隣接三角形と2つの共通頂点ポイント、すなわち、ルート頂点ポイントと少なくとも1つの他の頂点ポイントとを共有する。たとえば、三角形ファンプリミティブを発生するために、プリミティブセットアップユニット24はルート頂点ポイントを定義する。たいていの場合、プリミティブセットアップユニット24によって発生されたルート頂点ポイントは、オブジェクトを定義する曲線上に位置しない。代わりに、ルート頂点は、オブジェクトを定義する曲線の凹部分に隣接して位置することができる。三角形ファンプリミティブを発生するために、プリミティブセットアップユニット24は、ルート頂点ポイントを、オブジェクトを定義する曲線上にある2つの頂点ポイントと接続する。このようにして、プリミティブセットアップユニット24によって発生された三角形プリミティブの各々は、ルート頂点ポイントと、オブジェクトを定義する曲線上にある少なくとも1つの頂点ポイントとを共有する。したがって、プリミティブセットアップユニット24は、わずかN+2個の頂点ポイントを使用して、N個の三角形プリミティブをもつ三角形ファンを発生することができる。
通常、頂点ポイントが廃棄されたとき、プリミティブセットアップユニット24は、廃棄された頂点ポイントを含んでいるすべてのプリミティブを廃棄する。たとえば、三角形ファンの場合、プリミティブセットアップユニット24は、廃棄された頂点ポイントごとに2つの隣接する三角形プリミティブを廃棄する。ピクセルが繰返しであるために、または現在の頂点ポイントが、隣接頂点ポイントを接続する直線上にあるために、そのピクセルが廃棄されたときなど、いくつかの例では、廃棄されたピクセルを含んでいるすべてのプリミティブを廃棄することは望ましくないことがある。したがって、プリミティブセットアップユニット24は、廃棄された頂点ポイントを含むすべてのプリミティブを廃棄するわけではないことがある。代わりに、プリミティブセットアップユニット24は、廃棄された頂点ポイントが決して頂点ポイントでないかのように、プリミティブをセットアップすることができる。たとえば、三角形ファンの場合、プリミティブセットアップユニット24は、三角形ファンのルート頂点と、前の廃棄されていない頂点ポイントと、廃棄された頂点ポイントの後に来る最初の廃棄されていない頂点とを使用して、三角形プリミティブを発生することができる。したがって、廃棄された頂点ポイントを含む2つの隣接する三角形プリミティブを廃棄するのではなく、プリミティブセットアップユニット24は、2つの隣接する三角形プリミティブの代わりに単一の三角形プリミティブを形成する。
ピクセルシェーダ26は、頂点の属性情報に基づいて、プリミティブセットアップユニット24によって出力されたプリミティブをピクセルに変換する。ピクセルシェーダ26は、たとえば、プリミティブに対してクリッピング演算を実行し、スクリーン中のピクセルのうちのどのピクセルがオブジェクトのジオメトリ内にあり、したがって描画される必要があるかを判断することができる。さらに、ピクセルシェーダ26は、ピクセルデータを発生するために、プリミティブの頂点ポイントの頂点の属性情報の補間を実行することができる。ピクセルシェーダ26は、さらに、各ピクセルロケーションにおいて表示するカラー値を発生するために、ピクセルごとのテクスチャ化、フォグ演算および着色演算を実行することができる。
本開示で説明する技法は様々な他のアーキテクチャで実装できるので、図2に示すアーキテクチャは例にすぎない。たとえば、GPU10は、頂点シェーダ22およびピクセルシェーダ26に起因する機能を実行することができる単一のシェーダコアを利用することができる。単一のシェーダコアは、たとえば、グラフィックス演算があるパイプラインの段に基づいて、頂点シェーダ22またはピクセルシェーダ26として機能するように、制御ユニット21によって構成できる。さらに、図1に示す機能は、ハードウェアおよび/またはソフトウェア構成要素の任意の適切な組合せによって実現できる。
図3は、本開示の技法に従って1つまたは複数の頂点ポイントを廃棄する例示的な頂点シェーダ22Aのブロック図である。頂点シェーダ22Aは、たとえば、図2の頂点シェーダ22と対応することがある。頂点シェーダ22Aは、現在の頂点ポイントおよび少なくとも1つの追加の頂点ポイントについてディスプレイ座標空間における位置座標を計算する位置座標計算モジュール30と、計算された頂点ポイントのいずれかを廃棄すべきかどうかを判断する頂点廃棄モジュール32とを含む。
位置座標計算モジュール30は、少なくとも1つの頂点ポイントを表す1つまたは複数の頂点の属性情報を得る。図3の例では、位置座標計算モジュール30は、他の頂点ポイントの中の上記頂点ポイントの位置を示すインデックス属性情報iを得る。位置座標計算モジュール30は、そのインデックス属性情報に関連する頂点ポイント、すなわち、現在の頂点ポイントについてディスプレイ座標空間における位置座標を計算する。位置座標計算モジュール30はまた、少なくとも1つの他の頂点ポイント、たとえば、前の頂点ポイントについてディスプレイ座標空間における位置座標を計算する。図2に関して上記で詳細に説明したように、位置座標計算モジュール30は、グラフィカルソフトウェアアプリケーションによって定義された曲線を表す数式と、インデックス属性情報iに応じて計算された変数とを使用して、その位置座標を計算することができる。図3では、現在の頂点ポイントの位置座標と前の頂点ポイントの位置座標は、それぞれ、(x_curr,y_curr)と(x_prev,y_prev)として表されている。
頂点廃棄モジュール32は、現在のおよび前の頂点ポイントの計算された位置座標を受信する。頂点廃棄モジュール32は、現在の頂点ポイントの計算された位置座標を前の頂点ポイントの計算された位置座標と比較し、ディスプレイ座標空間における位置座標が実質的に同じであるとき、現在の頂点ポイントを廃棄する。言い換えれば、頂点廃棄モジュール32は、x_curr=x_prevおよびy_curr=y_prevであるとき、現在の頂点ポイントを廃棄する。このようにして、頂点シェーダ22Aはディスプレイ座標空間において冗長な頂点ポイントを除去する。
現在の頂点ポイントを廃棄すると、頂点廃棄モジュール32は、現在の頂点ポイントが廃棄されたことを示す廃棄信号を出力することがある。代替的に、頂点廃棄モジュール32は、現在の頂点ポイントが廃棄されたとき、いかなる信号をも出力しないことがある。頂点廃棄モジュール32が現在の頂点ポイントを廃棄しないとき、すなわち、ディスプレイ座標空間における現在のおよび前の頂点ポイントの位置座標が異なるとき、頂点廃棄モジュール32は現在の頂点ポイントの位置座標(x_curr,y_curr)を出力する。
位置座標計算モジュール30について、受信したインデックス属性情報に基づいて現在のおよび前の頂点ポイントについての位置座標を計算することに関して説明するが、位置座標計算モジュール30は、ディスプレイ座標空間における現在のおよび前の頂点ポイントについての位置座標を計算する際に使用する他の位置の属性情報を受信することができる。たとえば、位置座標計算モジュール30は、モデル座標空間における現在のおよび前の頂点ポイントの位置座標を受信し、変換式を使用してディスプレイ座標空間における現在のおよび前の頂点ポイントの位置座標を計算することができる。さらに別の例では、位置座標計算モジュール30は、ディスプレイ座標空間における現在の頂点ポイントの位置座標のみを計算することができる。この場合、位置座標計算モジュール30は、比較のために、ディスプレイ座標空間における前の頂点ポイントの前に計算された位置座標を受信することができる。
図4は、本開示の一態様による、複数の頂点ポイントを出力する例示的な頂点シェーダ22Bのブロック図である。頂点シェーダ22Bは、たとえば、図2の頂点シェーダ22と対応することがある。頂点シェーダ22Bは、複数の頂点ポイントについてディスプレイ座標空間における位置座標を計算する位置座標計算モジュール40と、計算された頂点ポイントのいずれかを廃棄すべきかどうかを判断する頂点廃棄モジュール42とを含む。
位置座標計算モジュール40は、少なくとも1つの頂点ポイントを表す1つまたは複数の頂点の属性情報を得る。図4の例では、位置座標計算モジュール30は、頂点ポイントのシーケンスにおける位置を示すインデックス属性情報iを得る。位置座標計算モジュール40は、複数の頂点ポイントについてディスプレイ座標空間における位置座標を計算する。図4の例では、位置座標計算モジュール40は、5つの頂点ポイントのピクセル座標、(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)および(x5,y5)を計算する。図2に関して上記で詳細に説明したように、位置座標計算モジュール40は、グラフィカルソフトウェアアプリケーションによって定義された曲線を表す数式と、インデックス属性情報iに応じて計算された変数とを使用して、その位置座標を計算することができる。
頂点廃棄モジュール42は、複数の頂点ポイントの計算された位置座標を受信し、それらの頂点ポイントのいずれかを廃棄すべきかどうかを判断する。頂点廃棄モジュール42は、たとえば、頂点ポイントの計算された位置座標(x2,y2)〜(x5,y5)の各々を、それぞれ、前の頂点ポイントの位置座標(x1,y1)〜(x4,y4)と比較することができる。頂点廃棄モジュール42は、対応する前の頂点ポイントと実質的に同じである、ディスプレイ座標空間における位置座標を有する頂点ポイントを廃棄する。このようにして、頂点シェーダ22Bはディスプレイ座標空間において冗長な頂点ポイントを除去する。
頂点廃棄モジュール42は、さらに、頂点ポイントのうちの少なくともいくつかが、隣接する頂点ポイントをもつ直線上にあるかどうかを判断することができる。図4の例では、頂点廃棄モジュール42は、頂点ポイントの位置座標(x2,y2)〜(x4,y4)が直線上にあるかどうかを判断することができる。そうするために、頂点廃棄モジュール42は、頂点ポイントの位置座標(x2,y2)と前の頂点ポイントの位置座標(x1,y1)とを接続するラインセグメントの傾きを、後続の頂点ポイントの位置座標(x3,y3)と頂点ポイントの位置座標(x2,y2)とを接続するラインセグメントの傾きと比較することができる。両方のラインセグメントの傾きが実質的に等しい(たとえば、許容差以内である)とき、頂点廃棄モジュール42は、それらの頂点ポイントが実質的直線上にあると判断し、頂点ポイント(x2,y2)を廃棄する。頂点廃棄モジュール42は、頂点ポイントの位置座標(x3,y3)および(x4,y4)の同じ分析を実行する。(x1,y1)の前には、ラインセグメントの傾きを計算するために使用する、前の頂点ポイントについての位置座標がなく、(x5,y5)の後には、ラインセグメントの傾きを計算するために使用する、後続の頂点ポイントについての位置座標がないので、頂点廃棄モジュール42は、頂点ポイントの位置座標(x1,y1)および(x5,y5)に対してライン分析を実行しないことがある。
廃棄された頂点ポイントがない場合、頂点廃棄モジュール42は、最高4つの頂点ポイントについての位置座標を出力することができる。図4に示す例では、たとえば、頂点ポイントの位置座標(x3,y3)が、重複であるか、またはその隣接頂点ポイントをもつ直線上にあるので、頂点廃棄モジュール42は頂点ポイントの位置座標(x3,y3)を廃棄する。したがって、頂点廃棄モジュール42は3つの頂点ポイントの位置座標を出力する。複数の頂点ポイントの位置座標を計算し、出力することによって、頂点シェーダ22Bは計算オーバーヘッドを低減することができる。たとえば、頂点シェーダ22Bが、最高4つの頂点ポイントについての位置座標を出力することができるとき、頂点シェーダ22Bは、計算オーバーヘッドを100%(入力頂点ポイントごとに1回のオーバーヘッド計算)から25%(4つの入力頂点ポイントごとに1回のオーバーヘッド計算)に低減することができる。図4で説明する例では、頂点シェーダ22Bは、最高4つの頂点ポイントについての位置座標を出力することができるが、頂点シェーダ22Bは、任意の数の頂点ポイントについての位置座標を出力するように構成できる。たとえば、頂点シェーダ22Bは、4つよりも多いまたは少ない頂点ポイントについての位置座標を出力するように構成できる。
図5は、ディスプレイ座標空間において繰返しの頂点ポイントを廃棄する頂点シェーダ22の例示的な動作を示す流れ図である。頂点シェーダ22は、レンダリングすべき曲線上にある少なくとも1つの頂点ポイントを定義する1つまたは複数の頂点の属性情報を得る(50)。頂点の属性情報は、頂点ポイントのシーケンスにおける現在の頂点ポイントの位置を示す、現在の頂点ポイントに関連するインデックス番号などの、位置の属性情報を含む。別の例では、位置の属性情報は、2D曲線の場合は(x,y)座標、または3D曲線の場合は(x,y,z)座標などの、位置座標とすることができる。頂点の属性情報は、さらに、1つまたは複数のカラー属性情報、1つまたは複数のテクスチャ属性情報、1つまたは複数のライティング属性情報など、頂点ポイントに関連する他の情報を含むことができる。頂点シェーダ22は、頂点の属性情報のシーケンスをデバイスメモリ8から得るか、CPU6からのコマンドから得るか、またはインデックス番号の場合は、GPU10内のカウンタ28から得ることができる。
頂点シェーダ22は、ディスプレイ座標空間における現在の頂点ポイントの位置座標を計算する(52)。現在の頂点ポイントは、頂点シェーダ22が現在作用している頂点ポイントである。頂点シェーダ22は、ディスプレイ座標空間における前の頂点ポイントの位置座標をも計算する(54)。前の頂点ポイントは、現在の頂点ポイントの直前にくる頂点ポイントとすることができる。たとえば、インデックス属性情報の場合、頂点シェーダ22は、たとえば、図2の擬似コードに関して示し、説明したように、グラフィカルソフトウェアアプリケーションによって定義された曲線を表す数式と、インデックス属性情報iに応じて計算された変数とを使用して、その位置座標を計算することができる。現在のおよび前の頂点ポイントの位置座標は、ディスプレイ上のロケーション、たとえば、ディスプレイ上に曲線を提示するために使用される、ピクセルのアレイの中でのピクセルロケーションを表すことができる。
頂点シェーダ22は、現在のおよび前の頂点ポイントのディスプレイ位置座標が実質的に同じであるかどうかを判断する(56)。たとえば、頂点シェーダ22は、現在の頂点ポイントの計算されたディスプレイ位置座標を前の頂点ポイントの計算されたディスプレイ位置座標と比較して、それらのディスプレイ位置座標が実質的に同じであるかどうか、たとえば、許容しきい値以内であるかどうかを判断することができる。それらのディスプレイ位置座標が実質的に同じであるとき、頂点シェーダ22は現在の頂点ポイントを廃棄する(57)。いくつかの例では、頂点シェーダ22は、現在の頂点ポイントが廃棄されたことを示す廃棄信号を出力することがある。代替的に、頂点シェーダ22は何も出力しないことがあり、たとえば、頂点ポイントが廃棄されたことを他のモジュールまたは要素に示すことなしに頂点ポイントを廃棄することがある。このようにして、頂点シェーダ22はディスプレイ座標空間において冗長な頂点ポイントを除去する。
頂点シェーダ22は、それらのディスプレイ位置座標が実質的に同じでないと判断したとき、ディスプレイ座標空間における現在の頂点ポイントの位置座標を出力する(58)。図5の流れ図では、頂点シェーダ22が、単一の頂点ポイントを廃棄すべきか否かに関する判断を行うことについて説明するが、頂点シェーダは、上記で詳細に説明したように、2つ以上の頂点ポイントについて同時にそのような判断を行うように構成できる。たとえば、頂点シェーダ22は、N個の頂点ポイントについての位置座標、ならびにN個の頂点ポイントの直前にある1つの頂点ポイントの位置座標を計算することによって、N個の頂点ポイントを廃棄すべきかどうかを同時に判断するように構成できる。頂点シェーダ22は、N個の頂点ポイントの各々の位置座標を、対応する前の頂点ポイントの位置座標と比較して、N個の頂点ポイントのいずれかが重複であるかどうかを判断することができる。頂点シェーダ22は、(いずれも重複でない場合は)最高N個の頂点ポイントを出力することができる。このようにして、頂点シェーダ22は、計算オーバーヘッドを100%(入力頂点ポイントごとに1回のオーバーヘッド計算)から25%(4つの入力頂点ポイントごとに1回のオーバーヘッド計算)に低減することができる。
図6は、ディスプレイ座標空間において直線上にある少なくともいくつかの頂点ポイントを廃棄する頂点シェーダ22の例示的な動作を示す流れ図である。頂点シェーダ22は、レンダリングすべき曲線上にある少なくとも1つの頂点ポイントを定義する1つまたは複数の頂点の属性情報を得る(60)。頂点の属性情報は、頂点ポイントのシーケンスにおける現在の頂点ポイントの位置を示す、現在の頂点ポイントに関連するインデックス番号などの、位置の属性情報を含む。別の例では、位置の属性情報は、2D曲線の場合は(x,y)座標、または3D曲線の場合は(x,y,z)座標などの、位置座標とすることができる。頂点の属性情報は、さらに、法線属性情報、1つまたは複数のカラー属性情報、1つまたは複数のテクスチャ属性情報、1つまたは複数のライティング属性情報など、頂点ポイントに関連する他の情報を含むことができる。頂点シェーダ22は、頂点の属性情報のシーケンスをデバイスメモリ8から得るか、CPU6からのコマンドから得るか、またはインデックス番号の場合は、GPU10内から得ることができる。
頂点シェーダ22は、ディスプレイ座標空間における現在の頂点ポイントの位置座標を計算する(62)。現在の頂点ポイントは、頂点シェーダ22が現在作用している頂点ポイントである。頂点シェーダ22は、ディスプレイ座標空間における前の頂点ポイントの位置座標をも計算する(64)。前の頂点ポイントは、現在の頂点ポイントの直前にくる頂点ポイントとすることができる。頂点シェーダ22は、ディスプレイ座標空間における後続の頂点ポイントの位置座標をも計算する(66)。後続の頂点ポイントは、現在の頂点ポイントの直後にくる頂点ポイントとすることができる。たとえば、インデックス属性情報の場合、頂点シェーダ22は、たとえば、図2の擬似コードに関して示し、説明したように、グラフィカルソフトウェアアプリケーションによって定義された曲線を表す数式と、インデックス属性情報iに応じて計算された変数とを使用して、その位置座標を計算することができる。
頂点シェーダ22は、それらの頂点ポイントが実質的直線上にあるかどうかを判断する(68)。たとえば、頂点シェーダ22は、現在の頂点ポイントと前の頂点ポイントとの位置座標を接続するラインセグメントの傾きを、後続の頂点ポイントと現在の頂点ポイントとの位置座標を接続するラインセグメントの傾きと比較することができる。両方のラインセグメントの傾きが実質的に等しい(たとえば、許容差以内である)とき、頂点シェーダ22は、それらの頂点ポイントが実質的直線上にあると判断する。
頂点シェーダ22は、それらの頂点ポイントが実質的直線上にあると判断したとき、現在の頂点ポイントを廃棄する(70)。前の頂点ポイントと後続の頂点ポイントとを接続するラインセグメントは、前の頂点ポイントと現在の頂点ポイントとを接続し、現在の頂点ポイントと後続の頂点ポイントとを接続する、ラインセグメントと同じであるので、現在の頂点ポイントを廃棄することは、ディスプレイにレンダリングされる画像に影響を及ぼさない。頂点シェーダ22は、それらの頂点ポイントが実質的直線上にあると判断したとき、ディスプレイ座標空間における現在の頂点ポイントの位置座標を出力する(72)。頂点シェーダ22は、図5に関して説明したように、冗長な頂点ポイントを除去することなしに、または冗長な頂点ポイントを除去することに加えて、実質的直線上にある頂点ポイントを除去することができる。
本明細書で説明した技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装できる。モジュールまたは構成要素として説明する機能は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装できる。場合によっては、様々な特徴は、集積回路チップまたはチップセットなどの集積回路デバイスとして実装できる。ソフトウェアで実装した場合、本技法は、実行されたときに、上記で説明した方法の1つまたは複数を実行する命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現できる。コンピュータ可読媒体は、パッケージング材料を含むことができる、コンピュータプログラム製品の一部をなすことができる。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光学データ記憶媒体などを備えることができる。本技法は、追加または代替として、命令またはデータ構造の形態でコードを搬送または伝達し、コンピュータによってアクセス、読取り、および/または実行できるコンピュータ可読通信媒体によって、少なくとも部分的に実現できる。
コードは、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、フィールドプログラマブル論理アレイFPGA、あるいは他の等価な集積または個別論理回路など、1つまたは複数のプロセッサによって実行できる。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明する機能を、グラフィックス画像をテッセレーションするように構成された、専用のソフトウェアアプリケーションまたはハードウェアモジュールの内部に与えることができる。したがって、本開示はまた、本開示で説明した技法の1つまたは複数を実装する回路を含む様々な集積回路デバイスのいずれかを企図する。そのような回路は、単一の集積回路チップまたは複数の相互運用可能な集積回路チップで提供できる。
様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
様々な態様について説明した。これらおよび他の態様は添付した本願の特許請求の範囲内に入る。なお、本願の出願当初の請求項と同一の記載を「その他の実施例」として、以下に付記する。
[その他の実施例1]
下記を備える方法:
レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断すること;
前記複数の頂点ポイントの少なくとも一部の前記位置座標を分析すること;および、
前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄すること。
[その他の実施例2]
前記複数の頂点ポイントの各々の前記位置座標を分析することが、前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較することを備え、ただし、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にあり、
少なくとも1つの頂点ポイントを廃棄することは、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを備える、
その他の実施例1に記載の方法。
[その他の実施例3]
前記複数の頂点ポイントの各々の前記位置座標を分析することが、前記複数の頂点ポイントのうちの第3の頂点ポイントの第3の位置座標を前記第2の位置座標と比較することをさらに備え、ただし、前記第2の頂点ポイントが前記第3の頂点ポイントの直前にあり、
少なくとも1つの頂点ポイントを廃棄することは、前記第2および第3の位置座標が実質的に同じであるとき、前記第3の頂点ポイントを廃棄することを備える、
その他の実施例2に記載の方法。
[その他の実施例4]
下記をさらに備える、その他の実施例3に記載の方法:
前記第1および第2の位置座標が実質的に同じでないとき、前記第2の頂点ポイントの前記位置座標を出力すること;および、
前記第2および第3の位置座標が実質的に同じでないとき、前記第3の頂点ポイントの前記位置座標を同時に出力すること。
[その他の実施例5]
少なくとも1つの頂点ポイントを廃棄することが、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄することを備える、その他の実施例1に記載の方法。
[その他の実施例6]
前記複数の頂点ポイントの各々の前記位置座標を分析することが、
第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算することと、
前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算することと
を備え、
少なくとも1つの頂点ポイントを廃棄することは、前記第1および第2の計算された傾きが実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを備える、
その他の実施例1に記載の方法。
[その他の実施例7]
前記複数の頂点ポイントの各々の前記位置座標を分析することが、前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較することをさらに備え、
少なくとも1つの頂点ポイントを廃棄することは、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを備える、
その他の実施例6に記載の方法。
[その他の実施例8]
前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得ることをさらに備え、前記位置座標を前記判断することが、前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断することを備える、その他の実施例1に記載の方法。
[その他の実施例9]
前記インデックス値を得ることが、前記インデックス値をグラフィックス処理ユニット(GPU)のカウンタから得ることを備える、その他の実施例8に記載の方法。
[その他の実施例10]
前記曲線をディスプレイに表示するために前記曲線をレンダリングすることをさらに備える、その他の実施例1に記載の方法。
[その他の実施例11]
前記頂点ポイントが2次元曲線上にあり、
前記複数の頂点ポイントの各々の前記位置座標を分析することが、3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを用いて、前記複数の頂点ポイントの各々の前記位置座標を分析することを備え、
前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記3D GPUの前記頂点シェーダを用いて、前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、その他の実施例1に記載の方法。
[その他の実施例12]
前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記複数の頂点ポイントのうちの少なくとも1つの他の頂点ポイントと同じピクセル位置にマッピングする、前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、その他の実施例1に記載の方法。
[その他の実施例13]
下記を実行する処理ユニットを備えるデバイス:
レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断すること;
前記複数の頂点ポイントの少なくとも一部の前記位置座標を分析すること;および、
前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄すること。
[その他の実施例14]
前記処理ユニットが下記を実行するその他の実施例13に記載のデバイス:
前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較すること、ただし、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にある;および、
前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄すること。
[その他の実施例15]
前記処理ユニットが下記を実行するその他の実施例14に記載のデバイス:
前記複数の頂点ポイントのうちの第3の頂点ポイントの第3の位置座標を前記第2の位置座標と比較すること、ただし、前記第2の頂点ポイントが前記第3の頂点ポイントの直前にある;および、
前記第2および第3の位置座標が実質的に同じであるとき、前記第3の頂点ポイントを廃棄すること。
[その他の実施例16]
前記処理ユニットが下記を実行するその他の実施例15に記載のデバイス:
前記第1および第2の位置座標が実質的に同じでないとき、前記第2の頂点ポイントの前記位置座標を出力すること;および、
前記第2および第3の位置座標が実質的に同じでないとき、前記第3の頂点ポイントの前記位置座標を同時に出力すること。
[その他の実施例17]
前記処理ユニットが、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄する、その他の実施例13に記載のデバイス。
[その他の実施例18]
前記処理ユニットが下記を実行するその他の実施例13に記載のデバイス:
第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算すること;
前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算すること;および、
前記第1および第2の計算された傾きが実質的に同じであるとき、前記第2の頂点ポイントを廃棄すること。
[その他の実施例19]
前記処理ユニットが下記を実行するその他の実施例18に記載のデバイス:
前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較すること;および、
前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄すること。
[その他の実施例20]
前記処理ユニットが下記を実行するその他の実施例13に記載のデバイス:
前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得ること;および、
前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断すること。
[その他の実施例21]
前記処理ユニットが、前記インデックス値を発生するカウンタを含む、その他の実施例20に記載のデバイス。
[その他の実施例22]
前記処理ユニットが、前記曲線をディスプレイに提示するために前記曲線をレンダリングする、その他の実施例13に記載のデバイス。
[その他の実施例23]
前記頂点ポイントが2次元曲線上にあり、前記処理ユニットが3次元(3D)グラフィックス処理ユニット(GPU)を備える、その他の実施例13に記載のデバイス。
[その他の実施例24]
その他の実施例13に記載のデバイス、ただし、前記処理ユニットが3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを備え、前記頂点シェーダが下記をさらに備える:
レンダリングすべき曲線上にある複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断する位置座標計算モジュール;
前記複数の頂点ポイントの各々の前記位置座標を分析し、前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄する頂点廃棄モジュール。
[その他の実施例25]
前記デバイスがワイヤレス通信デバイスを備える、その他の実施例13に記載のデバイス。
[その他の実施例26]
前記デバイスが集積回路デバイスを備える、その他の実施例13に記載のデバイス。
[その他の実施例27]
前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記複数の頂点ポイントのうちの少なくとも1つの他の頂点ポイントと同じピクセル位置にマッピングする、前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、その他の実施例13に記載のデバイス。
[その他の実施例28]
実行された際に、下記動作を少なくとも1つのプロセッサに実行させる命令を備えるコンピュータ可読媒体:
レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断すること;
前記複数の頂点ポイントの少なくとも一部分の前記位置座標を分析すること;および、
前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄すること。
[その他の実施例29]
前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記複数の頂点ポイントのうちの少なくとも1つの他の頂点ポイントと同じピクセル位置にマッピングする、前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、その他の実施例28に記載のデバイス。
[その他の実施例30]
その他の実施例28に記載のコンピュータ可読媒体、ただし、
前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに行わせる命令が、前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較することを前記プロセッサに行わせる命令を備え、ただし、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にあり、
少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに実行させる命令は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを前記プロセッサに行わせる命令を備える。
[その他の実施例31]
少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに行わせる命令が、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに行わせる命令を備える、その他の実施例28に記載のコンピュータ可読媒体。
[その他の実施例32]
その他の実施例28に記載のコンピュータ可読媒体、ただし、前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに実行させる命令が、下記動作を前記プロセッサに実行させる命令を備える:
第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算すること;および、
前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算すること、
なお、少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに実行させる命令は、前記第1および第2の計算された傾きが実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを前記プロセッサに行わせる命令を備える。
[その他の実施例33]
その他の実施例32に記載のコンピュータ可読媒体、ただし、
前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに実行させる命令は、前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較することを前記プロセッサに実行させる命令をさらに備え、
少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに行わせる命令は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを前記プロセッサに実行させる命令を備える。
[その他の実施例34]
前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得ることを前記プロセッサに実行させる命令をさらに備え、前記位置座標を前記判断することを前記プロセッサに実行させる命令が、前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断することを前記プロセッサに実行させる命令を備える、その他の実施例28に記載のコンピュータ可読媒体。
[その他の実施例35]
前記インデックス値を得ることを前記プロセッサに実行させる命令が、前記インデックス値をグラフィックス処理ユニット(GPU)のカウンタから得ることを前記プロセッサに実行させる命令を備える、その他の実施例34に記載のコンピュータ可読媒体。
[その他の実施例36]
前記曲線をディスプレイに提示するために前記曲線をレンダリングすることを前記プロセッサに実行させる命令をさらに備える、その他の実施例28に記載のコンピュータ可読媒体。
[その他の実施例37]
その他の実施例28に記載のコンピュータ可読媒体、ただし、
前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに行わせる命令は、3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを用いて、前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに実行させる命令を備え、
前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを前記プロセッサに実行させる命令は、前記3D GPUの前記頂点シェーダを用いて、前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを前記プロセッサに実行させる命令を備える。
[その他の実施例38]
下記手段を備えるデバイス:
レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断するための手段;
前記複数の頂点ポイントの少なくとも一部分の前記位置座標を分析するための手段;および、
前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄するための手段。
[その他の実施例39]
その他の実施例38に記載のデバイス、ただし、
前記分析手段は、前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較し、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にあり、
前記廃棄手段は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄する。
[その他の実施例40]
その他の実施例39に記載のデバイス、ただし、
前記分析手段は、前記複数の頂点ポイントのうちの第3の頂点ポイントの第3の位置座標を前記第2の位置座標と比較し、前記第2の頂点ポイントが前記第3の頂点ポイントの直前にあり、
前記廃棄手段は、前記第2および第3の位置座標が実質的に同じであるとき、前記第3の頂点ポイントを廃棄する。
[その他の実施例41]
前記第1および第2の位置座標が実質的に同じでないとき、前記第2の頂点ポイントの前記位置座標を出力するための手段をさらに備え、
前記出力するための手段は、前記第2および第3の位置座標が実質的に同じでないとき、前記第3の頂点ポイントの前記位置座標を同時に出力する、
その他の実施例40に記載のデバイス。
[その他の実施例42]
前記廃棄手段が、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄する、その他の実施例38に記載のデバイス。
[その他の実施例43]
その他の実施例38に記載のデバイス、ただし、
前記分析手段は、第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算し、前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算し、
前記廃棄手段は、前記第1および第2の計算された傾きが実質的に等しいとき、前記第2の頂点ポイントを廃棄する。
[その他の実施例44]
その他の実施例43に記載のデバイス、ただし、
前記分析手段は、前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較し、
前記廃棄手段は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄する。
[その他の実施例45]
前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得るための手段をさらに備え、前記判断手段が、前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断する、その他の実施例38に記載のデバイス。
[その他の実施例46]
前記インデックス値をグラフィックス処理ユニット(GPU)内で発生するための手段をさらに備える、その他の実施例45に記載のデバイス。
[その他の実施例47]
前記曲線をディスプレイに提示するために前記曲線をレンダリングするための手段をさらに備える、その他の実施例38に記載のデバイス。
[その他の実施例48]
前記曲線が2次元曲線であり、前記廃棄手段が3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを備える、その他の実施例38に記載のデバイス。

Claims (48)

  1. 下記を備える方法:
    レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断すること;
    前記複数の頂点ポイントの少なくとも一部の前記位置座標を分析すること;および、
    前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄すること。
  2. 前記複数の頂点ポイントの各々の前記位置座標を分析することが、前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較することを備え、ただし、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にあり、
    少なくとも1つの頂点ポイントを廃棄することは、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを備える、
    請求項1に記載の方法。
  3. 前記複数の頂点ポイントの各々の前記位置座標を分析することが、前記複数の頂点ポイントのうちの第3の頂点ポイントの第3の位置座標を前記第2の位置座標と比較することをさらに備え、ただし、前記第2の頂点ポイントが前記第3の頂点ポイントの直前にあり、
    少なくとも1つの頂点ポイントを廃棄することは、前記第2および第3の位置座標が実質的に同じであるとき、前記第3の頂点ポイントを廃棄することを備える、
    請求項2に記載の方法。
  4. 下記をさらに備える、請求項3に記載の方法:
    前記第1および第2の位置座標が実質的に同じでないとき、前記第2の頂点ポイントの前記位置座標を出力すること;および、
    前記第2および第3の位置座標が実質的に同じでないとき、前記第3の頂点ポイントの前記位置座標を同時に出力すること。
  5. 少なくとも1つの頂点ポイントを廃棄することが、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄することを備える、請求項1に記載の方法。
  6. 前記複数の頂点ポイントの各々の前記位置座標を分析することが、
    第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算することと、
    前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算することと
    を備え、
    少なくとも1つの頂点ポイントを廃棄することは、前記第1および第2の計算された傾きが実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを備える、
    請求項1に記載の方法。
  7. 前記複数の頂点ポイントの各々の前記位置座標を分析することが、前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較することをさらに備え、
    少なくとも1つの頂点ポイントを廃棄することは、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを備える、
    請求項6に記載の方法。
  8. 前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得ることをさらに備え、前記位置座標を前記判断することが、前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断することを備える、請求項1に記載の方法。
  9. 前記インデックス値を得ることが、前記インデックス値をグラフィックス処理ユニット(GPU)のカウンタから得ることを備える、請求項8に記載の方法。
  10. 前記曲線をディスプレイに表示するために前記曲線をレンダリングすることをさらに備える、請求項1に記載の方法。
  11. 前記頂点ポイントが2次元曲線上にあり、
    前記複数の頂点ポイントの各々の前記位置座標を分析することが、3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを用いて、前記複数の頂点ポイントの各々の前記位置座標を分析することを備え、
    前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記3D GPUの前記頂点シェーダを用いて、前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、請求項1に記載の方法。
  12. 前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記複数の頂点ポイントのうちの少なくとも1つの他の頂点ポイントと同じピクセル位置にマッピングする、前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、請求項1に記載の方法。
  13. 下記を実行する処理ユニットを備えるデバイス:
    レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断すること;
    前記複数の頂点ポイントの少なくとも一部の前記位置座標を分析すること;および、
    前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄すること。
  14. 前記処理ユニットが下記を実行する請求項13に記載のデバイス:
    前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較すること、ただし、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にある;および、
    前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄すること。
  15. 前記処理ユニットが下記を実行する請求項14に記載のデバイス:
    前記複数の頂点ポイントのうちの第3の頂点ポイントの第3の位置座標を前記第2の位置座標と比較すること、ただし、前記第2の頂点ポイントが前記第3の頂点ポイントの直前にある;および、
    前記第2および第3の位置座標が実質的に同じであるとき、前記第3の頂点ポイントを廃棄すること。
  16. 前記処理ユニットが下記を実行する請求項15に記載のデバイス:
    前記第1および第2の位置座標が実質的に同じでないとき、前記第2の頂点ポイントの前記位置座標を出力すること;および、
    前記第2および第3の位置座標が実質的に同じでないとき、前記第3の頂点ポイントの前記位置座標を同時に出力すること。
  17. 前記処理ユニットが、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄する、請求項13に記載のデバイス。
  18. 前記処理ユニットが下記を実行する請求項13に記載のデバイス:
    第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算すること;
    前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算すること;および、
    前記第1および第2の計算された傾きが実質的に同じであるとき、前記第2の頂点ポイントを廃棄すること。
  19. 前記処理ユニットが下記を実行する請求項18に記載のデバイス:
    前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較すること;および、
    前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄すること。
  20. 前記処理ユニットが下記を実行する請求項13に記載のデバイス:
    前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得ること;および、
    前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断すること。
  21. 前記処理ユニットが、前記インデックス値を発生するカウンタを含む、請求項20に記載のデバイス。
  22. 前記処理ユニットが、前記曲線をディスプレイに提示するために前記曲線をレンダリングする、請求項13に記載のデバイス。
  23. 前記頂点ポイントが2次元曲線上にあり、前記処理ユニットが3次元(3D)グラフィックス処理ユニット(GPU)を備える、請求項13に記載のデバイス。
  24. 請求項13に記載のデバイス、ただし、前記処理ユニットが3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを備え、前記頂点シェーダが下記をさらに備える:
    レンダリングすべき曲線上にある複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断する位置座標計算モジュール;
    前記複数の頂点ポイントの各々の前記位置座標を分析し、前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄する頂点廃棄モジュール。
  25. 前記デバイスがワイヤレス通信デバイスを備える、請求項13に記載のデバイス。
  26. 前記デバイスが集積回路デバイスを備える、請求項13に記載のデバイス。
  27. 前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記複数の頂点ポイントのうちの少なくとも1つの他の頂点ポイントと同じピクセル位置にマッピングする、前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、請求項13に記載のデバイス。
  28. 実行された際に、下記動作を少なくとも1つのプロセッサに実行させる命令を備えるコンピュータ可読媒体:
    レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断すること;
    前記複数の頂点ポイントの少なくとも一部分の前記位置座標を分析すること;および、
    前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄すること。
  29. 前記複数の頂点ポイントのうちの少なくとも1つを廃棄することが、前記複数の頂点ポイントのうちの少なくとも1つの他の頂点ポイントと同じピクセル位置にマッピングする、前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを備える、請求項28に記載のデバイス。
  30. 請求項28に記載のコンピュータ可読媒体、ただし、
    前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに行わせる命令が、前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較することを前記プロセッサに行わせる命令を備え、ただし、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にあり、
    少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに実行させる命令は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを前記プロセッサに行わせる命令を備える。
  31. 少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに行わせる命令が、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに行わせる命令を備える、請求項28に記載のコンピュータ可読媒体。
  32. 請求項28に記載のコンピュータ可読媒体、ただし、前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに実行させる命令が、下記動作を前記プロセッサに実行させる命令を備える:
    第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算すること;および、
    前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算すること、
    なお、少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに実行させる命令は、前記第1および第2の計算された傾きが実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを前記プロセッサに行わせる命令を備える。
  33. 請求項32に記載のコンピュータ可読媒体、ただし、
    前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに実行させる命令は、前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較することを前記プロセッサに実行させる命令をさらに備え、
    少なくとも1つの頂点ポイントを廃棄することを前記プロセッサに行わせる命令は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄することを前記プロセッサに実行させる命令を備える。
  34. 前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得ることを前記プロセッサに実行させる命令をさらに備え、前記位置座標を前記判断することを前記プロセッサに実行させる命令が、前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断することを前記プロセッサに実行させる命令を備える、請求項28に記載のコンピュータ可読媒体。
  35. 前記インデックス値を得ることを前記プロセッサに実行させる命令が、前記インデックス値をグラフィックス処理ユニット(GPU)のカウンタから得ることを前記プロセッサに実行させる命令を備える、請求項34に記載のコンピュータ可読媒体。
  36. 前記曲線をディスプレイに提示するために前記曲線をレンダリングすることを前記プロセッサに実行させる命令をさらに備える、請求項28に記載のコンピュータ可読媒体。
  37. 請求項28に記載のコンピュータ可読媒体、ただし、
    前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに行わせる命令は、3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを用いて、前記複数の頂点ポイントの各々の前記位置座標を分析することを前記プロセッサに実行させる命令を備え、
    前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを前記プロセッサに実行させる命令は、前記3D GPUの前記頂点シェーダを用いて、前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄することを前記プロセッサに実行させる命令を備える。
  38. 下記手段を備えるデバイス:
    レンダリングすべき曲線上にある複数の頂点ポイントの各々についての位置座標を判断するための手段;
    前記複数の頂点ポイントの少なくとも一部分の前記位置座標を分析するための手段;および、
    前記分析に基づいて前記複数の頂点ポイントのうちの少なくとも1つを廃棄するための手段。
  39. 請求項38に記載のデバイス、ただし、
    前記分析手段は、前記複数の頂点ポイントのうちの第1の頂点ポイントの第1の位置座標を前記複数の頂点ポイントのうちの第2の頂点ポイントの第2の位置座標と比較し、前記第1の頂点ポイントが前記第2の頂点ポイントの直前にあり、
    前記廃棄手段は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄する。
  40. 請求項39に記載のデバイス、ただし、
    前記分析手段は、前記複数の頂点ポイントのうちの第3の頂点ポイントの第3の位置座標を前記第2の位置座標と比較し、前記第2の頂点ポイントが前記第3の頂点ポイントの直前にあり、
    前記廃棄手段は、前記第2および第3の位置座標が実質的に同じであるとき、前記第3の頂点ポイントを廃棄する。
  41. 前記第1および第2の位置座標が実質的に同じでないとき、前記第2の頂点ポイントの前記位置座標を出力するための手段をさらに備え、
    前記出力するための手段は、前記第2および第3の位置座標が実質的に同じでないとき、前記第3の頂点ポイントの前記位置座標を同時に出力する、
    請求項40に記載のデバイス。
  42. 前記廃棄手段が、前の頂点ポイントと後続の頂点ポイントとによって形成される直線上に実質的にある少なくとも1つの頂点ポイントを廃棄する、請求項38に記載のデバイス。
  43. 請求項38に記載のデバイス、ただし、
    前記分析手段は、第1の頂点ポイントの位置座標と第2の頂点ポイントの位置座標との間の第1の傾きを計算し、前記第2の頂点ポイントの前記位置座標と第3の頂点ポイントの位置座標との間の第2の傾きを計算し、
    前記廃棄手段は、前記第1および第2の計算された傾きが実質的に等しいとき、前記第2の頂点ポイントを廃棄する。
  44. 請求項43に記載のデバイス、ただし、
    前記分析手段は、前記第1の頂点ポイントの前記位置座標を前記第2の頂点ポイントの前記位置座標と比較し、
    前記廃棄手段は、前記第1および第2の位置座標が実質的に同じであるとき、前記第2の頂点ポイントを廃棄する。
  45. 前記複数の頂点ポイントにおける現在の頂点ポイントの順序位置を示すインデックス値を得るための手段をさらに備え、前記判断手段が、前記インデックス値に応じて複数の頂点ポイントの各々についてディスプレイ座標空間における位置座標を判断する、請求項38に記載のデバイス。
  46. 前記インデックス値をグラフィックス処理ユニット(GPU)内で発生するための手段をさらに備える、請求項45に記載のデバイス。
  47. 前記曲線をディスプレイに提示するために前記曲線をレンダリングするための手段をさらに備える、請求項38に記載のデバイス。
  48. 前記曲線が2次元曲線であり、前記廃棄手段が3次元(3D)グラフィックス処理ユニット(GPU)の頂点シェーダを備える、請求項38に記載のデバイス。
JP2011540806A 2008-12-09 2009-12-07 3次元グラフィックスハードウェアを使用した2次元グラフィックスレンダリング中の頂点ポイントの廃棄 Expired - Fee Related JP5270004B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/331,273 2008-12-09
US12/331,273 US8269775B2 (en) 2008-12-09 2008-12-09 Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware
PCT/US2009/067000 WO2010077612A2 (en) 2008-12-09 2009-12-07 Discarding of vertex points during two-dimensional graphics rendering using three-dimensional graphics hardware

Publications (2)

Publication Number Publication Date
JP2012511783A true JP2012511783A (ja) 2012-05-24
JP5270004B2 JP5270004B2 (ja) 2013-08-21

Family

ID=42034636

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011540806A Expired - Fee Related JP5270004B2 (ja) 2008-12-09 2009-12-07 3次元グラフィックスハードウェアを使用した2次元グラフィックスレンダリング中の頂点ポイントの廃棄

Country Status (7)

Country Link
US (1) US8269775B2 (ja)
EP (1) EP2366173A2 (ja)
JP (1) JP5270004B2 (ja)
KR (1) KR101337758B1 (ja)
CN (1) CN102227752B (ja)
TW (1) TW201033937A (ja)
WO (1) WO2010077612A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019533211A (ja) * 2016-09-12 2019-11-14 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited データ集約型視覚化動作におけるgpu性能を向上する方法およびシステム

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0913170D0 (en) * 2009-07-28 2009-09-02 Advanced Risc Mach Ltd Graphics processing systems
US9324175B2 (en) * 2009-09-11 2016-04-26 Nvidia Corporation Memory coherency in graphics command streams and shaders
EA023320B1 (ru) * 2010-05-27 2016-05-31 Лэндмарк Графикс Корпорейшн Способ и система для визуализации значений каротажной диаграммы скважины
GB201103698D0 (en) 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphics processing
GB201103699D0 (en) 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphic processing
US20120293528A1 (en) * 2011-05-18 2012-11-22 Larsen Eric J Method and apparatus for rendering a paper representation on an electronic display
US8976188B1 (en) 2012-04-20 2015-03-10 Google Inc. Optimized data communication system and method for an image rendering system
US9330495B2 (en) * 2012-08-09 2016-05-03 Qualcomm Incorporated Extending DX11 GPU for programmable vector graphics
EP2750109B1 (en) 2012-12-28 2021-07-07 Dassault Systèmes Tessellation of a parameterized 3D modeled object
EP2750108B1 (en) * 2012-12-28 2019-05-01 Dassault Systèmes Parameterizing a 3D modeled object for tessellation
US20140192052A1 (en) * 2013-01-09 2014-07-10 Advanced Micro Devices, Inc. 2d rendering on 3d graphics hardware
US9269179B2 (en) * 2013-03-15 2016-02-23 Nvidia Corporation System, method, and computer program product for generating primitive specific attributes
US9401034B2 (en) 2013-04-30 2016-07-26 Microsoft Technology Licensing, Llc Tessellation of two-dimensional curves using a graphics pipeline
CN103605774A (zh) * 2013-11-29 2014-02-26 珠海金山网络游戏科技有限公司 一种顶点动画的数据压缩方法
US9305326B2 (en) 2013-12-26 2016-04-05 Industrial Technology Research Institute Apparatus and method for tile elimination
US9495767B2 (en) * 2014-05-15 2016-11-15 Google Inc. Indexed uniform styles for stroke rendering
US9721363B2 (en) 2014-05-19 2017-08-01 Google Inc. Encoding polygon data for fast retrieval and rendering
US9858708B2 (en) * 2014-09-10 2018-01-02 Microsoft Technology Licensing, Llc Convex polygon clipping during rendering
US9626733B2 (en) * 2014-11-24 2017-04-18 Industrial Technology Research Institute Data-processing apparatus and operation method thereof
CN106296564B (zh) * 2015-05-29 2019-12-20 展讯通信(上海)有限公司 嵌入式soc片上系统
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
CN105809722B (zh) * 2016-03-02 2018-08-28 广东财经大学 一种确定二维矢量图形渲染开销质量比的方法
CN105787979B (zh) * 2016-03-02 2018-08-28 广东财经大学 一种优化二维矢量图形渲染性能的方法
WO2018071041A1 (en) * 2016-10-14 2018-04-19 Hewlett-Packard Development Company, L.P. Rebuilding three-dimensional models to provide simplified three-dimensional models
CN107221020B (zh) * 2017-05-27 2021-04-16 北京奇艺世纪科技有限公司 一种文字纹理绘制方法及装置
CN108153305A (zh) * 2017-12-18 2018-06-12 深圳市奇虎智能科技有限公司 地图轨迹绘制方法及装置
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
CN108320315A (zh) * 2018-02-05 2018-07-24 世纪龙信息网络有限责任公司 视图切换方法、装置、计算机设备和存储介质
KR20190117287A (ko) * 2018-04-06 2019-10-16 삼성전자주식회사 중복 포인트 처리 방법 및 장치
CN108874385A (zh) * 2018-06-28 2018-11-23 北京酷我科技有限公司 一种能量守恒双摆球的动画效果算法
CN108845859A (zh) * 2018-06-28 2018-11-20 北京酷我科技有限公司 一种弧线变速运动的变速值的生成算法
CN112419463B (zh) * 2020-12-04 2024-01-30 Oppo广东移动通信有限公司 一种模型数据处理方法、装置、设备及可读存储介质
CN113052002B (zh) * 2021-02-05 2024-05-14 广州八爪鱼教育科技有限公司 筛选笔迹采样点的方法、装置、设备及存储介质
CN114187397B (zh) * 2021-12-06 2023-03-21 完美世界(北京)软件科技发展有限公司 虚拟毛发渲染方法、装置、介质、电子设备及程序产品
CN115712580B (zh) * 2022-11-25 2024-01-30 格兰菲智能科技有限公司 内存地址分配方法、装置、计算机设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696199A (ja) * 1992-09-11 1994-04-08 Kazuo Toraichi ロゴ・イラストデ−タ入力出力装置と入力出力方法
JPH0922459A (ja) * 1995-07-06 1997-01-21 Canon Inc 図形処理方法及び装置
JPH10198333A (ja) * 1997-01-09 1998-07-31 Fujitsu Ltd アウトライン文字描画装置
JP2006323465A (ja) * 2005-05-17 2006-11-30 Advanced Telecommunication Research Institute International 幾何図形データ処理装置、幾何図形データ処理方法及び幾何図形データ処理プログラム
US20070038421A1 (en) * 2005-05-18 2007-02-15 Microsoft Corporation River Modeling
WO2008101210A2 (en) * 2007-02-16 2008-08-21 Qualcomm Incorporated Efficient 2-d and 3-d graphics processing

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321770A (en) * 1991-11-19 1994-06-14 Xerox Corporation Method for determining boundaries of words in text
JP3075023B2 (ja) * 1993-07-23 2000-08-07 松下電器産業株式会社 3次元形状データの処理方法
US5613052A (en) * 1993-09-02 1997-03-18 International Business Machines Corporation Method and apparatus for clipping and determining color factors for polygons
JP3255549B2 (ja) 1995-01-31 2002-02-12 松下電器産業株式会社 図形処理方法
US5999189A (en) * 1995-08-04 1999-12-07 Microsoft Corporation Image compression to reduce pixel and texture memory requirements in a real-time image generator
JPH09282080A (ja) * 1996-04-16 1997-10-31 Canon Inc 情報入力方法とその装置
JPH10191020A (ja) * 1996-12-20 1998-07-21 Canon Inc 被写体画像切出し方法及び装置
JP2957511B2 (ja) 1997-03-28 1999-10-04 インターナショナル・ビジネス・マシーンズ・コーポレイション グラフィック処理装置
US6219070B1 (en) * 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
US6483509B1 (en) * 1999-04-09 2002-11-19 International Business Machines Corp. Curve contour smoothing
JP4332934B2 (ja) 1999-06-17 2009-09-16 株式会社セガ アンチエイリアシング方法及びこれを用いた画像処理装置
GB9921777D0 (en) 1999-09-16 1999-11-17 Koninkl Philips Electronics Nv Method and apparatus for handling translucency in 3d graphics
US6636218B1 (en) * 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
US6633297B2 (en) * 2000-08-18 2003-10-14 Hewlett-Packard Development Company, L.P. System and method for producing an antialiased image using a merge buffer
US6819332B2 (en) * 2001-02-27 2004-11-16 3Dlabs Inc. Ltd. Antialias mask generation
US6731300B2 (en) * 2001-05-18 2004-05-04 Sun Microsystems, Inc. Efficient anti-aliased dot rasterization
US6768491B2 (en) * 2001-12-21 2004-07-27 Ati Technologies Inc. Barycentric centroid sampling method and apparatus
EP1447774B1 (en) * 2003-02-13 2018-03-07 ATI Technologies Inc. Method and apparatus for sampling on a non-power-of-two pixel grid
US7006110B2 (en) * 2003-04-15 2006-02-28 Nokia Corporation Determining a coverage mask for a pixel
US7362325B2 (en) * 2004-12-21 2008-04-22 Qualcomm Incorporated 2D/3D line rendering using 3D rasterization algorithms
JP2006190049A (ja) * 2005-01-05 2006-07-20 Fujitsu Ltd 頂点削減図形描画方法および装置
JP4327105B2 (ja) 2005-01-25 2009-09-09 株式会社ソニー・コンピュータエンタテインメント 描画方法、画像生成装置、および電子情報機器
US7456846B1 (en) * 2005-06-03 2008-11-25 Nvidia Corporation Graphical processing system, graphical pipeline and method for implementing subpixel shifting to anti-alias texture
US7652677B2 (en) * 2006-08-03 2010-01-26 Qualcomm Incorporated Graphics system employing pixel mask
US7944442B2 (en) * 2006-09-26 2011-05-17 Qualcomm Incorporated Graphics system employing shape buffer

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696199A (ja) * 1992-09-11 1994-04-08 Kazuo Toraichi ロゴ・イラストデ−タ入力出力装置と入力出力方法
JPH0922459A (ja) * 1995-07-06 1997-01-21 Canon Inc 図形処理方法及び装置
JPH10198333A (ja) * 1997-01-09 1998-07-31 Fujitsu Ltd アウトライン文字描画装置
JP2006323465A (ja) * 2005-05-17 2006-11-30 Advanced Telecommunication Research Institute International 幾何図形データ処理装置、幾何図形データ処理方法及び幾何図形データ処理プログラム
US20070038421A1 (en) * 2005-05-18 2007-02-15 Microsoft Corporation River Modeling
WO2008101210A2 (en) * 2007-02-16 2008-08-21 Qualcomm Incorporated Efficient 2-d and 3-d graphics processing

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNG200800535027; ノジク ヴァンソン外: '"画像処理とコンピュータビジョンのためのGPU"' 情報処理学会研究報告 第2008巻, 第36号, 20080501, p.263-286, 社団法人情報処理学会 *
JPN6012059170; Tomas Alexander外: "GPU Gems 3 日本語版 初版" 第1版, 20080815, p.485-500, 株式会社ボーンデジタル *
JPN6012059174; ノジク ヴァンソン外: '"画像処理とコンピュータビジョンのためのGPU"' 情報処理学会研究報告 第2008巻, 第36号, 20080501, p.263-286, 社団法人情報処理学会 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019533211A (ja) * 2016-09-12 2019-11-14 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited データ集約型視覚化動作におけるgpu性能を向上する方法およびシステム
JP7095852B2 (ja) 2016-09-12 2022-07-05 アリババ・グループ・ホールディング・リミテッド データ集約型視覚化動作におけるgpu性能を向上する方法およびシステム

Also Published As

Publication number Publication date
WO2010077612A3 (en) 2010-10-28
TW201033937A (en) 2010-09-16
JP5270004B2 (ja) 2013-08-21
EP2366173A2 (en) 2011-09-21
KR101337758B1 (ko) 2013-12-06
CN102227752B (zh) 2015-07-08
US20100141659A1 (en) 2010-06-10
WO2010077612A2 (en) 2010-07-08
KR20110102450A (ko) 2011-09-16
CN102227752A (zh) 2011-10-26
US8269775B2 (en) 2012-09-18

Similar Documents

Publication Publication Date Title
JP5270004B2 (ja) 3次元グラフィックスハードウェアを使用した2次元グラフィックスレンダリング中の頂点ポイントの廃棄
US8643644B2 (en) Multi-stage tessellation for graphics rendering
JP6013661B1 (ja) グラフィックス処理におけるターゲット独立ステンシル
JP5657671B2 (ja) テセレーションエンジン及びそのアプリケーション
US8698808B2 (en) Conversion of dashed strokes into quadratic Bèzier segment sequences
CN107003964B (zh) 处理未对准块传送操作
US7868887B1 (en) Rendering rational quadratic Bézier curves on a GPU
JP6013606B2 (ja) Gpuアクセラレーテッドパスレンダリング
US9619853B2 (en) GPU-accelerated path rendering
KR101776547B1 (ko) Gpu-가속된 패스 렌더링

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130213

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130313

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130508

R150 Certificate of patent or registration of utility model

Ref document number: 5270004

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees