(57)【要約】  ＧＰＵ上におけるグリフの改良されたフィルタリング及び補正のためのシステム並びに方法が提供される。フィルタリング及び／又はレンダリングに要求される計算負荷は、カバレージデータを補正ピクセル値に変換するのに必要な計算の一部分又は全部を予め計算することによって、削減されることが可能である。ある実施態様において、改良フォーマットでＣＰＵからＧＰＵへデータを転送することによって、更なる効率化が実現されることができる。この改良は、様々なグラフィックフォーマットにおいて実現されることが可能である。【選択図】図６
2013536490.tif 000002
【特許請求の範囲】
【請求項１】
アンチエイリアシングされたレンダリングのための方法であって、
オーバーサンプリングされたフォーマットを有する１ビットパーピクセルのカバレージデータを受け取るステップであって、前記受け取られたカバレージデータは１ビットパーバイトの記憶よりも大きい記憶フォーマットを有する、ステップと、
前記オーバーサンプリングされたフォーマットを有するピクセルに対応するｎビットの明度を形成するようにカバレージデータのビットを組み立てるステップと、
前記ｎビットの明度を用いてピクセル値テーブルをインデックス付けするステップと、
前記インデックス付けされた位置に対応する少なくとも１つのピクセル値を取得するステップと、
前記取得された少なくとも１つのピクセル値に基づいてピクセルをレンダリングするステップと、
を含む、方法。
【請求項２】
ｎビットの明度を形成するようにカバレージデータのビットを組み立てる前記ステップは、
記憶されたピクセルカバレージデータのバイトを浮動小数点データ型としてサンプリングするステップであって、前記バイトはレンダリングされるピクセルのカバレージデータに対応する１又は複数のビットを含む、ステップと、
前記記憶されたデータに含まれる前記１又は複数のビットを分離するように、前記サンプリングされた浮動小数点のバイトを変形するステップと、
前記１又は複数の分離されたビットに対応しないビットを除去するように、前記変形されたバイトを切り捨てるステップと、
前記オーバーサンプリングされたフォーマットを有するピクセルに対応するｎビットの明度を形成するように、前記分離されたビットを分離されたビットの少なくとも１つの他の一部分と共に組み立てるステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記カバレージデータに対する前記オーバーサンプリングされたフォーマットは６×１フォーマットであり、前記ｎビットの明度は１０ビットの明度に対応する、前記請求項の何れかに記載の方法。
【請求項４】
結合されたピクセル値を形成するように前記少なくとも１つのピクセル値を少なくとも第２のピクセル値と結合するステップであって、前記レンダリングされるピクセルは前記結合されたピクセル値に基づく、ステップを更に含む、前記請求項の何れかに記載の方法。
【請求項５】
複数のｎビットの明度を形成するようにビットを組み立てる前記ステップは、複数のバイトからビットを組み立てるステップを含む、前記請求項の何れかに記載の方法。
【請求項６】
アンチエイリアシングされたレンダリングのための方法であって、
オーバーサンプリングされたフォーマットを有する１ビットパーピクセルのカバレージデータを受け取るステップであって、前記受け取られたカバレージデータは１ビットパーバイトの記憶よりも大きい記憶フォーマットを有する、ステップと、
複数のｎビットの明度を形成するようにカバレージデータのビットを組み立てるステップであって、各ｎビットの明度は、前記オーバーサンプリングされたフォーマットを有するピクセルに対応し、複数のバイトからのビットを含む、ステップと、
前記複数のｎビットの明度を用いてピクセル値テーブルを複数回インデックス付けするステップと、
それぞれのインデックス付けされた位置に対応する複数のピクセル値を取得するステップと、
複数の結合されたピクセル値を形成するように、複数のインデックス付けされた位置に対応する取得されたピクセル値を結合するステップと、
前記複数の結合されたピクセル値に基づいてピクセルをレンダリングするステップと、
を含む、方法。
【請求項７】
複数のピクセル値を取得する前記ステップは、ピクセル値の３つのチャンネルを取得するステップを含む、請求項６に記載の方法。
【請求項８】
前記取得されたピクセル値を結合する前記ステップは、３つの結合されたチャンネルのピクセル値を形成するように前記ピクセル値の３つのチャンネルを結合するステップを含む、請求項７に記載の方法。
【請求項９】
補正係数を取得するために、結合されたチャンネル値を用いて補正係数テーブルをインデックス付けするステップと、
前記補正係数を前記結合されたチャンネル値に適用するステップと、
を更に含む、請求項８に記載の方法。
【請求項１０】
前記カバレージデータに対する前記オーバーサンプリングされたフォーマットは６×５フォーマットであり、各ｎビットの明度は１０ビットの明度に対応する、請求項６−９の何れかに記載の方法。
【請求項１１】
前記受け取られたカバレージデータは少なくとも８ビットパーバイトの記憶フォーマットを有する、前記請求項の何れかに記載の方法。
【請求項１２】
前記１ビットパーピクセルのカバレージデータはテキストグリフに対するカバレージデータを表す、前記請求項の何れかに記載の方法。
【請求項１３】
ピクセル補正係数を修正する変更を検出するステップと、
前記修正されたピクセル補正係数を組み込むピクセル値のテーブルを構築するステップと、
を更に含み、
前記ｎビットの明度を用いてピクセル値テーブルをインデックス付けする前記ステップは、前記構築されたテーブルをインデックス付けするステップを含む、
前記請求項の何れかに記載の方法。
【請求項１４】
前記構築されたテーブルはテーブルの地図帳に記憶される、請求項１３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  グリフ（glyph）は、一文字又は複数の文字を視覚的に表すのに用いられるイメージである。例えば、フォントはグリフの集合であり、当該フォントのそれぞれの文字が１つ１つのグリフを表しうる。しかしながら、グリフにはフォントの多数の文字が含まれる場合もあり、その逆も同様である。即ち、フォントの一文字がいくつかのグリフに対応し、又はフォントのいくつかの文字が１つのグリフに対応する場合がある。別の言い方をすれば、グリフは、一文字又は複数の文字を表すのに用いられる領域を画定する一続きの曲線の形状である。グリフの曲線を生成するために用いられるコンピューター実装プロセス及びその結果として生じる文字は、テキストレンダリングと呼ばれる。
【０００２】
[0002]  テキストのレンダリングは、中央処理装置（ＣＰＵ）利用率の観点でより高い費用がかかる演算の１つであり得る。テキストをレンダリングするためのあるプロセスは、ラスタライズ、マージ、フィルタリング、及び補正からなる４ステップのプロセスを含んでいる。ラスタライズのステップには、グリフ曲線をビットマップに変換することが含まれる。このビットマップのフォーマットは、典型的には１ビットパーピクセル（１ｂｐｐ）であり、１又は複数の方向に「オーバースケール」される場合がある。例えば、このビットマップは、垂直方向又は水平方向にオーバースケールされることができる。オーバースケールとは、ビットマップを生成するのに用いられるデータの各ビット即ちテクセルが、グリフを表示するのに用いられるピクセルよりも小さい場合におけるプロセスのことである。
【０００３】
[0003]  マージのステップには、画像歪み又は望ましくない特性を防止するために、隣接したグリフをマージすることが含まれる。例えば、アンチエイリアシング（サブピクセルレンダリングを含む）は、いくつかのピクセルを半透明に描くことを伴う。それぞれのグリフは独立して描かれることができるため、グリフが重なり合う場所では、同一のピクセルが何回も半透明に描かれる可能性がある。このことは、ピクセルが過剰に暗く見える結果をもたらす場合がある。これを避けるために、マージのステップが、全てのグリフに関するビットマップを単一のテクスチャーに結合する。各グリフに対して個別にではなく、当該単一のテクスチャーに対して、フィルタリング及びブレンディングのステップが実施される。このように、マージのステップは、個々のグリフを結合し、切れ目のない見映えを実現すると共に、重なり合った又はばらばらになったグリフが存在しないことを保証する。
【０００４】
[0004]  フィルタリングのステップは、上記マージされたグリフを調べ、各ピクセルの「カバレージ」を計算する。カバレージという用語は、マージされたグリフを表示するのに用いられる個々のピクセルそれぞれに対する必要な輝度又は明度を決定することを意味する。例えば、完全にグリフ曲線の領域の内部に収まっているピクセルであれば、１００％のカバレージを有するであろう。同様に、完全にグリフ曲線の領域の外側にあるピクセルであれば、０％のカバレージを有するであろう。このように、カバレージ値は、グリフをレンダリングするのに用いられる特定のフィルタリング方法に応じて、０％と１００％の間のどこかに入ることができる。
【０００５】
[0005]  補正ステップには、文字の読み易さを改善するためのサブピクセルレンダリングが含まれ得る。補正の一例は、グリフの読み易さを改善する既知の要素に基づいて、各ピクセルのカバレージを修正することを伴うことが可能である。これには、グリフが表示される際の画像歪みの発生を回避するように、グリフ内部のある色及び／又はピクセルを強調し、又は強調しないことが含まれることが可能である。補正の別の例は、液晶ディスプレイ（ＬＣＤ）のピクセル構造を利用したピクセルのブレンディングであり得る。具体的には、ＬＣＤスクリーン上の１つのピクセルは３つのサブピクセル、即ち１つの赤、１つの緑、及び１つの青（ＲＧＢ）から構成されているので、サブピクセルレンダリングが可能である。人間の目には、これらのサブピクセルは、１つのピクセルとして見える。しかしながら、これらのピクセルのそれぞれは一意であり、個別に制御されることができる。このように、ＬＣＤ上に表示されたテキストの読み易さを増大させるようにサブピクセルを個別に制御することによって、ＬＣＤスクリーンの解像度が向上することができる。
【０００６】
[0006]  テキストをレンダリングする１つの方法は、ＣＰＵ上で最初の３つのステップを実行することである。即ち、ラスタライズ、マージ、フィルタリングのステップはＣＰＵ上で実行され、ブレンディングのステップはグラフィック処理装置（ＧＰＵ）上で実行される。ＣＰＵ利用率に関しては、マージ及びフィルタリングのステップが、最も計算負荷が高い。
【発明の概要】
【０００７】
[0007]  様々な実施態様において、ＧＰＵ上におけるグリフの改良されたフィルタリング及び補正のためのシステム並びに方法が提供される。フィルタリング及び／又はレンダリングに要求される計算負荷は、カバレージデータを補正ピクセル値に変換するのに必要な計算の一部分又は全部を予め計算することによって、削減されることが可能である。ある実施態様において、改良フォーマットでＣＰＵからＧＰＵへデータを転送することによって、更なる効率化が実現されることができる。この改良は、様々なグラフィックフォーマットにおいて実現されることが可能である。
【０００８】
[0008]  この概要は、以下の詳細な説明において更に説明される概念から選び出したものを、単純化した形で紹介すべく提供されるものである。この概要は、特許請求の範囲に記載された対象の主要な特徴、又は本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載された対象の範囲を決定付けるための助けとして単独で用いられることも意図していない。
【０００９】
[0009]  本発明は、添付された図面を参照して以下に詳細に説明される。
【図面の簡単な説明】
【００１０】
【図１】[0010]  図１は、本発明の実施態様を実現する使用に適した例示的なコンピューティング環境のブロック図である。
【図２】[0011]  図２は、テキストのピクセルをレンダリングするためのコンポーネントの例を模式的に示す。
【図３】[0012]  図３は、本発明の実施態様による方法のフローチャートを表す。
【図４】[0013]  図４は、本発明の実施態様による方法のフローチャートを表す。
【図５】[0014]  図５は、本発明の実施態様による方法のフローチャートを表す。
【図６】[0015]  図６は、テキストのピクセルをレンダリングするためのコンポーネントの別の例を模式的に示す。
【図７】[0016]  図７は、８ビットパーバイトのフォーマットで格納された６×１ピクセルのカバレージデータの配列を示す。
【発明を実施するための形態】
【００１１】
[0017]  グリフのビットマップが決定された後に、当該グリフビットマップに基づくテキストのレンダリングが、いくつかのタスクの完了を必要とすることが可能である。その１つには、中央処理装置（ＣＰＵ）からグラフィック処理装置（ＧＰＵ）へレンダリングのためのカバレージデータを転送することが含まれ得る。別のタスクは、当該転送されたデータを認識可能なフォーマットに解凍することであり得る。第３のタスクは、当該カバレージデータをピクセル情報に変換することであり得る。加えて、テキストの最終的な表示を向上させるために、様々な補正がピクセルに適用されることが可能である。効率的な方法によるテキストのレンダリングは、カバレージデータに基づいてピクセルを表示するためのメモリ要件とプロセス要件とをバランスさせることを伴うことが可能である。
【００１２】
＜データの転送及び解凍＞
[0018]  ＣＰＵからＧＰＵへのカバレージデータの転送は、テキストレンダリングの最中における１つの可能性のあるボトルネックである。従来、カバレージデータは、データの各ビットを保持する別々のバイトを使用して１ビットパーピクセル（１ｂｐｐ）のデータを転送するといったような、単純なフォーマットで転送されてきた。１ｂｐｐデータの各ビットを保持するバイトの使用は、各ビットが個別にアドレス指定可能な位置に配置されているため、ＧＰＵへ転送されたデータの解凍を単純化する。しかしながら、このタイプのデータ転送は、各バイトにおけるデータ空間の大部分が使用されていないため、メモリの立場からは非効率であり得る。この非効率さは、ピクセルデータを表すのに用いられる何らかのオーバーサンプリングによって、悪化し得る。例えば、（ＣｌｅａｒＴｙｐｅデータ等の）テキストデータに対する１つのよくあるタイプのオーバーサンプリングは、各ピクセルに対して６×１のカバレージデータフォーマットを用いることである。６×１フォーマットでは、ピクセルに対してデータの３つのチャンネルを表すのに全部で１０ビットが必要とされる。このチャンネルは、典型的には、ピクセルの赤、緑、及び青のコンポーネントに対応する。このように、各ビットに対して別々のバイトを有する１ｂｐｐフォーマットでデータを転送する場合、当該ピクセルの赤、緑、及び青のコンポーネントを転送するのに１０バイトが必要とされる。このタイプのデータ転送では、上記の１０ビットは他のデータを一切含んでいない別個のバイトから取得されることが可能であるため、ピクセルを指定するのに必要なビットは、容易に組み立てられる。
【００１３】
[0019]  様々な実施態様において、カバレージデータを転送及び／又は解凍するための改良方法が提供される。各ビットを別々のバイトに有する１ｂｐｐデータを転送することに代えて、８ビットパーピクセル等のより高密度なデータフォーマットを用いて、データがＧＰＵへ渡されることが可能である。このことは、それぞれのバイトで転送されるデータ量を増加させ、ＧＰＵ上の全体的なメモリ使用率を削減することが可能である。
【００１４】
[0020]  より高密度なデータフォーマットでのデータの転送は、当該データを解凍する追加のプロセスを必要とすることが可能である。より高密度なフォーマットのせいで、各ピクセルの情報は、個々のバイトの境界に合わせてきちんと整列しないかもしれない。例えば、６×１のカバレージデータには、ピクセル当たり１０ビットの情報が含まれるが、それに対し、８ｂｐｐデータフォーマットには、バイト当たり８ビットしか含まれない。加えて、ＣｌｅａｒＴｙｐｅのテキストに対応するグリフの場合には、ＣｌｅａｒＴｙｐｅフィルターに対するピクセル情報の重複のため、それぞれのピクセルは隣接するピクセルと４ビットずつ重なり合う。結果として、８ｂｐｐの圧縮方式を用いて転送された１ｂｐｐのＣｌｅａｒＴｙｐｅテキストの例に関しては、転送されたデータの各バイトに２以上のピクセルの情報が含まれることが可能であり、１つのピクセルに対する表示明度の決定は、２以上のバイトからのデータを必要とすることが可能である。この状況は図７に示されており、図７は、６×１のカバレージデータがどのようにして８ｂｐｐフォーマットに格納されるかの例を示す。
【００１５】
[0021]  カバレージデータを解凍するための方法は、利用可能なディスプレイハードウェアのタイプに依存することが可能である。ＤｉｒｅｃｔＸ  １０フォーマット（Ｄｘ１０）を用いたハードウェアディスプレイの場合、ビットシフト命令が利用可能である。これは、１つのピクセルに対応する１０ビットを収容しているデータの２バイトにアクセスすることによって、必要とされる任意のピクセル情報が取得されることが可能であるということを意味する。ビットシフト命令は、次いで、現在関心のあるピクセルに対応するそれぞれのバイトの中でビットを選択するのに用いられることが可能である。当該ビットは、次いで、そのピクセルのカバレージデータに対応する１０ビットの数を形成するように組み立てられることが可能である。カバレージ情報の圧縮に関連した１ピクセル内のビット数の関係に基づいて、類似の処理が他のデータフォーマットに対して利用されることが可能である。
【００１６】
[0022]  ビットシフト機能を含まないハードウェアに対して、追加の演算が必要とされることができる。例えば、ＤｉｒｅｃｔＸ  ９（Ｄｘ９）は、ビットシフト演算をサポートしていない。その代わりに、Ｄｘ９のピクセルシェーダーによってサンプリングされた情報は、０と１の間の浮動小数点の値として返される。この状況においてピクセルデータを抽出するために、各バイトに格納されている数値は２５５を乗じられ、次いで整数に丸められることが可能である。その次の演算は、所望のピクセルに対し関連のあるビットを収容している元のバイトの一部分に依存する。右ビットシフトが望まれる場合、当該整数は、２の負の累乗を乗じられることが可能である。次いで、乗算後に小数点の右側に存在する全ての不必要なビットを除去するために、「ｆｌｏｏｒ」演算が用いられることが可能である。左ビットシフトが望まれる場合、当該整数は、２の正の累乗を乗じられることが可能であり、小数点の左側に位置する不必要なビットを除去するために、「ｆｒａｃ」演算が用いられることが可能である。次いで、残ったビットを元の位置へ戻すために、２の負の累乗の乗算が用いられることが可能である。
【００１７】
＜ビットの組み立て及びデータルックアップ＞
[0023]  上記に基づいて、より高密度なデータフォーマットが、１ｂｐｐフォーマットのデータをＧＰＵへ転送するのに利用されることが可能である。１つのピクセルに対応するビットを特定した後、当該ビットは、単独の数を形成するように組み立てられることが可能である。例えば、６×１フォーマットでは、当該ビットは、１０ビットの数を形成するように組み立てられることが可能である。６×５フォーマットは、１０桁の数を５つ形成するように組み立てられることが可能である。より一般的に、ピクセルに対応するビットの数が組み立てられることが可能である。単純な算術的加法演算が、ビットを組み立てるのには十分であり得る、ということに注意されたい。何故なら、上述されたビットシフト（即ち２の累乗の乗法演算）が用いられて、元の８ビットの２つのバイトからのビット間に重なりが生じないようにされることが可能であるからである。
【００１８】
[0024]  組み立てられたビットは、次いで、ピクセル値を決定するのに用いられることが可能である。６×１のオーバーサンプリングされたデータを用いる例において、解凍された各ピクセルに対する独立した赤、緑、及び青の明度が、従来の方法で計算されることが可能である。しかしながら、比較的少数の可能な組み合わせ（１０ビットの数の場合、１０２４）しか存在しないため、出願人は、前もって任意のあり得るピクセルに対する当該明度を計算することが、より効率的であり得ると考えた。それ故、１つのピクセルに対する１０ビットの明度が、正確な明度をテーブルからルックアップするためのインデックスとして用いられることが可能である。このことは、同一の計算を何回も繰り返すことを回避し、それにより、ＧＰＵにおけるプロセスの負荷を削減する。
【００１９】
[0025]  ６×１データのようなデータフォーマットの場合、ピクセル当たりの全ビット数（１０）は、処理しやすい組み合わせの数（１０２４）をもたらす。しかしながら、いくつかのオーバーサンプリングフォーマットは、より大きなピクセル当たりのデータ量をもたらし、そうしたデータ量は、ピクセル値の決定を困難にし得る。例えば、別の利用可能なオーバーサンプリングフォーマットは６×５データであり、それは、事実上、５列の６×１データを導入する。汎用コンピューティングデバイスの現在の計算能力に基づけば、５０ビットのインデックスを用いてルックアップテーブルを直接構成するのに必要とされる２５０の組み合わせを予め計算するのは現実的ではない。６×５フォーマットのデータの場合、これは、データを５行の１０ビットデータとして取り扱うことによって処理されることが可能である。上述されたような１０ビットのカバレージデータの行に対して、補正されていないピクセル値のためのルックアップテーブルが計算されることが可能である。次いで、５行のカバレージデータが、当該データを単独のピクセル値に結合するように垂直方向にフィルタリングされることが可能である。オプションとして、この後者の演算は、従来のピクセルシェーダーによって処理されることが可能である。上記に基づけば、「ピクセル値」という用語は、完全なピクセル値、又は、完全な値を形成するように他の部分的な値と結合されることが可能な部分的なピクセル値の、いずれかを意味することが可能であるということに注意されたい。ある状況では、完全な値を形成するように他の部分的な値と結合されたピクセル値を特に述べる場合に、部分的なピクセル値が参照されるだろう。部分的なピクセル値の例は、６×５のオーバーサンプリングされたカバレージデータのうちの１つの行に基づく値であり得る。
【００２０】
＜ピクセル補正係数＞
[0026]  上記の方法は、１ｂｐｐのカバレージデータのＧＰＵへの効率的な転送と、その後の当該カバレージデータに基づくピクセル値の効率的な計算を可能にすることができる。このことは、それ自体、メモリ及び／又は計算時間の節約をＧＰＵに提供することが可能である。しかしながら、ピクセル補正係数のいくつか又は全てがルックアップテーブルに組み込まれることができれば、更なる改良が可能である。
【００２１】
[0027]  ＣｌｅａｒＴｙｐｅデータのような６×１カバレージデータの従来のプロセスの場合、カバレージデータの１０ビットは、赤、緑、及び青のピクセル情報を与えるように組み立てられ、処理される。このピクセル情報の値に基づいて、次に１又は複数の補正値又は係数が当該データに適用される。これらの補正は、表示されたピクセルによって形作られるテキストの見映えを向上させるのに利用されることが可能である。当該補正には、（強調された）コントラスト調整、ＣｌｅａｒＴｙｐｅレベル調整、及びアルファ補正が含まれることが可能である。加えて、ピクセル情報の表現のために赤・緑・青フォーマットと対照的に青・緑・赤フォーマットを用いるモニターに対して、調整が必要であり得る。従来、これらの補正係数のそれぞれは、上記データの赤、緑、及び青のチャンネル値に基づいて各ピクセルに適用され、未補正のピクセル値を決定した後にそれとは別個の追加の計算を必要とする。
【００２２】
[0028]  ある実施態様において、ピクセル値に適用される補正係数のうちの１又は複数は、予め計算されてルックアップテーブルに組み込まれることが可能である。ピクセル値に適用される補正の多くは、組み立てられたカバレージデータのビットによって完全に指定される。例えば、６×１フォーマットのカバレージデータに対する組み立てられた１０ビットの数は、当該ピクセル値に適用されることが可能な様々な補正を決定するのに十分な情報を与える。そのような補正には、強調されたコントラスト補正、ＣｌｅａｒＴｙｐｅレベル調整、又はアルファ値補正が含まれることが可能である。ピクセル値に対する補正は前もって決定されることも可能であるため、これらの補正は、予め計算されることも可能である。このことは、ルックアップテーブルが補正ピクセル値を格納することを可能にし、当該補正ピクセル値は、ＧＰＵにより必要とされる演算の数を更に削減する。
【００２３】
[0029]  テキストレンダリングに利用されるピクセルに適用される補正係数のうちの１又は複数は、ユーザー又はハードウェアの設定に基づいて変化し得るということが特筆される。例えば、ピクセル値に適用される補正係数は、ユーザーにより選択された背景及びテキストの色、又はハードウェアディスプレイデバイスのコントラスト設定に依存し得る。結果として、もしピクセル値に対する補正がルックアップテーブルに含まれるのであれば、補正係数を修正する変更がなされる度に、新たなルックアップテーブルが必要とされるだろう。このことに適応するための１つの方法は、ルックアップテーブルの地図帳を持つことであり得る。一般的なユーザー及びディスプレイの設定、及び／又は新しい設定の組み合わせに対して、ルックアップテーブルの地図帳の中に、１つのルックアップテーブルが格納されることが可能である。まだ計算されていない新しい設定の組み合わせが選択された場合、新しいテーブルが計算されて、地図帳に追加されることが可能である。メモリを節約するために、ルックアップテーブルの地図帳には、限られた数のテーブルが含まれることが可能である。例えば、１０ビットのデータのルックアップのための２０個のテーブルは、９６ｋＢよりも少ない空間に格納されることが可能である。新しいテーブルが追加される場合、テーブルのうちの１つ、例えば最も以前に使用されたテーブルが、選択されて除去されることが可能である。
【００２４】
[0030]  ピクセル値に対するデータ補正は、大きいデータフォーマットに対する更なる挑戦を提示することが可能である。例えば、６×５フォーマットのデータは、ピクセル値を指定するのに全部で５０ビットを必要とする。上述されたように、当該データを１０ビットデータの５つの行として分析することによって、未補正のピクセル値に対するルックアップテーブルが作成されることが可能である。しかしながら、ピクセル値に対する補正係数のうちの少なくともいくつかは、ピクセルに対するオーバーサンプリングデータの全てに基づくものであり、当該オーバーサンプリングデータの一部分に対応する１０ビットデータのテーブルに収容するために、容易には分離されることが不可能である。例えば、６×５のピクセル値に対する強調されたコントラスト補正は、１０ビットデータの行が垂直方向に集約された後に、計算され適用されなければならない。より大きいデータフォーマットにおけるピクセルの補正については、１つの選択肢は、ルックアップテーブルから検索されたデータに基づく従来の方法で、補正を計算することであり得る。あるいはまた、６×５フォーマットのカバレージデータに関する例において、垂直方向の集約の結果は、ディスプレイモニターの赤、緑、及び青のチャンネルに対応するグレースケールの３つのチャンネルである。これらのグレースケールのチャンネル個々のそれぞれに対して、補正データの少なくともいくつかが、適切なサイズを有したテーブルに格納されることが可能である。このように、いくつかの補正値についてルックアップテーブルを持ち、その一方で残りの補正を従来方法で計算することによって、いくつかの計算が回避されることが可能である。
【００２５】
[0031]  図６は、本発明の実施態様によるテキストピクセルの表示のためのプロセスフローを模式的に示す。図６において、当該プロセスの展開ビューが、全体的なコンテキストを与えるように提供されている。テクスチャーのカバレージ矩形及びテクスチャーの座標６１０は、テキストをラスタライズするために用いられるグリッドを表す。頂点シェーダー６２０は、スクリーンスペースの変形を実施するための機能６２２、及びテクスチャー座標をコピーするための機能６２４を含む。ピクセルシェーダー６３０は、カバレージの計算を実施するための機能６３２、及びアルファ調整等の補正を計算するための機能６３４を含む。１ｂｐｐのカバレージデータ６６０は、ピクセルシェーダー６３０によって処理される。このプロセスの一部分として、いくつかの計算が、カバレージルックアップテーブル６７２及びアルファルックアップテーブル６７４で置き換えられることが可能である。ブレンドステージ６４０は、ＣｌｅａｒＴｙｐｅブレンディング等の追加のブレンディングを実施するための機能６４２を含む。
【００２６】
[0032]  本発明の様々な実施態様の概観を簡潔に説明したので、本発明を実施するのに適した例示的な動作環境がこれより説明される。図面を全般的に参照して、特にまず図１を参照して、本発明の実施態様を実現するための例示的な動作環境が示され、概略的にコンピューティングデバイス１００として指示されている。コンピューティングデバイス１００は、適したコンピューティング環境のほんの１つの例であって、本発明の利用範囲又は機能に関して如何なる限定をも示唆することを意図していない。コンピューティングデバイス１００はまた、図示された要素の任意の１つ若しくは組み合わせに関連する如何なる依存性又は要件をも有するものと解釈されるべきでない。
【００２７】
[0033]  本発明の実施態様は、コンピューター又は他のマシン、例えば携帯情報端末や他のハンドヘルド型デバイスによって実行される、プログラムモジュール等のコンピューター実行可能命令を含むコンピューターコード又はマシン使用可能命令の一般的な文脈で説明されることができる。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含むプログラムモジュールは、特定のタスクを実施し、又は特定の抽象データ型を実現するコードを意味する。本発明は、ハンドヘルド型デバイス、家電製品、汎用コンピューター、より専門的なコンピューティングデバイス等を含む様々なシステム構成で実践されることができる。本発明はまた、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実施される、分散コンピューティング環境で実践されることもできる。
【００２８】
[0034]  引き続き図１を参照すると、コンピューティングデバイス１００は、次のデバイス、即ちメモリ１１２、１つ又は複数のプロセッサー１１４、１つ又は複数の提示コンポーネント１１６、入力／出力（Ｉ／Ｏ）ポート１１８、Ｉ／Ｏコンポーネント１２０、及び例証的な電源１２２を直接的に又は間接的に接続するバス１１０を含む。バス１１０は、（アドレスバス、データバス、又はそれらの組み合わせといったような）１つ又は複数のバスであるかもしれないものを表す。図１の様々なブロックは明瞭性のために線で示されているが、現実には様々なコンポーネントの境界をはっきりさせるのはそれほど明確ではなく、比喩として、これらの線は、より正確には灰色で曖昧となることだろう。例えば、人は、ディスプレイデバイス等の提示コンポーネントをＩ／Ｏコンポーネントとみなすかもしれない。加えて、多くのプロセッサーはメモリを有している。本発明の発明者は、そのようなことは当該技術の特質であると認め、図１の図形は本発明の１つ又は複数の実施態様に関連して用いられることが可能な例示的なコンピューティングデバイスを、単に例証しているに過ぎないということを繰り返し述べる。「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルド型デバイス」等のようなカテゴリー間において区別はなされない。何故なら、それらは全て図１の範囲内において予期され、「コンピューティングデバイス」を参照するものであるからである。
【００２９】
[0035]  コンピューティングデバイス１００は、典型的に、様々なコンピューター読み取り可能媒体を含んでいる。コンピューター読み取り可能媒体は、コンピューティングデバイス１００によってアクセスされることが可能な任意の利用可能な媒体であることができ、揮発性及び不揮発性媒体、リムーバブル及び非リムーバブル媒体の両方を含む。限定ではなく例として、コンピューター読み取り可能媒体は、コンピューター記憶媒体と通信媒体とを含むことができる。コンピューター記憶媒体は、コンピューター読み取り可能命令、データ構造、プログラムモジュール又は他のデータといったような、情報の記憶のための任意の方法又は技術によって実現された揮発性及び不揮発性、リムーバブル及び非リムーバブルの媒体を含む。コンピューター記憶媒体は、限定ではなく、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電子的に消去可能なプログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他のホログラフィックメモリ、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶デバイス、搬送波、又は、所望の情報をエンコードするのに使用されることが可能であり、コンピューティングデバイス１００によってアクセスされることが可能である任意の他の媒体を含む。実施態様において、コンピューター記憶媒体は、有形のコンピューター記憶媒体であり得る。実施態様において、コンピューター記憶媒体は、非一時的なコンピューター記憶媒体であり得る。
【００３０】
[0036]  メモリ１１２には、揮発性及び／又は不揮発性メモリの形態のコンピューター記憶媒体が含まれる。当該メモリは、リムーバブル、非リムーバブル、又はそれらの組み合わせであり得る。例示的なハードウェアデバイスには、固体メモリ、ハードドライブ、光ディスクドライブ等が含まれる。コンピューティングデバイス１００は、メモリ１１２又はＩ／Ｏコンポーネント１２０といったような様々なエンティティからデータを読み出す１つ又は複数のプロセッサーを含む。提示コンポーネント１１６は、データを表すものをユーザー又は他のデバイスに提示する。例示的な提示コンポーネントには、ディスプレイデバイス、スピーカー、印刷コンポーネント、振動コンポーネント等が含まれる。
【００３１】
[0037]  Ｉ／Ｏポート１１８は、コンピューティングデバイス１００が、Ｉ／Ｏコンポーネント１２０を有する他のデバイスに論理的に接続されることを可能にし、そのうちのいくつかは、内蔵されることができる。例証的なコンポーネントには、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナー、プリンター、無線デバイス等が含まれる。
【００３２】
[0038]  図２は、グリフの処理及びテキストのレンダリングのために利用されることができるコンピューティングデバイス１００のコンポーネントを詳述する。ＧＰＵ１２４のハードウェアのいくつかは、１又は複数の手続きシェーダーを含む。手続きシェーダーは、グラフィックデータに対して専門的な演算を実行するための、ＧＰＵ１２４の専門処理サブユニットである。手続きシェーダーの一例は、概して頂点に対する演算を実行する頂点シェーダー１２６である。例えば、頂点シェーダー１２６は、個々の頂点に対して位置、色、及びテクスチャー座標の計算を適用することが可能である。頂点シェーダー１２６は、グラフィックパイプラインのメモリ中で指定された頂点のストリームに対して、固定の関数計算又はプログラム可能な関数計算の何れかを実行することができる。手続きシェーダーの別の例は、ピクセルシェーダー１２８である。例えば、頂点シェーダー１２６の出力値はピクセルシェーダー１２８へ渡されることが可能であり、次に当該ピクセルシェーダー１２８が、個々のピクセルそれぞれに対して演算を実行する。手続きシェーダーが演算を完了した後、ＧＰＵバッファー１３０に情報が配置される。この情報は、接続されているディスプレイデバイス上に提示されることができ、又は、更なる処理のためにホストへ返送されることができる。
【００３３】
[0039]  ＧＰＵバッファー１３０は、グリフテクスチャーのためのステージサーフェス又はスクラッチサーフェスとしてＧＰＵ１２４上に記憶場所を提供する。様々なレンダリング演算がグリフテクスチャーに関して実行される際に、グリフは、ＧＰＵバッファー１３０からアクセスされ、変更され、当該バッファー１３０上に再記憶されることができる。当業者に知られているように、ＧＰＵバッファー１３０は、処理中のグリフが、テキストパイプラインにより変形される間にＧＰＵ１２４上に残留することを可能にする。グリフをＧＰＵ１２４からメモリ１１２へ転送するのは時間がかかるため、グリフテクスチャー即ちビットマップがＧＰＵバッファー１３０上に残留することは、望ましいことであり得る。
【００３４】
[0040]  ピクセルシェーダー１２８に関して、ピクセルシェーディングの専門的な機能は、ピクセルシェーダー１２８へ命令をダウンロードすることによって達成されることが可能である。例えば、ダウンロードされた命令は、グリフテクスチャーの専門的なマージ、フィルタリング、又は平均化を可能とすることができる。更にまた、ピクセルシェーダー１２８に適合された命令セットによって、多くの異なる演算の機能が提供されることができる。ピクセルシェーダー１２８をプログラムする能力は、テキストレンダリング演算にとって都合がよいものであり、専門的な命令のセットは、進化を容易にし、また性能を向上させることによって、価値を付加することができる。ピクセルシェーダー１２８の命令カウント限界及び他のハードウェア制限を超過しないと仮定すれば、これらの命令を実行することにより、様々な機能がピクセルシェーダー１２８によって実施されることが可能である。
【００３５】
[0041]  図３は、本発明の実施態様による方法を示すフローチャートを表している。図３に示された実施態様において、１ビットパーピクセルのカバレージデータが３１０において受け取られる。このカバレージデータは、６×１フォーマット等のオーバーサンプリングされたフォーマットを有する。受け取られたカバレージデータは、１ビットパーバイトの記憶よりも大きい記憶フォーマットで記憶される。カバレージデータのビットは、ｎビットの明度を形成するように３２０において組み立てられる。このｎビットの明度、例えば６×１フォーマットの場合における１０ビットの明度は、上記のオーバーサンプリングされたフォーマットを有するピクセルに対応する。当該ｎビットの明度を用いて、ピクセル値テーブルが３３０においてインデックス付けされる。インデックス付けされた位置に対応する少なくとも１つのピクセル値が、３４０において取得される。次いで、当該取得された少なくとも１つのピクセル値に基づいて、ピクセルが３５０においてレンダリングされる。
【００３６】
[0042]  図４は、本発明の実施態様による別の方法を示すフローチャートを表している。図４に示された実施態様において、１ビットパーピクセルのカバレージデータが４１０において受け取られる。このカバレージデータは、６×５フォーマット等のオーバーサンプリングされたフォーマットを有する。受け取られたカバレージデータは、１ビットパーバイトの記憶よりも大きい記憶フォーマットで記憶される。カバレージデータのビットは、複数のｎビットの明度を形成するように４２０において組み立てられる。このｎビットの明度のそれぞれ、例えば６×５フォーマットの場合におけるピクセルカバレージデータの一部分である１０ビットの明度のグループは、上記のオーバーサンプリングされたフォーマットを有するピクセルの一部分に対応する。また、このｎビットの明度のそれぞれは、複数のバイトからのビットを含む。当該複数のｎビットの明度を用いて、ピクセル値テーブルが４３０において複数回インデックス付けされる。同じピクセル値テーブルが複数回インデックス付けされることが可能であり、又は、オプションとして、当該ｎビットの明度が使用されて２以上のピクセル値テーブルをインデックス付けすることが可能である。インデックス付けされた位置に対応する複数の部分的なピクセル値が、４４０において取得される。当該取得された部分的なピクセル値は、複数の結合ピクセル値を形成するように４５０において結合される。次いで、この結合されたピクセル値に基づいて、ピクセルが４６０においてレンダリングされる。
【００３７】
[0043]  図５は、本発明の更に別の実施態様による方法を示すフローチャートを表している。図５に示された実施態様において、１ビットパーピクセルのカバレージデータが５１０において受け取られる。このカバレージデータは、６×５フォーマット等のオーバーサンプリングされたフォーマットを有する。受け取られたカバレージデータは、１ビットパーバイトの記憶よりも大きい記憶フォーマットで記憶される。記憶されたピクセルカバレージデータのバイトは、浮動小数点データ型として５２０においてサンプリングされる。当該バイトには、レンダリングされるピクセルのカバレージデータに対応する１又は複数のビットが含まれている。このサンプリングされた浮動小数点のバイトは、上記の記憶されたデータ内の１又は複数のビットを分離するように５３０において変形される。例えば、この変形は、関心のあるビットがその数の小数点の片側に分離されるようにする、２の累乗の乗算であり得る。変形されたバイトは、上記１又は複数の分離されたビットに対応しないビットを除去するように、５４０において切り捨てられる。当該分離されたビットは、上記のオーバーサンプリングされたフォーマットを有するピクセルに対応するｎビットの明度を形成するように、分離されたビットの少なくとも１つの他の一部分と共に５５０において組み立てられる。当該ｎビットの明度を用いて、ピクセル値テーブルが５６０においてインデックス付けされる。インデックス付けされた位置に対応する少なくとも１つのピクセル値が、５７０において取得される。次いで、この取得された少なくとも１つのピクセル値に基づいて、ピクセルが５８０においてレンダリングされる。
【００３８】
＜事例＞
[0044]  以下は、予言的な事例である。ディスプレイの設定への変更が、アンチエイリアシングされたテキスト等のオブジェクトを表示している物理的ディスプレイに関して検出される。この物理的ディスプレイ上のピクセルは、６×１のオーバーサンプリングされた１ｂｐｐのカバレージデータに基づいてレンダリングされている。上記変更は、当該物理的ディスプレイデバイスにおける設定の変更、表示されるテキストの色の変更、又は別の変更であり得る。この変更に基づいて、ディスプレイのピクセルに影響を与える設定が検出される。検出された設定は、ルックアップテーブルの地図帳に格納されているルックアップテーブル内の設定と対比される。設定の適合したグループが見つからない場合、新たなルックアップテーブルが作成される。当該ルックアップテーブルは、６×１のカバレージデータに関して可能なとり得る２１０通りの組み合わせのそれぞれに対する補正ピクセル値を与える。この補正ピクセル値は、アルファ補正、ＣｌｅａｒＴｙｐｅ補正、又は他の任意のタイプの補正等の、ピクセル値に対する補正を含む。当該新たなルックアップテーブルは上記地図帳へ追加され、地図帳内の最も古いルックアップテーブルが除去される。
【００３９】
[0045]  次いで、上記の新たなルックアップテーブルは、ディスプレイデバイス上にテキストグリフ等のオブジェクトをレンダリングするのに利用される。表示される当該グリフは、６×１のオーバーサンプリングされた１ｂｐｐのカバレージデータとして表現される。この１ｂｐｐのデータは、ＣＰＵからＧＰＵへの転送のために８ビットのデータを１バイトに配置することによって圧縮される。ＧＰＵへの転送の後、各ピクセルに対するデータが、当該ピクセルに対応するデータを収容している２バイトにアクセスすることによって抽出される。関心のあるビットを分離するのにビットシフト演算が用いられ、当該関心のあるビットから１０ビットの数が形成される。次いで、この１０ビットの数は、上記の新たなルックアップテーブルをインデックス付けするのに利用される。当該１０ビットの数に対応する記憶されたピクセル値が取得され、表示のために用いられる。記憶されている値に全ての補正が組み込まれていれば、当該記憶されているピクセル値は他の如何なる補正計算も必要としないかもしれない。
【００４０】
＜補足的な実施態様＞
[0046]  第１の実施態様において、アンチエイリアシングされたレンダリングのための方法が提供される。この方法は、オーバーサンプリングされたフォーマットを有する１ビットパーピクセルのカバレージデータを受け取るステップであって、前記受け取られたカバレージデータは１ビットパーバイトの記憶よりも大きい記憶フォーマットを有する、ステップと、前記オーバーサンプリングされたフォーマットを有するピクセルに対応するｎビットの明度を形成するようにカバレージデータのビットを組み立てるステップと、前記ｎビットの明度を用いてピクセル値テーブルをインデックス付けするステップと、前記インデックス付けされた位置に対応する少なくとも１つのピクセル値を取得するステップと、前記取得された少なくとも１つのピクセル値に基づいてピクセルをレンダリングするステップと、を含む。
【００４１】
[0047]  第２の実施態様において、上記第１の実施態様に従う方法が提供され、ｎビットの明度を形成するようにカバレージデータのビットを組み立てる前記ステップは、記憶されたピクセルカバレージデータのバイトを浮動小数点データ型としてサンプリングするステップであって、前記バイトはレンダリングされるピクセルのカバレージデータに対応する１又は複数のビットを含む、ステップと、前記記憶されたデータに含まれる前記１又は複数のビットを分離するように、前記サンプリングされた浮動小数点のバイトを変形するステップと、前記１又は複数の分離されたビットに対応しないビットを除去するように、前記変形されたバイトを切り捨てるステップと、前記オーバーサンプリングされたフォーマットを有するピクセルに対応するｎビットの明度を形成するように、前記分離されたビットを分離されたビットの少なくとも１つの他の一部分と共に組み立てるステップと、を含む。
【００４２】
[0048]  第３の実施態様において、上記実施態様の何れかに従う方法が提供され、前記カバレージデータに対する前記オーバーサンプリングされたフォーマットは６×１フォーマットであり、前記ｎビットの明度は１０ビットの明度に対応する。
【００４３】
[0049]  第４の実施態様において、上記実施態様の何れかに従う方法が提供され、結合されたピクセル値を形成するように前記少なくとも１つのピクセル値を少なくとも第２のピクセル値と結合するステップであって、前記レンダリングされるピクセルは前記結合されたピクセル値に基づく、ステップを更に含む。
【００４４】
[0050]  第５の実施態様において、上記実施態様の何れかに従う方法が提供され、複数のｎビットの明度を形成するようにビットを組み立てる前記ステップは、複数のバイトからビットを組み立てるステップを含む。
【００４５】
[0051]  第６の実施態様において、アンチエイリアシングされたレンダリングのための方法が提供される。この方法は、オーバーサンプリングされたフォーマットを有する１ビットパーピクセルのカバレージデータを受け取るステップであって、前記受け取られたカバレージデータは１ビットパーバイトの記憶よりも大きい記憶フォーマットを有する、ステップと、複数のｎビットの明度を形成するようにカバレージデータのビットを組み立てるステップであって、各ｎビットの明度は、前記オーバーサンプリングされたフォーマットを有するピクセルに対応し、複数のバイトからのビットを含む、ステップと、前記複数のｎビットの明度を用いてピクセル値テーブルを複数回インデックス付けするステップと、それぞれのインデックス付けされた位置に対応する複数のピクセル値を取得するステップと、複数の結合されたピクセル値を形成するように、複数のインデックス付けされた位置に対応する取得されたピクセル値を結合するステップと、前記複数の結合されたピクセル値に基づいてピクセルをレンダリングするステップと、を含む。
【００４６】
[0052]  第７の実施態様において、上記第６の実施態様に従う方法が提供され、複数のピクセル値を取得する前記ステップは、ピクセル値の３つのチャンネルを取得するステップを含む。
【００４７】
[0053]  第８の実施態様において、上記第７の実施態様に従う方法が提供され、前記取得されたピクセル値を結合する前記ステップは、３つの結合されたチャンネルのピクセル値を形成するように前記ピクセル値の３つのチャンネルを結合するステップを含む。
【００４８】
[0054]  第９の実施態様において、上記第８の実施態様に従う方法が提供され、補正係数を取得するために、結合されたチャンネル値を用いて補正係数テーブルをインデックス付けするステップと、前記補正係数を前記結合されたチャンネル値に適用するステップと、を更に含む。
【００４９】
[0055]  第１０の実施態様において、上記第６乃至第９の実施態様の何れかに従う方法が提供され、前記カバレージデータに対する前記オーバーサンプリングされたフォーマットは６×５フォーマットであり、各ｎビットの明度は１０ビットの明度に対応する。
【００５０】
[0056]  第１１の実施態様において、上記実施態様の何れかに従う方法が提供され、前記受け取られたカバレージデータは少なくとも８ビットパーバイトの記憶フォーマットを有する。
【００５１】
[0057]  第１２の実施態様において、上記実施態様の何れかに従う方法が提供され、前記１ビットパーピクセルのカバレージデータはテキストグリフに対するカバレージデータを表す。
【００５２】
[0058]  第１３の実施態様において、上記実施態様の何れかに従う方法が提供され、ピクセル補正係数を修正する変更を検出するステップと、前記修正されたピクセル補正係数を組み込むピクセル値のテーブルを構築するステップと、を更に含み、前記ｎビットの明度を用いてピクセル値テーブルをインデックス付けする前記ステップは、前記構築されたテーブルをインデックス付けするステップを含む。
【００５３】
[0059]  第１４の実施態様において、上記第１３の実施態様に従う方法が提供され、前記構築されたテーブルはテーブルの地図帳に記憶される。
【００５４】
[0060]  本発明の実施態様は、特定の実施態様に関連して説明されたが、当該実施態様は、あらゆる点において、限定的ではなく例証的であることを意図されている。当業者には、本発明がその範囲から逸脱することなく関連を持つ代替的な実施態様が明らかとなるだろう。
【００５５】
[0061]  上述したことから、本発明は、明白であり且つその構成に固有である他の優位性と共に本明細書において規定された、あらゆる目標及び目的を達成するのによく適応した発明である、ということが見出されるだろう。
【００５６】
[0062]  ある特徴及び部分的組み合わせは有用であり、他の特徴及び部分的組み合わせを参照することなく利用されることができる、ということは理解されるだろう。これは、特許請求の範囲によって予期され、特許請求の範囲の中に含まれる。
【図１】
2013536490.tif 000003
【図２】
2013536490.tif 000004
【図３】
2013536490.tif 000005
【図４】
2013536490.tif 000006
【図５】
2013536490.tif 000007
【図６】
2013536490.tif 000008
【図７】
2013536490.tif 000009
【国際調査報告】
2013536490.tif 000010
2013536490.tif 000011