説明

半暗影生成レンダラー

【課題】コンピュータグラフィックス描画技術に関し、複数の遮光物体が乱立し、それぞれの半暗影(アンブラおよびペナンブラ部)が重なり合う映像を2パス方式の影生成法において描画するための手段を提供する。
【解決手段】幾何学的に近接する、あるいは階層的に構成された物体同士をグループ化して、グループ単位でそれぞれのシャドウバッファを割り当て、隠面消去法を用いてシャドウポリゴンを記憶し、ポリゴン内挿補間回路50で求めた座標値を光源系座標変換回路52で光源系座標値に変換し、これらと前記変換した光源系座標値とで比較器56にて、レンダリング点の位置関係を計算・テストして、遮光物体からレンダリング点までの距離を算出し、影であると判断された場合はそれぞれのバッファの情報を用いて判暗影の輝度を決定する。

【発明の詳細な説明】
【技術分野】
【001】
この発明は コンピュータグラフィックスにおいて影の半暗(ペナンブラ)現象を表現するための影の描画手段とその手段の論理回路化の技術分野に関する。
【背景技術】
【002】
コンピュータグラフィックスによるボケた半暗影を表現するレンダリング(ソフトシャドウ)について、遮光物体が複数乱立し、影が相互に重畳している場面の実時間描画は極めて困難とされている。このソフトシャドウ描画法には、シャドウボリューム法や、特願平11−317268がある。後者のポリゴンレンダリング2パス法は、第1パスで描画したシャドウポリゴン外郭周辺をフィルタリングよってぼかし、第2パスのレンダリングにおいて影の有無を判定し、影であればフィルタリングによって得た輝度を特殊な関数を用いてマップした。シャドウボリューム法では時間コストが大きく実時間性に乏しく、また後者では多重に遮光物体が重なる場合の、それぞれの物体がもつペナンブラ(半暗部)やアンブラ(真暗部)の重なりを正確に表現することが困難であった。
【発明の開示】
【発明が解決しようとする課題】
【003】
平面上に例えば2つの遮光物体が影を落とし、これらの影が互いに重なり合っている場合、より光源に近い遮光物体のペナンブラ領域と、背後に位置する遮光物体のアンブラおよびペナンブラ領域の重畳様態を正しく描画するには、コンピュータグラフィックス上の処理として下記の条件が一般に必要である。
(1)遮光物体と影を映す平面との関係において、遮光物体が単独に平面上に影を落としている場合、アンブラおよびペナンブラ領域は直接描画する。
(2)前面(光源に近い)の遮光物体のペナンブラ(あるいはアンブラ)影が、背面の遮光物体のアンブラ(あるいはペナンブラ)部分と重って前記平面上に影を落とす場合は、前面のペナンブラ(あるいはアンブラ)と、背面物体のアンブラ(あるいはペナンブラ)を加算した暗度で重畳部を描画する。
上記2つの条件の内、(2)の効果を表現するには、前面と背面物体それぞれのシャドウポリゴンは独立して記憶(それぞれがアンブラ、ペナンブラ領域を明示可能とする)されなければならない。もしシャドウバッファを1組で構成し、光源に最も近い遮光物体のポリゴンのみを隠面消去法で記憶すれば、背後となる物体の幾何学的情報は全て失われ、背面物体のシルエットラインも、前面物体からの距離も判定できない。この結果、背面物体自身が持つアンブラおよびペナンブラ部分の生成は困難となり、(2)の正しい表現はできない。この問題はシャドウボリュームや2パス方式いずれにおいても共通の問題である。また1組のシャドウバッファからなるシステムでは、遮光物体の足元の影ではアンブラが、また離れる従って影が広がると共に、環境光による光の回り込みによって影がボケて明るくなってゆく効果を背面の物体自身は表現できない。これらの問題を解決する手段として、シャドウバッファを複数実装し、それぞれの遮光物体毎に独立して遮光物体のシャドウポリゴンを記憶し、それぞれ独立にフィルタリングしてシャドウポリゴンをボカし、レンダリングの段階で合成する方法がある。しかしフルシーンのシャドウバッファを物体毎(数千から数万種類)に持つことはハードウエアコスト面からは現実的ではない。一つの手段として、シャドウバッファ数の上限を定め、光源側から一定数の物体まではソフトシャドウを得る手段が考えられる。しかし物体の形状によっては(一つの物体が光源照射方向に長い形状をもつ場合)光源に最も近いものから順位を付けることは困難である。また光源に近い数個の物体の影を保存できても、視点と光源方向が相対した関係にあって、視点と光源間に限度数以上の物体が存在した場合、視点に近い物体(目立つ位置の物体)に影が発生しない現象が起こりえる。
本発明は2パス方式において、投下された複数の影が重畳しあう場合の、ペナンブラあるいはアンブラ部分の描画を、実用的な手段によって解決することを課題とする。
【課題を解決するための手段】
【004】
遮光物体それぞれが投下する影にソフトシャドウ効果を正確に表現するには、所定数のシャドウバッファが必要となる。この場合、下記の2つの問題を解決しなければならない。
(1)一つの遮光物体Aの形状が光源方向に長く、その物体の前面と後面の位置内に複数の他の遮光物体Bが配置されているものとする。ここで複数の配置物体Bを先にレンダリングし、光源に近い物体から順次シャドウバッファに記憶すると、全てのシャドウバッファは配置物体Bで占められてしまう可能性がある。この状態で遮光物体Aの後面から前面に向かってレンダリングを行うと、所定の位置に至るまで遮光物体Aのシャドウポリゴンは記憶された配置物体Bより後方に位置するものと見なされて記憶されない。この結果、遮光物体Aの影の一部が欠けたものとなる。
(2)シャドウバッファ数に上限があれば、影を投影できる物体数は限られ、視点に最も近い、描画上目立つ位置にある物体に影が生じない状態がある。
【005】
前記〔004〕の(1)に対応する手段として本発明では下記の条件および処理を手段とする。
(1)所定数のシャドウバッファに追加してシャドウバッファと同一構成の1組のバッファ(以下テストバッファ)を設ける。
(2)物体にはグループ識別子をそれぞれ定義する。グループ識別子とは、物体は通常、階層的な集合(グループ)からなる部品で構成され、それら個々の部品にはそれぞれ固有の識別子が与えられているが、部品の纏まりを示す上位階層の識別子をグループ識別子と定義する。一方、レンダリングはグループ物体毎に行い、グループの一つの物体あるいはポリゴンを書いては他のグループの物体を書くことを交互に繰り返すことはないものとする。グループ物体の特性としては通常幾何学的に近接しているものと考える。またグループ化は、物体がそれぞれ独立しているものの空間的に隣接しているものどうしであってもよい。
(3)シャドウバッファには、そのバッファに記憶されるグループ識別子を記憶する識別子レジスタ、シャドウポリゴンのx、y、zの最大最小値をそれぞれ記憶する領域レジスタ、また光源に最も近いグループ順に順位を付ける順位レジスタを設ける。以下これらレジスタの総称をシャドウレジスタという。
(4)第1パスにおいて、光源座標系で物体を前記テストバッファに隠面消去処理を伴ってシャドウポリゴンを描く。グループ識別子が変わらない限り、シャドウポリゴンとxyz値の最大最小値をテストバッファやシャドウレジスタに更新続ける。
(5)グループ内の全ての物体のレンダリングが終了する毎(識別子が変わる)に、テストバッファを含めて前記シャドウレジスタのz値をそれぞれ比較し、光源からの距離の順位を決定し、順位レジスタを更新(入れ替え)する。グループの順位が最下位のシャドウバッファは、シャドウレジスタをクリアする。テストバッファが最下位でなければ、通常のシャドウバッファに入れ替わり、最下位のクリアされた通常バッファがテストバッファに代わる。
前記(1)−(5)の条件と処理によって、グループ物体が多数の物体で構成される場合や、光源近くから遠方に連なる形状物体であっても、テストバッファのシャドウポリゴンはグループ識別子内での隠面消去により保存され、他のグループ物体との隠面消去によって削除されることはない。よって形状の一部でも光源に最近傍であれば、シャドウバッファの順位はデータを保存しつつ最上位となる。
【006】
物体構成を階層的に定義し、グループ識別子を階層の上位の名前とすれば、シャドウバッファには多数の物体をレンダリングすることができる。しかしシャドウバッファの実装数に限度がある以上、すべての物体のシャドウポリゴンをシャドウバッファに記憶することはできない。また、グループ識別子を幾つにするかはアプリケーションに依存する問題である。一方、シャドウバッファを画面全体の画素数(例えばx、y、z軸をそれぞれ1Kx1Kx32ビット)で構成した場合、グループ物体が小さな描画領域となる場合では、シャドウバッファ空間に大量の無駄が発生する。本発明ではこの問題を軽減するため、画像メモリを細分割構造(以下分割されたそれぞれのシャドウバッファをセルという)にして、セルを一定のサイズ(例えばx、y、z軸をそれぞれ64x64x32ビット)で構成し、物体の占める空間に対応してこのセルを動的に割り当る。1Kx1Kのバッファでは256個のセルで構成される。4組画面相当のシャドウバッファ容量がコスト的に実装可能とすれば、最大1024個のセルとなり、光源に近い順に多数のグループ物体の影の生成が可能となる。
【007】
それぞれのセルは、通常テキスチャーマッピングで実装されるキャッシュ構造と同様なキャッシュ・ブロック単位(前記の例では1ブロック当たり64x64画素)の割り当てと管理を行うことができる。
【008】
本発明では、第1パスの全ての描画が終了すると、z値を記憶するシャドウポリゴン領域に輝度(暗度)値を設定したバッファ(以下輝度バッファという)を新たに設け、この輝度バッファの暗度にフィルタリングを加え暗度のグラデーションを生成する。初期暗度は例えば255に設定すると輝度バッファは画素当たり8ビットとなる。シャドウポリゴン描画時に、シャドウポリゴンが描画される画素を値255で書き込むメモリをシャドウバッファと共に用意しておくことで、シャドウポリゴン領域を描画後コピーする必要がなくなる。また同様にシャドウポリゴン領域を示す1ビットのバッファ(以下フラグバッファという)を設ける。
【009】
フィタリングは特願平11−317268のz値と識別子の多数決法とは異なり、本発明では高速化のため、輝度バッファのシャドウポリゴン領域はすべて255の初期値として、すべての輝度バッファに対してフィルタリング(IIRフィルタなど)を行う。
【010】
第2パスでは以下の処理を行う。
(1)第2パスでは視点座標系で物体をレンダリングすると同時に、レンダリング点を光源系座標値に変換する。
(2)前記光源系座標値のz値と、それぞれのシャドウレジスタに記憶されたz値の最大最小値と比較し、レンダリング点が、自身以外のグループ識別子をもつz値よりも光源に近い場合には、自身のグループ物体のみを対象としてz値と比較し、影の有無をテストする。影であればアンブラとしての影を描画する。前記比較でz値が同一の場合はレンダリング点とシャドウポリゴンは同一物体として影ではなく照射点とする。
(3)グループ識別子の異なる他のいずれかの物体のz値に対しレンダリング点が後方にある場合、前方グループがもつ輝度バッファ(フィルタリングにより領域が拡大されている)のレンダリング点の暗度値を読み出し、所定量の値が存在すれば、後記のソフトシャドウ処理を行い、値がなければ(領域外を含めて)他のグループ物体による影はないものとする。この場合、(2)と同様に自身のグループ内でのみ影の判定を行う。影となる場合はアンブラ影として描画する。
(4)レンダリング点が、グループ識別子の異なる物体のz値の、最大最小値の間に位置している場合、そのグループがもつシャドウバッファのz値と、レンダリング点のz値とをそれぞれ比較し、影となる場合はアンブラ影として描画する。さらに自身のグループのシャドウバッファのz値との比較で影となる場合はアンブラ影として描画する。いずれも影でなければレンダリング点は照射点となる。物体形状が、他の識別子をもつシャドウバッファのz値範囲内から範囲外(後方に)まで連なる形状をもつ場合には、レンダリング点はそのz値範囲内においてアンブラ影を、範囲外では(3)のソフトシャドウ処理を行う。
【011】
ソフトシャドウにおけるアンブラとペナンブラ分布は、遮光物体に近いほど影のボケは小さくシャープであり、また周辺光の回り込み量が少なく暗い。一方遮光物体から離れる従って、ボケが広がり、明るくなる。これは光源の形状と環境光に関係する。この関係は、面光源の情報が既知として、影が投下されるレンダリング点と遮光物体までの距離で表現できるが、特願平11−317268では、この関係を数式モデル化するために、レンダリング点と遮光物体までの距離をパラメータとするシグモイド関数に類似したペナンブラ関数を設け、これをあらかじめRAMテーブル化し、前記の距離をアドレスに用いて関数値を読み出し、この値をフィルタリングされた影の輝度にスケーリングして、レンダリング点の輝度を決定する方法が提案されていた。本発明は、フィルタリングした輝度バッファの暗度と、フィルタリング前のフラグバッファとの間を、レンダリング点と遮光物体までの距離を用いて補間する(フラグバッファの1は暗度255、0を照射部0値として扱う)。例えばシャドウポリゴンの影の部分(デフォルト値)を255レベルとし、照射面を0レベルとすれば、フィルタリング後の影の暗度は255から0の間に分布する。前記[008]のフラグバッファと輝度バッファを設けることにより、x、y座標が同一点であっても、輝度バッファ上では、例えば暗度100の値があり、一方、フラグバッファ上では0あるいは1(255とする)の値を取りうる場合がある。この数値間をレンダリング点と遮光物体までの距離で比例配分すれば、レンダリング点が遮光物体に近ければフラグバッファが0のとき0、1であれば255に近くなり、遮光物体から離れるほど暗度は、フィルタリング値に近くなる。本発明では、この2つのシャドウバッファを用いて、遮光物体からの距離を重み付けとして補間する。以上から本発明では特願平11−317268と異なりペナンブラ関数は不要となる。
【012】
以上から本発明は、多数の遮光物体により生じた重畳する影を描画する手段に関し、アンブラおよびペナンブラを正確に表現するためには遮光物体毎に独立したシャドウバッファが必要となる問題点を解決する手段として、複数のシャドウバッファを設けると共に、幾何学的に近接する、あるいは階層的に構成された物体どうしをグループ化して、グループ単位でそれぞれのシャドウバッファに隠面消去法を用いてシャドウポリゴンを記憶する手段と、それぞれのシャドウバッファには、シャドウポリゴンの領域を示す情報を記憶するシャドウレジスタを設ける手段と、さらにシャドウバッファ毎にシャドウポリゴン領域から決定される影の部分を、暗度に数値化し、またフラグ化した、輝度バッファとフラグバッファをそれぞれ設ける手段と、輝度バッファをフィルタリングして、暗度のグラデーションを生成する手段と、前記、シャドウレジスタ、輝度バッファおよびフラグバッファを用いて、第2パスのレンダリング点でのアンブラおよびペナンブラ暗度を決定する手段をもって、ソフトシャドウを描画するものである。これら技術をLSIに実装し、コンピュータグラフィックス等また画像処理回路に組み込むことで、高品質な映像装置が得られることになる。
【発明の効果】
【013】
本発明によりコンピュータグラフィックスにおいて、物体間の幾何学的関係の認知に最も重要な機能である影を、広がりを持ったソフトなイメージで描画することが可能となり、高品質な映像を描画できる。
【発明を実施するための最良の形態】
【014】
本発明の回路はグラフィックスLSIに実装するか、IP(Intelligent Property)としての形態で実施される。
【実施例】
【015】
以下、本発明の実施例を説明する。図1には本発明に係わるソフトシャドウ様態の上部から見た遮光物体と影の様態を示す。遮光物体11が光源10によってアンブラ(真影部)12とペナンブラ(半暗部)をもつ。アンブラ、ペナンブラ共に実際の影は、図1に示すようにシャープな角をもつものではなくボケた丸みをもつが簡略化してある。
【016】
図2は本発明に係わるソフトシャドウの決定方法の説明図である。図2(a)は遮光物体11が光源10によって平面20にアンブラ領域12とペナンブラ領域13を落としている。光源から見た遮光物体11は、図2(b)に示すシャドウバッファ21にシャドウポリゴン22として描画され、シャドウポリゴン22にはそれぞれの物体の光源からの距離z値が記憶される。図2(c)は図2(b)のシャドウバッファ21をz値ではなく、数値1/0に置き変えたフラグバッファ23にシャドウポリゴン領域24を1としてコピーしたものである。またフラグバッファの領域1を暗部最大値の255と見なしてフィルタリングし、破線領域25に広がった状態をもつ輝度バッファ26を図2(d)示す。領域25は255(領域24の中心部)から0(破線外部)までの数値変化をもつ。フィルタリングにより広がった領域のz値(この値は輝度バッファ上には記憶されないが)は、zの最大値(光源から最も離れたシャドウポリゴンのz値)と見なす。第2パスにおいて、図2(a)のA点をレンダリングする際、ソフトシャドウとは、この点が影か否か、影の場合その輝度あるいは暗度は幾つかを決定するものである。いま、平面20をレンダリングし、A点において、A点の座標を光源座標系に変換すると、A点はフラグバッファ23上ではA(Iau)となり、シャドウポリゴンの外部となる。一方、フィルタ後の輝度バッファ26のA点は拡大された領域に入り0−255の間のいずれかの値となっている。A点の輝度決定は、フラグバッファ23(255か0の2値)と輝度バッファ26の暗度間を補間して求める。この補間は、図2(a)の遮光物体上の点aとレンダリング点A間の距離を用い、1例として線形(指数関数あるいは2次関数的な変化であっても良い)に補間する。距離が小さければフィルタ前のフラグバッファ空間上の値A(Iau)(図2の例では照射部)に近く、距離が大きければフィルタ後の輝度バッファ上の0−255の間の値A(Iap)となる。一方、図2(a)のB点は図2(c)、図2(d)でそれぞれB(Ibu)とB(Ibp)となるが、バッファ23上では遮光物体に対してA点と同じような位置関係にあるが、遮光物体近傍b点から平面上のB点までの距離が短いため補間点暗度は図2(c)のB(Ibu)寄りとなり、この点は影ではなく照射部であるため、図2(a)のB点において暗度は低く明るい状態(影の外)となる。
最終的な輝度は、照明モデルやテキスチャーで決定された輝度に、前記方法で求めた補間値を正規化(1/255)した値を乗算することで決定する。
【017】
図3は本発明に係わる複数の遮光物体のアンブラ、ペナンブラが互いに重畳している図を示したものである。遮光物体30のアンブラ領域31とペナンブラ領域32(一部)は、遮光物体11のペナンブラ領域13と重なっており、また遮光物体30は遮光物体11のアンブラ、ペナンブラいずれとも影を重畳している。
【018】
図4は本発明のバッファ構造を示す。シャドウバッファ40はシャドウポリゴン41のz値を記憶し、バッファは、例えば64x64サイズの画素からなる4つのセルm0、m1、m2、m3で構成する。図の例ではシャドウバッファの全体サイズは128x128となる。それぞれのシャドウバッファは、そのバッファに記憶されるグループ物体の識別子、x、y、z座標の最大最小値、また光源に最も近い順位(zの最小値で決定)を示す値のそれぞれ記憶するシャドウレジスタ42をもつ。さらにシャドウポリゴンの領域を1/0示すフラグバッファ43と、その領域をフィルタリング(1を暗度最大値255と見なし)して領域の拡大した輝度バッファ45を設け、バッファ43にはシャドウポリゴンの領域44を値1、その他の領域を0とする。またバッファ45はバッファ43のシャドウポリゴン領域44をフィルタリングした結果、0−255の範囲のグラデーションをもつ領域46を記憶したものを示す。本発明ではグループ識別子単位毎にシャドウレジスタ、バッファ40、43および45のそれぞれで構成し、40はz値(通常は24から32ビット)、バッファ40は1ビット構成、またバッファ45は8ビットで構成する。バッファ40と43は同一のxyサイズ、バッファ45は、フィルタリングによって広がる可能性があるためバッファ43に対してやや大きめの(例えばセル1個分の幅をフィルタ前のシャドウポリゴン44の周辺に付加した)サイズとなることがある。バッファ43および45は図2のバッファ23および25に相当する。これらバッファ構成から、レンダリング点が他の識別子をもつすべてのシャドウバッファのz値よりも光源に近い場合には、自身の識別子をもつシャドウバッファ内でz値の比較を行って影(アンブラ)の有無を決定し、一方、他の識別子をもつシャドウバッファのz値の最大・最小値の範囲内に位置していた場合には、その識別子をもつバッファ40のz値と、自身のシャドウバッファの40とのz値の比較を行い影(アンプラ)の有無を決定し、また他の識別子をもつシャドウバッファの完全後方に位置した場合には、自身のシャドウバッファ40とのz値比較による影(アンブラ)と、前方に位置する輝度バッファ43と45を用いて影(ペナンブラ)の有無を判定する。このように本発明ではレンダリング物体自身の識別子をもつシャドウバッファによる影判定と、レンダリング点の位置に対応した他の識別子をもつシャドウバッファや輝度バッファを用いて、アンブラやペナンブルを決定する。シャドウレジスタの順位値はレンダリング点のグループ物体のz値と、他の識別子をもつシャドウバッファとのz値との位置関係を検索するための効率を図るために設けるものである。
【019】
レンダリング点に対して前記判定の対象となるシャドウバッファが複数ある場合には、それぞれの識別子毎のシャドウバッファや輝度バッファとの前記判定を行い、その結果複数の暗度が得られた場合には、レンダリング点毎にそれらを加算(より暗くなる)して影の値を決定する。レンダリング点から対象となるシャドウバッファを検索する手段は、レンダリング点のxyの範囲と、他の識別子のもつxy最大最小値の範囲にセルサイズを加減算(領域を広げた)した値とを比較し、その範囲内であれば影の判定対象とする。
【020】
図5は本発明の第2パスにおける半暗影生成レンダラーを示す。図においてポリゴン内挿補間回路50で求めたxyz座標および頂点属性情報(面法線や視線ベクトルなど)の内、座標値は光源系座標変換回路52にて光源系座標値に変換する。これら座標値はシャドウバッファ、フラグバッファ、輝度バッファからなるバッファ55のアドレスを生成するキャッシュアドレス制御回路53に加わり、所定の物理アドレスに変換した後、バッファ55およびシャドウレジスタ54にアクセスし、記憶されているxyz最大最小値、識別子等を読み出し、これらと光源系座標値との間で比較器56にて、レンダリング点の位置関係を計算・検索する。またバッファから読み出されたz値はz値差分計算回路57にて遮光物体からレンダリング点までの距離を計算する。この差分値は輝度バッファからの情報によって補間回路59にて0から255の範囲のペナンブラ暗度を決定する。また同時に前記差分値はアンプラ生成回路58に加わり、アンブラの周辺光の回り込みによる輝度スケールを行う。このアンブラ値と前記ペナンブラ値とを加算器5Bにて加算し、これがアンブラとペナンブラを含めた影の暗度となる。レンダリング点が複数の影を受ける(キャッシュアドレス制御回路によってシャドウレジスタの対象数が複数あると判定された)場合、積算器5Cにおいて、その重畳する影の数分を加算累積する。また暗度を、真影を255、照射を0値としてそれぞれの回路では計算されているため、(1−暗度/255)に積算器5Cにおいて正規化した後、第2パスでのポリゴン内挿補間属性値を受けてテキスチャー、光反射計算などを行うシェーダー51の輝度(これは通常赤、緑、青の3原色の輝度データ)と、乗算器5Dで乗算して、最終輝度Ipを出力する。比較器56の出力では、x、y、z値との比較によって、レンダリング点と他のグループ物体や自身のグループ物体との幾何学的な関係が求め、マルチプレクサ5Aの選択信号を生成し、アンブラのみの場合、ペナンブラとアンブラ合成の場合それぞれの入力選択を行う。よって比較器56は比較のための減算器だけでなく、その結果から起動するシークエンサーで構成する。
【産業上の利用可能性】
【021】
本発明の回路はIP(Intelligent property)として提供したり、グラフィックスプロセッサLSIに実装されることで、CG映像製作やアムーズメントシステムに利用される。
【図面の簡単な説明】
【022】
【図1】「本発明に係わるソフトシャドウ関係図を示す。」
【図2】「本発明に係わる遮光物体とソフトシャドウの関係を示す。」
【図3】「本発明に係わる影の重畳関係を示す。」
【図4】「本発明に係わるバッファ構成を示す。」
【図5】「本発明のソフトシャドウ生成回路構成を示す。」
【符号の説明】
図1
10 光源
11 遮光物体
12 アンブラ部
13 ペナンブラ部
図2
20 平面
21 シャドウバッファ
22 シャドウポリゴン
23 フラグバッファ
24 シャドウポリゴン領域
25 フィルタリング領域
26 輝度バッファ
図3
30 遮光物体
31 アンブラ部
32 ペナンブラ部
33 ペナンブラ重畳部
図4
40 シャドウバッファ
41 シャドウポリゴン
42 シャドウレジスタ
43 フラグバッファ
44 シャドウポリゴン領域
45 輝度バッファ
46 フィルタリング領域
図5
50 ポリゴン内挿補間回路
51 シェーダー
52 光源系座標変換回路
53 キャッシュアドレス制御回路
54 シャドウレジスタ
55 バッファ
56 比較器
57 z値差分計算回路
58 アンプラ生成回路
59 補間回路
5A マルチプレクサ
5B 加算器
5C 積算器
5D 乗算器

【特許請求の範囲】
【請求項1】
コンピュータグラフィックスによる影の半暗部を表現する手段に関し、遮光物体にグループ識別子を設け、グループ識別子毎に設けたシャドウポリゴンのz値を記憶するシャドウバッファ、シャドウポリゴンの輝度を記憶する輝度バッファおよびシャドウポリゴンのある画素を示すフラグバッファをそれぞれ具備し、光源座標系レンダリングの第1パスにおいて前記それぞれのバッファに所定のデータを書き込む手段と、すべての前記グループ識別子に含まれる遮光物体描画後に、前記輝度バッファをフィルタリングして、輝度のグラデーションを生成する手段と、視点座標系レンダリングの第2パスにおいて、レンダリング点座標値を光源座標系に変換し、それぞれの前記シャドウポリゴンに記憶された光源からの距離を比較し、影であると判断された場合には、前記それぞれのバッファの情報を用いて半暗影の輝度を決定する半暗影生成レンダラー。
【請求項2】
請求項1の回路において、第2パスにおける半暗領域(以下ペナンブラという)の輝度を決定する手段として、レンダリング点と遮光物体までの距離を求める手段と、前記フラグバッファにはフラグの有効な領域を暗度最大値、それ以外の領域を最小値としてレンダリング点のフラグバッファを、また前記輝度グラデーションをもつ輝度バッファから輝度をそれぞれ読み出し、前記レンダリング点から遮光物までの距離を用いて、レンダリング点が遮光物体に近い場合にはフラグバッファ値を、遠ければ輝度バッファ値を補間して半暗影を決定する半暗影生成レンダラー。
【請求項3】
請求項1および2の回路において、シャドウバッファには、前記グループ識別子、シャドウポリゴンのx、y、z値の最大最小値、光源からの順位をそれぞれ記憶するレジスタを設ける手段と、第1パスにおいて、グループ識別子毎に1つのシャドウバッファを割り当てて遮光物体をレンダリングし、前記x、y、zの最大最小値を更新記憶すると共に、グループ毎のレンダリング終了時には、他のシャドウバッファのもつz値と比較して、光源からの順位を更新する手段と、第2パスにおいて、レンダリング点の影の有無の判定は、それぞれのシャドウポリゴンの前記レジスタの順位の高いものから順次比較する手段と、レンダリング点が他のシャドウバッファに対して最も光源に近い場合には、自身のグループ識別子内のシャドウバッファを用いて影の判定を行い、影であると判定された場合にはレンダリング点は真影(以下アンブラという)とする手段と、レンダリング点が他のシャドウバッファの中間に位置する場合には、前記他のシャドウバッファと自身のシャドウバッファを用いて影の判定を行い、影であればアンブラとして描画する手段と、レンダリング点が他のシャドウバッファより遠方に位置する場合には、前方に位置する全てのシャドウバッファが持つ前記フラグバッファと輝度バッファの補間を行って請求項2の手段によりペナンブラの暗度を求め、複数影のある場合には前記暗度を加算し、また自身の識別子のシャドウバッファによる影がある場合には、前記暗度の加算値に、さらに自身のアンブラ加算した暗度で影を描画するそれぞれの手段を持つ半暗影生成レンダラー。
【請求項4】
請求項1および2の回路において、それぞれのシャドウポリゴンのとの比較において、レンダリング点と遮光物体との距離、また輝度バッファのフィルタリングによって拡大した暗度領域からレンダリング点まで距離はそれぞれ、z値の最大(光源から最も離れた)と最小(光源に最も近い)値点から計算したものとする半暗影生成レンダラー。
【請求項5】
請求項1から4までに記載の半暗影生成レンダラー用いたコンピュータグラフィック画像装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate