説明

アンチエイリアス処理されたグラフィックオブジェクトをレンダリングする方法及び装置

【課題】アンチエイリアス処理において、複数の画像オブジェクトのシルエットが画素を共有している状況を正確に表現する。不透明な画像オブジェクトだけでなく、半透明な画像オブジェクトについてもカバレッジを反映した画素値を算出する。
【解決手段】画素内の空白領域を示す副画素を備えたメモリーと、染色された領域の色情報を蓄積するメモリーを用意し、色情報を伴う副画素を仮想的に設定する。半透明の表示については、有効となる副画素を制限することにより、画像オブジェクトのカバレッジを縮減し、背景の透過率を調節する。有効となる副画素の設定は、ビットマスクによるフィルタリングにより実現する。

【発明の詳細な説明】
【技術分野】
【0001】
本願はコンピューター画像処理分野に係り、特にアンチエイリアス処理されたグラフィックオブジェクトをレンダリングする方法及び装置に関する。
【背景技術】
【0002】
コンピューター画像処理において、文字グリフやポリゴンなどの画像オブジェクトは、画像を構成する最小単位である画素を通じて提示される。画素は出力画面上に格子状に配置され、画像オブジェクトの描写は、意図する位置に配置された画素に描画色を割り当てることによって実現される。必然的にこの方法では、格子の網目の細かさ、つまり解像度が画質を左右し、解像度が充分でない状態で現れるギザギザを除去するために、アンチエイリアスと呼ばれる処理が適用される。アンチエイリアスとは、画像出力装置が提供する解像度と、表示する画像に求められる解像度との隔たりを緩和する技術であるが、大別して2つの方法論に分けることができる。ひとつは、個々に割り当てられた画素値を周囲の画素値で補完する技術で、顕著な例としては、写真画像を異なる大きさで表示する処理などがあげられる。もう一方は、画像オブジェクトの輪郭表示を主題とする技術で、図1Aにおいて例証されるようなものである。同図上では、傾斜した黒い長方形が白い背景の上に描写されている。101の輪郭線はギザギザとした状態で表示されている。これに対して、グレースケールによる諧調を与え、スムースな輪郭として表したものが102である。この後者のタイプの技術では、個々の画素上におけるオブジェクトの占有状況を把握するために、オブジェクトを任意のスケールに拡大する手法が一般的である。このスケール操作においては、各画素を、さらの細かい仮想の画素の集合として定義することにより、座標空間の拡大を実現する。この仮想の画素は「副画素」とよばれ、多くの場合、ビットマップ・イメージが配列により構成されることと同様に、ビット配列により構成される。103の副画素上では、16ある副画素のうち、6つの副画素が拡大された長方形オブジェクトにより占有されている。この状況を参照して対象画素に割り当てる諧調を確定する。この占有された副画素を数える典型的な手法は、スーパーサンプリングと呼ばれ、ここで算出される諧調はしばしば、色の強度(color intensity)と呼ばれる。結果として、オブジェクトの輪郭部に割り当てられる画素値は、拡大された座標空間を通じて得られた色の強度に即して、描画色と背景色をブレンドすることにより算出される。色の強度
「Ci」を正規化すると以下の式になる。
画素値=Ci×描画色+(1−Ci)×背景色;
【0003】
このような手法で、ギザギザの除去が実現される。本発明は、このスーパーサンプリングの手法に依拠する技術である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第5940080号明細書
【特許文献2】米国特許第6501483号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来のスーパーサンプリング技術では、画素値は描画色と背景色の構成比により確定されるが、複数の画像オブジェクトが描画されるとき、この技法では正確な表現が不可能な場合がある。以下に紹介する画素値確定のプロセスは、3種類のコーヒー、キリマンジェロ、モカ、ブラジルのブレンドに例えたものである。背景色を緑と仮定すると、この状況は、例えば、200ccのカップにキリマンジェロが満たされている状態である。この画素の右半分を赤いオブジェクトRが以下のように占有したとする。

【0006】
この時点での状態は、緑が50パーセント、赤が50パーセントである。コーヒーに例えると、100ccのキリマンジェロをシンクにながしこみ、赤を示すモカ100cc分をカップに注いだ状態である。100ccのキリマンジェロを廃棄する行為は、以下Ci×背景色の減算を意味し、そこに全体の容量を保つためのCi×描画色が注入される。
画素値=Ci×描画色+(背景色−
Ci×背景色) ;
【0007】
今度は、この画素の左半分を青いオブジェクトBが占有した状態を想定してみる。

【0008】
ここでの画素値の算出は、描画色である青と現時点での背景色とのブレンドとなり、50パーセント青、25パーセント赤、25パーセント緑となる。つまり、100ccがモカ、100ccがキリマンジェロにブレンドされた現在のコーヒーを半分シンクに流し込み、青にあたるブラジルを100cc注ぎ込んだ状態である。本来、この画素は、右側が赤、左側が青に占有されるべきであり、背景色の緑は見えてはならない。しかし、緑を示すキリマンジェロ50ccがカップに残ってしまっている。この例のバリエーションとして、2番目に描画する青が右半分を、赤を覆うかたちで占有する場合はどうであろうか。

【0009】
構成比のみによる計算では、結果は前回と同じ結果になるが、正確には、青が50パーセント、緑が50パーセントにならなければならない。更に複雑な状況として、オブジェクトに透明度が設定され、画素の半分ずつを占有するのではなく、さまざまな角度で画素を横切り、部分的に重なるような状態であったならば、どうであろうか? このような状況はブレンドの構成比のみでは、表現することができない。
【0010】
本発明は、上述したような従来技術上の問題点を解決するためのもので、単純、正確、かつ相対的に高速な方法によって、アンチエイリアス処理されたグラフィックオブジェクトをレンダリングすることを実現することを課題とする。
【課題を解決するための手段】
【0011】
本発明では、ブレンドが行われるたびにコーヒーカップが満たされることはない。代わりに、小さなカップが副画素の数だけ用意され、オブジェクトのシルエットが画素に差し掛かった場合には、そのシルエットの配下に位置するカップにそのオブジェクトに設定されたコーヒーが注がれる。一度コーヒーが注がれたカップにはマスクがかけられ、その上に更に、他のコーヒーを注ぐことはできない。例えば、図2の2Aでは、まず約50パーセント分のカップに最初のコーヒーがそそがれる。次に2Bのように次のコーヒーが注がれようとするが、2Aの空のカップにしか注ぐことができない。結果として2番目のシルエットは、2Cに見られるように25パーセントの画素を占有することになる。2Cが示すように、2つのカップが空のまま残されていて、すべての容量が満たされてはいない。これは、カップを満たすための<画素値=Ci×描画色+(1−Ci)×背景色>の等式による演算は、本発明では行われないことを示している。従来の方法では、100ccのモカが割り当てられたとしても、その占有率は最終的なブレンドにおけるモカの占有率を意味せず、新たなコーヒーが注入された場合、占有率は減少する。しかし、本発明において、最初のシルエットと次のシルエットによる2Cに示される占有率は、最終的なブレンドに対する構成比であり、画素値は、残りの2カップが満たされた後、確定される。
【0012】
上出の処理は、空白の領域を示すための副画素を、各画素ごとに用意することにより実現される。この副画素内のすべてのビットは、空白の状態として初期化され、オブジェクトのシルエットが画素上を横切った場合、その配下にある副画素は、染色されたものとして反転される。これら染色された副画素は、後につづく描画処理からは、比較の上、除外される。複数の画像オブジェクトが同一の画素を共有する場合には、このような処理がオブジェクトの数だけ繰り返され、各オブジェクトは、縮小してゆく空白の領域の範囲内において占有率を確定して行く。必然的にオブジェクトは手前のものから奥のものへと描画されることとなり、これは、本発明の特徴のひとつである。各オブジェクトの占有率に即して算出された色値は、色値を保持するためのストレージに積み上げられ、すべての副画素が染色された後、画素値が確定する。ここでは、染色された副画素の数とストレージに積み上げられた色値のボリュームは同期し、最終的に積み上げられる色値は、副画素の数を反映したものになる。ここで「色値」の示すものは、好ましくは、RGBなどの色情報を構成するコンポーネント値のセットであり、その「積み上げられた」色値とは、合算された値を意味するが、これに限定されるものではない。いずれにせよ、副画素の数は2のべき乗と設定されているため、最終的に確定される画素値は、ビットのオフセット操作で効率的に算出することが可能となる。
【0013】
この手法は、シンプルで、正確なものであり、処理速度も比較的高速におこなわれるが、メモリーの消費量は大きなものになる。本発明では、副画素の数は最低32必要であり、推奨される副画素数は64になるが、この分のメモリーが処理対象となる最大画像に対応できる分だけ用意され、これにともなう色値のストレージのためのメモリーも確保されなければならない。アンチエイリアス処理が、もっぱらオブジェクトの輪郭部に適用されることを思えば、これは効率的なメモリーの使用法とは言えない。しかしながら、ここで必要となるメモリー量は近年のコンピューターに装填されている記憶装置にとっては、問題となる負荷ではない。より難しい問題は、上出の手法で半透明のオブジェクトを表現することである。ストレージ上に積み上げられた色値を更にアルファブレンドすることは、もはや不可能である。
【0014】
本発明における半透明の表現は、追加的なフィルタリングにより行われる。例えばモカに例示される半透明オブジェクトがキリマンジェロを背景とした空間に位置する1つの画素を全面的に覆っている状態を想定してみる。本発明では手前のオブジェクトから描写されるため、まず、モカがカップに注がれる。このとき、モカのシルエットが図2の2Dのビットマスクによりフィルタリングされた場合、2Eにあるように9つのカップにしか注がれないことになる。不透明である背景の描写の際には、フィルタリングはおこなわれず、キリマンジェロは残りの7つのカップに注がれる。結果として、対象の画素は、2つの異なるコーヒー、モカとキリマンジェロのブレンドとなる。複数のオブジェクトが描写される場合には、フィルタリングされる対象の副画素が、描写の順に応じて変化する。上出の2Eで示されたモカが示すオブジェクトにつづけて他のオブジェクトが描写される場合、フィルタリングのレイアウトが例えば2Fのように変化する。ここで、描写対象となるポイント数は2つのビットマスク共に9ポイントだが、これらのポイントが一部重複しているため、2番目に描写されるシルエットは、2Gにあるように4つのカップにしか注がれない。透明度の表現においては、手前側のオブジェクトは、奥側のオブジェクトよりも露出度が高くなければならない。ポイントの重複は、これを表現するためのものである。ここで露出されるポイントを1、マスクされるポイントを0で示すと、2Dと2Fの関係は以下のような関係になる。

【0015】
上出の表示では、視認性を高めるため、ビットのオーダーは調節されている。5つのポイントが重複しており、2Dの下の2Fでは、4つのポイントが有効となっている。本発明では、これら2つのマスクの関係を2Dマスクの有効ポイントがつづいて適用される2Fマスクの位置に移動したものとして認識される。

【0016】
上記の表示では、それぞれのポイントに個別の目印が付されることにより、その移動の仕方が視覚化されているが、この「移動経路」という概念がビットマスクを生成するための方法論として展開される。結果として生成されるビットマスクはレイヤーと呼ばれ、オブジェクトの透明度をコントロールするため複数のレイヤーが構築される。これらのレイヤーは、部分的に重複しながら階層構造を成し、レイヤーの集積に応じて透過率を減衰する。透過率は適用するレイヤーの数で調節可能だが、予め複数のレイヤーを意図されるボリュームに組み合わせることにより、異なる透過率をもつフィルターセットが構築される。これらのフィルターは、同じレイヤー構造をもとに構築されるため、異なる透過率のフィルターを同一の画面内で使用することが可能となる。図2による図説では、各レイヤーのONステータスの位置を空いているコーヒーカップに例えているが、レイヤー構造の解説では、「シグナル」という概念を採用する。
【0017】
また、上述のビットマスクによる透明オブジェクトの表現方法により、特殊な効果を実現できる。同じビットマスクでフィルタリングされたオブジェクト同士は互いを透過することはないが、同じレイヤーの共有を行うオブジェクトをグループ化することができる。例えば、2Eにつづけて描写されるオブジェクトが、同じ2Dのビットマスクでフィルタリングされた場合、最初のシルエットの背後にある2番目のシルエットは描写されなくなる。この技法は、結合された表示物の半透明化や多数のオブジェクトが共存する状況でのフォーカスを表現する場合などに効果をもたらす。
【0018】
ここまで、述べてきたように、フィルタリングするポイントのレイアウトは、本発明にとって重要な要素となる。サンプリングポイントのレイアウトに関する課題は、米国特許第6,501,483号(特許文献2)に詳述されている。
【0019】
上記課題を解決するために、本発明の一態様においては、アンチエイリアス処理されたグラフィックオブジェクトをレンダリングする方法において、空白の領域を記憶するためのメモリーであって、2Nビットの副画素を構成し、Nは少なくとも5以上であり、前記副画素のマトリックス中の染色されていない副画素をONステータスで示し、通常はONステータスは1、OFFステータスは0として規定されるが、逆の設定の場合は関連するAND演算とOR演算もプロセスに全般にわたって逆転されるものであって、すべての副画素がONの状態で初期化される第1メモリーを準備するステップと、前記第1メモリーに対応する色値を保持する第2メモリーであって、前記副画素の数を反映した2N分の色値の累積を格納可能であり、前記第1メモリーにおける染色された副画素数と前記第2メモリーにおける色値の前記累積が同期するよう設計された第2メモリーを準備するステップと、手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行う走査変換ステップであって、対象となるオブジェクトのカバレッジを確定するステップと、前記カバレッジに対応する前記第1メモリー中の領域をOFFステータスに反転するステップと、前記第1メモリー中の反転された副画素数に呼応する色値を前記第2メモリーに積み上げて、前記第1メモリーの全ての副画素が反転された後、前記第2メモリーに積み上げられた色値によって画素値を確定するステップとを備える走査変換ステップとを具備する。
【0020】
上記において、「前記第1メモリーより反転された副画素数に呼応する色値を前記第2メモリーに積み上げて、前記第1メモリーの全ての副画素が反転された後、画素値を確定する」とは、たとえば、図1Aに開示される態様に対応するが、これに限定されるものではない。
【0021】
本発明の上記の態様においては、対象画面内の更新される領域に属する第1メモリーを初期化し、それ以外の領域を完全にOFFステータスに設定することにより、更新される領域がクリッピングされるステップをさらに備えるように構成することもできる。
【0022】
また、本発明の上記の一態様においては、対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトを準備するためのステップをさらに備えるように構成することもできる。
【0023】
さらに、本発明の上記の態様においては、前記対象となるオブジェクトのカバレッジを確定するステップにおいて、透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、カバレッジを減縮するようにしてもよい。
【0024】
また、本発明の上記の態様においては、前記フィルターオブジェクトを準備するためのステップにおいて、ビットマスクによる複数のレイヤーであって、循環型の階層構造を持ち、各レイヤーのONステータスの位置が連続的にレイヤーの序列に応じて移動する経路(シグナル経路)の集合体としてマトリクスを構成し、各シグナル経路はレイヤーの総数あるいはその因数分の長さを備える、基本レイヤーを準備するステップと、ひとつまたは複数の前記基本レイヤーで構成されるフィルターオブジェクトであって、該フィルターオブジェクト中に含まれるレイヤー数は求められる透明度に応じて決定され、同じ透明度を共有しつつ前記各基本レイヤーに対応するバリエーションを備えるフィルターオブジェクトを準備するステップとをさらに具備するように構成することもできる。
【0025】
さらに、本発明の上記の態様においては、前記第1メモリーは少なくとも2つの4×4リージョンで構成され、該4×4リージョンは4つの線形セグメントで構成され、各線形セグメントは4×4の循環型マトリクスにおいて対角線に即して4つの副画素が並んだものとして構成され、前記4つの線形セグメントは互いに重複することなく同じ対角線傾斜を共有するようにしてもよい。
【0026】
また、本発明の上記の態様においては、前記レイヤーの各々に設定されるONステータス(シグナル)の数はそれぞれK=2N/4であり、前記レイヤーの不透明度が1/4となるようにしてもよい。
【0027】
さらに、本発明の上記の態様においては、K/4シグナルがK/4シグナル経路に個別に配布され、3K/4シグナルがK/4シグナル経路に実質的に均一に配布される(各3シグナル)ようにしてもよい。
【0028】
また、本発明の上記の態様においては、3つのシグナルを持つシグナル経路は各4×4リージョン内の2つの線形セグメント上に設定され、前記2つの線形セグメントは、循環型の4×4マトリクス上で隣り合う関係にあるようにしてもよい。
【0029】
さらに、本発明の上記の態様においては、前記3シグナルは4×4リージョンを2×2にコピーした仮想空間上で絶対値としてのラジアンR = π/ 2 + 2 x tan-1(0.5)の角度を形成し、頂点のシグナルが一方の線形セグメントへ、両端のシグナルがもう一方の線形セグメントへ割り当てられるようにしてもよい。
【0030】
また、本発明の上記の態様においては、前記3シグナルは、2つの奇数長のインターバルをおいて配置され、シグナル経路上の4つの偶数インデックスのポイントと4つの奇数インデックスのポイントは、個別に前記2つの線形セグメントに割り当てられ、前記2つの線形セグメントに配置されたインデックスの進行方向が同方向となるようにしてもよい。
【0031】
さらに、本発明の上記の態様においては、2つの異なるインターバルの組合せが各2つの3シグナルを持つシグナル経路のために用意され、これらのインターバルは、1、2、3の間隔に設定されたものが、前記2つのシグナル経路のいずれかに割り当てられ、各間隔のインターバル数は同一となるようにしてもよい。
【0032】
また、本発明の上記の態様においては、前記2つの線形セグメントの偶数インデックスの位置と奇数インデックスの位置とが相対的に、与えられたインターバルに即して絶対値ラジアンRを構成するように設定され、そこではインデックスの進行にともない、頂点のシグナルを前記2つの線形セグメントに交互に配置しながら、正と負のラジアンRを交互に構成するようにしてもよい。
【0033】
さらに、本発明の上記の態様においては、各4×4リージョン内の2つの線形セグメントが単一シグナルのシグナル経路のために確保され、それぞれのポイントは前記3シグナルの両端のポイントと共にオリジナルの頂点ポイントと対称をなすラジアンRを構成する位置に配置されるようにしてもよい。
【0034】
また、本発明の上記の態様においては、前記対称をなすラジアンRを構成するポイント群はインデックスの進行と共に正と負のラジアンRを交互に構成し、偶数インデックスと奇数インデックスは前記2つの線形セグメントに個別に割り振られるようにしてもよい。
【0035】
さらに、本発明の上記の態様においては、それぞれの単一シグナルのためのシグナル経路は、2つの異なる4×4リージョンに属する2つの線形セグメントに跨って配置され、各2つの単一シグナルのためのシグナル経路が各2つの4×4リージョンに割り当てられ、それぞれ第1経路と第2経路に関して、該第2経路は編集可能なエリアとして定義され、偶数インデックスと奇数インデックスの割り当ては第1経路と第2経路との間で各2の4×4リージョン内で交互するように設定されるようにしてもよい。
【0036】
また、本発明の上記の態様においては、前記編集可能なシグナル経路は、選択的にレイヤー総数の因数長となるように分割され、該分割された経路はシグナルなし(背景のために確保された領域)とすることも可能であるように構成することもできる。
【0037】
さらに、本発明の上記の態様においては、前記副画素が、4つ、もしくはそれ以上の4×4リージョンを含有する場合には、シグナル経路の進行方向は、任意の形式で対称となるように設定されるようにしてもよい。
【0038】
また、本発明の上記の態様においては、各レイヤーのIDビットは、前記単一シグナルのための第1経路のレイアウトに配慮して定義され、前記第1経路上のビットを2つのオペレーションにより連続したビット列に並べることによりそれぞれのIDビットとして確定され、該2つのオペレーションはあらかじめ設定された定数として、前記第1シグナル経路の対応する部分を乗算して意図された序列に並べられたセグメントを構成するための乗数と、前記意図された序列に並べられたセグメントにシフト演算を行い、IDビットのための個別のビット位置にならべるためのオフセット値とを含むようにすることもできる。
【0039】
さらに、本発明の上記の態様においては、対象画素に未だ使用されていないレイヤーのIDを未使用IDホルダーと呼ばれるビット配列に編纂する方法として、
(1) 前記単一シグナルのためのシグナル経路を、それぞれ前記2つのオペレーションによりIDビット列に編纂するステップと、
(2) 前記単一シグナルのためのシグナル経路が複数存在する場合、前記(1)の結果の間でAND演算を行うステップと、
(3) 前記(2)の結果が期待されるID数を含んでいない場合、前記(1)の結果の間でOR演算を行うステップと
を具備するように構成することもできる。
【0040】
また、本発明の上記の態様においては、対象画素に対して適切なレイヤーを特定するための変換テーブルを、前記未使用IDホルダーのすべてのバリエーションに対応可能なものとして、優先順位を反映したものとして構築し、該優先順位は、
(1)循環型のID序列のなかで利用可能なレイヤーIDの序列が複数のブロックに分割された状態にある場合、最も小さなブロック内に含まれるIDによりレイヤーが選ばれる;
(2)循環型のID序列のなかで利用可能なレイヤーIDの序列が連なっている場合、利用可能なレイヤーIDの序列の先頭部分で示されるレイヤーが選ばれる;
(3)利用可能なレイヤーIDの序列に即してレイヤーが選ばれる;
として規定されるように構成することもできる。
【0041】
さらに、本発明の上記の態様においては、前記フィルターオブジェクトによるフィルタリングによりカバレッジを縮減するステップは、対象画素のための未使用IDホルダーを取得するステップと、前記変換テーブルより前記取得された未使用IDホルダーを使用して対象画素に適用すべきフィルターオブジェクトを特定するステップとを含むように構成してもよい。
【0042】
また、本発明の上記の態様においては、対象画素のための未使用IDホルダーを取得するステップは、
(a)未使用IDホルダーを対象画素に対応した前記第1メモリーから取得する方法;
(b)未使用IDホルダーが格納されるために用意されたメモリースペースから取得する方法であって、該格納される未使用IDホルダーは、すべてのIDビットを持つものとして初期化され、フィルターが使用された場合はそのフィルターのIDが反転され、前記未使用のIDが不足している場合は、前記第1メモリーから再編纂される方法;
(c)オブジェクトグループのための未使用IDホルダーを取得する方法であって、前記オブジェクトグループのための未使用IDホルダーは、
同じレイヤーを共有するグループのためにグループIDが用意され、
各画素用にグループID及び前記オブジェクトグループのための未使用IDホルダーが格納されるためのメモリーが用意され、このメモリーは対象画素にとって未知のグループIDを持つオブジェクトにフィルターが使用されるたびに更新され、
描画対象のオブジェクトの持つグループIDと前記メモリーに格納されたグループIDとが比較され、両IDが一致した場合は、オブジェクトグループのための未使用IDホルダーが対象オブジェクトのための未使用IDホルダーとして取得され、そうでない場合は前記(a)または前記(b)の方法で未使用IDホルダーが取得されると共に、前記メモリーは、対象オブジェクトのグループID及び前記取得された未使用IDホルダーで更新されることで生成される方法;
のいずれかの方法により未使用IDホルダーを取得するように構成してもよい。
【0043】
また、上記課題を解決するため、本発明の別の実施態様においては、アンチエイリアス処理されたグラフィックオブジェクトをレンダリングするための装置において、各ピクセル中の空白の領域を記憶するためのメモリーであって、2Nビットの副画素を備え、Nは少なくとも5以上であり、前記副画素のマトリックス中の染色されていない副画素を副画素マトリックス中のONステータスで示し、通常はONステータスは1、OFFステータスは0であるとして規定され、逆の設定の場合は関連するAND演算とOR演算もプロセスの全般にわたって逆転されるものであって、すべての副画素がONの状態で初期化される第1メモリーと、前記第1メモリーに対応した色値を保持する第2メモリーであって、前記副画素の数を反映する2N分の色値の累積を格納可能であり、前記第1メモリーにおける染色された副画素数と該第2メモリー中の前記色値の前記累積が同期するよう設計された第2メモリーと、手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行うための走査変換部であって、対象となるオブジェクトのカバレッジを確定するためのカバレッジプロセッサと、前記カバレッジに対応する前記第1メモリー中の領域をOFFステータスに反転するためのインバータプロセッサと、前記第1メモリー中の反転された副画素数に呼応する色値を前記第2メモリーに積み上げて、前記第1メモリーの全ての副画素が反転された後、前記第2メモリーに積み上げられた色値によって画素値を確定する画素数確定プロセッサとを備える走査変換部とを具備する。
【0044】
本発明の上記の態様においては、対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトが準備され、透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、サンプリング対象がフィルタリングされるように構成することもできる。
【0045】
本願の上記諸構成によれば、画素内の空白領域を示す副画素を備えたメモリーと、染色された領域の色情報を蓄積するメモリーを用意し、色情報を伴う副画素を仮想的に設定し、半透明の表示については、有効となる副画素を制限することにより、画像オブジェクトのカバレッジを縮減し、背景の透過率を調節する。有効となる副画素の設定は、ビットマスクによるフィルタリングにより実現する。これにより、アンチエイリアス処理において、複数の画像オブジェクトのシルエットが画素を共有している状況を正確に表現し、不透明な画像オブジェクトだけでなく、半透明な画像オブジェクトについてもカバレッジを反映した画素値を算出することが可能となる。
【発明の効果】
【0046】
本発明によれば、不透明な画像オブジェクトだけでなく、半透明のオブジェクトであっても1/32程度の誤差の範囲内でアンチエイリアス処理を行うことができる。
【0047】
また、本発明によれば、複数の半透明オブジェクト同士の関係において、互いに透過する、もしくは、互いに透過しない、という関係を選択的に設定することが可能であり、互いに透過しない半透明オブジェクト同士のグループ化を実現することが出来る。こうしたグループ化は、連結されたオブジェクト群の半透明表示を可能とし、また、グループ化された透明オブジェクト、通常の透明オブジェクト、不透明オブジェクトの選択的な設定、および透明度の調節により、表示されているオブジェクト間のフォーカスを表現する効果をもたらす。
【0048】
したがって本発明によれば、アンチエイリアス処理されたグラフィックオブジェクトを、単純、正確、かつ相対的に高速な方法によって、レンダリングすることが可能となる。
【図面の簡単な説明】
【0049】
【図1A】典型的なスーパーサンプリングの従来技術を示す図。
【図1B】本発明の典型的な一実施形態に係る機能構成を示すブロック図。
【図2】本発明における副画素の機能を示す図。
【図3】本発明の実施例のためのサンプルとして使用する2つの3角形を示す図。
【図4】本発明による最初のオブジェクトの描画過程を示す図。
【図5】本発明による背景オブジェクトの描画過程を示す図。
【図6】本発明による半透明オブジェクトの描画過程を示す図。
【図7】本発明の一実施形態に係る、副画素を構成する4×4リージョンと線形セグメントを示す図。
【図8】本発明の一実施形態に係る、X、Y共に座標値を共有しない3つのポイントの配置例を示す図。
【図9】図8に提示された3つのポイントが構成するラジアンRを示す図。
【図10】本発明の一実施形態に係る、ラジアンRを構成・保持するための順路とインターバルを示す最初の例を示す図。
【図11】本発明の一実施形態に係る、ラジアンRを構成・保持するための順路とインターバルを示す2番目の例を示す図。
【図12】図10、図11によるインターバルにより構築される階層構造を示す図。
【図13】本発明の一実施形態に係る、ONステータスの位置が対称になるようにレイアウトするための例を示す図。
【図14】本発明の一実施形態に係る、ONステータスの位置の順路の設定例を示す図。
【図15】本発明の一実施形態に係る、4×4リージョンにおけるONステータスの位置の順路の設定方法を示す図。
【図16】本発明の一実施形態に係る、基本8レイヤーのONステータスの配置例を示す図。
【図17】図16で示した基本8レイヤーを積み上げていった場合、最後のレイヤーのONステータスの位置がどのように変化・減少するかを示す図。
【図18】図14で示したONステータスの位置の順路を再定義した例を示す図。
【図19】図18で示した順路を分割する例を示す図。
【図20】本発明の一実施形態に係る、75パーセント透明フィルターのONステータスの配置例を示す図。
【図21】図20で示した75パーセント透明フィルターを積み上げていった場合、最後のレイヤーのONステータスの位置がどのように変化・減少するかを示す図。
【図22】本発明の一実施形態に係る、50パーセント透明フィルターのONステータスの配置例を示す図。
【図23】図22で示した50パーセント透明フィルターを積み上げていった場合、最後のレイヤーのONステータスの位置がどのように変化・減少するかを示す図。
【図24】本発明の一実施形態に係る、25パーセント透明フィルターを積み上げていった場合、最後のレイヤーのONステータスの位置がどのように変化・減少するかを示す図。
【図25】図20で示した75パーセント透明フィルターによる透過率減衰の誤差を示す図。
【図26】図20と図22で示したフィルターを同時に使用した場合の誤差を示す図。
【図27】本発明の一実施形態に係る、レイヤーのキーとなるビットをレイヤーIDとしての8ビットにパッケージするオペレーションの過程を示す図。
【図28】半透明フィルターのための変換テーブルを構築するための基本ロジックを示す図。
【図29】本発明の一実施形態に係る、75パーセント透明フィルターのための変換テーブルを構築するための基本ロジックを示す図。
【図30】本発明の一実施形態に係る、50パーセント透明フィルターと25パーセント透明フィルターのための変換テーブルの構築に必要な、不規則な序列でフィルタリングされたパターンを示す図。
【図31】本発明の一実施形態に係る、50パーセント透明フィルターを選択するためのロジック例を示す図。
【図32】本発明の一実施形態に係る、デフォルトマスクとして機能するビットマスクの例を示す図。
【図33】本発明の一実施形態に係る、フィルターを選択する過程を示すフローチャート。
【図34】本発明の一実施形態に係る、グループ化された半透明オブジェクトがどのように機能するか示した図。
【図35】本発明の一実施形態に係る、グループ化された半透明オブジェクトのためのフィルターを選択する過程を示すフローチャート。
【発明を実施するための形態】
【0050】
以下、図面を参照して、本願発明を実施するための形態について説明する。なお、以下の説明及び図面に記された態様は本願発明を実施するための一形態にすぎず、他の形態の可能性を否定するものではない。また、特に記されない事項については、公知技術によるものとする。
【0051】
図1Bに本発明の実施形態の典型的な例を示す。キーボード108、マウス109などの外部入力装置およびディスプレイなどの画像出力装置104が、I/Oシステム・バス106に接続され、CPU105、メインメモリー107などで構成されるコンピューターとの入出力が行われる。本発明における画像処理は、主にメインメモリー107もしくは、仮想メインメモリーとしてのマス・ストレージ110とCPU105により行われる。例えば、メインメモリー107に置かれたビットマスクのアドレスの算出等がCPU105により行われ、フィルタリング処理などが行われた後、画像出力装置104へのデータとして転送される。これらの構成は、1つの例であって、これに限定されるものではない。例えば、上出の外部入装置や画像出力装置などは、外部接続された状態でなくても良く、スマートフォンなどのように一体化された状態の端末であっても良い。
【0052】
メインメモリー107にはたとえば、各ピクセル中の空白の領域(たとえば副画素の形式で描画可能なエリア)を格納するための第1メモリー(図示しない)、色値(の集積)を保持する第2メモリー(図示しない)、スーパーサンプリングに使用されるワークスペースである第3メモリー(図示しない)が具備される。これら第1メモリー及び/もしくは第2メモリー及び/もしくは第3メモリーは、メインメモリー107以外のところに具備されてもよい。
【0053】
上記CPU105には、たとえば、画素ごとに走査変換を行う機能を実現する走査変換部(図示しない)、対象となるオブジェクトのカバレッジを確定する機能を実現する(かかる機能をプロセッサとして実現しても、かかる機能をコンピューターに実行させるためのソフトウェアとして実現してもよい。以下同様。)カバレッジプロセッサ(図示しない)、カバレッジに対応する第1メモリー中の領域をOFFステータスに反転する機能を実現するインバータプロセッサ(図示しない)、第1メモリー中の反転された副画素数に呼応する色値を第2メモリーに積み上げて、第1メモリーの全ての副画素が反転された後、第2メモリーに積み上げられた色値によって画素値を確定する機能を実現する画素数確定プロセッサ(図示しない)が備えられる。或いは、走査変換部がこれらのプロセッサを備える構成を採用してもよい。なお、上記及び以下において、CPU(セントラル・プロセッシング・ユニット:中央処理装置)として記述されるものは、コンピュータ内で基本的な演算処理を行う半導体チップであるMPU(マイクロ・プロセッシング・ユニットもしくはマイクロプロセッサ)とすることもできるし、あるいはかかる半導体チップ群であるCPUとしてもよい。
【0054】
本発明は、スーパーサンプリングを通じてオブジェクトを描写する技術であるが、スーパーサンプリングそのものに関するものではない。文字グリフや3Dポリゴンの表示など、スーパーサンプリングは多様な目的に応じたカスタマイズが可能であり、特定の目的のために最適化されたスーパーサンプリングの手法を本発明に組み入れることも可能である。以下では、まず、本発明においてスーパーサンプリングを適用するための環境に関して、副画素のマトリクス、描画順位、メモリーの使用手順などから議論を始める。
【0055】
本発明では、副画素の数は、2のべき乗と定義されており、半透明表示のためには、少なくとも32の副画素が必要となる。好ましいサイズは64副画素であり、ベストモードとして紹介される例はこの設定となる。副画素の数は描写の速度や正確さに影響をあたえるが、これら2つの要件は二律背反の関係にある。副画素の数は、また、必要となるメモリーサイズにも大きく影響する。副画素は4×4の領域(以下、「リージョン」ともいう。)の集合体として構成される。したがって32副画素の環境では、マトリクスは8×4または4×8のいずれかとなる。マトリクスに割り当てるビットの構成は自由に設定でき、例えば最初のビットがマトリクス上のいずれのコーナーを示してもよい。ただし、例外として32副画素の環境では、連続したビットが座標の長手に設定される必要がある。例えば8×4のマトリクスの場合、最初の8ビットは垂直方向の2列ではなく水平方向の1列をしめす必要がある。ベストモードでは、8×8のマトリクスが採用されるため、ビットの割り当て方は自由である。このテキストを通じて「ONステータス」という表現がたびたび使用される。これはいわゆるサンプリングポイントを意味するが、より具体的にONという表現が使用される。通常ONは「1」、OFFは「0」を意味するが、逆の設定が好ましい場合は、対応する処理過程のAND演算、OR演算も逆転する必要がある。
【0056】
走査変換は手前から奥へ向かって行われる。ここで走査変換とは、好ましくは、各画素におけるオブジェクトのカバレッジを確定し、その結果をカラーコンポーネント値に変換する処理を示すが、これに限定されるものではない。手前から奥へのオーダーはオブジェクト単位であっても画素単位であっても良い。
【0057】
メモリーのアロケーションについては、本発明では2つのワークスペースが描画対象となるフレームの最大のサイズに対応可能なものとして確保される。2つのワークスペース、第1メモリーおよび第2メモリーは各画素に対応し、第1メモリーは副画素の形式で描画可能なエリアを提示し、第2メモリーは、色値の集積を保持するが、ここで、最終的に積み上げられる色値のボリュームは副画素の数に対応したものになる。第2メモリーの構造は自由に設定可能だが、以下に紹介される描画プロセスに準じたものとするべきである。スーパーサンプリングに使用されるワークスペースは第3メモリーとして定義される。スーパーサンプリングによるビットの反転処理が画素列ごとに行われる場合、第3メモリーは画素列の長さに応じた充分なサイズが確保されることになる。
【0058】
第1メモリーでは、空白のエリアはONステータスのビットとして示され、このメモリーは全面が空白なものとして初期化される。一方、第3メモリーは、OFFステータスなビットとして初期化され、任意のスーパーサンプリングの技法により、オブジェクトのカバレッジがONステータスのビットに反転される。例えば図3にある小さな三角形301は、副画素のマトリクスに準じて図4の401に示すように8×8倍のサイズに拡大される。最上部の画素列は、第3メモリーにおいて、402に示すように反転される。つぎに第3メモリーと第1メモリーとの間でAND演算が行われる。第1メモリーはONステータスで初期化されているため、第3メモリーに変化はなく、この画素列における301のカバレッジがそのまま確定される。確定したエリアに対応する第1メモリーのビットは染色されたエリアとして403に示すように反転される。301につづいて302が描画される。302の最上部の画素列は図5の501のようなカバレッジとなる。301の場合同様に第1のメモリー(403)との間でAND演算が行われるが、今度は、301の背後に位置する部分は、カバレッジから除外される。302の同画素列のカバレッジは502のように確定し、確定したカバレッジは染色されたエリアとして第1メモリーから503に示すように除外される。このような手順で描画処理は進行し、カバレッジが確定する度にカバレッジに対応した色値が計算され、第2メモリーに積み上げられる。このとき、第1メモリーの染色された副画素数と第2メモリーに積み上げられる色値のボリュームは同期し、最終的に集積される色値のボリュームは、副画素の数に対応したものとなる。すべての副画素が染色済となった後、第2メモリーに積み上げられた色値の集積により、その画素に割り当てる画素値が確定する。集積される色値のボリュームは副画素の数である2のべき乗に設定されているため、画素値は、シフト演算によるオフセットの操作により、効率的に算出することができる。これらの処理は、スーパーサンプリングにおいて通例であるように、輪郭部においてのみ行われる。対象となる画素の位置がシルエット内部の中間点にあり、カバレッジが明らかに100パーセントであるときは、全面的に描画された状態をしめす、例えば「0」を第1メモリーに挿入し、フレームバッファの対応する位置にオブジェクトの描画色を挿入するという、2つのステップだけで良い。他方、全面的に描画された値を第1メモリーに挿入する手法は、更新するエリアのクリッピングにも使用できる。初期化時にOFFステータス値を挿入されたエリアは、既に描画済のエリアとして、描画対象から除外される。
【0059】
上出の描画法は、理論的にも、旧来のアンチエイリアスとは、異なっている。本発明で使用される副画素の空間は、ビットマップ画像に比することができる。いずれも表示される色情報の総数が、対象となる2D空間の画素数と一致している。主な違いとしては、一度確定した画素値の変更が可能か否かである。本発明では、副画素に割り当てる色値が確定されると、描画の終了までその値を変更することはできない。第1メモリーが示すのは空白の範囲のみである。一旦カバレッジが確定すると、その情報は色値に変換され第2メモリーに積まれる。以降は、染色された副画素の位置情報は保持されない。従って、一度染色された特定の副画素の色を変更することはできない。要約すれば、第1と第2の2つのメモリーは、図1の103に示すような白黒の副画素ではなく、色情報を伴った副画素を目指しているが、実体として副画素分のビットマップメモリーを伴う訳ではなく、2つのメモリーにより仮想的に設定されるため、特定の副画素に設定された色情報を変更することはできない。以下に論じられるのは、こうした状況下で、いかに半透明の表現を実現するかである。
【0060】
<基本8レイヤーの設定>
本発明において、半透明の表現はビットマスクにより実現される。オブジェクトのカバレッジを算出するための第3メモリーに対して、特定のビットマスクとの追加的なAND演算が行われる。結果として、ビットマスクのOFFステータスの位置にある副画素は、算出されたカバレッジから減じられ、背景のオブジェクトが露呈することになる。もっともシンプルな50パーセントのフィルタリングを示しているのが図6である。この例では、第3メモリー402が601のフィルターにかけられ、その結果である602を第1メモリーより間引いた状態が603に示されている。ここでは、ビットマスクのONステータスの位置が、図2の2Dや2Fにおけるオープンなポジションのように機能している。複数の透明度を持つオブジェクトが重なり合っている場合には、手前のオブジェクトは背景のオブジェクトよりも視認性が高くなければならず、この傾向は、重層する領域では一貫して求められることである。こうした透過率の減衰を表現するために、ビットマスクによるバーチャルな8層のレイヤーが用意される。これらのレイヤーは、部分的に一定の連続性を伴って重複しながら階層を成し、レイヤーの集積に応じて透過率を減じてゆくように構築される。一方で、ビットマスクによるフィルタリングを経た後もオブジェクトのシルエットが反映される必要があるため、これらビットマスクは、2つの視点から構築されなければならない。1つは上出の背景の透過率の減衰を表現する階層構造への視点であり、もう1つはONステータスの2D空間上のレイアウトへの視点である。
【0061】
これらの要件を満たすビットマスクを構築するため、副画素の空間は「シグナル経路」の集合体として定義される。シグナル経路とは、副画素のマトリクス上の個々のポジションを配列化したもので、この経路上を各レイヤーのONステータスの位置がレイヤーの序列に従って移動してゆく。ここで、移動するONステータスの位置がシグナルにたとえられ、各レイヤーは、移動するシグナル群の各ステップにおけるスナップショットとして構築される。シグナル経路は、基本的にレイヤーの数に等しい長さを持ち、複数のシグナル経路がマトリクス全体を構成する。シグナル経路同士が通過地点を共有することはなく、副画素上のマトリクスは、余剰なくシグナル経路に分割することができる。例えば、64副画素の場合、8ポイントの長さを持つシグナル経路が8つ割り当てられる。8層のレイヤーは、副画素の空間同様に仮想のものである。もし、ある稜線が副画素の仮想空間からはみ出す場合、その稜線はとなりの画素の仮想空間に拡張されれば良い。しかし、8層の仮想レイヤーは拡張することはできない。それ故、仮想レイヤーは循環型の構造を持つ必要がある。仮に、ある画素が8つの半透明オブジェクトに共有され、8層のビットマスクがすべて適用されたとしても、これらのオブジェクトのカバレッジが100パーセントとは限らず、染色されていない副画素が残っている可能性がある。このような場合、最初のレイヤーは最後のレイヤーの下に位置するレイヤーとして機能する。8ポイント長のシグナル経路上をシグナルが連続的に移動することによって、結果として構成されるレイヤーは8層の循環型の構造となる。
【0062】
シグナル経路という概念は、レイヤー階層構造の設計においても機能する。ひとつのシグナル経路上を複数のシグナルが移動し、その移動が連続的なものである場合、シグナル間のインターバルが階層構造を決定する。例えば、もし2つのシグナルが存在し、シグナル間のインターバルが1である場合、最初のレイヤーではインデックスにして、0と1、2番目のレイヤーでは、1と2、最後のレイヤーでは、7と0の位置にシグナルが存在することになる。これらのシグナルの位置が意味するものは、このシグナル経路に関するかぎり、各レイヤーは、前後に隣り合う各レイヤーと1ポジション重複することになる。図12では、シグナル経路が構成する階層構造が2つのテーブルに例示されている。各シグナルのポジションが左上から右下へむけて直線的に並んでいるが、これは各シグナルがレイヤーの順序に従って等間隔で移動している状態を示している。これらのテーブルを反時計回りに回転し、水平方向に反転した場合、結果として得られるシグナルのレイアウトは、オリジナルのレイアウトに等しくなる。このようにシグナル間のインターバルの設定によって階層構造の設計が可能となる。
【0063】
シグナル経路には、2種類のタイプが存在する。ひとつは単一のシグナルを持つもの、もうひとつは複数のシグナルを持つものである。8層のレイヤーは、75パーセント透明フィルターの原型となるもので、0.25の不透明度を表現するものとして構築される。従って、副画素の数を2N とした場合、ONステータスのポジション数はK= 2N /4となる。各シグナル経路は8の長さをもつので、シグナルの数はシグナル経路の数の2倍となる。K/4シグナルがK/4シグナル経路に個別に割り当てられ、3K/4シグナルが、のこりのK/4シグナル経路に均等に割り当てられる(各3シグナル)。このシグナルの分配方法では、副画素の半分を単一シグナル用のシグナル経路が占めることになる。単一シグナルの経路では、ひとつのシグナルしか存在しないため、シグナルは、常に最前面に存在するものとして表示されると同時に階層構造において背後に他のシグナルが存在することはない。こうした単一シグナルのシグナル経路によって、各レイヤーは他のいずれのレイヤーの背後にあっても表示されるようになると同時に背景を遮ることになる。
【0064】
シグナル経路のレイアウトは、2D空間におけるONステータスのレイアウトに配慮したものである必要がある。基本的には、ONステータスの位置は、いずれかの方向に偏ったものであってはならない。大局的に見れば、各画素を通じておこなわれるサンプリングが偏ったものであっても深刻な問題とはならないが、複数のフィルターが存在し、各フィルターに異なる方向へのバイアスがかけられている場合、半透明表現は不正確なものとなる。この問題への基本的な対応として、副画素の空間は4×4リージョンに分割可能なものとして定義され、分割された各4×4リージョンには、副画素全体におけるONステータスの比率(=1/4)を反映したONステータスを配布する。各4×4リージョンに、単一シグナルを持つシグナル経路と3シグナルを持つシグナル経路を各1割り当てることで、4つのONステータスを分配する。結果として、各4シグナルは、4×4に閉じ込められた空間を移動することになる。
【0065】
ONステータスの位置を均一に配置するためには、マトリクス上の特定の座標値にONステータスが集中してはならない。より具体的には、各4×4リージョン内の4つのONステータスは、4×4のマトリクス内の個別の座標値に対応するように置かれなければならない。以下の議論は、こうした条件を満たしつつ4×4内に閉じ込められた4シグナルを如何に走らせるかについてのものである。各4×4リージョンは、さらに4つの線形セグメントとして定義される。線形セグメントは、循環型の4×4マトリクス内を対角線に沿って並んだ4つの副画素によって構成される。同一の4×4リージョンに属する線形セグメントは、図7の702にあるように重複することなく、同じ傾斜角にそって配置される。シグナル経路は、隣り合って配置されている各2つの線形セグメントに沿って設定され、その順路については、3シグナルを持つ経路を基準に確定される。図8の801に示される8A、8B、8Cは隣り合う線形セグメント7A、7B上に置かれ、それぞれ座標値を共有しない。8Aから8B、8Bから8C、8Aから8Cへのギャップ(=座標上の間隔)は、それぞれ (2、1)、(1、2)、(3、3)となっており、最後の8Aから8Cへのギャップは、前出の2つのギャップの合計となっている。ここで8Bを∠8A−8B−8Cの頂点とすると、この角度は図9にあるようにラジアンR=π/ 2 + 2 x tan-1(0.5)となる。このラジアンRを構成する3ポイントは、循環型4×4マトリクス上に16の異なる形状で展開される。図8の802は、801を2×2のコピーとして拡張したものである。802において特定の座標値を共有するポイントは、いずれも同じオリジナルからコピーされた各2ポイントであり、これらの同じオリジナルを共有する各4ポイントは、5×5の正方形を構成する。この802内の任意のポジションを4×4のフレームで切り取った場合、フレーム内に含まれるポイントは、異なるオリジナルを持つ3ポイントであり、それらは互いにいずれの方向への座標値も共有しないことになる。これは、言い換えると、もし隣り合う2つの線形セグメント上にある3つのポイントが2×2にコピーされた座標空間上でラジアンRを構成する場合、それら3ポイントは、いずれの座標値も共有しない。8Aから8Cへのギャップが前の2つのギャップの和であることは述べたが、この2つのギャップは逆のオーダー(1、2)、(2、1)でも同じ結果となる。つまり上記のラジアンRは負の値=2π−Rであってもよく、この関係での3ポイントもいずれの座標も共有しない。このラジアンRの構成要素として801のポイントを再検証すると、両端となる8Aと8Cは同じ線形セグメント上に置かれおり、頂点である8Bは、両端のポイントとは異なる線形セグメント上に置かれている。これらの3ポイントを、シグナル経路上を走る3シグナルとして想定した場合、もし、シグナル経路上の偶数インデックスを示すポジションと奇数インデックスを示すポジションを別々の線形セグメントに配置したとすると、両端の2ポイントは、常に同じ側の線形セグメントを共有し、頂点のポイントは、両端とは異なる側の線形セグメントに置かれることになる。図10に示されているのは、シグナル経路の配置例である。もし、この経路上を{0,3,6},{1,4,7},{2,5,0},…,と各シグナルが等間隔に移動する場合、3ポイントによる絶対値ラジアンRは保たれる。この経路では、偶数インデックスから奇数インデックスへ進行する場合は横へ1つ、その逆の場合は縦に1つ移動する。これを前出の3ポイントにあてはめると、両端のポイントが(1、0)移動するとき、頂点ポイントは(0、1)移動し、両端ポイントが(0、1)移動するとき頂点ポイントは(1、0)移動する。これらの移動は3ポイント間のギャップを(2、1)、(1、2)あるいは(1、2)、(2、1)のオーダーへと交互に置き換えながら、ラジアンRを正と負の角度で交互に構成して行く。追加される単一シグナルのための経路は、図9の901に示すように、両端ポイントを基準に、頂点と対称をなすラジアンRを構成する位置におかれる。例えば頂点ポイントと両端ポイントが(2、1)、(1、2)の関係を築くときは(1、2)、(2、1)と逆オーダーの位置が単一シグナルの位置となる。対称をなすラジアンRを構成するポイントは、対角線上に配置される両端ポイントをベースに対称をなすため、頂点ポイントとその対称をなす頂点ポイント同士は、同じ座標値を共有しない。これら2つの頂点ポイントと2つの両端ポイントとの関係は、どのレイヤーに対応する移動ポイントにおいても保たれ、4つのシグナルは、常に4×4マトリクス上の互いに異なる座標値へ配置される。頂点ポイントは、両端ポイントが属する線形セグメントと隣り合う線形セグメント上に置かれるが、これは対称となる頂点ポイントも同じである。両端ポイントが7Aにあり、頂点ポイントが7Bにあるとき、対称となる頂点ポイントは7Aに隣接する7Dに置かれる。両端ポイントが7Bにあり、頂点ポイントが7Aにあるとき、対称となる頂点ポイントは7Bに隣接する7Cに置かれる。このように対称となる頂点ポイントは、残りの7Cと7D上を移動し、そこでは7Dが偶数インデックスに対応し、7Cが奇数インデックスに対応する。頂点ポイントが7Aと7B上のすべてのポイントを進行するように、その対称となる頂点ポイントは7Cと7Dの対応するポイントを通過する。したがって、4つのシグナルは8ステップで4×4のマトリクス上のすべてのポイントを通過することになる。このように7Cと7Dは単一シグナルの経路として確保される。
【0066】
図10の例では、インデックスが偶数から奇数に進行する際に(1、0)移動し、その逆の場合は(0、1)移動する設定であり、その結果としてポイント間のギャップ、(2、1)と(1、2)の順序を交互に反転させながら絶対値としてのラジアンRを保っていた。同様のプロセスが図11にしめすレイアウトでも展開される。このレイアウトでは、偶数から奇数へのインデックスの移行のとき、(3、2)移動し、その逆のケースでは(2、3)移動する。このレイアウトも絶対値としてのラジアンRの保持が可能である。図10にあるレイアウトでは、スタート時のインデックスは{0,3,6}であり、図11にあるレイアウトでは{0,6,7}となる。既に述べたようにシグナル間のインターバルはシグナル経路上で展開される階層構造に影響する。シグナルは循環構造を持つ経路の上を移動するが、ここでは議論の視認性を高めるため、シグナル間のインターバルは、短いほうの長さにより表示する。例えば、スタート時のインデックスが0と6であった場合、インターバルは6ではなく2とする。この手順に従って上出の2つのレイアウトを検証すると{0,3,6}のケースでは、長さ「3」のインターバルが2つと長さ「2」のインターバルが1つ、{0,6,7}のケースでは、長さ「2」のインターバルが1つと長さ「1」のインターバルが2つとなる。いずれのケースも奇数長のインターバルが2つと偶数長のインターバルが1つとなっているが、これは頂点ポイントが両端ポイントとは異なる側のインデックス群に常に置かれるよう設定されているからである。これら2つのレイアウトによるインターバルを合計すると、長さ「1」のインターバルが2つ、長さ「2」のインターバルが2つ、長さ「3」のインターバルが2つと、いずれの長さのインターバルも2つずつとなり、上出の2つのレイアウトを組み合わせた場合には、各レイヤーは、前後3レイヤーの位置関係にあるいずれのレイヤーとも同様にオーバーラップすることになる。この組み合わせは、各2つの4×4リージョンそれぞれに異なるレイアウトを宛がうことで実現する。結果として構成される階層構造は図12に示されている。1201のテーブルでは、すべてのシグナル経路が最初の3ステップで経過される。これは、もし、このシグナル経路が3つの半透明なシルエットで占有された場合、このシグナル経路が属する4×4リージョンに残る染色可能な副画素は、単一シグナルのシグナル経路上のもののみになるということである。逆に最初の3シルエットの範囲に経路が含まれない場合には、そのエリアの階層構造はオリジナルの階層構造のバリエーションとして第4のレイヤーより開始することになる。
【0067】
副画素が4つの4×4リージョンを含んでいる場合、それぞれのシグナル経路のレイアウトは各2つの4×4リージョンで共有されることになる。しかし、こうした共有されるレイアウトはオリジナルのレイアウトの単なるコピーであってはならない。図13にあるように各シグナル経路の進行方向は対称をなし、バイアスが相殺されるように決定される。この決定は、集積されたレイヤーの背後にあるレイヤーから露呈するビットのレイアウトに影響する。他方、多数のレイヤーが適用された副画素上に染色可能な状態で残っているビットの多くは、単一シグナルの経路に置かれたビットである可能性が高い。全体的に、より多くのレイヤーが適用され、露呈するビットの数が少なくなるほど、単一シグナルの経路に置かれたビットの重要性は増してくる。上出のシグナル経路のレイアウトに例示されているものは、シグナル経路を2つの線形セグメントに割り当てる際の相対的な関係であり、同一方向へ向かって進行する限りにおいて、4×4の循環型マトリクス上の隣り合う2つの線形セグメントであれば、さまざまな形状で割り当てることができる。図14の1401に示されているのは、単一シグナルの経路を対称的に展開した例である。このレイアウトは次のように決定される:図15に示されているのは、単一シグナルの経路を2×2コピーに展開した2例であり、1501では図10に対応した単一シグナルの経路、1502では図11に対応した単一シグナルの経路がそれぞれトレースされている。座標上で「0246」、「1357」のように順序立って並んでいるパートが選択され、それぞれ1503、1504の4×4フレームに収まっている。シグナル経路の進行方向である左上から右下という方向は4×4リージョン14Bと等しく、1503のフレームが14Bに適用される。図15のレイアウトを左右対称となるように反転すると、シグナル経路の進行方向は14Dのそれと等しくなり、1504を反転したレイアウトが14Dに適用される。残る2つの4×4リージョン14Aと14Bについては、14Bと14Dを180度回転したレイアウトが適用される。複数シグナルの経路については、1503と1504のフレームを、それぞれ図10、図11にある2×2コピーのレイアウトに宛がうことで、検出できる。結果として生成されるレイヤーは図16のようになる。各レイヤーを縦横の座標に沿って走査すると、どの座標にも2つずつのONステータスが置かれていて、16あるONステータスの位置は、各4×4リージョンに均等に割り振られている。つまり、各レイヤーにおいてONステータスが出現する周期には一定の均一性が保たれている。これらのレイヤーを積み重ねていった場合、最後のレイヤーより露呈するONステータスの位置(=有効ビット)は図17に示すように移動、減衰してゆく。例示されているレイヤーはベストモード用の例だが、レイヤーは異なるデザインに構築することもできる。また、レイヤーの構造は循環構造となっているため、最初のレイヤーが必ずしも例示されている「Layer0」でなくとも良い。
【0068】
<フィルターセットの構築方法について>
オブジェクトの透明度は適用するレイヤー数の調節により選択することが可能であり、連続したレイヤーを意図されたボリュームに組み合わせることにより、異なる透明度を持つフィルターセットを構築できる。以下に紹介するのは、それぞれ75パーセント、50パーセント、25パーセントの透明度を持つフィルターの例である。個々セットは、各レイヤーに対応したメンバーを持ち、対象となる画素に対してレイヤーの序列に即したフィルター選択を行うことによって、背景の可視状態を意図どおりに減衰させることができる。以下に紹介されるフィルターセットでは、シグナル経路の分割による編集がなされており、その意味では、「ハンドメイド」な面がある。本章におけるもう1つの目的は、シグナル経路の分割に関する意図、効果、課題を明らかにすることにある。
【0069】
フィルターセットを構築するにあたって、オリジナルのレイヤーの変更が望ましい場合がある。このような場合のために、単一シグナルの経路の一部が編集可能な領域として確保される。レイヤーの階層構造は、主に複数シグナルの経路によって構成されているため、複数シグナルの経路は編集対象とならない。単一シグナルの経路とは、実際にはゆるやかな定義である。シグナル間のインターバルは存在せず、副画素上の単一シグナルの経路群は自由に解釈することが可能である。ここでは、図14に定義されている単一シグナルの経路を、図18にあるように再定義し、各経路は2つの4×4リージョンに跨ったものとして解釈する。更に、2つの経路18Aと18Bを固定化されたものとして、18Cと18Dを編集可能なものとして設定する。基本的にシグナル経路の編集は経路の分割によって行われる。例えば8ポイント長の単一シグナルの経路を4ポイントの長さを持つ2つの単一シグナルの経路に分割することは、各レイヤーにONステータスを1つ加えることになる。ベストモードのための編集例として、18Cを図19の1901に示すような4ポイント長の2つの経路に分割し、一方の経路19Bをシグナルを持たないエリア、つまり、透明度を表現するための処理から除外されたシグナルフリーなエリアとして確保する。現実の物理的空間では、いくら半透明のフィルターを重ねても、背景の視認性が完全に無くなることはない。この編集はこうした摂理を表現すると同時に、以下に紹介する複数のフィルターセットの構築にも適合する。もう一方の4ポイント長の経路は、1902に示すような4サイクルでの循環型構造となり、レイヤーの循環型階層構造は保たれる。この18Cにおける編集は、レイヤーの均一なONステータス配置を一部崩すことになるが、結果として得られたレイヤーは、図20に示す75パーセントの透明度を持つフィルターセットとして定義される。はじめの4レイヤーに変更は生じないが、後半の4レイヤーの均一性は、一部損なわれている。レイヤーを重ねた場合に有効となるビットの位置も図21に示すように変化する。50パーセントの透明度を表現するためのフィルターセットは、編集後のレイヤーにより編纂される。50パーセント透明フィルターは連続する各2レイヤーを組み合わせることで構築されるが、各2レイヤーは、4ビットずつ重複することから、各フィルターに設定されるONステータスビットの数は、求められる64×0.5=32ビットではなく、28ビットに留まる。このフィルターを完成するためには、4つのONステータスビットを追加しなければならない。すでに述べたようにシグナル経路を2分割することは、各レイヤーに1つのONステータスを追加することになるが、2レイヤーにより構築されている50パーセント透明フィルターにおいては、2つのONステータスが追加されることになる。つまり、4つのONステータスビットを追加するためには、さらに2つの経路を分割する必要がある。図19にある19Aの経路は更に2つの経路に分割され、19Aが属する2つの4×4リージョンに2つのONステータスビットが追加される。残る2つのONステータスビットは18Dを分割することで加えられる。結果として構築される50パーセント透明フィルターは図22に示すようになる。50パーセント透明フィルターは2レイヤーずつ使用するため、偶数セットと奇数セットに分けることができるが、これらのセットに於いてフィルターを重ねていった場合に有効となるビットを示したものが図23である。25パーセント透明フィルターについては、各50パーセント透明フィルターを2つ単純につなぎ合わせるだけで構築できる。理論上50パーセントの透明度を組み合わせた場合の透明度は0.5×0.5=0.25となるが、この等式は、25パーセント透明フィルターの構築の際にも有効である。25パーセント透明フィルターは4レイヤーずつ消費するが、最初のフィルターと5番目のフィルターを適用した場合の有効ビットは図24に示すように変化する。
【0070】
ここまでに紹介したフィルターセットには、幾つかの課題が存在する。例えば図22に示されるフィルターのONステータスのレイアウトは右上から左下にかけての対角線上に集中する傾向にある。このバイアスは図12に示される2つの異なる階層構造の組み合わせによるものである。50パーセント透明フィルターは、それぞれ2レイヤーの組み合わせでできており、これら2レイヤーの重複ポイントの位置がレイアウトに影響を与える。図22に示されているように、バイアスの強さはレイヤーにより異なっており、この問題への可能な対処法としては、各レイヤーの使用頻度を考慮しつつ開始するレイヤーを変更することである。ただし、この対処法は解決策ではない。図22に示されるレイアウト自体は最前面に表示されるオブジェクトのシルエットや前面に展開されるシルエットよりはみ出して表示されるシルエットに影響を与える。もうひとつのバイアスが図23に確認される。図上のindex2とindex3に示される有効ビットには、おおまかに1副画素列分、下方へのバイアスが認められる。このバイアス自体は、図18に示されている18Cと18Dを異なるレイアウトに解釈することで解決は可能である。しかし、その場合は図22のレイアウトが一部毀損することになる。この問題の根本的な解決策は、75パーセントフィルターについての均一性の問題と同様、シグナルフリーエリアの設定を諦めることであるが、一方で、シグナルフリーエリアは透過率の減衰にリアリティを与えるために確保されている。以下では、ここまでに行われた編集処理、シグナルフリーエリアのための18Cの分割、2つのONビットを追加するための19Aの分割、および残りの2つのONビットを追加するための18Dの分割がいかに透過率の減衰に影響を与えたかを検証する。以下では、各レイヤーを積み上げた場合の有効ビットの数が左から右に並べられ、「+」によって繋げられた形式で表示するものとする。例えばオリジナル8レイヤーの有効ビット数のフローは以下のように示される。

【0071】
シグナルフリーエリアを確保するために18Cが2つに分割される。この変更は図19の1902に示すように後半の4レイヤーに属するONステータスが、同じシグナルの前半の4レイヤーの位置の背後に隠されることになる。従って有効ビット数のフローは以下のように変更される。

【0072】
これより視認性を高めるため、各フィルターは透明度による表現ではなく、構成する基本レイヤーの数で表示する。例えば、各1レイヤーでそのまま構成される75パーセント透明フィルターは「L1フィルター」、各2レイヤーで構成される50パーセント透明フィルターは「L2フィルター」と表示する。もしL1フィルターをそのまま組み合わせてL2フィルターを構成した場合、有効ビット数のフローは以下のようになる。

【0073】
L2フィルターにおいては、単一シグナル用の経路に2つのシグナルが走ることになる。4ポイント長の19Aの経路が分割された場合、分割された経路は2ポイント長となるため、経路上のすべてのビットがONステータスで埋められる。以下では、こうした変更をビット配列の形式で示す。例えは、L2フィルターの偶数セットでは、各シグナルは2ポイントずつ移動するので、変更前の19A経路では「1100」から開始し「0011」へと進む。これが19Aの分割により「1111」に変更される。以下ビット配列の右側に表示されている数字については、追加された有効ビットの数を「+」、追加された有効ビットの背後に隠れることになり、有効でなくなるビットがある場合は「−」が付与されて表示されている。

結果的にL2フィルターの有効ビットのフローは以下のように変化する。

【0074】
残りの2つのONステータスを追加するための18Dを分割した場合、分割された経路の状況は以下のように変化する。

結果的にL2フィルターの有効ビットフローは50パーセントの透明度を正確に表現するよう設定される。

L2フィルターを組み合わせてL4フィルターを構築するとフローは以下のようになる。

L4フィルターの不透明度は64×0.75=48であり、この背後にあるマスクでは(64−48)×0.75=12の不透明度となるため、更なる編集は不要となる。
【0075】
透過率を正確に表現するために障害となる要素が2つ存在する。1つ目の問題は、図25に示すようにL1フィルターに於いて、有効ビットの減衰が正しく表現されていない点である。2つ目の問題点は、上記のL2フィルターに対して行われた編集作業がL1フィルターに反映されていない点である。L1フィルターの透過率がTのとき、L1フィルターを組み合わせたL2フィルターの透過率はT×Tとなる。逆の見方をすれば、L1フィルターの透過率は、L2フィルターの透過率の平方根となる。この法則はL2フィルターとL4フィルターの関係に見られるようにフィルターの構築に於いても有効である。上出のL2フィルターへの編集をL1フィルターに反映させると、結果として得られるフィルターは18のONステータスビットを備えた約71パーセントの透過率を持つフィルターとなるが、ここで0.71は0.5の平方根に近いものとなる。要約すれば、編集対象となった18Dと19Aの経路に関しては、2つの異なる階層構造が構築されてしまっている。これら異なる階層構造をもつフィルターを同一の画素に併用した場合、有効ビットの減衰は図26に示すようになる。L4フィルターについては、L2フィルターを組み合わせただけのものであり、階層構造はL2フィルターと同じなので、図26には含まれていない。図26に示された各フローは、下方へ向けて8レイヤー分を積み上げるフローとなっている。各列には、適用するフィルターを構成するレイヤー数、有効ビット数、理論上の有効ビット数が並んでいて、有効ビット数が理論上の有効ビット数と1ビット以上の差が生じている箇所にはxまたはアスタリスクでマークされている。図26が示すように1ビット以上の誤差が生じている箇所の多くは、すぐ次のフィルターにより修正されている。例えば26Aのフローにある2番目のフィルタリングでは、有効ビット数は9となり、理論上の有効ビット数より1ビットプラスとなっているが、3番目のフィルタリングの有効ビット数である5は理論上のビット数より1ビットマイナスとなっている。先行技術において繰り返されるCi×
描画色+(1−Ci)×背景色の演算が、例えばカラーコンポーネントRGBなどの整数に丸められた数値により行われる場合の誤差を考慮すれば、約1/64の誤差は許容される範囲内と言える。しかし、2つのパート26Bと26Cはより深刻なエラーを示している。これら2つのパートでは、同じL1フィルターによるフィルタリングが繰り返されているが、有効ビット数は逆に2ビットから3ビットへと増えている。もうひとつの逆フローが26Dに見られる。ここでは有効ビットは5ビットから4ビットに減じているが、理論上の有効ビットは3.3ビットから5ビットへ増えている。こうしたフローの逆転は、異なる階層構造の共存によるものである。71パーセントフィルターが採用されていないのは、ONステータスの均一な分布を保つためであるが、ここまでに紹介したフィルターは二律背反の関係にある2つの要素のバランスの上に成立している。一方では、リアルな透過率を表現するためにONステータスの均一な分布を一部犠牲にし、他方ではオブジェクトのシルエットを正確に反映するために階層構造を一部犠牲にしている。しかし、いずれの場合であっても、有効ビット数の減衰における逆フローは、起こりうる問題である。なぜなら、それはONステータスビットのレイアウト自体によっても生じうるからである。例えば、もし2つのオブジェクトが、ある画素の上部を約60パーセント占有している状態で図21に示されているindex6とindex7の有効ビットでサンプリングされたとすると、index6によりサンプリングされるシルエットは1ビット、index7によりサンプリングされるシルエットは3ビットサンプリングされることになる。これでは、最後に描写されるオブジェクトが、手前のオブジェクトよりの視認性が高いことになる。図22における場合と同様に、この問題にかぎって見た場合、レイヤーのオーダーを変更することにより問題は緩和されるかもしれないが、これも解決策ではない。総括すれば、こうした考慮すべき誤差は、主に75パーセント透過率による8層のフィルタリングの最後の数レイヤーにおいて生じるものであり、レイヤーの階層構造が原因で生じる逆フローについては、図26に示されるように頻繁に発生するものではない。つづいて論じられるテーマは、レイヤーの序列を如何に維持し、さらなる誤差の発生を食い止めるかという方法論についてである。
【0076】
<フィルター選択の方法>
半透明表現用のフィルターは、2つのステップで選択される。最初のステップは、対象となる画素に使用されていないレイヤーを特定する。次のステップで未使用のレイヤーから最適なレイヤーを選択する。未使用のレイヤーを特定する最初のステップでは、単一シグナルの経路が検証される。単一シグナルの経路にある各ビットは、それぞれのレイヤーに特有のものとして属しているため、そのビットのステータスはレイヤーの使用可否の判断の鍵となる。図18に示される2つの固定化された単一シグナルの経路18Aと18Bは、45度に傾斜した正方形状に展開される「検証用サーキット」を構成する。もし、このサーキット上で、同じレイヤーに属する2つのビットがONステータスのまま残されている場合、そのレイヤーは未使用か、あるいは使用されていても副画素の50パーセント未満である可能性が高い。これらのサーキット上のビットは、8レイヤーに対応する8ビットにパッケージ化された上で検証される。検証用サーキットは、線形セグメントで構成されているため、8ビットは、0x01010101、0x41041、0x40100401などの乗数と、乗算の結果を移動するオフセット値によって抽出することができる。具体的な手順は副画素のレイアウトにより異なるが、線形セグメントを乗算することにより対象ビットが意図される序列に並んだセグメントを構成し、その結果をシフト(演算)することにより8ビットの配列として構成するプロセスは、図27に表示されている。これらの操作自体はコンピュータープログラミングの通常のスキルである。27Aに示される64副画素の前半の操作では、乗数は0x01010101となり、これは32副画素の環境でも同じである。これが、すでに述べた32副画素のマトリクスにおける必要条件の理由である。図27に示されるプロセスで、2つの8ビット配列が得られる。2つの8ビット配列は、AND演算により双方ともONステータスとなっているビットを検索し、もし、結果が期待されるID数を含んでいない場合、OR演算により得られた結果が利用可能なレイヤーを示す。この8ビット内の各ビットポジションは、各レイヤーのIDビットとなり、複数のレイヤーにより構成されるフィルターの場合は複数のIDビットにより特定されることになる。この8ビット配列は、これより「IDホルダー」または、「未使用IDホルダー」と呼び、その内容は0と1のビット配列で表示する。もし、副画素の右上が最初のビットとして設定されていて、IDホルダーが図27のオペレーションで得られた場合、例えば、レイヤー1のIDは「00001000」になる。もし、レイヤーのオーダーが変更されている場合には、レイヤー1のIDは、8ビット内の異なるポジションになる。視認性を高めるため、これより便宜上IDビットは左から右へのオーダーで表示する。例えば、最初のレイヤーのIDビットは「10000000」であり、最後のレイヤーのIDビットは「00000001」とする。
【0077】
IDホルダーは、フィルターを適用するたびに図27にあるオペレーションを行って取得するのではなく、メモリー内に保持するのが望ましい。保持されたIDホルダーのすべてのビットはONステータスに初期化され、ビットフィルタリングが実行されると、使用されたレイヤーのIDビットを反転する。IDホルダーが示す利用可能なレイヤーが、求められるフィルタリング処理に対して不足している場合、保持されたIDホルダーは、上出の方法で再構築される。この方法はレンダリング速度を速めるだけでなく、レイヤーを適用するオーダーを正確に保つ効果もある。2つの隣り合うレイヤーで構成されるL2フィルターでは、検証用サーキット内の4ポイントが検証される。しかし、L1フィルターでは、検証されるポイントは各2ポイントである。IDホルダーをメモリーに保持することにより、最初の8レイヤーの序列は保障される。
【0078】
最適なレイヤーを選択する第2ステップのために、各フィルターセット用の変換テーブルが用意される。変換テーブルは、利用可能なレイヤーを示すIDホルダーから、次に適用すべきフィルターを導く。例えば、対象となる画素に既に適用されているレイヤーが第3、第4レイヤーのみの場合、次に適用すべきレイヤーは第1レイヤーではなく、第5レイヤーとなる。レイヤー構造は、循環型となっているため、既に使用されているレイヤーに続くレイヤーによって、意図どおりのフィルタリングが期待できる。もし、利用可能なレイヤーの並びが分割されている場合、分割されている状況をなるべく少ない手順で解消するため、次のレイヤーは、最も小さい分割ブロックから選択される。分割されている状況が解消されれば、以降のフィルタリングは前出の手順で序列どおりに行うことができる。このようにレイヤーの選択には優先順位があり、変換テーブルは以下の優先順位を表現するものでなければならない。
(1)循環型のID序列において利用可能なレイヤーIDが複数のブロックに分割された状態にある場合、最も小さな分割ブロック内に含まれるIDによりレイヤーが選ばれる。
(2)循環型のID序列において利用可能なレイヤーIDの序列が連なっている場合、利用可能なレイヤーIDの序列の先頭部分で示されるレイヤーが選ばれる。
(3)利用可能なレイヤーIDの序列に即してレイヤーが選ばれる。
【0079】
検証用サーキット上のビットが不規則に消費されている場合、検証用サーキットから摘出されるIDホルダーは、さまざまなパターンで分割された並び方となり得る。それ故、8レイヤーで構成されるすべてのパターンに対応するため、変換テーブルは256のエントリーを持つ。各レイヤーは、前後3レイヤーの位置関係にあるレイヤーと同様にオーバーラップするため、最初の不規則なレイヤー選択は吸収される可能性があるが、次の不規則な選択はそうではない。詳細に設計された変換テーブルによって、多様な状況から生じる誤差を最小限におさえることができる。以下では変換テーブルの好ましい構築方法が論じられる。
【0080】
例えば図28に示すIDホルダー28Aの例では、レイヤー「5」のIDが他のIDの並びから孤立しおり、以降のレイヤーを序列どおりに行うためには、レイヤー「5」がまず適用される必要がある。この孤立したIDビットの検出は、各連続する3つのIDビットを、検証範囲と検証範囲内の状況を示す2つのビット配列にて照合することで行われる。IDホルダー28Aが、これら検証範囲と状況をしめすビット配列により2801、2802、2803…と順次変化するループ内で照合されると、2805まで進んだ段階で孤立したIDが検出される。変換テーブルは、このような、ビット配列をセットとして備えた「優先度スキーム」によって構築される。優先度スキームは28Bに示すように、IDホルダーの形式でフォーマットされた3つのビット配列、「検証範囲」、「検証範囲内の状況」、「適用すべきレイヤーのID」で構成されている。優先度スキームは、次のように適用される;まず、フィルターは変換テーブル内の自らのIDの位置に挿入される。次に1から255までのループのなかで、ループの添え字がIDホルダーのひとつのバリエーションとして検証される。検証されるIDホルダーのバリエーションは、「検証範囲」とAND演算され、「状況」と比較される。もし、結果が等しい場合は、「適用すべきレイヤーのID」の位置に挿入されたフィルターが検証されているIDホルダーのバリエーションの位置に共有される形で挿入される。より具体的に28Aの例で見ると、まず、IDホルダーは「01110100」となる。3つの連続したビットが検証範囲「00001110」とAND演算により摘出されて検証対象となり、その結果は「状態」である「00000100」と等しくなる。したがって、「00000100」の位置に挿入されているレイヤー「5」が「01110100」のアドレスに挿入される。結果として、次に適用するレイヤーが「01110100」のIDホルダーで検索された場合、変換テーブルはレイヤー「5」を返すことになる。これらの検証は、実際には、上出のループ内にネストされた下位のループの中で行われ、そこでは、検証に使われる3つの配列が、優先順位にしたがって入れ替わる。基本的に優先度スキームは、各ビットポジションに応じた8つのバリエーションを持ち、それぞれのバリエーションごとに繋げられた形で、全体の優先順位を構成する。つまり、最初の優先度スキームのバリエーションがすべてあてはまらない場合に、次の優先度スキームのバリエーションが検証される。
【0081】
図29にL1フィルター用の優先度スキームを示す。優先度スキーム29Dはデフォルトのスキームで上記(3)に対応し、3つのビット列が全て等しいスキームである。29Cはレイヤーの循環型構造に対応したもので上記(2)に対応する。このスキームは先頭のIDが利用可能な状態、たとえば「10111111」のような状況のときに効力を発揮する。従ってこのスキームは第3レイヤーからのバリエーションの開始でも良い。このスキームが検証される状況では、IDが分割された状況は既に検証されており、このスキームは並んだ状態にあるIDビットの先頭を検出することを意図している。28Bに示されているのは、このスキームのL2フィルターに対応した例である。優先度スキーム29Aと29Bは分割されたIDホルダー用のもので上記(1)に対応する。29A、29B、29Dは各ビットポジションに対応した8つのバリエーションを持ち、29Cは、6つのバリエーションを持つ。連続する3ビットによる分割ブロックは図29では考慮されていないが、これは連続する3ビットが最も小さな分割ブロックである場合、もう一方のブロックも3ビットのブロックとなるからであり、この場合は他のスキームにより3ステップで分割が解消される。例えば3ビットのブロックによる分割が{7,0,1}
と{3,4,5} のように構成された「11011101」のような状況にある場合、変換テーブルは「00010000」、「00001000」、「00000100」で示す順序でレイヤーを返して分割された状態を解消し、結果として「11000001」のような状況をもたらす。この連続する3レイヤーを選択する設定では以下の優先度スキームが機能している。
【0082】
IDホルダーが「11011101」のとき、変換テーブルは 「00010000」のレイヤーを返す。この構成は優先度スキーム29Cのバリエーションにより設定される。

【0083】
選択されたレイヤーの「00010000」は反転される。結果として得られたIDホルダー「11001101」で検索すると、変換テーブルは「00001000」のレイヤーを返す。この構成は優先度スキーム29Bのバリエーションにより設定される。

【0084】
選択されたレイヤーの「00001000」は反転される。結果として得られたIDホルダー「11000101」で検索すると、変換テーブルは「00000100」のレイヤーを返す。この構成は優先度スキーム29Aのバリエーションにより設定される。

【0085】
一旦いずれかの3ビットのブロックが崩されると、以降のレイヤー選択は崩されたブロック内に集中し、もう一方の3ビットのブロックはそのまま残される。このことによって最小の3ステップで3ビットのブロックによる分割を解消することができる。
【0086】
複数のレイヤーを組み合わせたフィルターについては、不規則にフィルタリングされた画素への対処法により2つの方法で変換テーブルを構築することができる。例えばL2フィルターのための利用可能なレイヤーが第3と第5レイヤーのみの場合、L1フィルターを2回適用する方法と、分割されたレイヤーのためのカスタムフィルターを用意する方法とがある。前者の方法では、適用する回数を指示する必要がある。この方法では変換テーブルの構造はシンプルになるが、適用の手順は複雑になる場合がある。このため、ベストモードでは後者の方法を採用する。カスタムフィルターを用意するには:必要な分割のパターンを用意する;透明度がより高いフィルターを組み合わせてカスタムフィルターを生成する;カスタムフィルターを変換テーブル内の対象となる分割パターンのアドレスに挿入する;分割パターンのための優先度スキームを構築する。分割パターンと必要なバリエーションの数は図30に掲載されている。これらのパターンでは、検証範囲を小さくするために、それぞれのバリエーションの最も短いものが選択されている。例えば、30CのIDのオーダーは{0,2,3,4}となっているが、これは、最初の3つのIDが並んだ{0,1,2,6}のバリエーションである。{0,2,3,4}のための検証範囲は{0,1,2,6}のそれよりも短い。これが、このバリエーションが30Cとして選択された理由である。また、2レイヤーのためのパターンと3レイヤーのためのパターン群には内部に優先順位がある。これらのパターン内では、2つの連続するIDを含むパターンは、優先順位の低いポジションに置かれている。たとえば30Bの優先順位は30Aのそれよりも低い。以下の議論を始める前に指摘される点は、こうした複雑さは、L1フィルターを繰り返し適用する前者の方法を模倣することから生じるという点である。
【0087】
分割パターンのための優先度スキームには、検証範囲の3つのバリエーションが用意される。それらは、対象の分割パターンよりも両端に1IDビット分拡張された検証範囲をもつものと、両端のいずれかに1IDビット分拡張されたものが2つとなる。前者は孤立した分割パターンのためのもの、後者は、繋がっている分割パターンのためのものである。孤立した分割パターンは、繋がっている分割パターンよりも優先順位が高く設定される。図31に示されている例は、L2フィルターに関するものである。IDホルダー3101の分割状態を解消するためには、次のレイヤーは、31Cと31Dである必要がある。分割パターンの30Aが対象パターンとなり、そのバリエーションが優先度スキーム3102で参照される。その検証範囲が示すように3102は孤立した分割パターンに対応したものである。もうひとつの例として3103では、次に選択されるレイヤーは31Gと31Hとなる。対象となる分割パターンは、前の例と同じく30Aであるが、検証範囲は異なっている。3103のための優先度スキーム3104は、繋がっている分割パターンのものである。もし、孤立したパターンと繋がっているパターンの優先順位が逆転しているとすると、3101のために選択されるレイヤーは予期せぬ31Bと31Cとなる。他方、もしパターン30Bの優先順位が30Aよりも高く設定されていたとすると、3101のために選択されるレイヤーは31Aと31Bという不正な結果となる。最後に、もし3101に対して、図29にある優先度スキームに従って2回のL1フィルタリングが行われたとすると、選択されるレイヤーは31Cと31Dとなり、正しいレイヤーが選択される。このように分割パターンの順位や、孤立した分割パターンに付与される高い優先度は、L1フィルターを繰り返し使用した状況を再現する効果を持つ。しかし、ここで図30に1つ例外的なパターンがある。パターン30B自体は分割パターンではないので、このパターンのための優先度スキームは、孤立したパターンのための検証範囲のもののみが必要となる。IDホルダー上の分割された状態は、以下の14の例外を除いて、単独のカスタムフィルターで解消される。以下の例外的な分割パターンは単独のL2フィルターでは解消されない。分割状態がどのように残るのか以下にビット配列で示す。
・「10101010」の2つのバリエーション
10101010 --> 00001010
01010101 --> 00000101
・「11011010」の8つのバリエーション
11011010 --> 01011000
01101101 --> 00101100
10110110 --> 00010110
01011011 --> 00001011
10101101 --> 10000101
11010110 --> 11000010
01101011 --> 01100001
10110101 --> 10110000
・「11101110」の4つのバリエーション
11101110 --> 11100010
01110111 --> 01110001
10111011 --> 10001011
11011101 --> 11000101
【0088】
複数レイヤーのための優先度スキームは、より少ないレイヤー数に対応したものも含む必要がある。例えばL4フィルターのための優先度スキームは4レイヤーのためのものだけでなく、3レイヤー、2レイヤー、1レイヤーのためのものも含む必要がある。ここで、次に考慮する点は未使用のレイヤーが必要なレイヤー数だけ存在しない場合についてである。この問題を解決するために3つのデフォルトマスクが用意される。検証用サーキット上のビットがすべて消費された後も、消費されていないビットが残っている可能性があり、デフォルトマスクは、このような場合に機能する。デフォルトマスクは線形セグメントそのもので構成される。各線形セグメントには、シグナル経路上の偶数インデックスまたは奇数インデックスのポイントが関係づけられており、シグナルが走った場合、各線形セグメント上のシグナル数は、複数シグナル用のシグナル経路に即して、1シグナルと2シグナル、単一シグナル用のシグナル経路に即して1シグナルとシグナルなしの状況を繰り返す。デフォルトマスクを構成する線形セグメントはこのシグナル数を考慮して選択される。図32に示すデフォルトマスク32Aと32Bは、すべてのレイヤーと4ビット重複し、32Cは6ビット重複する。例えば32Aは、複数シグナル経路の奇数インデックス用と単一シグナル経路の偶数インデックス用の線形セグメントの組み合わせでできている。これらのデフォルトマスク群は重複するビットをもたず、併用することでボリュームを増すことができる。例えば、もし、32Aと32Bを重ね合わせた場合、どのレイヤーとも8ビット重複するマスクを作ることができる。より具体的には、例えば1レイヤーのみがL2フィルタリングに対して利用可能である場合のために、32Aを1レイヤー用のL2カスタムフィルターに組み合わせ、32Bと32Cを重ね合わせたフィルターをインデックス0のデフォルトフィルターとして設定する。そして、L4フィルターを各2つのL2フィルターを組み合わせて以下のように構築する。以下のソースコードでは、フィルターオブジェクトのメンバーは、ビットマスク、ID、「filled」というブール値で、このブール値はフィルターがレイヤーのみでできているのか、デフォルトマスクを含んでいるのかを示している。

【0089】
上記コードで整数値「pattern」はIDホルダーのバリエーションである。もし、「pattern」が1つのレイヤーIDしか含んでいない場合、最初に選ばれるL2フィルターは、ひとつのレイヤーと32Aを組み合わせたフィルターとなり、2番目に選ばれるL2フィルターはインデックス0にある32Bと32Cを組み合わせたフィルターになる。結果として生成されるL4フィルターは、1つのレイヤーと3つの異なるデフォルトフィルターの組合せとなり、L4フィルターのボリュームは保たれる。図33に示すのは、次のフィルターを検出するためのフローチャートである。まず3301で未使用IDを保持するIDホルダーがメモリーから読み込まれる。3302で変換テーブルのIDホルダーのアドレスにあるフィルターが取得される。もし、フィルターがデフォルトマスクを含んでいない場合は、3307にて、そのフィルターが次のフィルターとして選択される。そうでない場合、3304にてIDホルダーは検証用サーキットより再編纂される。3305では、得られたIDホルダーによって再度変換テーブルよりフィルターが選択される。3306では、メモリー内のIDホルダーが新たに得られたIDホルダーによって更新される。このフローでは、一度デフォルトマスクの使用を避けるよう試みられるが、それが不可能な場合は、上出のデフォルトマスクが使用されることになる。一方、IDホルダーをフィルタリングの際、随時、検証用サーキットから直接得る方法も可能であり、この場合は図33のフローはよりシンプルなものになる:3301にて未使用のレイヤーのためのIDホルダーを検証用サーキットから取得する。3302でフィルターを選択する。3307で得られたフィルターを次のフィルターとする。その他のプロセスはすべて省略する。実際には、メモリー内にIDホルダーを保持することによる処理速度の向上は認知不能なレベルにとどまることもあり、これらの2つの手法は半透明フィルターの使用目的や使用方法により選択されるべきものである。
【0090】
上出のデフォルトマスクは検証用サーキットを構成する線形セグメントを使用していないため、以下のようにフィルターセット間の中間的な透明度を表現することにも使用することができる。
ThiedMemory &= L2filter & ~defaultMask;
【0091】
<半透明オブジェクトのグループ化>
すでに述べたように、半透明オブジェクトの表現は仮想の8レイヤーによって行われるが、この仮想レイヤー自体は、操作が可能なビットマスクで構成されている。この操作可能性は、本発明の特徴の1つである。同じビットマスクでフィルタリングされたオブジェクト同士は互いを透過することはないが、同じレイヤーの共有を行うオブジェクトをグループ化することができる。更には、こうしたグループ化された半透明オブジェクトと、通常の半透明オブジェクトとを同じ画面上に共存させることも可能である。図34は、グループ化された半透明オブジェクトがどのように機能するか示したものである。3つの半透明オブジェクトが図34に示されている。3401は通常の半透明オブジェクト、3402と3403はグループ化された半透明オブジェクトである。グループ化された3402と3403はお互い同士を透過しない。もし通常のオブジェクト3401が他の2つのオブジェクトの背後にある場合、前面に置かれた2つのオブジェクトをグループ化することによって、より明瞭に表示される。このように表示されるオブジェクトのフォーカスを3つの異なる表現、グループ化された半透明オブジェクト、通常の半透明オブジェクト、不透明オブジェクトにより表現することができる。オブジェクトをグループ化するためには、グループIDとオブジェクトグループ用のIDホルダーを保持するための2つのメモリースペースが確保される。2つのメモリーは最後にフィルタリングされた、未知のグループIDをもつオブジェクトにより更新され、もし保持されたグループIDがレンダリングされるオブジェクトのグループIDと等しい場合は、保持されたオブジェクトグループ用のIDホルダーにより適用するフィルターが選択される。これらのメモリーは、未知のグループIDを持つオブジェクトがフィルタリングされるたびに更新されるため、オブジェクトグループは、手前から奥への序列でレンダリングされる必要がある。もし、序列が不規則となる場合、この方法で可能なグループは1グループのみである。図35に示すフローチャートは、グループ化されたオブジェクトのためのフィルター選択の過程を示している。3501にて保持されたグループIDが取得され、3502において、そのグループIDが有効なものかが判定される。もし有効なものである場合、3503において、当該オブジェクトのグループIDと比較され、もし、2つのグループIDが一致する場合、オブジェクトグループのためのIDホルダーが3504で読み込まれる。そして、IDホルダーのアドレスに置かれたフィルターが3505で取得される。もし、グループIDが無効な場合、あるいはグループIDが当該オブジェクトのものと一致しない場合、3506において3308の手順で次のフィルターが選択される。3507では、保持されているグループIDが当該オブジェクトのものに更新される。3508でオブジェクトグループのためのIDホルダーが現時点での未使用IDホルダーの値に更新される。最後に3509において使用するフィルターが確定する。
【0092】
上記説明したように、複数の半透明オブジェクト同士の関係において、互いに透過する、もしくは、互いに透過しない、という関係を選択的に設定することが可能であり、互いに透過しない半透明オブジェクト同士のグループ化を実現することが出来る。こうしたグループ化は、連結されたオブジェクト群の半透明表示を可能とし、また、グループ化された透明オブジェクト、通常の透明オブジェクト、不透明オブジェクトの選択的な設定、および透明度の調節により、表示されているオブジェクト間のフォーカスを表現する効果をもたらす。
【0093】
また、本願によれば、不透明な画像オブジェクトだけでなく、半透明のオブジェクトであっても1/32程度の誤差の範囲内でアンチエイリアス処理を行うことができる。
【0094】
上述した実施形態は、本発明に係る技術思想を具現化するため一例を示したにすぎないものであり、他の実施形態でも本発明に係る技術思想を適用することが可能である。すなわち、本願発明について、上述の複数の好適な実施態様を説明したが、いわゆる当業者であれば、本願に係る技術思想の範囲内において、改変、追加、削除、置換、改良をなすことができるであろうことが認められる。
【0095】
さらにまた、本発明を用いて生産される装置、方法、システムが、その2次的生産品に搭載されて商品化された場合であっても、本発明の価値は何ら減ずるものではない。
【産業上の利用可能性】
【0096】
上述したように、本願によれば、半透明のオブジェクトであってもアンチエイリアス処理を行うことが可能となり、結合された表示物の半透明化や多数のオブジェクトが共存する状況でのフォーカスを表現する場合などに効果をもたらす。したがって本発明は、ニュースや企業社会における一般的なプレゼンテーション全般に直ちに用いて効果を創出する。この効果は、グラフィックオブジェクト及びその表示を利用・応用する産業として、情報産業、電気器具産業、宇宙産業、医療機械工業、測定産業、建設業、精密機械工業等をはじめとする、各種産業にとって、非常に有益をもたらすものである。
【符号の説明】
【0097】
104 画像出力装置
105 CPU
106 I/Oシステム・バス
107 メインメモリー
108 キーボード
109 マウス
110 マス・ストレージ


【特許請求の範囲】
【請求項1】
アンチエイリアス処理されたグラフィックオブジェクトをレンダリングする方法において、
空白の領域を記憶するためのメモリーであって、2Nビットの副画素を構成し、Nは少なくとも5以上であり、前記副画素のマトリックス中の染色されていない副画素をONステータスで示し、通常はONステータスは1、OFFステータスは0として規定されるが、逆の設定の場合は関連するAND演算とOR演算もプロセスに全般にわたって逆転されるものであって、すべての副画素がONの状態で初期化される第1メモリーを準備するステップと、
前記第1メモリーに対応する色値を保持する第2メモリーであって、前記副画素の数を反映した2N分の色値の累積を格納可能であり、前記第1メモリーにおける染色された副画素数と前記第2メモリーにおける色値の前記累積が同期するよう設計された第2メモリーを準備するステップと、
手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行う走査変換ステップであって、
対象となるオブジェクトのカバレッジを確定するステップと、
前記カバレッジに対応する前記第1メモリー中の領域をOFFステータスに反転するステップと、
前記第1メモリー中の反転された副画素数に呼応する色値を前記第2メモリーに積み上げて、前記第1メモリーの全ての副画素が反転された後、前記第2メモリーに積み上げられた色値によって画素値を確定するステップとを備える走査変換ステップと
を具備することを特徴とする方法。
【請求項2】
対象画面内の更新される領域に属する第1メモリーを初期化し、それ以外の領域を完全にOFFステータスに設定することにより、更新される領域がクリッピングされるステップをさらに備えたことを特徴とする請求項1に記載の方法。
【請求項3】
対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトを準備するためのステップをさらに備えたことを特徴とする請求項1に記載の方法。
【請求項4】
前記対象となるオブジェクトのカバレッジを確定するステップにおいて、透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、カバレッジを減縮することを特徴とする請求項3に記載の方法。
【請求項5】
前記フィルターオブジェクトを準備するためのステップにおいて、
ビットマスクによる複数のレイヤーであって、循環型の階層構造を持ち、各レイヤーのONステータスの位置が連続的にレイヤーの序列に応じて移動する経路(シグナル経路)の集合体としてマトリクスを構成し、各シグナル経路はレイヤーの総数あるいはその因数分の長さを備える、基本レイヤーを準備するステップと、
ひとつまたは複数の前記基本レイヤーで構成されるフィルターオブジェクトであって、該フィルターオブジェクト中に含まれるレイヤー数は求められる透明度に応じて決定され、同じ透明度を共有しつつ前記各基本レイヤーに対応するバリエーションを備えるフィルターオブジェクトを準備するステップと
をさらに具備したことを特徴とする請求項4に記載の方法。
【請求項6】
前記第1メモリーは少なくとも2つの4×4リージョンで構成され、該4×4リージョンは4つの線形セグメントで構成され、各線形セグメントは4×4の循環型マトリクスにおいて対角線に即して4つの副画素が並んだものとして構成され、前記4つの線形セグメントは互いに重複することなく同じ対角線傾斜を共有することを特徴とした請求項5に記載の方法。
【請求項7】
前記レイヤーの各々に設定されるONステータス(シグナル)の数はそれぞれK=2N/4であり、前記レイヤーの不透明度が1/4となることを特徴とした請求項6に記載の方法。
【請求項8】
K/4シグナルがK/4シグナル経路に個別に配布され、3K/4シグナルがK/4シグナル経路に実質的に均一に配布される(各3シグナル)ことを特徴とした請求項7に記載の方法。
【請求項9】
3つのシグナルを持つシグナル経路は各4×4リージョン内の2つの線形セグメント上に設定され、前記2つの線形セグメントは、循環型の4×4マトリクス上で隣り合う関係にあることを特徴とした請求項8に記載の方法。
【請求項10】
前記3シグナルは4×4リージョンを2×2にコピーした仮想空間上で絶対値としてのラジアンR = π/ 2 + 2 x tan-1(0.5)の角度を形成し、頂点のシグナルが一方の線形セグメントへ、両端のシグナルがもう一方の線形セグメントへ割り当てられることを特徴とした請求項9に記載の方法。
【請求項11】
前記3シグナルは、2つの奇数長のインターバルをおいて配置され、シグナル経路上の4つの偶数インデックスのポイントと4つの奇数インデックスのポイントは、個別に前記2つの線形セグメントに割り当てられ、前記2つの線形セグメントに配置されたインデックスの進行方向が同方向となることを特徴とした請求項10に記載の方法。
【請求項12】
2つの異なるインターバルの組合せが各2つの3シグナルを持つシグナル経路のために用意され、これらのインターバルは、1、2、3の間隔に設定されたものが、前記2つのシグナル経路のいずれかに割り当てられ、各間隔のインターバル数は同一となることを特徴とした請求項11に記載の方法。
【請求項13】
前記2つの線形セグメントの偶数インデックスの位置と奇数インデックスの位置とが相対的に、与えられたインターバルに即して絶対値ラジアンRを構成するように設定され、そこではインデックスの進行にともない、頂点のシグナルを前記2つの線形セグメントに交互に配置しながら、正と負のラジアンRを交互に構成することを特徴とした請求項12に記載の方法。
【請求項14】
各4×4リージョン内の2つの線形セグメントが単一シグナルのシグナル経路のために確保され、それぞれのポイントは前記3シグナルの両端のポイントと共にオリジナルの頂点ポイントと対称をなすラジアンRを構成する位置に配置されることを特徴とした請求項13に記載の方法。
【請求項15】
前記対称をなすラジアンRを構成するポイント群はインデックスの進行と共に正と負のラジアンRを交互に構成し、偶数インデックスと奇数インデックスは前記2つの線形セグメントに個別に割り振られることを特徴とした請求項14に記載の方法。
【請求項16】
それぞれの単一シグナルのためのシグナル経路は、2つの異なる4×4リージョンに属する2つの線形セグメントに跨って配置され、各2つの単一シグナルのためのシグナル経路が各2つの4×4リージョンに割り当てられ、それぞれ第1経路と第2経路に関して、該第2経路は編集可能なエリアとして定義され、偶数インデックスと奇数インデックスの割り当ては第1経路と第2経路との間で各2の4×4リージョン内で交互するように設定されることを特徴とした請求項15に記載の方法。
【請求項17】
前記編集可能なシグナル経路は、選択的にレイヤー総数の因数長となるように分割され、該分割された経路はシグナルなし(背景のために確保された領域)とすることも可能であることを特徴とした請求項16に記載の方法。
【請求項18】
前記副画素が、4つ、もしくはそれ以上の4×4リージョンを含有する場合には、シグナル経路の進行方向は、任意の形式で対称となるように設定されることを特徴とした請求項17に記載の方法。
【請求項19】
各レイヤーのIDビットは、前記単一シグナルのための第1経路のレイアウトに配慮して定義され、前記第1経路上のビットを2つのオペレーションにより連続したビット列に並べることによりそれぞれのIDビットとして確定され、該2つのオペレーションはあらかじめ設定された定数として、
前記第1シグナル経路の対応する部分を乗算して意図された序列に並べられたセグメントを構成するための乗数と、
前記意図された序列に並べられたセグメントにシフト演算を行い、IDビットのための個別のビット位置にならべるためのオフセット値と
を含むことを特徴とした請求項18に記載の方法。
【請求項20】
請求項19に記載の方法において、
対象画素に未だ使用されていないレイヤーのIDを未使用IDホルダーと呼ばれるビット配列に編纂する方法として、
(1) 前記単一シグナルのためのシグナル経路を、それぞれ前記2つのオペレーションによりIDビット列に編纂するステップと、
(2) 前記単一シグナルのためのシグナル経路が複数存在する場合、前記(1)の結果の間でAND演算を行うステップと、
(3) 前記(2)の結果が期待されるID数を含んでいない場合、前記(1)の結果の間でOR演算を行うステップと
を具備したことを特徴とする方法。
【請求項21】
請求項20に記載の方法において、
対象画素に対して適切なレイヤーを特定するための変換テーブルを、前記未使用IDホルダーのすべてのバリエーションに対応可能なものとして、優先順位を反映したものとして構築し、該優先順位は、
(1)循環型のID序列のなかで利用可能なレイヤーIDの序列が複数のブロックに分割された状態にある場合、最も小さなブロック内に含まれるIDによりレイヤーが選ばれる;
(2)循環型のID序列のなかで利用可能なレイヤーIDの序列が連なっている場合、利用可能なレイヤーIDの序列の先頭部分で示されるレイヤーが選ばれる;
(3)利用可能なレイヤーIDの序列に即してレイヤーが選ばれる;
として規定されることを特徴とする方法。
【請求項22】
前記フィルターオブジェクトによるフィルタリングによりカバレッジを縮減するステップは、
対象画素のための未使用IDホルダーを取得するステップと、
前記変換テーブルより前記取得された未使用IDホルダーを使用して対象画素に適用すべきフィルターオブジェクトを特定するステップと
を含んだことを特徴とする請求項21に記載の方法。
【請求項23】
請求項22に記載の方法において、
対象画素のための未使用IDホルダーを取得するステップは、
(a)未使用IDホルダーを対象画素に対応した前記第1メモリーから取得する方法;
(b)未使用IDホルダーが格納されるために用意されたメモリースペースから取得する方法であって、該格納される未使用IDホルダーは、すべてのIDビットを持つものとして初期化され、フィルターが使用された場合はそのフィルターのIDが反転され、前記未使用のIDが不足している場合は、前記第1メモリーから再編纂される方法;
(c)オブジェクトグループのための未使用IDホルダーを取得する方法であって、前記オブジェクトグループのための未使用IDホルダーは、
同じレイヤーを共有するグループのためにグループIDが用意され、
各画素用にグループID及び前記オブジェクトグループのための未使用IDホルダーが格納されるためのメモリーが用意され、このメモリーは対象画素にとって未知のグループIDを持つオブジェクトにフィルターが使用されるたびに更新され、
描画対象のオブジェクトの持つグループIDと前記メモリーに格納されたグループIDとが比較され、両IDが一致した場合は、オブジェクトグループのための未使用IDホルダーが対象オブジェクトのための未使用IDホルダーとして取得され、そうでない場合は前記(a)または前記(b)の方法で未使用IDホルダーが取得されると共に、前記メモリーは、対象オブジェクトのグループID及び前記取得された未使用IDホルダーで更新されることで生成される方法;
のいずれかの方法により未使用IDホルダーを取得することを特徴とする方法。
【請求項24】
アンチエイリアス処理されたグラフィックオブジェクトをレンダリングするための装置において、
各ピクセル中の空白の領域を記憶するためのメモリーであって、2Nビットの副画素を備え、Nは少なくとも5以上であり、前記副画素のマトリックス中の染色されていない副画素を副画素マトリックス中のONステータスで示し、通常はONステータスは1、OFFステータスは0であるとして規定され、逆の設定の場合は関連するAND演算とOR演算もプロセスの全般にわたって逆転されるものであって、すべての副画素がONの状態で初期化される第1メモリーと、
前記第1メモリーに対応した色値を保持する第2メモリーであって、前記副画素の数を反映する2N分の色値の累積を格納可能であり、前記第1メモリーにおける染色された副画素数と該第2メモリー中の前記色値の前記累積が同期するよう設計された第2メモリーと、
手前側から奥側へ向けて、オブジェクトごと、もしくは画素ごとに走査変換を行うための走査変換部であって、
対象となるオブジェクトのカバレッジを確定するためのカバレッジプロセッサと、
前記カバレッジに対応する前記第1メモリー中の領域をOFFステータスに反転するためのインバータプロセッサと、
前記第1メモリー中の反転された副画素数に呼応する色値を前記第2メモリーに積み上げて、前記第1メモリーの全ての副画素が反転された後、前記第2メモリーに積み上げられた色値によって画素値を確定する画素数確定プロセッサとを備える走査変換部と
を具備することを特徴とする装置。
【請求項25】
請求項24記載の装置において、
対象となるオブジェクトのカバレッジを縮減するためのフィルターオブジェクトが準備され、
透明レンダリングの場合には前記フィルターオブジェクトによるフィルタリングにより、サンプリング対象がフィルタリングされる
ことを特徴とする装置。

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate


【公開番号】特開2013−37664(P2013−37664A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−216394(P2011−216394)
【出願日】平成23年9月30日(2011.9.30)
【特許番号】特許第4928011号(P4928011)
【特許公報発行日】平成24年5月9日(2012.5.9)
【出願人】(511237173)
【Fターム(参考)】