(57)【要約】【課題】アンチエイリアス処理において、複数の画像オブジェクトのシルエットが画素を共有している状況を正確に表現する。不透明な画像オブジェクトだけでなく、半透明な画像オブジェクトについてもカバレッジを反映した画素値を算出する。【解決手段】画素内の空白領域を示す副画素を備えたメモリーと、染色された領域の色情報を蓄積するメモリーを用意し、色情報を伴う副画素を仮想的に設定する。半透明の表示については、有効となる副画素を制限することにより、画像オブジェクトのカバレッジを縮減し、背景の透過率を調節する。有効となる副画素の設定は、ビットマスクによるフィルタリングにより実現する。【選択図】図２１
2013037664.tif 000002
【特許請求の範囲】
【請求項１】
アンチエイリアス処理されたグラフィックオブジェクトをレンダリングする方法において、
空白の領域を記憶するためのメモリーであって、２Nビットの副画素を構成し、Ｎは少なくとも５以上であり、前記副画素のマトリックス中の染色されていない副画素をＯＮステータスで示し、通常はＯＮステータスは１、ＯＦＦステータスは０として規定されるが、逆の設定の場合は関連するＡＮＤ演算とＯＲ演算もプロセスに全般にわたって逆転されるものであって、すべての副画素がＯＮの状態で初期化される第１メモリーを準備するステップと、
前記第１メモリーに対応する色値を保持する第２メモリーであって、前記副画素の数を反映した２N分の色値の累積を格納可能であり、前記第１メモリーにおける染色された副画素数と前記第２メモリーにおける色値の前記累積が同期するよう設計された第２メモリーを準備するステップと、
手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行う走査変換ステップであって、
対象となるオブジェクトのカバレッジを確定するステップと、
前記カバレッジに対応する前記第１メモリー中の領域をＯＦＦステータスに反転するステップと、
前記第１メモリー中の反転された副画素数に呼応する色値を前記第２メモリーに積み上げて、前記第１メモリーの全ての副画素が反転された後、前記第２メモリーに積み上げられた色値によって画素値を確定するステップとを備える走査変換ステップと
を具備することを特徴とする方法。
【請求項２】
対象画面内の更新される領域に属する第１メモリーを初期化し、それ以外の領域を完全にＯＦＦステータスに設定することにより、更新される領域がクリッピングされるステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項３】
対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトを準備するためのステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項４】
前記対象となるオブジェクトのカバレッジを確定するステップにおいて、透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、カバレッジを減縮することを特徴とする請求項３に記載の方法。
【請求項５】
前記フィルターオブジェクトを準備するためのステップにおいて、
ビットマスクによる複数のレイヤーであって、循環型の階層構造を持ち、各レイヤーのＯＮステータスの位置が連続的にレイヤーの序列に応じて移動する経路（シグナル経路）の集合体としてマトリクスを構成し、各シグナル経路はレイヤーの総数あるいはその因数分の長さを備える、基本レイヤーを準備するステップと、
ひとつまたは複数の前記基本レイヤーで構成されるフィルターオブジェクトであって、該フィルターオブジェクト中に含まれるレイヤー数は求められる透明度に応じて決定され、同じ透明度を共有しつつ前記各基本レイヤーに対応するバリエーションを備えるフィルターオブジェクトを準備するステップと
をさらに具備したことを特徴とする請求項４に記載の方法。
【請求項６】
前記第１メモリーは少なくとも２つの４×４リージョンで構成され、該４×４リージョンは４つの線形セグメントで構成され、各線形セグメントは４×４の循環型マトリクスにおいて対角線に即して４つの副画素が並んだものとして構成され、前記４つの線形セグメントは互いに重複することなく同じ対角線傾斜を共有することを特徴とした請求項５に記載の方法。
【請求項７】
前記レイヤーの各々に設定されるＯＮステータス（シグナル）の数はそれぞれＫ＝２N／４であり、前記レイヤーの不透明度が１／４となることを特徴とした請求項６に記載の方法。
【請求項８】
Ｋ／４シグナルがＫ／４シグナル経路に個別に配布され、３Ｋ／４シグナルがＫ／４シグナル経路に実質的に均一に配布される（各３シグナル）ことを特徴とした請求項７に記載の方法。
【請求項９】
３つのシグナルを持つシグナル経路は各４×４リージョン内の２つの線形セグメント上に設定され、前記２つの線形セグメントは、循環型の４×４マトリクス上で隣り合う関係にあることを特徴とした請求項８に記載の方法。
【請求項１０】
前記３シグナルは４×４リージョンを２×２にコピーした仮想空間上で絶対値としてのラジアンR = π/ 2 + 2 x tan-1(0.5)の角度を形成し、頂点のシグナルが一方の線形セグメントへ、両端のシグナルがもう一方の線形セグメントへ割り当てられることを特徴とした請求項９に記載の方法。
【請求項１１】
前記３シグナルは、２つの奇数長のインターバルをおいて配置され、シグナル経路上の４つの偶数インデックスのポイントと４つの奇数インデックスのポイントは、個別に前記２つの線形セグメントに割り当てられ、前記２つの線形セグメントに配置されたインデックスの進行方向が同方向となることを特徴とした請求項１０に記載の方法。
【請求項１２】
２つの異なるインターバルの組合せが各２つの３シグナルを持つシグナル経路のために用意され、これらのインターバルは、１、２、３の間隔に設定されたものが、前記２つのシグナル経路のいずれかに割り当てられ、各間隔のインターバル数は同一となることを特徴とした請求項１１に記載の方法。
【請求項１３】
前記２つの線形セグメントの偶数インデックスの位置と奇数インデックスの位置とが相対的に、与えられたインターバルに即して絶対値ラジアンＲを構成するように設定され、そこではインデックスの進行にともない、頂点のシグナルを前記２つの線形セグメントに交互に配置しながら、正と負のラジアンＲを交互に構成することを特徴とした請求項１２に記載の方法。
【請求項１４】
各４×４リージョン内の２つの線形セグメントが単一シグナルのシグナル経路のために確保され、それぞれのポイントは前記３シグナルの両端のポイントと共にオリジナルの頂点ポイントと対称をなすラジアンＲを構成する位置に配置されることを特徴とした請求項１３に記載の方法。
【請求項１５】
前記対称をなすラジアンＲを構成するポイント群はインデックスの進行と共に正と負のラジアンＲを交互に構成し、偶数インデックスと奇数インデックスは前記２つの線形セグメントに個別に割り振られることを特徴とした請求項１４に記載の方法。
【請求項１６】
それぞれの単一シグナルのためのシグナル経路は、２つの異なる４×４リージョンに属する２つの線形セグメントに跨って配置され、各２つの単一シグナルのためのシグナル経路が各２つの４×４リージョンに割り当てられ、それぞれ第１経路と第２経路に関して、該第２経路は編集可能なエリアとして定義され、偶数インデックスと奇数インデックスの割り当ては第１経路と第２経路との間で各２の４×４リージョン内で交互するように設定されることを特徴とした請求項１５に記載の方法。
【請求項１７】
前記編集可能なシグナル経路は、選択的にレイヤー総数の因数長となるように分割され、該分割された経路はシグナルなし（背景のために確保された領域）とすることも可能であることを特徴とした請求項１６に記載の方法。
【請求項１８】
前記副画素が、４つ、もしくはそれ以上の４×４リージョンを含有する場合には、シグナル経路の進行方向は、任意の形式で対称となるように設定されることを特徴とした請求項１７に記載の方法。
【請求項１９】
各レイヤーのＩＤビットは、前記単一シグナルのための第１経路のレイアウトに配慮して定義され、前記第１経路上のビットを２つのオペレーションにより連続したビット列に並べることによりそれぞれのＩＤビットとして確定され、該２つのオペレーションはあらかじめ設定された定数として、
前記第１シグナル経路の対応する部分を乗算して意図された序列に並べられたセグメントを構成するための乗数と、
前記意図された序列に並べられたセグメントにシフト演算を行い、ＩＤビットのための個別のビット位置にならべるためのオフセット値と
を含むことを特徴とした請求項１８に記載の方法。
【請求項２０】
請求項１９に記載の方法において、
対象画素に未だ使用されていないレイヤーのＩＤを未使用ＩＤホルダーと呼ばれるビット配列に編纂する方法として、
（１）  前記単一シグナルのためのシグナル経路を、それぞれ前記２つのオペレーションによりＩＤビット列に編纂するステップと、
（２）  前記単一シグナルのためのシグナル経路が複数存在する場合、前記（１）の結果の間でＡＮＤ演算を行うステップと、
（３）  前記（２）の結果が期待されるＩＤ数を含んでいない場合、前記（１）の結果の間でＯＲ演算を行うステップと
を具備したことを特徴とする方法。
【請求項２１】
請求項２０に記載の方法において、
対象画素に対して適切なレイヤーを特定するための変換テーブルを、前記未使用ＩＤホルダーのすべてのバリエーションに対応可能なものとして、優先順位を反映したものとして構築し、該優先順位は、
（１）循環型のＩＤ序列のなかで利用可能なレイヤーＩＤの序列が複数のブロックに分割された状態にある場合、最も小さなブロック内に含まれるＩＤによりレイヤーが選ばれる；
（２）循環型のＩＤ序列のなかで利用可能なレイヤーＩＤの序列が連なっている場合、利用可能なレイヤーＩＤの序列の先頭部分で示されるレイヤーが選ばれる；
（３）利用可能なレイヤーＩＤの序列に即してレイヤーが選ばれる；
として規定されることを特徴とする方法。
【請求項２２】
前記フィルターオブジェクトによるフィルタリングによりカバレッジを縮減するステップは、
対象画素のための未使用ＩＤホルダーを取得するステップと、
前記変換テーブルより前記取得された未使用ＩＤホルダーを使用して対象画素に適用すべきフィルターオブジェクトを特定するステップと
を含んだことを特徴とする請求項２１に記載の方法。
【請求項２３】
請求項２２に記載の方法において、
対象画素のための未使用ＩＤホルダーを取得するステップは、
（ａ）未使用ＩＤホルダーを対象画素に対応した前記第１メモリーから取得する方法；
（ｂ）未使用ＩＤホルダーが格納されるために用意されたメモリースペースから取得する方法であって、該格納される未使用ＩＤホルダーは、すべてのＩＤビットを持つものとして初期化され、フィルターが使用された場合はそのフィルターのＩＤが反転され、前記未使用のＩＤが不足している場合は、前記第１メモリーから再編纂される方法；
（ｃ）オブジェクトグループのための未使用ＩＤホルダーを取得する方法であって、前記オブジェクトグループのための未使用ＩＤホルダーは、
同じレイヤーを共有するグループのためにグループＩＤが用意され、
各画素用にグループＩＤ及び前記オブジェクトグループのための未使用ＩＤホルダーが格納されるためのメモリーが用意され、このメモリーは対象画素にとって未知のグループＩＤを持つオブジェクトにフィルターが使用されるたびに更新され、
描画対象のオブジェクトの持つグループＩＤと前記メモリーに格納されたグループＩＤとが比較され、両ＩＤが一致した場合は、オブジェクトグループのための未使用ＩＤホルダーが対象オブジェクトのための未使用ＩＤホルダーとして取得され、そうでない場合は前記（ａ）または前記（ｂ）の方法で未使用ＩＤホルダーが取得されると共に、前記メモリーは、対象オブジェクトのグループＩＤ及び前記取得された未使用ＩＤホルダーで更新されることで生成される方法；
のいずれかの方法により未使用ＩＤホルダーを取得することを特徴とする方法。
【請求項２４】
アンチエイリアス処理されたグラフィックオブジェクトをレンダリングするための装置において、
各ピクセル中の空白の領域を記憶するためのメモリーであって、２Nビットの副画素を備え、Ｎは少なくとも５以上であり、前記副画素のマトリックス中の染色されていない副画素を副画素マトリックス中のＯＮステータスで示し、通常はＯＮステータスは１、ＯＦＦステータスは０であるとして規定され、逆の設定の場合は関連するＡＮＤ演算とＯＲ演算もプロセスの全般にわたって逆転されるものであって、すべての副画素がＯＮの状態で初期化される第１メモリーと、
前記第１メモリーに対応した色値を保持する第２メモリーであって、前記副画素の数を反映する２N分の色値の累積を格納可能であり、前記第１メモリーにおける染色された副画素数と該第２メモリー中の前記色値の前記累積が同期するよう設計された第２メモリーと、
手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行うための走査変換部であって、
対象となるオブジェクトのカバレッジを確定するためのカバレッジプロセッサと、
前記カバレッジに対応する前記第１メモリー中の領域をＯＦＦステータスに反転するためのインバータプロセッサと、
前記第１メモリー中の反転された副画素数に呼応する色値を前記第２メモリーに積み上げて、前記第１メモリーの全ての副画素が反転された後、前記第２メモリーに積み上げられた色値によって画素値を確定する画素数確定プロセッサとを備える走査変換部と
を具備することを特徴とする装置。
【請求項２５】
請求項２４記載の装置において、
対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトが準備され、
透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、サンプリング対象がフィルタリングされる
ことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願はコンピューター画像処理分野に係り、特にアンチエイリアス処理されたグラフィックオブジェクトをレンダリングする方法及び装置に関する。
【背景技術】
【０００２】
コンピューター画像処理において、文字グリフやポリゴンなどの画像オブジェクトは、画像を構成する最小単位である画素を通じて提示される。画素は出力画面上に格子状に配置され、画像オブジェクトの描写は、意図する位置に配置された画素に描画色を割り当てることによって実現される。必然的にこの方法では、格子の網目の細かさ、つまり解像度が画質を左右し、解像度が充分でない状態で現れるギザギザを除去するために、アンチエイリアスと呼ばれる処理が適用される。アンチエイリアスとは、画像出力装置が提供する解像度と、表示する画像に求められる解像度との隔たりを緩和する技術であるが、大別して２つの方法論に分けることができる。ひとつは、個々に割り当てられた画素値を周囲の画素値で補完する技術で、顕著な例としては、写真画像を異なる大きさで表示する処理などがあげられる。もう一方は、画像オブジェクトの輪郭表示を主題とする技術で、図１Ａにおいて例証されるようなものである。同図上では、傾斜した黒い長方形が白い背景の上に描写されている。１０１の輪郭線はギザギザとした状態で表示されている。これに対して、グレースケールによる諧調を与え、スムースな輪郭として表したものが１０２である。この後者のタイプの技術では、個々の画素上におけるオブジェクトの占有状況を把握するために、オブジェクトを任意のスケールに拡大する手法が一般的である。このスケール操作においては、各画素を、さらの細かい仮想の画素の集合として定義することにより、座標空間の拡大を実現する。この仮想の画素は「副画素」とよばれ、多くの場合、ビットマップ・イメージが配列により構成されることと同様に、ビット配列により構成される。１０３の副画素上では、１６ある副画素のうち、６つの副画素が拡大された長方形オブジェクトにより占有されている。この状況を参照して対象画素に割り当てる諧調を確定する。この占有された副画素を数える典型的な手法は、スーパーサンプリングと呼ばれ、ここで算出される諧調はしばしば、色の強度（ｃｏｌｏｒ  ｉｎｔｅｎｓｉｔｙ）と呼ばれる。結果として、オブジェクトの輪郭部に割り当てられる画素値は、拡大された座標空間を通じて得られた色の強度に即して、描画色と背景色をブレンドすることにより算出される。色の強度
「Ｃｉ」を正規化すると以下の式になる。
画素値＝Ｃｉ×描画色＋（１−Ｃｉ）×背景色；
【０００３】
このような手法で、ギザギザの除去が実現される。本発明は、このスーパーサンプリングの手法に依拠する技術である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第５９４００８０号明細書
【特許文献２】米国特許第６５０１４８３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のスーパーサンプリング技術では、画素値は描画色と背景色の構成比により確定されるが、複数の画像オブジェクトが描画されるとき、この技法では正確な表現が不可能な場合がある。以下に紹介する画素値確定のプロセスは、３種類のコーヒー、キリマンジェロ、モカ、ブラジルのブレンドに例えたものである。背景色を緑と仮定すると、この状況は、例えば、２００ｃｃのカップにキリマンジェロが満たされている状態である。この画素の右半分を赤いオブジェクトＲが以下のように占有したとする。
2013037664.tif 000003
【０００６】
この時点での状態は、緑が５０パーセント、赤が５０パーセントである。コーヒーに例えると、１００ｃｃのキリマンジェロをシンクにながしこみ、赤を示すモカ１００ｃｃ分をカップに注いだ状態である。１００ｃｃのキリマンジェロを廃棄する行為は、以下Ｃｉ×背景色の減算を意味し、そこに全体の容量を保つためのＣｉ×描画色が注入される。
画素値＝Ｃｉ×描画色＋（背景色−
Ｃｉ×背景色） ；
【０００７】
今度は、この画素の左半分を青いオブジェクトＢが占有した状態を想定してみる。
2013037664.tif 000004
【０００８】
ここでの画素値の算出は、描画色である青と現時点での背景色とのブレンドとなり、５０パーセント青、２５パーセント赤、２５パーセント緑となる。つまり、１００ｃｃがモカ、１００ｃｃがキリマンジェロにブレンドされた現在のコーヒーを半分シンクに流し込み、青にあたるブラジルを１００ｃｃ注ぎ込んだ状態である。本来、この画素は、右側が赤、左側が青に占有されるべきであり、背景色の緑は見えてはならない。しかし、緑を示すキリマンジェロ５０ｃｃがカップに残ってしまっている。この例のバリエーションとして、２番目に描画する青が右半分を、赤を覆うかたちで占有する場合はどうであろうか。
2013037664.tif 000005
【０００９】
構成比のみによる計算では、結果は前回と同じ結果になるが、正確には、青が５０パーセント、緑が５０パーセントにならなければならない。更に複雑な状況として、オブジェクトに透明度が設定され、画素の半分ずつを占有するのではなく、さまざまな角度で画素を横切り、部分的に重なるような状態であったならば、どうであろうか？  このような状況はブレンドの構成比のみでは、表現することができない。
【００１０】
本発明は、上述したような従来技術上の問題点を解決するためのもので、単純、正確、かつ相対的に高速な方法によって、アンチエイリアス処理されたグラフィックオブジェクトをレンダリングすることを実現することを課題とする。
【課題を解決するための手段】
【００１１】
本発明では、ブレンドが行われるたびにコーヒーカップが満たされることはない。代わりに、小さなカップが副画素の数だけ用意され、オブジェクトのシルエットが画素に差し掛かった場合には、そのシルエットの配下に位置するカップにそのオブジェクトに設定されたコーヒーが注がれる。一度コーヒーが注がれたカップにはマスクがかけられ、その上に更に、他のコーヒーを注ぐことはできない。例えば、図２の２Ａでは、まず約５０パーセント分のカップに最初のコーヒーがそそがれる。次に２Ｂのように次のコーヒーが注がれようとするが、２Ａの空のカップにしか注ぐことができない。結果として２番目のシルエットは、２Ｃに見られるように２５パーセントの画素を占有することになる。２Ｃが示すように、２つのカップが空のまま残されていて、すべての容量が満たされてはいない。これは、カップを満たすための＜画素値＝Ｃｉ×描画色＋（１−Ｃｉ）×背景色＞の等式による演算は、本発明では行われないことを示している。従来の方法では、１００ｃｃのモカが割り当てられたとしても、その占有率は最終的なブレンドにおけるモカの占有率を意味せず、新たなコーヒーが注入された場合、占有率は減少する。しかし、本発明において、最初のシルエットと次のシルエットによる２Ｃに示される占有率は、最終的なブレンドに対する構成比であり、画素値は、残りの２カップが満たされた後、確定される。
【００１２】
上出の処理は、空白の領域を示すための副画素を、各画素ごとに用意することにより実現される。この副画素内のすべてのビットは、空白の状態として初期化され、オブジェクトのシルエットが画素上を横切った場合、その配下にある副画素は、染色されたものとして反転される。これら染色された副画素は、後につづく描画処理からは、比較の上、除外される。複数の画像オブジェクトが同一の画素を共有する場合には、このような処理がオブジェクトの数だけ繰り返され、各オブジェクトは、縮小してゆく空白の領域の範囲内において占有率を確定して行く。必然的にオブジェクトは手前のものから奥のものへと描画されることとなり、これは、本発明の特徴のひとつである。各オブジェクトの占有率に即して算出された色値は、色値を保持するためのストレージに積み上げられ、すべての副画素が染色された後、画素値が確定する。ここでは、染色された副画素の数とストレージに積み上げられた色値のボリュームは同期し、最終的に積み上げられる色値は、副画素の数を反映したものになる。ここで「色値」の示すものは、好ましくは、ＲＧＢなどの色情報を構成するコンポーネント値のセットであり、その「積み上げられた」色値とは、合算された値を意味するが、これに限定されるものではない。いずれにせよ、副画素の数は２のべき乗と設定されているため、最終的に確定される画素値は、ビットのオフセット操作で効率的に算出することが可能となる。
【００１３】
この手法は、シンプルで、正確なものであり、処理速度も比較的高速におこなわれるが、メモリーの消費量は大きなものになる。本発明では、副画素の数は最低３２必要であり、推奨される副画素数は６４になるが、この分のメモリーが処理対象となる最大画像に対応できる分だけ用意され、これにともなう色値のストレージのためのメモリーも確保されなければならない。アンチエイリアス処理が、もっぱらオブジェクトの輪郭部に適用されることを思えば、これは効率的なメモリーの使用法とは言えない。しかしながら、ここで必要となるメモリー量は近年のコンピューターに装填されている記憶装置にとっては、問題となる負荷ではない。より難しい問題は、上出の手法で半透明のオブジェクトを表現することである。ストレージ上に積み上げられた色値を更にアルファブレンドすることは、もはや不可能である。
【００１４】
本発明における半透明の表現は、追加的なフィルタリングにより行われる。例えばモカに例示される半透明オブジェクトがキリマンジェロを背景とした空間に位置する１つの画素を全面的に覆っている状態を想定してみる。本発明では手前のオブジェクトから描写されるため、まず、モカがカップに注がれる。このとき、モカのシルエットが図２の２Ｄのビットマスクによりフィルタリングされた場合、２Ｅにあるように９つのカップにしか注がれないことになる。不透明である背景の描写の際には、フィルタリングはおこなわれず、キリマンジェロは残りの７つのカップに注がれる。結果として、対象の画素は、２つの異なるコーヒー、モカとキリマンジェロのブレンドとなる。複数のオブジェクトが描写される場合には、フィルタリングされる対象の副画素が、描写の順に応じて変化する。上出の２Ｅで示されたモカが示すオブジェクトにつづけて他のオブジェクトが描写される場合、フィルタリングのレイアウトが例えば２Ｆのように変化する。ここで、描写対象となるポイント数は２つのビットマスク共に９ポイントだが、これらのポイントが一部重複しているため、２番目に描写されるシルエットは、２Ｇにあるように４つのカップにしか注がれない。透明度の表現においては、手前側のオブジェクトは、奥側のオブジェクトよりも露出度が高くなければならない。ポイントの重複は、これを表現するためのものである。ここで露出されるポイントを１、マスクされるポイントを０で示すと、２Ｄと２Ｆの関係は以下のような関係になる。
2013037664.tif 000006
【００１５】
上出の表示では、視認性を高めるため、ビットのオーダーは調節されている。５つのポイントが重複しており、２Ｄの下の２Ｆでは、４つのポイントが有効となっている。本発明では、これら２つのマスクの関係を２Ｄマスクの有効ポイントがつづいて適用される２Ｆマスクの位置に移動したものとして認識される。
2013037664.tif 000007
【００１６】
上記の表示では、それぞれのポイントに個別の目印が付されることにより、その移動の仕方が視覚化されているが、この「移動経路」という概念がビットマスクを生成するための方法論として展開される。結果として生成されるビットマスクはレイヤーと呼ばれ、オブジェクトの透明度をコントロールするため複数のレイヤーが構築される。これらのレイヤーは、部分的に重複しながら階層構造を成し、レイヤーの集積に応じて透過率を減衰する。透過率は適用するレイヤーの数で調節可能だが、予め複数のレイヤーを意図されるボリュームに組み合わせることにより、異なる透過率をもつフィルターセットが構築される。これらのフィルターは、同じレイヤー構造をもとに構築されるため、異なる透過率のフィルターを同一の画面内で使用することが可能となる。図２による図説では、各レイヤーのＯＮステータスの位置を空いているコーヒーカップに例えているが、レイヤー構造の解説では、「シグナル」という概念を採用する。
【００１７】
また、上述のビットマスクによる透明オブジェクトの表現方法により、特殊な効果を実現できる。同じビットマスクでフィルタリングされたオブジェクト同士は互いを透過することはないが、同じレイヤーの共有を行うオブジェクトをグループ化することができる。例えば、２Ｅにつづけて描写されるオブジェクトが、同じ２Ｄのビットマスクでフィルタリングされた場合、最初のシルエットの背後にある２番目のシルエットは描写されなくなる。この技法は、結合された表示物の半透明化や多数のオブジェクトが共存する状況でのフォーカスを表現する場合などに効果をもたらす。
【００１８】
ここまで、述べてきたように、フィルタリングするポイントのレイアウトは、本発明にとって重要な要素となる。サンプリングポイントのレイアウトに関する課題は、米国特許第６，５０１，４８３号（特許文献２）に詳述されている。
【００１９】
上記課題を解決するために、本発明の一態様においては、アンチエイリアス処理されたグラフィックオブジェクトをレンダリングする方法において、空白の領域を記憶するためのメモリーであって、２Nビットの副画素を構成し、Ｎは少なくとも５以上であり、前記副画素のマトリックス中の染色されていない副画素をＯＮステータスで示し、通常はＯＮステータスは１、ＯＦＦステータスは０として規定されるが、逆の設定の場合は関連するＡＮＤ演算とＯＲ演算もプロセスに全般にわたって逆転されるものであって、すべての副画素がＯＮの状態で初期化される第１メモリーを準備するステップと、前記第１メモリーに対応する色値を保持する第２メモリーであって、前記副画素の数を反映した２N分の色値の累積を格納可能であり、前記第１メモリーにおける染色された副画素数と前記第２メモリーにおける色値の前記累積が同期するよう設計された第２メモリーを準備するステップと、手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行う走査変換ステップであって、対象となるオブジェクトのカバレッジを確定するステップと、前記カバレッジに対応する前記第１メモリー中の領域をＯＦＦステータスに反転するステップと、前記第１メモリー中の反転された副画素数に呼応する色値を前記第２メモリーに積み上げて、前記第１メモリーの全ての副画素が反転された後、前記第２メモリーに積み上げられた色値によって画素値を確定するステップとを備える走査変換ステップとを具備する。
【００２０】
上記において、「前記第１メモリーより反転された副画素数に呼応する色値を前記第２メモリーに積み上げて、前記第１メモリーの全ての副画素が反転された後、画素値を確定する」とは、たとえば、図１Ａに開示される態様に対応するが、これに限定されるものではない。
【００２１】
本発明の上記の態様においては、対象画面内の更新される領域に属する第１メモリーを初期化し、それ以外の領域を完全にＯＦＦステータスに設定することにより、更新される領域がクリッピングされるステップをさらに備えるように構成することもできる。
【００２２】
また、本発明の上記の一態様においては、対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトを準備するためのステップをさらに備えるように構成することもできる。
【００２３】
さらに、本発明の上記の態様においては、前記対象となるオブジェクトのカバレッジを確定するステップにおいて、透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、カバレッジを減縮するようにしてもよい。
【００２４】
また、本発明の上記の態様においては、前記フィルターオブジェクトを準備するためのステップにおいて、ビットマスクによる複数のレイヤーであって、循環型の階層構造を持ち、各レイヤーのＯＮステータスの位置が連続的にレイヤーの序列に応じて移動する経路（シグナル経路）の集合体としてマトリクスを構成し、各シグナル経路はレイヤーの総数あるいはその因数分の長さを備える、基本レイヤーを準備するステップと、ひとつまたは複数の前記基本レイヤーで構成されるフィルターオブジェクトであって、該フィルターオブジェクト中に含まれるレイヤー数は求められる透明度に応じて決定され、同じ透明度を共有しつつ前記各基本レイヤーに対応するバリエーションを備えるフィルターオブジェクトを準備するステップとをさらに具備するように構成することもできる。
【００２５】
さらに、本発明の上記の態様においては、前記第１メモリーは少なくとも２つの４×４リージョンで構成され、該４×４リージョンは４つの線形セグメントで構成され、各線形セグメントは４×４の循環型マトリクスにおいて対角線に即して４つの副画素が並んだものとして構成され、前記４つの線形セグメントは互いに重複することなく同じ対角線傾斜を共有するようにしてもよい。
【００２６】
また、本発明の上記の態様においては、前記レイヤーの各々に設定されるＯＮステータス（シグナル）の数はそれぞれＫ＝２N／４であり、前記レイヤーの不透明度が１／４となるようにしてもよい。
【００２７】
さらに、本発明の上記の態様においては、Ｋ／４シグナルがＫ／４シグナル経路に個別に配布され、３Ｋ／４シグナルがＫ／４シグナル経路に実質的に均一に配布される（各３シグナル）ようにしてもよい。
【００２８】
また、本発明の上記の態様においては、３つのシグナルを持つシグナル経路は各４×４リージョン内の２つの線形セグメント上に設定され、前記２つの線形セグメントは、循環型の４×４マトリクス上で隣り合う関係にあるようにしてもよい。
【００２９】
さらに、本発明の上記の態様においては、前記３シグナルは４×４リージョンを２×２にコピーした仮想空間上で絶対値としてのラジアンR = π/ 2 + 2 x tan-1(0.5)の角度を形成し、頂点のシグナルが一方の線形セグメントへ、両端のシグナルがもう一方の線形セグメントへ割り当てられるようにしてもよい。
【００３０】
また、本発明の上記の態様においては、前記３シグナルは、２つの奇数長のインターバルをおいて配置され、シグナル経路上の４つの偶数インデックスのポイントと４つの奇数インデックスのポイントは、個別に前記２つの線形セグメントに割り当てられ、前記２つの線形セグメントに配置されたインデックスの進行方向が同方向となるようにしてもよい。
【００３１】
さらに、本発明の上記の態様においては、２つの異なるインターバルの組合せが各２つの３シグナルを持つシグナル経路のために用意され、これらのインターバルは、１、２、３の間隔に設定されたものが、前記２つのシグナル経路のいずれかに割り当てられ、各間隔のインターバル数は同一となるようにしてもよい。
【００３２】
また、本発明の上記の態様においては、前記２つの線形セグメントの偶数インデックスの位置と奇数インデックスの位置とが相対的に、与えられたインターバルに即して絶対値ラジアンＲを構成するように設定され、そこではインデックスの進行にともない、頂点のシグナルを前記２つの線形セグメントに交互に配置しながら、正と負のラジアンＲを交互に構成するようにしてもよい。
【００３３】
さらに、本発明の上記の態様においては、各４×４リージョン内の２つの線形セグメントが単一シグナルのシグナル経路のために確保され、それぞれのポイントは前記３シグナルの両端のポイントと共にオリジナルの頂点ポイントと対称をなすラジアンＲを構成する位置に配置されるようにしてもよい。
【００３４】
また、本発明の上記の態様においては、前記対称をなすラジアンＲを構成するポイント群はインデックスの進行と共に正と負のラジアンＲを交互に構成し、偶数インデックスと奇数インデックスは前記２つの線形セグメントに個別に割り振られるようにしてもよい。
【００３５】
さらに、本発明の上記の態様においては、それぞれの単一シグナルのためのシグナル経路は、２つの異なる４×４リージョンに属する２つの線形セグメントに跨って配置され、各２つの単一シグナルのためのシグナル経路が各２つの４×４リージョンに割り当てられ、それぞれ第１経路と第２経路に関して、該第２経路は編集可能なエリアとして定義され、偶数インデックスと奇数インデックスの割り当ては第１経路と第２経路との間で各２の４×４リージョン内で交互するように設定されるようにしてもよい。
【００３６】
また、本発明の上記の態様においては、前記編集可能なシグナル経路は、選択的にレイヤー総数の因数長となるように分割され、該分割された経路はシグナルなし（背景のために確保された領域）とすることも可能であるように構成することもできる。
【００３７】
さらに、本発明の上記の態様においては、前記副画素が、４つ、もしくはそれ以上の４×４リージョンを含有する場合には、シグナル経路の進行方向は、任意の形式で対称となるように設定されるようにしてもよい。
【００３８】
また、本発明の上記の態様においては、各レイヤーのＩＤビットは、前記単一シグナルのための第１経路のレイアウトに配慮して定義され、前記第１経路上のビットを２つのオペレーションにより連続したビット列に並べることによりそれぞれのＩＤビットとして確定され、該２つのオペレーションはあらかじめ設定された定数として、前記第１シグナル経路の対応する部分を乗算して意図された序列に並べられたセグメントを構成するための乗数と、前記意図された序列に並べられたセグメントにシフト演算を行い、ＩＤビットのための個別のビット位置にならべるためのオフセット値とを含むようにすることもできる。
【００３９】
さらに、本発明の上記の態様においては、対象画素に未だ使用されていないレイヤーのＩＤを未使用ＩＤホルダーと呼ばれるビット配列に編纂する方法として、
（１）  前記単一シグナルのためのシグナル経路を、それぞれ前記２つのオペレーションによりＩＤビット列に編纂するステップと、
（２）  前記単一シグナルのためのシグナル経路が複数存在する場合、前記（１）の結果の間でＡＮＤ演算を行うステップと、
（３）  前記（２）の結果が期待されるＩＤ数を含んでいない場合、前記（１）の結果の間でＯＲ演算を行うステップと
を具備するように構成することもできる。
【００４０】
また、本発明の上記の態様においては、対象画素に対して適切なレイヤーを特定するための変換テーブルを、前記未使用ＩＤホルダーのすべてのバリエーションに対応可能なものとして、優先順位を反映したものとして構築し、該優先順位は、
（１）循環型のＩＤ序列のなかで利用可能なレイヤーＩＤの序列が複数のブロックに分割された状態にある場合、最も小さなブロック内に含まれるＩＤによりレイヤーが選ばれる；
（２）循環型のＩＤ序列のなかで利用可能なレイヤーＩＤの序列が連なっている場合、利用可能なレイヤーＩＤの序列の先頭部分で示されるレイヤーが選ばれる；
（３）利用可能なレイヤーＩＤの序列に即してレイヤーが選ばれる；
として規定されるように構成することもできる。
【００４１】
さらに、本発明の上記の態様においては、前記フィルターオブジェクトによるフィルタリングによりカバレッジを縮減するステップは、対象画素のための未使用ＩＤホルダーを取得するステップと、前記変換テーブルより前記取得された未使用ＩＤホルダーを使用して対象画素に適用すべきフィルターオブジェクトを特定するステップとを含むように構成してもよい。
【００４２】
また、本発明の上記の態様においては、対象画素のための未使用ＩＤホルダーを取得するステップは、
（ａ）未使用ＩＤホルダーを対象画素に対応した前記第１メモリーから取得する方法；
（ｂ）未使用ＩＤホルダーが格納されるために用意されたメモリースペースから取得する方法であって、該格納される未使用ＩＤホルダーは、すべてのＩＤビットを持つものとして初期化され、フィルターが使用された場合はそのフィルターのＩＤが反転され、前記未使用のＩＤが不足している場合は、前記第１メモリーから再編纂される方法；
（ｃ）オブジェクトグループのための未使用ＩＤホルダーを取得する方法であって、前記オブジェクトグループのための未使用ＩＤホルダーは、
同じレイヤーを共有するグループのためにグループＩＤが用意され、
各画素用にグループＩＤ及び前記オブジェクトグループのための未使用ＩＤホルダーが格納されるためのメモリーが用意され、このメモリーは対象画素にとって未知のグループＩＤを持つオブジェクトにフィルターが使用されるたびに更新され、
描画対象のオブジェクトの持つグループＩＤと前記メモリーに格納されたグループＩＤとが比較され、両ＩＤが一致した場合は、オブジェクトグループのための未使用ＩＤホルダーが対象オブジェクトのための未使用ＩＤホルダーとして取得され、そうでない場合は前記（ａ）または前記（ｂ）の方法で未使用ＩＤホルダーが取得されると共に、前記メモリーは、対象オブジェクトのグループＩＤ及び前記取得された未使用ＩＤホルダーで更新されることで生成される方法；
のいずれかの方法により未使用ＩＤホルダーを取得するように構成してもよい。
【００４３】
また、上記課題を解決するため、本発明の別の実施態様においては、アンチエイリアス処理されたグラフィックオブジェクトをレンダリングするための装置において、各ピクセル中の空白の領域を記憶するためのメモリーであって、２Nビットの副画素を備え、Ｎは少なくとも５以上であり、前記副画素のマトリックス中の染色されていない副画素を副画素マトリックス中のＯＮステータスで示し、通常はＯＮステータスは１、ＯＦＦステータスは０であるとして規定され、逆の設定の場合は関連するＡＮＤ演算とＯＲ演算もプロセスの全般にわたって逆転されるものであって、すべての副画素がＯＮの状態で初期化される第１メモリーと、前記第１メモリーに対応した色値を保持する第２メモリーであって、前記副画素の数を反映する２N分の色値の累積を格納可能であり、前記第１メモリーにおける染色された副画素数と該第２メモリー中の前記色値の前記累積が同期するよう設計された第２メモリーと、手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行うための走査変換部であって、対象となるオブジェクトのカバレッジを確定するためのカバレッジプロセッサと、前記カバレッジに対応する前記第１メモリー中の領域をＯＦＦステータスに反転するためのインバータプロセッサと、前記第１メモリー中の反転された副画素数に呼応する色値を前記第２メモリーに積み上げて、前記第１メモリーの全ての副画素が反転された後、前記第２メモリーに積み上げられた色値によって画素値を確定する画素数確定プロセッサとを備える走査変換部とを具備する。
【００４４】
本発明の上記の態様においては、対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトが準備され、透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、サンプリング対象がフィルタリングされるように構成することもできる。
【００４５】
本願の上記諸構成によれば、画素内の空白領域を示す副画素を備えたメモリーと、染色された領域の色情報を蓄積するメモリーを用意し、色情報を伴う副画素を仮想的に設定し、半透明の表示については、有効となる副画素を制限することにより、画像オブジェクトのカバレッジを縮減し、背景の透過率を調節する。有効となる副画素の設定は、ビットマスクによるフィルタリングにより実現する。これにより、アンチエイリアス処理において、複数の画像オブジェクトのシルエットが画素を共有している状況を正確に表現し、不透明な画像オブジェクトだけでなく、半透明な画像オブジェクトについてもカバレッジを反映した画素値を算出することが可能となる。
【発明の効果】
【００４６】
本発明によれば、不透明な画像オブジェクトだけでなく、半透明のオブジェクトであっても１／３２程度の誤差の範囲内でアンチエイリアス処理を行うことができる。
【００４７】
また、本発明によれば、複数の半透明オブジェクト同士の関係において、互いに透過する、もしくは、互いに透過しない、という関係を選択的に設定することが可能であり、互いに透過しない半透明オブジェクト同士のグループ化を実現することが出来る。こうしたグループ化は、連結されたオブジェクト群の半透明表示を可能とし、また、グループ化された透明オブジェクト、通常の透明オブジェクト、不透明オブジェクトの選択的な設定、および透明度の調節により、表示されているオブジェクト間のフォーカスを表現する効果をもたらす。
【００４８】
したがって本発明によれば、アンチエイリアス処理されたグラフィックオブジェクトを、単純、正確、かつ相対的に高速な方法によって、レンダリングすることが可能となる。
【図面の簡単な説明】
【００４９】
【図１Ａ】典型的なスーパーサンプリングの従来技術を示す図。
【図１Ｂ】本発明の典型的な一実施形態に係る機能構成を示すブロック図。
【図２】本発明における副画素の機能を示す図。
【図３】本発明の実施例のためのサンプルとして使用する２つの３角形を示す図。
【図４】本発明による最初のオブジェクトの描画過程を示す図。
【図５】本発明による背景オブジェクトの描画過程を示す図。
【図６】本発明による半透明オブジェクトの描画過程を示す図。
【図７】本発明の一実施形態に係る、副画素を構成する４×４リージョンと線形セグメントを示す図。
【図８】本発明の一実施形態に係る、Ｘ、Ｙ共に座標値を共有しない３つのポイントの配置例を示す図。
【図９】図８に提示された３つのポイントが構成するラジアンＲを示す図。
【図１０】本発明の一実施形態に係る、ラジアンＲを構成・保持するための順路とインターバルを示す最初の例を示す図。
【図１１】本発明の一実施形態に係る、ラジアンＲを構成・保持するための順路とインターバルを示す２番目の例を示す図。
【図１２】図１０、図１１によるインターバルにより構築される階層構造を示す図。
【図１３】本発明の一実施形態に係る、ＯＮステータスの位置が対称になるようにレイアウトするための例を示す図。
【図１４】本発明の一実施形態に係る、ＯＮステータスの位置の順路の設定例を示す図。
【図１５】本発明の一実施形態に係る、４×４リージョンにおけるＯＮステータスの位置の順路の設定方法を示す図。
【図１６】本発明の一実施形態に係る、基本８レイヤーのＯＮステータスの配置例を示す図。
【図１７】図１６で示した基本８レイヤーを積み上げていった場合、最後のレイヤーのＯＮステータスの位置がどのように変化・減少するかを示す図。
【図１８】図１４で示したＯＮステータスの位置の順路を再定義した例を示す図。
【図１９】図１８で示した順路を分割する例を示す図。
【図２０】本発明の一実施形態に係る、７５パーセント透明フィルターのＯＮステータスの配置例を示す図。
【図２１】図２０で示した７５パーセント透明フィルターを積み上げていった場合、最後のレイヤーのＯＮステータスの位置がどのように変化・減少するかを示す図。
【図２２】本発明の一実施形態に係る、５０パーセント透明フィルターのＯＮステータスの配置例を示す図。
【図２３】図２２で示した５０パーセント透明フィルターを積み上げていった場合、最後のレイヤーのＯＮステータスの位置がどのように変化・減少するかを示す図。
【図２４】本発明の一実施形態に係る、２５パーセント透明フィルターを積み上げていった場合、最後のレイヤーのＯＮステータスの位置がどのように変化・減少するかを示す図。
【図２５】図２０で示した７５パーセント透明フィルターによる透過率減衰の誤差を示す図。
【図２６】図２０と図２２で示したフィルターを同時に使用した場合の誤差を示す図。
【図２７】本発明の一実施形態に係る、レイヤーのキーとなるビットをレイヤーＩＤとしての８ビットにパッケージするオペレーションの過程を示す図。
【図２８】半透明フィルターのための変換テーブルを構築するための基本ロジックを示す図。
【図２９】本発明の一実施形態に係る、７５パーセント透明フィルターのための変換テーブルを構築するための基本ロジックを示す図。
【図３０】本発明の一実施形態に係る、５０パーセント透明フィルターと２５パーセント透明フィルターのための変換テーブルの構築に必要な、不規則な序列でフィルタリングされたパターンを示す図。
【図３１】本発明の一実施形態に係る、５０パーセント透明フィルターを選択するためのロジック例を示す図。
【図３２】本発明の一実施形態に係る、デフォルトマスクとして機能するビットマスクの例を示す図。
【図３３】本発明の一実施形態に係る、フィルターを選択する過程を示すフローチャート。
【図３４】本発明の一実施形態に係る、グループ化された半透明オブジェクトがどのように機能するか示した図。
【図３５】本発明の一実施形態に係る、グループ化された半透明オブジェクトのためのフィルターを選択する過程を示すフローチャート。
【発明を実施するための形態】
【００５０】
以下、図面を参照して、本願発明を実施するための形態について説明する。なお、以下の説明及び図面に記された態様は本願発明を実施するための一形態にすぎず、他の形態の可能性を否定するものではない。また、特に記されない事項については、公知技術によるものとする。
【００５１】
図１Ｂに本発明の実施形態の典型的な例を示す。キーボード１０８、マウス１０９などの外部入力装置およびディスプレイなどの画像出力装置１０４が、Ｉ／Ｏシステム・バス１０６に接続され、ＣＰＵ１０５、メインメモリー１０７などで構成されるコンピューターとの入出力が行われる。本発明における画像処理は、主にメインメモリー１０７もしくは、仮想メインメモリーとしてのマス・ストレージ１１０とＣＰＵ１０５により行われる。例えば、メインメモリー１０７に置かれたビットマスクのアドレスの算出等がＣＰＵ１０５により行われ、フィルタリング処理などが行われた後、画像出力装置１０４へのデータとして転送される。これらの構成は、１つの例であって、これに限定されるものではない。例えば、上出の外部入装置や画像出力装置などは、外部接続された状態でなくても良く、スマートフォンなどのように一体化された状態の端末であっても良い。
【００５２】
メインメモリー１０７にはたとえば、各ピクセル中の空白の領域（たとえば副画素の形式で描画可能なエリア）を格納するための第１メモリー（図示しない）、色値（の集積）を保持する第２メモリー（図示しない）、スーパーサンプリングに使用されるワークスペースである第３メモリー（図示しない）が具備される。これら第１メモリー及び／もしくは第２メモリー及び／もしくは第３メモリーは、メインメモリー１０７以外のところに具備されてもよい。
【００５３】
上記ＣＰＵ１０５には、たとえば、画素ごとに走査変換を行う機能を実現する走査変換部（図示しない）、対象となるオブジェクトのカバレッジを確定する機能を実現する（かかる機能をプロセッサとして実現しても、かかる機能をコンピューターに実行させるためのソフトウェアとして実現してもよい。以下同様。）カバレッジプロセッサ（図示しない）、カバレッジに対応する第１メモリー中の領域をＯＦＦステータスに反転する機能を実現するインバータプロセッサ（図示しない）、第１メモリー中の反転された副画素数に呼応する色値を第２メモリーに積み上げて、第１メモリーの全ての副画素が反転された後、第２メモリーに積み上げられた色値によって画素値を確定する機能を実現する画素数確定プロセッサ（図示しない）が備えられる。或いは、走査変換部がこれらのプロセッサを備える構成を採用してもよい。なお、上記及び以下において、ＣＰＵ（セントラル・プロセッシング・ユニット：中央処理装置）として記述されるものは、コンピュータ内で基本的な演算処理を行う半導体チップであるＭＰＵ（マイクロ・プロセッシング・ユニットもしくはマイクロプロセッサ）とすることもできるし、あるいはかかる半導体チップ群であるＣＰＵとしてもよい。
【００５４】
本発明は、スーパーサンプリングを通じてオブジェクトを描写する技術であるが、スーパーサンプリングそのものに関するものではない。文字グリフや３Ｄポリゴンの表示など、スーパーサンプリングは多様な目的に応じたカスタマイズが可能であり、特定の目的のために最適化されたスーパーサンプリングの手法を本発明に組み入れることも可能である。以下では、まず、本発明においてスーパーサンプリングを適用するための環境に関して、副画素のマトリクス、描画順位、メモリーの使用手順などから議論を始める。
【００５５】
本発明では、副画素の数は、２のべき乗と定義されており、半透明表示のためには、少なくとも３２の副画素が必要となる。好ましいサイズは６４副画素であり、ベストモードとして紹介される例はこの設定となる。副画素の数は描写の速度や正確さに影響をあたえるが、これら２つの要件は二律背反の関係にある。副画素の数は、また、必要となるメモリーサイズにも大きく影響する。副画素は４×４の領域（以下、「リージョン」ともいう。）の集合体として構成される。したがって３２副画素の環境では、マトリクスは８×４または４×８のいずれかとなる。マトリクスに割り当てるビットの構成は自由に設定でき、例えば最初のビットがマトリクス上のいずれのコーナーを示してもよい。ただし、例外として３２副画素の環境では、連続したビットが座標の長手に設定される必要がある。例えば８×４のマトリクスの場合、最初の８ビットは垂直方向の２列ではなく水平方向の１列をしめす必要がある。ベストモードでは、８×８のマトリクスが採用されるため、ビットの割り当て方は自由である。このテキストを通じて「ＯＮステータス」という表現がたびたび使用される。これはいわゆるサンプリングポイントを意味するが、より具体的にＯＮという表現が使用される。通常ＯＮは「１」、ＯＦＦは「０」を意味するが、逆の設定が好ましい場合は、対応する処理過程のＡＮＤ演算、ＯＲ演算も逆転する必要がある。
【００５６】
走査変換は手前から奥へ向かって行われる。ここで走査変換とは、好ましくは、各画素におけるオブジェクトのカバレッジを確定し、その結果をカラーコンポーネント値に変換する処理を示すが、これに限定されるものではない。手前から奥へのオーダーはオブジェクト単位であっても画素単位であっても良い。
【００５７】
メモリーのアロケーションについては、本発明では２つのワークスペースが描画対象となるフレームの最大のサイズに対応可能なものとして確保される。２つのワークスペース、第１メモリーおよび第２メモリーは各画素に対応し、第１メモリーは副画素の形式で描画可能なエリアを提示し、第２メモリーは、色値の集積を保持するが、ここで、最終的に積み上げられる色値のボリュームは副画素の数に対応したものになる。第２メモリーの構造は自由に設定可能だが、以下に紹介される描画プロセスに準じたものとするべきである。スーパーサンプリングに使用されるワークスペースは第３メモリーとして定義される。スーパーサンプリングによるビットの反転処理が画素列ごとに行われる場合、第３メモリーは画素列の長さに応じた充分なサイズが確保されることになる。
【００５８】
第１メモリーでは、空白のエリアはＯＮステータスのビットとして示され、このメモリーは全面が空白なものとして初期化される。一方、第３メモリーは、ＯＦＦステータスなビットとして初期化され、任意のスーパーサンプリングの技法により、オブジェクトのカバレッジがＯＮステータスのビットに反転される。例えば図３にある小さな三角形３０１は、副画素のマトリクスに準じて図４の４０１に示すように８×８倍のサイズに拡大される。最上部の画素列は、第３メモリーにおいて、４０２に示すように反転される。つぎに第３メモリーと第１メモリーとの間でＡＮＤ演算が行われる。第１メモリーはＯＮステータスで初期化されているため、第３メモリーに変化はなく、この画素列における３０１のカバレッジがそのまま確定される。確定したエリアに対応する第１メモリーのビットは染色されたエリアとして４０３に示すように反転される。３０１につづいて３０２が描画される。３０２の最上部の画素列は図５の５０１のようなカバレッジとなる。３０１の場合同様に第１のメモリー（４０３）との間でＡＮＤ演算が行われるが、今度は、３０１の背後に位置する部分は、カバレッジから除外される。３０２の同画素列のカバレッジは５０２のように確定し、確定したカバレッジは染色されたエリアとして第１メモリーから５０３に示すように除外される。このような手順で描画処理は進行し、カバレッジが確定する度にカバレッジに対応した色値が計算され、第２メモリーに積み上げられる。このとき、第１メモリーの染色された副画素数と第２メモリーに積み上げられる色値のボリュームは同期し、最終的に集積される色値のボリュームは、副画素の数に対応したものとなる。すべての副画素が染色済となった後、第２メモリーに積み上げられた色値の集積により、その画素に割り当てる画素値が確定する。集積される色値のボリュームは副画素の数である２のべき乗に設定されているため、画素値は、シフト演算によるオフセットの操作により、効率的に算出することができる。これらの処理は、スーパーサンプリングにおいて通例であるように、輪郭部においてのみ行われる。対象となる画素の位置がシルエット内部の中間点にあり、カバレッジが明らかに１００パーセントであるときは、全面的に描画された状態をしめす、例えば「０」を第１メモリーに挿入し、フレームバッファの対応する位置にオブジェクトの描画色を挿入するという、２つのステップだけで良い。他方、全面的に描画された値を第１メモリーに挿入する手法は、更新するエリアのクリッピングにも使用できる。初期化時にＯＦＦステータス値を挿入されたエリアは、既に描画済のエリアとして、描画対象から除外される。
【００５９】
上出の描画法は、理論的にも、旧来のアンチエイリアスとは、異なっている。本発明で使用される副画素の空間は、ビットマップ画像に比することができる。いずれも表示される色情報の総数が、対象となる２Ｄ空間の画素数と一致している。主な違いとしては、一度確定した画素値の変更が可能か否かである。本発明では、副画素に割り当てる色値が確定されると、描画の終了までその値を変更することはできない。第１メモリーが示すのは空白の範囲のみである。一旦カバレッジが確定すると、その情報は色値に変換され第２メモリーに積まれる。以降は、染色された副画素の位置情報は保持されない。従って、一度染色された特定の副画素の色を変更することはできない。要約すれば、第１と第２の２つのメモリーは、図１の１０３に示すような白黒の副画素ではなく、色情報を伴った副画素を目指しているが、実体として副画素分のビットマップメモリーを伴う訳ではなく、２つのメモリーにより仮想的に設定されるため、特定の副画素に設定された色情報を変更することはできない。以下に論じられるのは、こうした状況下で、いかに半透明の表現を実現するかである。
【００６０】
＜基本８レイヤーの設定＞
本発明において、半透明の表現はビットマスクにより実現される。オブジェクトのカバレッジを算出するための第３メモリーに対して、特定のビットマスクとの追加的なＡＮＤ演算が行われる。結果として、ビットマスクのＯＦＦステータスの位置にある副画素は、算出されたカバレッジから減じられ、背景のオブジェクトが露呈することになる。もっともシンプルな５０パーセントのフィルタリングを示しているのが図６である。この例では、第３メモリー４０２が６０１のフィルターにかけられ、その結果である６０２を第１メモリーより間引いた状態が６０３に示されている。ここでは、ビットマスクのＯＮステータスの位置が、図２の２Ｄや２Ｆにおけるオープンなポジションのように機能している。複数の透明度を持つオブジェクトが重なり合っている場合には、手前のオブジェクトは背景のオブジェクトよりも視認性が高くなければならず、この傾向は、重層する領域では一貫して求められることである。こうした透過率の減衰を表現するために、ビットマスクによるバーチャルな８層のレイヤーが用意される。これらのレイヤーは、部分的に一定の連続性を伴って重複しながら階層を成し、レイヤーの集積に応じて透過率を減じてゆくように構築される。一方で、ビットマスクによるフィルタリングを経た後もオブジェクトのシルエットが反映される必要があるため、これらビットマスクは、２つの視点から構築されなければならない。１つは上出の背景の透過率の減衰を表現する階層構造への視点であり、もう１つはＯＮステータスの２Ｄ空間上のレイアウトへの視点である。
【００６１】
これらの要件を満たすビットマスクを構築するため、副画素の空間は「シグナル経路」の集合体として定義される。シグナル経路とは、副画素のマトリクス上の個々のポジションを配列化したもので、この経路上を各レイヤーのＯＮステータスの位置がレイヤーの序列に従って移動してゆく。ここで、移動するＯＮステータスの位置がシグナルにたとえられ、各レイヤーは、移動するシグナル群の各ステップにおけるスナップショットとして構築される。シグナル経路は、基本的にレイヤーの数に等しい長さを持ち、複数のシグナル経路がマトリクス全体を構成する。シグナル経路同士が通過地点を共有することはなく、副画素上のマトリクスは、余剰なくシグナル経路に分割することができる。例えば、６４副画素の場合、８ポイントの長さを持つシグナル経路が８つ割り当てられる。８層のレイヤーは、副画素の空間同様に仮想のものである。もし、ある稜線が副画素の仮想空間からはみ出す場合、その稜線はとなりの画素の仮想空間に拡張されれば良い。しかし、８層の仮想レイヤーは拡張することはできない。それ故、仮想レイヤーは循環型の構造を持つ必要がある。仮に、ある画素が８つの半透明オブジェクトに共有され、８層のビットマスクがすべて適用されたとしても、これらのオブジェクトのカバレッジが１００パーセントとは限らず、染色されていない副画素が残っている可能性がある。このような場合、最初のレイヤーは最後のレイヤーの下に位置するレイヤーとして機能する。８ポイント長のシグナル経路上をシグナルが連続的に移動することによって、結果として構成されるレイヤーは８層の循環型の構造となる。
【００６２】
シグナル経路という概念は、レイヤー階層構造の設計においても機能する。ひとつのシグナル経路上を複数のシグナルが移動し、その移動が連続的なものである場合、シグナル間のインターバルが階層構造を決定する。例えば、もし２つのシグナルが存在し、シグナル間のインターバルが１である場合、最初のレイヤーではインデックスにして、０と１、２番目のレイヤーでは、１と２、最後のレイヤーでは、７と０の位置にシグナルが存在することになる。これらのシグナルの位置が意味するものは、このシグナル経路に関するかぎり、各レイヤーは、前後に隣り合う各レイヤーと１ポジション重複することになる。図１２では、シグナル経路が構成する階層構造が２つのテーブルに例示されている。各シグナルのポジションが左上から右下へむけて直線的に並んでいるが、これは各シグナルがレイヤーの順序に従って等間隔で移動している状態を示している。これらのテーブルを反時計回りに回転し、水平方向に反転した場合、結果として得られるシグナルのレイアウトは、オリジナルのレイアウトに等しくなる。このようにシグナル間のインターバルの設定によって階層構造の設計が可能となる。
【００６３】
シグナル経路には、２種類のタイプが存在する。ひとつは単一のシグナルを持つもの、もうひとつは複数のシグナルを持つものである。８層のレイヤーは、７５パーセント透明フィルターの原型となるもので、０．２５の不透明度を表現するものとして構築される。従って、副画素の数を２N とした場合、ＯＮステータスのポジション数はＫ＝ ２N ／４となる。各シグナル経路は８の長さをもつので、シグナルの数はシグナル経路の数の２倍となる。Ｋ／４シグナルがＫ／４シグナル経路に個別に割り当てられ、３Ｋ／４シグナルが、のこりのＫ／４シグナル経路に均等に割り当てられる（各３シグナル）。このシグナルの分配方法では、副画素の半分を単一シグナル用のシグナル経路が占めることになる。単一シグナルの経路では、ひとつのシグナルしか存在しないため、シグナルは、常に最前面に存在するものとして表示されると同時に階層構造において背後に他のシグナルが存在することはない。こうした単一シグナルのシグナル経路によって、各レイヤーは他のいずれのレイヤーの背後にあっても表示されるようになると同時に背景を遮ることになる。
【００６４】
シグナル経路のレイアウトは、２Ｄ空間におけるＯＮステータスのレイアウトに配慮したものである必要がある。基本的には、ＯＮステータスの位置は、いずれかの方向に偏ったものであってはならない。大局的に見れば、各画素を通じておこなわれるサンプリングが偏ったものであっても深刻な問題とはならないが、複数のフィルターが存在し、各フィルターに異なる方向へのバイアスがかけられている場合、半透明表現は不正確なものとなる。この問題への基本的な対応として、副画素の空間は４×４リージョンに分割可能なものとして定義され、分割された各４×４リージョンには、副画素全体におけるＯＮステータスの比率（＝１／４）を反映したＯＮステータスを配布する。各４×４リージョンに、単一シグナルを持つシグナル経路と３シグナルを持つシグナル経路を各１割り当てることで、４つのＯＮステータスを分配する。結果として、各４シグナルは、４×４に閉じ込められた空間を移動することになる。
【００６５】
ＯＮステータスの位置を均一に配置するためには、マトリクス上の特定の座標値にＯＮステータスが集中してはならない。より具体的には、各４×４リージョン内の４つのＯＮステータスは、４×４のマトリクス内の個別の座標値に対応するように置かれなければならない。以下の議論は、こうした条件を満たしつつ４×４内に閉じ込められた４シグナルを如何に走らせるかについてのものである。各４×４リージョンは、さらに４つの線形セグメントとして定義される。線形セグメントは、循環型の４×４マトリクス内を対角線に沿って並んだ４つの副画素によって構成される。同一の４×４リージョンに属する線形セグメントは、図７の７０２にあるように重複することなく、同じ傾斜角にそって配置される。シグナル経路は、隣り合って配置されている各２つの線形セグメントに沿って設定され、その順路については、３シグナルを持つ経路を基準に確定される。図８の８０１に示される８Ａ、８Ｂ、８Ｃは隣り合う線形セグメント７Ａ、７Ｂ上に置かれ、それぞれ座標値を共有しない。８Ａから８Ｂ、８Ｂから８Ｃ、８Ａから８Ｃへのギャップ（＝座標上の間隔）は、それぞれ （２、１）、（１、２）、（３、３）となっており、最後の８Ａから８Ｃへのギャップは、前出の２つのギャップの合計となっている。ここで８Ｂを∠８Ａ−８Ｂ−８Ｃの頂点とすると、この角度は図９にあるようにラジアンＲ＝π/ 2 + 2 x tan-1(0.5)となる。このラジアンＲを構成する３ポイントは、循環型４×４マトリクス上に１６の異なる形状で展開される。図８の８０２は、８０１を２×２のコピーとして拡張したものである。８０２において特定の座標値を共有するポイントは、いずれも同じオリジナルからコピーされた各２ポイントであり、これらの同じオリジナルを共有する各４ポイントは、５×５の正方形を構成する。この８０２内の任意のポジションを４×４のフレームで切り取った場合、フレーム内に含まれるポイントは、異なるオリジナルを持つ３ポイントであり、それらは互いにいずれの方向への座標値も共有しないことになる。これは、言い換えると、もし隣り合う２つの線形セグメント上にある３つのポイントが２×２にコピーされた座標空間上でラジアンＲを構成する場合、それら３ポイントは、いずれの座標値も共有しない。８Ａから８Ｃへのギャップが前の２つのギャップの和であることは述べたが、この２つのギャップは逆のオーダー（１、２）、（２、１）でも同じ結果となる。つまり上記のラジアンＲは負の値＝２π−Ｒであってもよく、この関係での３ポイントもいずれの座標も共有しない。このラジアンＲの構成要素として８０１のポイントを再検証すると、両端となる８Ａと８Ｃは同じ線形セグメント上に置かれおり、頂点である８Ｂは、両端のポイントとは異なる線形セグメント上に置かれている。これらの３ポイントを、シグナル経路上を走る３シグナルとして想定した場合、もし、シグナル経路上の偶数インデックスを示すポジションと奇数インデックスを示すポジションを別々の線形セグメントに配置したとすると、両端の２ポイントは、常に同じ側の線形セグメントを共有し、頂点のポイントは、両端とは異なる側の線形セグメントに置かれることになる。図１０に示されているのは、シグナル経路の���置例である。もし、この経路上を｛０，３，６｝，｛１，４，７｝，｛２，５，０｝，…，と各シグナルが等間隔に移動する場合、３ポイントによる絶対値ラジアンＲは保たれる。この経路では、偶数インデックスから奇数インデックスへ進行する場合は横へ１つ、その逆の場合は縦に１つ移動する。これを前出の３ポイントにあてはめると、両端のポイントが（１、０）移動するとき、頂点ポイントは（０、１）移動し、両端ポイントが（０、１）移動するとき頂点ポイントは（１、０）移動する。これらの移動は３ポイント間のギャップを（２、１）、（１、２）あるいは（１、２）、（２、１）のオーダーへと交互に置き換えながら、ラジアンＲを正と負の角度で交互に構成して行く。追加される単一シグナルのための経路は、図９の９０１に示すように、両端ポイントを基準に、頂点と対称をなすラジアンＲを構成する位置におかれる。例えば頂点ポイントと両端ポイントが（２、１）、（１、２）の関係を築くときは（１、２）、（２、１）と逆オーダーの位置が単一シグナルの位置となる。対称をなすラジアンＲを構成するポイントは、対角線上に配置される両端ポイントをベースに対称をなすため、頂点ポイントとその対称をなす頂点ポイント同士は、同じ座標値を共有しない。これら２つの頂点ポイントと２つの両端ポイントとの関係は、どのレイヤーに対応する移動ポイントにおいても保たれ、４つのシグナルは、常に４×４マトリクス上の互いに異なる座標値へ配置される。頂点ポイントは、両端ポイントが属する線形セグメントと隣り合う線形セグメント上に置かれるが、これは対称となる頂点ポイントも同じである。両端ポイントが７Ａにあり、頂点ポイントが７Ｂにあるとき、対称となる頂点ポイントは７Ａに隣接する７Ｄに置かれる。両端ポイントが７Ｂにあり、頂点ポイントが７Ａにあるとき、対称となる頂点ポイントは７Ｂに隣接する７Ｃに置かれる。このように対称となる頂点ポイントは、残りの７Ｃと７Ｄ上を移動し、そこでは７Ｄが偶数インデックスに対応し、７Ｃが奇数インデックスに対応する。頂点ポイントが７Ａと７Ｂ上のすべてのポイントを進行するように、その対称となる頂点ポイントは７Ｃと７Ｄの対応するポイントを通過する。したがって、４つのシグナルは８ステップで４×４のマトリクス上のすべてのポイントを通過することになる。このように７Ｃと７Ｄは単一シグナルの経路として確保される。
【００６６】
図１０の例では、インデックスが偶数から奇数に進行する際に（１、０）移動し、その逆の場合は（０、１）移動する設定であり、その結果としてポイント間のギャップ、（２、１）と（１、２）の順序を交互に反転させながら絶対値としてのラジアンＲを保っていた。同様のプロセスが図１１にしめすレイアウトでも展開される。このレイアウトでは、偶数から奇数へのインデックスの移行のとき、（３、２）移動し、その逆のケースでは（２、３）移動する。このレイアウトも絶対値としてのラジアンＲの保持が可能である。図１０にあるレイアウトでは、スタート時のインデックスは｛０，３，６｝であり、図１１にあるレイアウトでは｛０，６，７｝となる。既に述べたようにシグナル間のインターバルはシグナル経路上で展開される階層構造に影響する。シグナルは循環構造を持つ経路の上を移動するが、ここでは議論の視認性を高めるため、シグナル間のインターバルは、短いほうの長さにより表示する。例えば、スタート時のインデックスが０と６であった場合、インターバルは６ではなく２とする。この手順に従って上出の２つのレイアウトを検証すると｛０，３，６｝のケースでは、長さ「３」のインターバルが２つと長さ「２」のインターバルが１つ、｛０，６，７｝のケースでは、長さ「２」のインターバルが１つと長さ「１」のインターバルが２つとなる。いずれのケースも奇数長のインターバルが２つと偶数長のインターバルが１つとなっているが、これは頂点ポイントが両端ポイントとは異なる側のインデックス群に常に置かれるよう設定されているからである。これら２つのレイアウトによるインターバルを合計すると、長さ「１」のインターバルが２つ、長さ「２」のインターバルが２つ、長さ「３」のインターバルが２つと、いずれの長さのインターバルも２つずつとなり、上出の２つのレイアウトを組み合わせた場合には、各レイヤーは、前後３レイヤーの位置関係にあるいずれのレイヤーとも同様にオーバーラップすることになる。この組み合わせは、各２つの４×４リージョンそれぞれに異なるレイアウトを宛がうことで実現する。結果として構成される階層構造は図１２に示されている。１２０１のテーブルでは、すべてのシグナル経路が最初の３ステップで経過される。これは、もし、このシグナル経路が３つの半透明なシルエットで占有された場合、このシグナル経路が属する４×４リージョンに残る染色可能な副画素は、単一シグナルのシグナル経路上のもののみになるということである。逆に最初の３シルエットの範囲に経路が含まれない場合には、そのエリアの階層構造はオリジナルの階層構造のバリエーションとして第４のレイヤーより開始することになる。
【００６７】
副画素が４つの４×４リージョンを含んでいる場合、それぞれのシグナル経路のレイアウトは各２つの４×４リージョンで共有されることになる。しかし、こうした共有されるレイアウトはオリジナルのレイアウトの単なるコピーであってはならない。図１３にあるように各シグナル経路の進行方向は対称をなし、バイアスが相殺されるように決定される。この決定は、集積されたレイヤーの背後にあるレイヤーから露呈するビットのレイアウトに影響する。他方、多数のレイヤーが適用された副画素上に染色可能な状態で残っているビットの多くは、単一シグナルの経路に置かれたビットである可能性が高い。全体的に、より多くのレイヤーが適用され、露呈するビットの数が少なくなるほど、単一シグナルの経路に置かれたビットの重要性は増してくる。上出のシグナル経路のレイアウトに例示されているものは、シグナル経路を２つの線形セグメントに割り当てる際の相対的な関係であり、同一方向へ向かって進行する限りにおいて、４×４の循環型マトリクス上の隣り合う２つの線形セグメントであれば、さまざまな形状で割り当てることができる。図１４の１４０１に示されているのは、単一シグナルの経路を対称的に展開した例である。このレイアウトは次のように決定される：図１５に示されているのは、単一シグナルの経路を２×２コピーに展開した２例であり、１５０１では図１０に対応した単一シグナルの経路、１５０２では図１１に対応した単一シグナルの経路がそれぞれトレースされている。座標上で「０２４６」、「１３５７」のように順序立って並んでいるパートが選択され、それぞれ１５０３、１５０４の４×４フレームに収まっている。シグナル経路の進行方向である左上から右下という方向は４×４リージョン１４Ｂと等しく、１５０３のフレームが１４Ｂに適用される。図１５のレイアウトを左右対称となるように反転すると、シグナル経路の進行方向は１４Ｄのそれと等しくなり、１５０４を反転したレイアウトが１４Ｄに適用される。残る２つの４×４リージョン１４Ａと１４Ｂについては、１４Ｂと１４Ｄを１８０度回転したレイアウトが適用される。複数シグナルの経路については、１５０３と１５０４のフレームを、それぞれ図１０、図１１にある２×２コピーのレイアウトに宛がうことで、検出できる。結果として生成されるレイヤーは図１６のようになる。各レイヤーを縦横の座標に沿って走査すると、どの座標にも２つずつのＯＮステータスが置かれていて、１６あるＯＮステータスの位置は、各４×４リージョンに均等に割り振られている。つまり、各レイヤーにおいてＯＮステータスが出現する周期には一定の均一性が保たれている。これらのレイヤーを積み重ねていった場合、最後のレイヤーより露呈するＯＮステータスの位置（＝有効ビット）は図１７に示すように移動、減衰してゆく。例示されているレイヤーはベストモード用の例だが、レイヤーは異なるデザインに構築することもできる。また、レイヤーの構造は循環構造となっているため、最初のレイヤーが必ずしも例示されている「Ｌａｙｅｒ０」でなくとも良い。
【００６８】
＜フィルターセットの構築方法について＞
オブジェクトの透明度は適用するレイヤー数の調節により選択することが可能であり、連続したレイヤーを意図されたボリュームに組み合わせることにより、異なる透明度を持つフィルターセットを構築できる。以下に紹介するのは、それぞれ７５パーセント、５０パーセント、２５パーセントの透明度を持つフィルターの例である。個々セットは、各レイヤーに対応したメンバーを持ち、対象となる画素に対してレイヤーの序列に即したフィルター選択を行うことによって、背景の可視状態を意図どおりに減衰させることができる。以下に紹介されるフィルターセットでは、シグナル経路の分割による編集がなされており、その意味では、「ハンドメイド」な面がある。本章におけるもう１つの目的は、シグナル経路の分割に関する意図、効果、課題を明らかにすることにある。
【００６９】
フィルターセットを構築するにあたって、オリジナルのレイヤーの変更が望ましい場合がある。このような場合のために、単一シグナルの経路の一部が編集可能な領域として確保される。レイヤーの階層構造は、主に複数シグナルの経路によって構成されているため、複数シグナルの経路は編集対象とならない。単一シグナルの経路とは、実際にはゆるやかな定義である。シグナル間のインターバルは存在せず、副画素上の単一シグナルの経路群は自由に解釈することが可能である。ここでは、図１４に定義されている単一シグナルの経路を、図１８にあるように再定義し、各経路は２つの４×４リージョンに跨ったものとして解釈する。更に、２つの経路１８Ａと１８Ｂを固定化されたものとして、１８Ｃと１８Ｄを編集可能なものとして設定する。基本的にシグナル経路の編集は経路の分割によって行われる。例えば８ポイント長の単一シグナルの経路を４ポイントの長さを持つ２つの単一シグナルの経路に分割することは、各レイヤーにＯＮステータスを１つ加えることになる。ベストモードのための編集例として、１８Ｃを図１９の１９０１に示すような４ポイント長の２つの経路に分割し、一方の経路１９Ｂをシグナルを持たないエリア、つまり、透明度を表現するための処理から除外されたシグナルフリーなエリアとして確保する。現実の物理的空間では、いくら半透明のフィルターを重ねても、背景の視認性が完全に無くなることはない。この編集はこうした摂理を表現すると同時に、以下に紹介する複数のフィルターセットの構築にも適合する。もう一方の４ポイント長の経路は、１９０２に示すような４サイクルでの循環型構造となり、レイヤーの循環型階層構造は保たれる。この１８Ｃにおける編集は、レイヤーの均一なＯＮステータス配置を一部崩すことになるが、結果として得られたレイヤーは、図２０に示す７５パーセントの透明度を持つフィルターセットとして定義される。はじめの４レイヤーに変更は生じないが、後半の４レイヤーの均一性は、一部損なわれている。レイヤーを重ねた場合に有効となるビットの位置も図２１に示すように変化する。５０パーセントの透明度を表現するためのフィルターセットは、編集後のレイヤーにより編纂される。５０パーセント透明フィルターは連続する各２レイヤーを組み合わせることで構築されるが、各２レイヤーは、４ビットずつ重複することから、各フィルターに設定されるＯＮステータスビットの数は、求められる６４×０．５＝３２ビットではなく、２８ビットに留まる。このフィルターを完成するためには、４つのＯＮステータスビットを追加しなければならない。すでに述べたようにシグナル経路を２分割することは、各レイヤーに１つのＯＮステータスを追加することになるが、２レイヤーにより構築されている５０パーセント透明フィルターにおいては、２つのＯＮステータスが追加されることになる。つまり、４つのＯＮステータスビットを追加するためには、さらに２つの経路を分割する必要がある。図１９にある１９Ａの経路は更に２つの経路に分割され、１９Ａが属する２つの４×４リージョンに２つのＯＮステータスビットが追加される。残る２つのＯＮステータスビットは１８Ｄを分割することで加えられる。結果として構築される５０パーセント透明フィルターは図２２に示すようになる。５０パーセント透明フィルターは２レイヤーずつ使用するため、偶数セットと奇数セットに分けることができるが、これらのセットに於いてフィルターを重ねていった場合に有効となるビットを示したものが図２３である。２５パーセント透明フィルターについては、各５０パーセント透明フィルターを２つ単純につなぎ合わせるだけで構築できる。理論上５０パーセントの透明度を組み合わせた場合の透明度は０．５×０．５＝０．２５となるが、この等式は、２５パーセント透明フィルターの構築の際にも有効である。２５パーセント透明フィルターは４レイヤーずつ消費するが、最初のフィルターと５番目のフィルターを適用した場合の有効ビットは図２４に示すように変化する。
【００７０】
ここまでに紹介したフィルターセットには、幾つかの課題が存在する。例えば図２２に示されるフィルターのＯＮステータスのレイアウトは右上から左下にかけての対角線上に集中する傾向にある。このバイアスは図１２に示される２つの異なる階層構造の組み合わせによるものである。５０パーセント透明フィルターは、それぞれ２レイヤーの組み合わせでできており、これら２レイヤーの重複ポイントの位置がレイアウトに影響を与える。図２２に示されているように、バイアスの強さはレイヤーにより異なっており、この問題への可能な対処法としては、各レイヤーの使用頻度を考慮しつつ開始するレイヤーを変更することである。ただし、この対処法は解決策ではない。図２２に示されるレイアウト自体は最前面に表示されるオブジェクトのシルエットや前面に展開されるシルエットよりはみ出して表示されるシルエットに影響を与える。もうひとつのバイアスが図２３に確認される。図上のｉｎｄｅｘ２とｉｎｄｅｘ３に示される有効ビットには、おおまかに１副画素列分、下方へのバイアスが認められる。このバイアス自体は、図１８に示されている１８Ｃと１８Ｄを異なるレイアウトに解釈することで解決は可能である。しかし、その場合は図２２のレイアウトが一部毀損することになる。この問題の根本的な解決策は、７５パーセントフィルターについての均一性の問題と同様、シグナルフリーエリアの設定を諦めることであるが、一方で、シグナルフリーエリアは透過率の減衰にリアリティを与えるために確保されている。以下では、ここまでに行われた編集処理、シグナルフリーエリアのための１８Ｃの分割、２つのＯＮビットを追加するための１９Ａの分割、および残りの２つのＯＮビットを追加するための１８Ｄの分割がいかに透過率の減衰に影響を与えたかを検証する。以下では、各レイヤーを積み上げた場合の有効ビットの数が左から右に並べられ、「＋」によって繋げられた形式で表示するものとする。例えばオリジナル８レイヤーの有効ビット数のフローは以下のように示される。
2013037664.tif 000008
【００７１】
シグナルフリーエリアを確保するために１８Ｃが２つに分割される。この変更は図１９の１９０２に示すように後半の４レイヤーに属するＯＮステータスが、同じシグナルの前半の４レイヤーの位置の背後に隠されることになる。従って有効ビット数のフローは以下のように変更される。
2013037664.tif 000009
【００７２】
これより視認性を高めるため、各フィルターは透明度による表現ではなく、構成する基本レイヤーの数で表示する。例えば、各１レイヤーでそのまま構成される７５パーセント透明フィルターは「Ｌ１フィルター」、各２レイヤーで構成される５０パーセント透明フィルターは「Ｌ２フィルター」と表示する。もしＬ１フィルターをそのまま組み合わせてＬ２フィルターを構成した場合、有効ビット数のフローは以下のようになる。
2013037664.tif 000010
【００７３】
Ｌ２フィルターにおいては、単一シグナル用の経路に２つのシグナルが走ることになる。４ポイント長の１９Ａの経路が分割された場合、分割された経路は２ポイント長となるため、経路上のすべてのビットがＯＮステータスで埋められる。以下では、こうした変更をビット配列の形式で示す。例えは、Ｌ２フィルターの偶数セットでは、各シグナルは２ポイントずつ移動するので、変更前の１９Ａ経路では「1100」から開始し「0011」へと進む。これが１９Ａの分割により「1111」に変更される。以下ビット配列の右側に表示されている数字については、追加された有効ビットの数を「＋」、追加された有効ビットの背後に隠れることになり、有効でなくなるビットがある場合は「−」が付与されて表示されている。
2013037664.tif 000011
結果的にＬ２フィルターの有効ビットのフローは以下のように変化する。
2013037664.tif 000012
【００７４】
残りの２つのＯＮステータスを追加するための１８Ｄを分割した場合、分割された経路の状況は以下のように変化する。
2013037664.tif 000013
結果的にＬ２フィルターの有効ビットフローは５０パーセントの透明度を正確に表現するよう設定される。
2013037664.tif 000014
Ｌ２フィルターを組み合わせてＬ４フィルターを構築するとフローは以下のようになる。
2013037664.tif 000015
Ｌ４フィルターの不透明度は６４×０．７５＝４８であり、この背後にあるマスクでは（６４−４８）×０．７５＝１２の不透明度となるため、更なる編集は不要となる。
【００７５】
透過率を正確に表現するために障害となる要素が２つ存在する。１つ目の問題は、図２５に示すようにＬ１フィルターに於いて、有効ビットの減衰が正しく表現されていない点である。２つ目の問題点は、上記のＬ２フィルターに対して行われた編集作業がＬ１フィルターに反映されていない点である。Ｌ１フィルターの透過率がＴのとき、Ｌ１フィルターを組み合わせたＬ２フィルターの透過率はＴ×Ｔとなる。逆の見方をすれば、Ｌ１フィルターの透過率は、Ｌ２フィルターの透過率の平方根となる。この法則はＬ２フィルターとＬ４フィルターの関係に見られるようにフィルターの構築に於いても有効である。上出のＬ２フィルターへの編集をＬ１フィルターに反映させると、結果として得られるフィルターは１８のＯＮステータスビットを備えた約７１パーセントの透過率を持つフィルターとなるが、ここで０．７１は０．５の平方根に近いものとなる。要約すれば、編集対象となった１８Ｄと１９Ａの経路に関しては、２つの異なる階層構造が構築されてしまっている。これら異なる階層構造をもつフィルターを同一の画素に併用した場合、有効ビットの減衰は図２６に示すようになる。Ｌ４フィルターについては、Ｌ２フィルターを組み合わせただけのものであり、階層構造はＬ２フィルターと同じなので、図２６には含まれていない。図２６に示された各フローは、下方へ向けて８レイヤー分を積み上げるフローとなっている。各列には、適用するフィルターを構成するレイヤー数、有効ビット数、理論上の有効ビット数が並んでいて、有効ビット数が理論上の有効ビット数と１ビット以上の差が生じている箇所にはｘまたはアスタリスクでマークされている。図２６が示すように１ビット以上の誤差が生じている箇所の多くは、すぐ次のフィルターにより修正されている。例えば２６Ａのフローにある２番目のフィルタリングでは、有効ビット数は９となり、理論上の有効ビット数より１ビットプラスとなっているが、３番目のフィルタリングの有効ビット数である５は理論上のビット数より１ビットマイナスとなっている。先行技術において繰り返されるＣｉ×
描画色＋（１−Ｃｉ）×背景色の演算が、例えばカラーコンポーネントＲＧＢなどの整数に丸められた数値により行われる場合の誤差を考慮すれば、約１／６４の誤差は許容される範囲内と言える。しかし、２つのパート２６Ｂと２６Ｃはより深刻なエラーを示している。これら２つのパートでは、同じＬ１フィルターによるフィルタリングが繰り返されているが、有効ビット数は逆に２ビットから３ビットへと増えている。もうひとつの逆フローが２６Ｄに見られる。ここでは有効ビットは５ビットから４ビットに減じているが、理論上の有効ビットは３．３ビットから５ビットへ増えている。こうしたフローの逆転は、異なる階層構造の共存によるものである。７１パーセントフィルターが採用されていないのは、ＯＮステータスの均一な分布を保つためであるが、ここまでに紹介したフィルターは二律背反の関係にある２つの要素のバランスの上に成立している。一方では、リアルな透過率を表現するためにＯＮステータスの均一な分布を一部犠牲にし、他方ではオブジェクトのシルエットを正確に反映するために階層構造を一部犠牲にしている。しかし、いずれの場合であっても、有効ビット数の減衰における逆フローは、起こりうる問題である。なぜなら、それはＯＮステータスビットのレイアウト自体によっても生じうるからである。例えば、もし２つのオブジェクトが、ある画素の上部を約６０パーセント占有している状態で図２１に示されているｉｎｄｅｘ６とｉｎｄｅｘ７の有効ビットでサンプリングされたとすると、ｉｎｄｅｘ６によりサンプリングされるシルエットは１ビット、ｉｎｄｅｘ７によりサンプリングされるシルエットは３ビットサンプリングされることになる。これでは、最後に描写されるオブジェクトが、手前のオブジェクトよりの視認性が高いことになる。図２２における場合と同様に、この問題にかぎって見た場合、レイヤーのオーダーを変更することにより問題は緩和されるかもしれないが、これも解決策ではない。総括すれば、こうした考慮すべき誤差は、主に７５パーセント透過率による８層のフィルタリングの最後の数レイヤーにおいて生じるものであり、レイヤーの階層構造が原因で生じる逆フローについては、図２６に示されるように頻繁に発生するものではない。つづいて論じられるテーマは、レイヤーの序列を如何に維持し、さらなる誤差の発生を食い止めるかという方法論についてである。
【００７６】
＜フィルター選択の方法＞
半透明表現用のフィルターは、２つのステップで選択される。最初のステップは、対象となる画素に使用されていないレイヤーを特定する。次のステップで未使用のレイヤーから最適なレイヤーを選択する。未使用のレイヤーを特定する最初のステップでは、単一シグナルの経路が検証される。単一シグナルの経路にある各ビットは、それぞれのレイヤーに特有のものとして属しているため、そのビットのステータスはレイヤーの使用可否の判断の鍵となる。図１８に示される２つの固定化された単一シグナルの経路１８Ａと１８Ｂは、４５度に傾斜した正方形状に展開される「検証用サーキット」を構成する。もし、このサーキット上で、同じレイヤーに属する２つのビットがＯＮステータスのまま残されている場合、そのレイヤーは未使用か、あるいは使用されていても副画素の５０パーセント未満である可能性が高い。これらのサーキット上のビットは、８レイヤーに対応する８ビットにパッケージ化された上で検証される。検証用サーキットは、線形セグメントで構成されているため、８ビットは、0x01010101、0x41041、0x40100401などの乗数と、乗算の結果を移動するオフセット値によって抽出することができる。具体的な手順は副画素のレイアウトにより異なるが、線形セグメントを乗算することにより対象ビットが意図される序列に並んだセグメントを構成し、その結果をシフト（演算）することにより８ビットの配列として構成するプロセスは、図２７に表示されている。これらの操作自体はコンピュータープログラミングの通常のスキルである。２７Ａに示される６４副画素の前半の操作では、乗数は0x01010101となり、これは３２副画素の環境でも同じである。これが、すでに述べた３２副画素のマトリクスにおける必要条件の理由である。図２７に示されるプロセスで、２つの８ビット配列が得られる。２つの８ビット配列は、ＡＮＤ演算により双方ともＯＮステータスとなっているビットを検索し、もし、結果が期待されるＩＤ数を含んでいない場合、ＯＲ演算により得られた結果が利用可能なレイヤーを示す。この８ビット内の各ビットポジションは、各レイヤーのＩＤビットとなり、複数のレイヤーにより構成されるフィルターの場合は複数のＩＤビットにより特定されることになる。この８ビット配列は、これより「ＩＤホルダー」または、「未使用ＩＤホルダー」と呼び、その内容は０と１のビット配列で表示する。もし、副画素の右上が最初のビットとして設定されていて、ＩＤホルダーが図２７のオペレーションで得られた場合、例えば、レイヤー１のＩＤは「00001000」になる。もし、レイヤーのオーダーが変更されている場合には、レイヤー１のＩＤは、８ビット内の異なるポジションになる。視認性を高めるため、これより便宜上ＩＤビットは左から右へのオーダーで表示する。例えば、最初のレイヤーのＩＤビットは「10000000」であり、最後のレイヤーのＩＤビットは「00000001」とする。
【００７７】
ＩＤホルダーは、フィルターを適用するたびに図２７にあるオペレーションを行って取得するのではなく、メモリー内に保持するのが望ましい。保持されたＩＤホルダーのすべてのビットはＯＮステータスに初期化され、ビットフィルタリングが実行されると、使用されたレイヤーのＩＤビットを反転する。ＩＤホルダーが示す利用可能なレイヤーが、求められるフィルタリング処理に対して不足している場合、保持されたＩＤホルダーは、上出の方法で再構築される。この方法はレンダリング速度を速めるだけでなく、レイヤーを適用するオーダーを正確に保つ効果もある。２つの隣り合うレイヤーで構成されるＬ２フィルターでは、検証用サーキット内の４ポイントが検証される。しかし、Ｌ１フィルターでは、検証されるポイントは各２ポイントである。ＩＤホルダーをメモリーに保持することにより、最初の８レイヤーの序列は保障される。
【００７８】
最適なレイヤーを選択する第２ステップのために、各フィルターセット用の変換テーブルが用意される。変換テーブルは、利用可能なレイヤーを示すＩＤホルダーから、次に適用すべきフィルターを導く。例えば、対象となる画素に既に適用されているレイヤーが第３、第４レイヤーのみの場合、次に適用すべきレイヤーは第１レイヤーではなく、第５レイヤーとなる。レイヤー構造は、循環型となっているため、既に使用されているレイヤーに続くレイヤーによって、意図どおりのフィルタリングが期待できる。もし、利用可能なレイヤーの並びが分割されている場合、分割されている状況をなるべく少ない手順で解消するため、次のレイヤーは、最も小さい分割ブロックから選択される。分割されている状況が解消されれば、以降のフィルタリングは前出の手順で序列どおりに行うことができる。このようにレイヤーの選択には優先順位があり、変換テーブルは以下の優先順位を表現するものでなければならない。
（１）循環型のＩＤ序列において利用可能なレイヤーＩＤが複数のブロックに分割された状態にある場合、最も小さな分割ブロック内に含まれるＩＤによりレイヤーが選ばれる。
（２）循環型のＩＤ序列において利用可能なレイヤーＩＤの序列が連なっている場合、利用可能なレイヤーＩＤの序列の先頭部分で示されるレイヤーが選ばれる。
（３）利用可能なレイヤーＩＤの序列に即してレイヤーが選ばれる。
【００７９】
検証用サーキット上のビットが不規則に消費されている場合、検証用サーキットから摘出されるＩＤホルダーは、さまざまなパターンで分割された並び方となり得る。それ故、８レイヤーで構成されるすべてのパターンに対応するため、変換テーブルは２５６のエントリーを持つ。各レイヤーは、前後３レイヤーの位置関係にあるレイヤーと同様にオーバーラップするため、最初の不規則なレイヤー選択は吸収される可能性があるが、次の不規則な選択はそうではない。詳細に設計された変換テーブルによって、多様な状況から生じる誤差を最小限におさえることができる。以下では変換テーブルの好ましい構築方法が論じられる。
【００８０】
例えば図２８に示すＩＤホルダー２８Ａの例では、レイヤー「５」のＩＤが他のＩＤの並びから孤立しおり、以降のレイヤーを序列どおりに行うためには、レイヤー「５」がまず適用される必要がある。この孤立したＩＤビットの検出は、各連続する３つのＩＤビットを、検証範囲と検証範囲内の状況を示す２つのビット配列にて照合することで行われる。ＩＤホルダー２８Ａが、これら検証範囲と状況をしめすビット配列により２８０１、２８０２、２８０３…と順次変化するループ内で照合されると、２８０５まで進んだ段階で孤立したＩＤが検出される。変換テーブルは、このような、ビット配列をセットとして備えた「優先度スキーム」によって構築される。優先度スキームは２８Ｂに示すように、ＩＤホルダーの形式でフォーマットされた３つのビット配列、「検証範囲」、「検証範囲内の状況」、「適用すべきレイヤーのＩＤ」で構成されている。優先度スキームは、次のように適用される；まず、フィルターは変換テーブル内の自らのＩＤの位置に挿入される。次に１から２５５までのループのなかで、ループの添え字がＩＤホルダーのひとつのバリエーションとして検証される。検証されるＩＤホルダーのバリエーションは、「検証範囲」とＡＮＤ演算され、「状況」と比較される。もし、結果が等しい場合は、「適用すべきレイヤーのＩＤ」の位置に挿入されたフィルターが検証されているＩＤホルダーのバリエーションの位置に共有される形で挿入される。より具体的に２８Ａの例で見ると、まず、ＩＤホルダーは「01110100」となる。３つの連続したビットが検証範囲「00001110」とＡＮＤ演算により摘出されて検証対象となり、その結果は「状態」である「00000100」と等しくなる。したがって、「00000100」の位置に挿入されているレイヤー「５」が「01110100」のアドレスに挿入される。結果として、次に適用するレイヤーが「01110100」のＩＤホルダーで検索された場合、変換テーブルはレイヤー「５」を返すことになる。これらの検証は、実際には、上出のループ内にネストされた下位のループの中で行われ、そこでは、検証に使われる３つの配列が、優先順位にしたがって入れ替わる。基本的に優先度スキームは、各ビットポジションに応じた８つのバリエーションを持ち、それぞれのバリエーションごとに繋げられた形で、全体の優先順位を構成する。つまり、最初の優先度スキームのバリエーションがすべてあてはまらない場合に、次の優先度スキームのバリエーションが検証される。
【００８１】
図２９にＬ１フィルター用の優先度スキームを示す。優先度スキーム２９Ｄはデフォルトのスキームで上記（３）に対応し、３つのビット列が全て等しいスキームである。２９Ｃはレイヤーの循環型構造に対応したもので上記（２）に対応する。このスキームは先頭のＩＤが利用可能な状態、たとえば「10111111」のような状況のときに効力を発揮する。従ってこのスキームは第３レイヤーからのバリエーションの開始でも良い。このスキームが検証される状況では、ＩＤが分割された状況は既に検証されており、このスキームは並んだ状態にあるＩＤビットの先頭を検出することを意図している。２８Ｂに示されているのは、このスキームのＬ２フィルターに対応した例である。優先度スキーム２９Ａと２９Ｂは分割されたＩＤホルダー用のもので上記（１）に対応する。２９Ａ、２９Ｂ、２９Ｄは各ビットポジションに対応した８つのバリエーションを持ち、２９Ｃは、６つのバリエーションを持つ。連続する３ビットによる分割ブロックは図２９では考慮されていないが、これは連続する３ビットが最も小さな分割ブロックである場合、もう一方のブロックも３ビットのブロックとなるからであり、この場合は他のスキームにより３ステップで分割が解消される。例えば３ビットのブロックによる分割が｛７，０，１｝
と｛３，４，５｝ のように構成された「11011101」のような状況にある場合、変換テーブルは「00010000」、「00001000」、「00000100」で示す順序でレイヤーを返して分割された状態を解消し、結果として「11000001」のような状況をもたらす。この連続する３レイヤーを選択する設定では以下の優先度スキームが機能している。
【００８２】
ＩＤホルダーが「11011101」のとき、変換テーブルは 「00010000」のレイヤーを返す。この構成は優先度スキーム２９Ｃのバリエーションにより設定される。
2013037664.tif 000016
【００８３】
選択されたレイヤーの「00010000」は反転される。結果として得られたＩＤホルダー「11001101」で検索すると、変換テーブルは「00001000」のレイヤーを返す。この構成は優先度スキーム２９Ｂのバリエーションにより設定される。
2013037664.tif 000017
【００８４】
選択されたレイヤーの「00001000」は反転される。結果として得られたＩＤホルダー「11000101」で検索すると、変換テーブルは「00000100」のレイヤーを返す。この構成は優先度スキーム２９Ａのバリエーションにより設定される。
2013037664.tif 000018
【００８５】
一旦いずれかの３ビットのブロックが崩されると、以降のレイヤー選択は崩されたブロック内に集中し、もう一方の３ビットのブロックはそのまま残される。このことによって最小の３ステップで３ビットのブロックによる分割を解消することができる。
【００８６】
複数のレイヤーを組み合わせたフィルターについては、不規則にフィルタリングされた画素への対処法により２つの方法で変換テーブルを構築することができる。例えばＬ２フィルターのための利用可能なレイヤーが第３と第５レイヤーのみの場合、Ｌ１フィルターを２回適用する方法と、分割されたレイヤーのためのカスタムフィルターを用意する方法とがある。前者の方法では、適用する回数を指示する必要がある。この方法では変換テーブルの構造はシンプルになるが、適用の手順は複雑になる場合がある。このため、ベストモードでは後者の方法を採用する。カスタムフィルターを用意するには：必要な分割のパターンを用意する；透明度がより高いフィルターを組み合わせてカスタムフィルターを生成する；カスタムフィルターを変換テーブル内の対象となる分割パターンのアドレスに挿入する；分割パターンのための優先度スキームを構築する。分割パターンと必要なバリエーションの数は図３０に掲載されている。これらのパターンでは、検証範囲を小さくするために、それぞれのバリエーションの最も短いものが選択されている。例えば、３０ＣのＩＤのオーダーは｛０，２，３，４｝となっているが、これは、最初の３つのＩＤが並んだ｛０，１，２，６｝のバリエーションである。｛０，２，３，４｝のための検証範囲は｛０，１，２，６｝のそれよりも短い。これが、このバリエーションが３０Ｃとして選択された理由である。また、２レイヤーのためのパターンと３レイヤーのためのパターン群には内部に優先順位がある。これらのパターン内では、２つの連続するＩＤを含むパターンは、優先順位の低いポジションに置かれている。たとえば３０Ｂの優先順位は３０Ａのそれよりも低い。以下の議論を始める前に指摘される点は、こうした複雑さは、Ｌ１フィルターを繰り返し適用する前者の方法を模倣することから生じるという点である。
【００８７】
分割パターンのための優先度スキームには、検証範囲の３つのバリエーションが用意される。それらは、対象の分割パターンよりも両端に１ＩＤビット分拡張された検証範囲をもつものと、両端のいずれかに１ＩＤビット分拡張されたものが２つとなる。前者は孤立した分割パターンのためのもの、後者は、繋がっている分割パターンのためのものである。孤立した分割パターンは、繋がっている分割パターンよりも優先順位が高く設定される。図３１に示されている例は、Ｌ２フィルターに関するものである。ＩＤホルダー３１０１の分割状態を解消するためには、次のレイヤーは、３１Ｃと３１Ｄである必要がある。分割パターンの３０Ａが対象パターンとなり、そのバリエーションが優先度スキーム３１０２で参照される。その検証範囲が示すように３１０２は孤立した分割パターンに対応したものである。もうひとつの例として３１０３では、次に選択されるレイヤーは３１Ｇと３１Ｈとなる。対象となる分割パターンは、前の例と同じく３０Ａであるが、検証範囲は異なっている。３１０３のための優先度スキーム３１０４は、繋がっている分割パターンのものである。もし、孤立したパターンと繋がっているパターンの優先順位が逆転しているとすると、３１０１のために選択されるレイヤーは予期せぬ３１Ｂと３１Ｃとなる。他方、もしパターン３０Ｂの優先順位が３０Ａよりも高く設定されていたとすると、３１０１のために選択されるレイヤーは３１Ａと３１Ｂという不正な結果となる。最後に、もし３１０１に対して、図２９にある優先度スキームに従って２回のＬ１フィルタリングが行われたとすると、選択されるレイヤーは３１Ｃと３１Ｄとなり、正しいレイヤーが選択される。このように分割パターンの順位や、孤立した分割パターンに付与される高い優先度は、Ｌ１フィルターを繰り返し使用した状況を再現する効果を持つ。しかし、ここで図３０に１つ例外的なパターンがある。パターン３０Ｂ自体は分割パターンではないので、このパターンのための優先度スキームは、孤立したパターンのための検証範囲のもののみが必要となる。ＩＤホルダー上の分割された状態は、以下の１４の例外を除いて、単独のカスタムフィルターで解消される。以下の例外的な分割パターンは単独のＬ２フィルターでは解消されない。分割状態がどのように残るのか以下にビット配列で示す。
・「10101010」の２つのバリエーション
10101010 --> 00001010
01010101 --> 00000101
・「11011010」の８つのバリエーション
11011010 --> 01011000
01101101 --> 00101100
10110110 --> 00010110
01011011 --> 00001011
10101101 --> 10000101
11010110 --> 11000010
01101011 --> 01100001
10110101 --> 10110000
・「11101110」の４つのバリエーション
11101110 --> 11100010
01110111 --> 01110001
10111011 --> 10001011
11011101 --> 11000101
【００８８】
複数レイヤーのための優先度スキームは、より少ないレイヤー数に対応したものも含む必要がある。例えばＬ４フィルターのための優先度スキームは４レイヤーのためのものだけでなく、３レイヤー、２レイヤー、１レイヤーのためのものも含む必要がある。ここで、次に考慮する点は未使用のレイヤーが必要なレイヤー数だけ存在しない場合についてである。この問題を解決するために３つのデフォルトマスクが用意される。検証用サーキット上のビットがすべて消費された後も、消費されていないビットが残っている可能性があり、デフォルトマスクは、このような場合に機能する。デフォルトマスクは線形セグメントそのもので構成される。各線形セグメントには、シグナル経路上の偶数インデックスまたは奇数インデックスのポイントが関係づけられており、シグナルが走った場合、各線形セグメント上のシグナル数は、複数シグナル用のシグナル経路に即して、１シグナルと２シグナル、単一シグナル用のシグナル経路に即して１シグナルとシグナルなしの状況を繰り返す。デフォルトマスクを構成する線形セグメントはこのシグナル数を考慮して選択される。図３２に示すデフォルトマスク３２Ａと３２Ｂは、すべてのレイヤーと４ビット重複し、３２Ｃは６ビット重複する。例えば３２Ａは、複数シグナル経路の奇数インデックス用と単一シグナル経路の偶数インデックス用の線形セグメントの組み合わせでできている。これらのデフォルトマスク群は重複するビットをもたず、併用することでボリュームを増すことができる。例えば、もし、３２Ａと３２Ｂを重ね合わせた場合、どのレイヤーとも８ビット重複するマスクを作ることができる。より具体的には、例えば１レイヤーのみがＬ２フィルタリングに対して利用可能である場合のために、３２Ａを１レイヤー用のＬ２カスタムフィルターに組み合わせ、３２Ｂと３２Ｃを重ね合わせたフィルターをインデックス０のデフォルトフィルターとして設定する。そして、Ｌ４フィルターを各２つのＬ２フィルターを組み合わせて以下のように構築する。以下のソースコードでは、フィルターオブジェクトのメンバーは、ビットマスク、ＩＤ、「filled」というブール値で、このブール値はフィルターがレイヤーのみでできているのか、デフォルトマスクを含んでいるのかを示している。
2013037664.tif 000019
【００８９】
上記コードで整数値「pattern」はＩＤホルダーのバリエーションである。もし、「pattern」が１つのレイヤーＩＤしか含んでいない場合、最初に選ばれるＬ２フィルターは、ひとつのレイヤーと３２Ａを組み合わせたフィルターとなり、２番目に選ばれるＬ２フィルターはインデックス０にある３２Ｂと３２Ｃを組み合わせたフィルターになる。結果として生成されるＬ４フィルターは、１つのレイヤーと３つの異なるデフォルトフィルターの組合せとなり、Ｌ４フィルターのボリュームは保たれる。図３３に示すのは、次のフィルターを検出するためのフローチャートである。まず３３０１で未使用ＩＤを保持するＩＤホルダーがメモリーから読み込まれる。３３０２で変換テーブルのＩＤホルダーのアドレスにあるフィルターが取得される。もし、フィルターがデフォルトマスクを含んでいない場合は、３３０７にて、そのフィルターが次のフィルターとして選択される。そうでない場合、３３０４にてＩＤホルダーは検証用サーキットより再編纂される。３３０５では、得られたＩＤホルダーによって再度変換テーブルよりフィルターが選択される。３３０６では、メモリー内のＩＤホルダーが新たに得られたＩＤホルダーによって更新される。このフローでは、一度デフォルトマスクの使用を避けるよう試みられるが、それが不可能な場合は、上出のデフォルトマスクが使用されることになる。一方、ＩＤホルダーをフィルタリングの際、随時、検証用サーキットから直接得る方法も可能であり、この場合は図３３のフローはよりシンプルなものになる：３３０１にて未使用のレイヤーのためのＩＤホルダーを検証用サーキットから取得する。３３０２でフィルターを選択する。３３０７で得られたフィルターを次のフィルターとする。その他のプロセスはすべて省略する。実際には、メモリー内にＩＤホルダーを保持することによる処理速度の向上は認知不能なレベルにとどまることもあり、これらの２つの手法は半透明フィルターの使用目的や使用方法により選択されるべきものである。
【００９０】
上出のデフォルトマスクは検証用サーキットを構成する線形セグメントを使用していないため、以下のようにフィルターセット間の中間的な透明度を表現することにも使用することができる。
ThiedMemory &= L2filter & ~defaultMask;
【００９１】
＜半透明オブジェクトのグループ化＞
すでに述べたように、半透明オブジェクトの表現は仮想の８レイヤーによって行われるが、この仮想レイヤー自体は、操作が可能なビットマスクで構成されている。この操作可能性は、本発明の特徴の１つである。同じビットマスクでフィルタリングされたオブジェクト同士は互いを透過することはないが、同じレイヤーの共有を行うオブジェクトをグループ化することができる。更には、こうしたグループ化された半透明オブジェクトと、通常の半透明オブジェクトとを同じ画面上に共存させることも可能である。図３４は、グループ化された半透明オブジェクトがどのように機能するか示したものである。３つの半透明オブジェクトが図３４に示されている。３４０１は通常の半透明オブジェクト、３４０２と３４０３はグループ化された半透明オブジェクトである。グループ化された３４０２と３４０３はお互い同士を透過しない。もし通常のオブジェクト３４０１が他の２つのオブジェクトの背後にある場合、前面に置かれた２つのオブジェクトをグループ化することによって、より明瞭に表示される。このように表示されるオブジェクトのフォーカスを３つの異なる表現、グループ化された半透明オブジェクト、通常の半透明オブジェクト、不透明オブジェクトにより表現することができる。オブジェクトをグループ化するためには、グループＩＤとオブジェクトグループ用のＩＤホルダーを保持するための２つのメモリースペースが確保される。２つのメモリーは最後にフィルタリングされた、未知のグループＩＤをもつオブジェクトにより更新され、もし保持されたグループＩＤがレンダリングされるオブジェクトのグループＩＤと等しい場合は、保持されたオブジェクトグループ用のＩＤホルダーにより適用するフィルターが選択される。これらのメモリーは、未知のグループＩＤを持つオブジェクトがフィルタリングされるたびに更新されるため、オブジェクトグループは、手前から奥への序列でレンダリングされる必要がある。もし、序列が不規則となる場合、この方法で可能なグループは１グループのみである。図３５に示すフローチャートは、グループ化されたオブジェクトのためのフィルター選択の過程を示している。３５０１にて保持されたグループＩＤが取得され、３５０２において、そのグループＩＤが有効なものかが判定される。もし有効なものである場合、３５０３において、当該オブジェクトのグループＩＤと比較され、もし、２つのグループＩＤが一致する場合、オブジェクトグループのためのＩＤホルダーが３５０４で読み込まれる。そして、ＩＤホルダーのアドレスに置かれたフィルターが３５０５で取得される。もし、グループＩＤが無効な場合、あるいはグループＩＤが当該オブジェクトのものと一致しない場合、３５０６において３３０８の手順で次のフィルターが選択される。３５０７では、保持されているグループＩＤが当該オブジェクトのものに更新される。３５０８でオブジェクトグループのためのＩＤホルダーが現時点での未使用ＩＤホルダーの値に更新される。最後に３５０９において使用するフィルターが確定する。
【００９２】
上記説明したように、複数の半透明オブジェクト同士の関係において、互いに透過する、もしくは、互いに透過しない、という関係を選択的に設定することが可能であり、互いに透過しない半透明オブジェクト同士のグループ化を実現することが出来る。こうしたグループ化は、連結されたオブジェクト群の半透明表示を可能とし、また、グループ化された透明オブジェクト、通常の透明オブジェクト、不透明オブジェクトの選択的な設定、および透明度の調節により、表示されているオブジェクト間のフォーカスを表現する効果をもたらす。
【００９３】
また、本願によれば、不透明な画像オブジェクトだけでなく、半透明のオブジェクトであっても１／３２程度の誤差の範囲内でアンチエイリアス処理を行うことができる。
【００９４】
上述した実施形態は、本発明に係る技術思想を具現化するため一例を示したにすぎないものであり、他の実施形態でも本発明に係る技術思想を適用することが可能である。すなわち、本願発明について、上述の複数の好適な実施態様を説明したが、いわゆる当業者であれば、本願に係る技術思想の範囲内において、改変、追加、削除、置換、改良をなすことができるであろうことが認められる。
【００９５】
さらにまた、本発明を用いて生産される装置、方法、システムが、その２次的生産品に搭載されて商品化された場合であっても、本発明の価値は何ら減ずるものではない。
【産業上の利用可能性】
【００９６】
上述したように、本願によれば、半透明のオブジェクトであってもアンチエイリアス処理を行うことが可能となり、結合された表示物の半透明化や多数のオブジェクトが共存する状況でのフォーカスを表現する場合などに効果をもたらす。したがって本発明は、ニュースや企業社会における一般的なプレゼンテーション全般に直ちに用いて効果を創出する。この効果は、グラフィックオブジェクト及びその表示を利用・応用する産業として、情報産業、電気器具産業、宇宙産業、医療機械工業、測定産業、建設業、精密機械工業等をはじめとする、各種産業にとって、非常に有益をもたらすものである。
【符号の説明】
【００９７】
１０４  画像出力装置
１０５  ＣＰＵ
１０６  Ｉ／Ｏシステム・バス
１０７  メインメモリー
１０８  キーボード
１０９  マウス
１１０  マス・ストレージ
【図２８】
2013037664.tif 000020
【図２９】
2013037664.tif 000021
【図３０】
2013037664.tif 000022
【図３１】
2013037664.tif 000023
【図１Ａ】
2013037664.tif 000024
【図１Ｂ】
2013037664.tif 000025
【図２】
2013037664.tif 000026
【図３】
2013037664.tif 000027
【図４】
2013037664.tif 000028
【図５】
2013037664.tif 000029
【図６】
2013037664.tif 000030
【図７】
2013037664.tif 000031
【図８】
2013037664.tif 000032
【図９】
2013037664.tif 000033
【図１０】
2013037664.tif 000034
【図１１】
2013037664.tif 000035
【図１２】
2013037664.tif 000036
【図１３】
2013037664.tif 000037
【図１４】
2013037664.tif 000038
【図１５】
2013037664.tif 000039
【図１６】
2013037664.tif 000040
【図１７】
2013037664.tif 000041
【図１８】
2013037664.tif 000042
【図１９】
2013037664.tif 000043
【図２０】
2013037664.tif 000044
【図２１】
2013037664.tif 000045
【図２２】
2013037664.tif 000046
【図２３】
2013037664.tif 000047
【図２４】
2013037664.tif 000048
【図２５】
2013037664.tif 000049
【図２６】
2013037664.tif 000050
【図２７】
2013037664.tif 000051
【図３２】
2013037664.tif 000052
【図３３】
2013037664.tif 000053
【図３４】
2013037664.tif 000054
【図３５】
2013037664.tif 000055