説明

コンピュータ・グラフィックス回路及びこの回路を用いて、二次元表示システムに表示される三次元オブジェクトに適用される二次元擬似ランダム・テクスチャ・パターンを、一次元テクスチャ画像を用いて生成する三次元コンピュータ・グラフィックス装置

【課題】コンピュータ・システムにおいて二次元テクスチャ座標を算出するシステムにおいてメモリサイズ及び回路サイズの問題を解決する。
【解決手段】二次元テクスチャ座標(u,v)を求め、前記座標u及びvを用いて2つのランダム値の一次元区間を2個生成し、前記ランダム値の一次元区間2個を結合して、4つのランダム値の二次元区間を1個生成し、前記テクスチャ座標(u,v)及び前記4つのランダム値の二次元区間に応じて、ランダム値を生成し、前記ランダム値と前記入力テクスチャ座標(u,v)を結合して、変換された前記二次元テクスチャ座標(u’,v’)を得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、擬似ランダム・テクスチャ・パターンの生成に関する。一次元テクスチャ画像が、二次元画像テクスチャを生成するフレームワークとして用いられる。より正確には、二次元テクスチャ画像に一次元テクスチャを投影する特殊な投影法を用いて二次元画像テクスチャが生成される。
【背景技術】
【0002】
コンピュータ・グラフィックスにおいては、幾何学的なオブジェクトが二次元表示システムに表示される。結果として得られる画像の現実性を向上させるため、幾何学図形はテクスチャと組み合わされることが多い。テクスチャは画像として、あるいはパターンとして、オブジェクトの表面に塗られているように見える。例えば、二次元表示システム上に山を描くには、四辺形を形状として使用し、山の画像をテクスチャとして使用することができる。山の画像はテクスチャ座標を用いて形状に加えることができる。形状の各ポイント毎に、1つのテクスチャ座標が定義される。このテクスチャ座標は、画像の中の配置をも定義する。幾何学空間と画像空間との対応付けはテクスチャ・マッピングと呼ばれている。従来のコンピュータ・グラフィックス・システムにおいては、幾何学的なオブジェクトが描画され、二次元表示システム上のポイントに対応するオブジェクトの各ポイントについて、対応するテクスチャ座標を使用することにより、テクスチャ画像におけるポイントを決定し、その結果或る色が得られる。そして、この色が表示されるのである。この説明は、非常に簡略化したものである。テクスチャリング及びテクスチャマッピングはコンピュータ・グラフィックスにおいて一般的な技術である。例えば、非特許文献[非特許文献1]参照。この技術を、以下、静的二次元テクスチャと称する。
【0003】
あるオブジェクトに二次元テクスチャ画像をマッピングすることはコンピュータ・グラフィックスにおいて徹底的に使用されており、非常に有効である。とはいえ、オブジェクトによっては、この技術が最適のものではないこともある。例えば、壁を考えてみると、どこも同じパターンを示しており、微々たる変化があるだけ、すなわち、煉瓦とモルタルで出来た壁は同じ煉瓦・モルタルをどこでも示しているように見える、しかし注意深く見ると違いが見えてくる(例えば、モルタルが多少厚いなど)。このような、反復性があるが異なるパターンを生成するには、二次元テクスチャに対する代替手段(あるいは、拡張手段)が存在する。それは、プロシージャル・テクスチャと呼ばれるものである。静的二次元画像を使用する代わりに、ある関数(プロシージャ)を用いて擬似ランダムパターンをいくつか生成する。プロシージャル・テクスチャ技術の説明は非特許文献2(D. Ebert等「テクスチャリング及びモデリング:プロシージャル手法」)に記載されている。この技術を、以下、プロシージャル・テクスチャと称する。なお、プロシージャル・テクスチャは二次元テクスチャと組み合わせて使用することができる。プロシージャル関数が入力テクスチャ座標に摂動を与えた後、摂動された入力座標が使用され、二次元テクスチャ画像を用いた出力色が定義される。
【0004】
静的及びプロシージャルの両技術において、与えられた入力テクスチャ座標(u, v)毎に出力色を定義するためにさまざまな計算が行われる。静的二次元テクスチャでは、主に、テクスチャ座標を画像空間の或るポイントにマッピングすることにより或る色を定義するためのマッピング機能で構成され、また、プロシージャル関数としては、例えば入力座標(u,v)を(u’,v’)にマッピングする特別な関数が定義されており、その後、(u’,v’)がテクスチャ・マッピング機能に使用される。
【0005】
この書面では、静的二次元テクスチャとプロシージャル・テクスチャとの中間に存在するテクスチャリングの新規技術を提案し、さらに、新規のテクスチャ・マッピング技術も提案する。この新規技術は以下のように要約できる。或る入力テクスチャ座標(u,v)が与えられると、まず、雑音関数を用いて(u,v)に摂動を与え、(u’,v’)を得た後、特別のマッピング・ユニットが二次元テクスチャ座標(u’,v’)を一次元テクスチャ座標(t)にマッピングする。次に、この一次元テクスチャ座標を用いて一次元テクスチャ画像が指定される。
【0006】
この新しい技術を使用することにより、興味深いテクスチャを得ることができる。それは、異なる二つの種類に分類することができる。
【0007】
摂動が与えられない場合には、通常の幾何学的テクスチャが得られる。このようなテクスチャの例としては、例えば、グレア(けばけばしさ)、フレア(ゆらめき)、ハロー(円光)、又は薄い織物の表面の反復的モチーフ(四角、丸等)。特定の二次元から一次元へのマッピング機能に関する特許文献は見つからなかった。
【0008】
摂動が使用された場合には、木や大理石のような自然に見えるテクスチャが得られる。摂動モジュールを用いて得られる視覚的な結果は、非特許文献2(D. Ebert等「テクスチャリング及びモデリング:プロシージャル手法」)で提案されている結果に近い。この書面で提案されているものは、摂動モジュールに基づくものである。このモジュールの動作は特許文献(K. Perlin 「雑音対応方法及び装置」)W0 01/39126 A1(特許文献1)で提案された雑音関数にどことなく類似している。入力及び出力は類似しているが、出力値を得る手段が異なっている。雑音関数は三つのステップに依存している。例えば、何らかのハッシュ値を計算し、グラディエントを計算し、これらの値を補間して一つの値を得る。本発明の一実施例は、これらのステップの変形例によるものである。ハッシュ値の計算は置換表に依存しており、ハッシュ値はグラディエントを計算するのに使用される。本発明の好適な実施例の一つは、表やグラディエントを使用せず、非常に簡単な乱数発生とこれらの乱数の重み付け関数によるものである。本発明の別の実施例は補間手法を参照しており、摂動のパラメータ化を増大し、ひいては結果として得られるテクスチャの見栄えを向上させる特定の回路を提案している。全ての実施例を組み合わせると特許文献W0 01/39126 A1(特許文献1)で提案された雑音モジュールとは異なるモジュールを規定することになる。
【0009】
他の同様なモジュールは、特許文献(K. Perlin 「Perlinノイズ用基準」米国特許番号第6,867,776 B2号(特許文献2)に規定されている。W001/39126 A1(特許文献1)と同様に、ハッシュ値及びグラディエントが使用されている。本発明の好適な一実施例は、ハッシュ値及びグラディエントを使用しないが、重み付けランダム値に基づいている。特許文献2に記載された方法は双一次補間を用いていないが、代わりに球面カーネルと呼ばれる関数を用いている。
【0010】
【特許文献1】Perlin Kenneth, 「雑音対応方法及び装置」国際公開番号第WO 01/39126A1号
【特許文献2】Perlin Kenneth, 「Perlinノイズ用基準」米国特許番号第6,867,776 B2号
【非特許文献1】J.D. Foly, A. Van Dam, S.K. Feiner, 及びJ.F. Hugues「コンピュータ・グラフィックス:原理と実践」第2版, ADDISON-WESLY, ISBN: 0-201-84840-6,1995.
【非特許文献2】D. Ebert等「テクスチャリング及びモデリング:プロシージャル手法」第3版, Morgan Kaufmann Publishers, ISBN1-55860-848-6, 2003
【発明の開示】
【発明が解決しようとする課題】
【0011】
コンピュータ・グラフィックスにおいては、二次元テクスチャ画像を作成し表示するとき、テクスチャ・ユニットというモジュールを使用するのが一般的である。これは、二次元座標(u,v)、いわゆるテクスチャ座標を用いて、メモリに格納された二次元画像の特定の位置にアクセスするインデックスを計算するものである。インデックス計算には、膨大な計算が必要であり、二次元画像を格納することはメモリの観点から費用がかかる。この技術は静的、すなわちメモリに格納された二次元画像次第で様々な画像結果を得るための構成パラメータが非常に少ないものである。
【0012】
木、石等といった、いわゆるナチュラル・テクスチャ用には、プロシージャル・テクスチャと呼ばれる別の手法がある。しかし、プロシージャル・テクスチャを作成するには、プログラム制御可能な回路(フラグメントシェーダと呼ばれる)が必要であることが多い。このような汎用のプログラム制御可能なハードウェア回路は通常グラフィックチップの重要な部分をなしており、ハードウェアの大きさの観点から非常に大きいものである。
【0013】
開示された発明の関心事はナチュラル・テクスチャ、又は擬似ランダム反復性テクスチャの生成であり、さらには幾何学的な規則性を示すテクスチャ(例えば、グレア、フレア、ハロー、又は薄い織物の表面に印刷された反復的モチーフ)の生成である。静的二次元テクスチャ及びプロシージャルテクスチャは共に、このようなテクスチャを作成することができる。提案された発明では、二次元テクスチャ画像を生成するためにギャップを埋めることを提案する。これは、完全に静的な二次元テクスチャとプロシージャル・テクスチャとの間のトレードオフである。この書面で開示されている一連の回路はいくつかの構成パラメータを提供するが、静的二次元テクスチャよりも高い柔軟性(但し、フラグメントシェーダにおいて定義されているプロシージャル・テクスチャよりは低い柔軟性)を、フラグメント・シェーダよりも(また、静的二次元テクスチャよりも)ずっと小さい回路規模で可能にする。
【課題を解決するための手段】
【0014】
メモリサイズ及び回路規模の要件の問題を解決するために使用するシステムは次のように分解することができる。前節で列挙した問題を解決するため、三つの手段が組み合わされたものが使われる。
【0015】
二次元テクスチャの代わりに一次元テクスチャを使用し、メモリサイズの要件を緩和する。
入力二次元テクスチャ座標を摂動する専用の回路を使用し、結果として得られる二次元テクスチャにおいて目に見える変形を行う。
【0016】
専用のマッピング回路で設定(変更)可能なものを使用し、摂動された二次元テクスチャ座標を一次元出力テクスチャ座標にマッピングし、これをメモリに格納された一次元テクスチャ画像のアドレス指定に用いる。
【0017】
第1の態様:プロシージャル一次元擬似ランダム・パターン生成
本発明の第1の態様が対象とするのは、コンピュータ・システムにおいて二次元テクスチャ座標を算出するシステムであって、二次元テクスチャ座標(u,v)を求める第1手段と、前記座標u及びvを用いて2つのランダム値の一次元区間(interval)を2個生成する第2手段と、前記ランダム値の一次元区間2個を結合して、4つのランダム値の二次元区間を1個生成する第3手段と、前記テクスチャ座標(u,v)及び前記4つのランダム値の二次元区間に応じて、ランダム値を生成する第4手段と、前記ランダム値と前記入力テクスチャ座標(u,v)を結合して、変換された前記二次元テクスチャ座標(u’,v’)を得る第5手段と、を備えたことを特徴とするシステムである。
【0018】
本発明の第1の態様の好適な例の一つは、上記において、前記第2手段が、u又はv座標のいずれかを入力して2つのランダム値(u0,u1)及び(v0,v1)の前記一次元区間を得る、分離しているが同様な(identical)乱数発生器2個を具備しており、前記第3手段が、前記ランダム値(u0,u1)及び(v0,v1)の一次元区間2個を結合して二次元区間[(u0,v0),(u1,v1)]を得ることを特徴としたシステムである。
【0019】
本発明の第1の態様の好適な一例は、上記において、前記第2手段が、u又はv座標のいずれか(以下、“t”と称することもある。)を入力して2つのランダム値(u0,u1)及び(v0,v1)の一次元区間を得る手段であって、分離しているが同様な乱数発生器2個を備えており、ここで各乱数発生器は、2つの数値TA及びTBを前記入力値“t”から算出する手段であって、TBが1未満の浮動小数値でありTA+TBが1に等しいものと、前記値TBをランダム値TTに投影する手段と、2つの数値TTA及びTTBを前記値TTから算出する手段であって、TTBが1未満の浮動小数値でありTTA+TTBが1に等しいものと、ランダム値を生成する手段であって、前記パラメータの集合{TA,TTA}及び{TA,TTA+1}を用いる結果として2つのランダム値T1及びT2を生成するものと、を具備し、前記第3手段が、ランダム値(u0,u1)及び(v0,v1)の一次元区間2個を結合して、二次元区間[(u0,v0),(u1,v1)]を得る手段であって、一定の整数値であって以下“magic_mask”と称するものを用いる手段と、2つの新規の数値であって以下“maskA”及び“maskB”と称するものを、前記2つのランダム値u0及びu1を用いて算出する手段と、ランダム値を算出する手段であって、4組の入力{u0,v0,maskA}, {u0,v1,maskA},{u1,v0,maskB}, 及び{u1,v1,maskB}を用いる結果としてランダム値R1, R2, R3, 及びR4を得るものと、を具備するものを備え、前記第5手段が、UUB及びVVBを前記乱数発生器から得る手段であって、事前に指定された値TTBは、前記座標uが前記乱数発生器の入力として用いられた場合はUUBに等しく、また同様に、前記乱数発生器が前記座標vを入力として用いられた場合はVVBに等しいものと、加重ランダム値を算出する手段であって、4組の入力{R1, UUB, VVB}, {R2, UUB-1.0, VVB}, {R3, UUB, VVB-1.0}, 及び{R4, UUB-1.0, VVB-1.0}を用いる結果として4つの加重値r1, r2, r3及びr4を得るものと、ランダム値RVを、r1,r2, r3, r4, UUB, 及びVVBを入力として用いて算出する手段で、双一次補間モジュールを具備するものであって、r1,r2, r3及びr4が補間された値であり、UUB及びVVBが補間用パラメータであるものと、を備え、前記システムが、前記ランダム値の生成を制御する手段であって、前記入力座標(u,v)を変更する手段と、前記出力値RVを変更する手段と、を具備するものをさらに備え、前記第5手段が、前記RVと前記入力座標(u,v)とを結合して前記出力(u’,v’)を得る手段であるシステムである。
【0020】
本発明の第1の態様の好適な一例は、上記のいずれかにおいて、前記システムが、前記
ランダム値の生成を制御する手段であって、前記入力座標(u,v)を変更する手段であって
、各入力u及びvについて、スケーリング、トランスレーション、及びクランピング演算を行い、スケーリング及びトランスレーション係数及びクランピング動作タイプを得る手段を具備するものと、前記出力値RVを変更する手段であって、スケーリング及びトランスレーション演算を行い、スケーリング係数及びクランピング動作タイプを得る手段を具備するものと、を具備するものをさらに備え、前記第2手段が、u又はv座標のいずれか(以下、“t”と称することもある。)を入力して2つのランダム値(u0,u1)及び(v0,v1)の一次元区間を得る手段であって、分離しているが同様な乱数発生器2個を備えており、ここで各乱数発生器は、2つの数値TA及びTBを前記入力値“t”から算出する手段であって、TBが1未満の浮動小数値でありTA+TBが1に等しいものと、前記値TBをランダム値TTに投影する手段であって、以下magic_shift1と称する一定値を得る手段と、TBを前記区間[0,magic_shift1]内に投影する結果としてTTを得る手段と、を具備するものと、2つの数値TTA及びTTBを前記値TTから算出する手段であって、TTBが1未満の浮動小数値でありTTA+TTBが1に等しいものと、ランダム値を生成する手段であって、前記パラメータの集合{TA,TTA}及び{TA,TTA+1}を用いる結果として2つのランダム値T1及びT2をそれぞれ生成するものであって、以下“magic_mask”, “magic_shift1”, 及び“magic_shift”と称する一定値を定義して使用する手段と、以下“maskT”と称する擬似ランダム値を、D値(TA又はTA+1のいずれかに対応した値)を用いて算出する手段と、TA又はTA+1のいずれかを用い、且つ値TTA及び事前に算出した値“maskT”を用いて乱数Rを算出する手段と、を具備するものと、を備え、前記第3手段が、ランダム値(u0,u1)及び(v0,v1)の一次元区間2個を結合して、二次元区間[(u0,v0),(u1,v1)]を得る手段であって、以下“magic_mask”と称する定数を得る手段と、2つの新規の数値であって以下“maskA”及び“maskB”と称するものを、前記2つのランダム値u0及びu1を用いて算出する手段と、独立して4回使用されるランダム値を算出する手段であって、4組の入力{u0,v0,maskA}, {u0,v1,maskA}, {u1,v0,maskB}, 及び{u1,v1,maskB}を用いる結果としてランダム値R1, R2, R3, 及びR4を得るものと、を具備するものを備え、前記第5手段が、UUB及びVVBを前記乱数発生器から得る手段であって、事前に指定された数値TTBは、前記座標uが前記乱数発生器の入力として用いられた場合はUUBに等しく、また同様に、前記乱数発生器が前記座標vを入力として用いられた場合はVVBに等しいものと、独立して4回使用される重ランダム値を算出する手段であって、4組の入力{R1, UUB, VVB}, {R2, UUB-1.0, VVB},{R3, UUB, VVB-1.0}及び{R4, UUB-1.0, VVB-1.0}を用いる結果として4つの加重値r1, r2,r3, 及びr4を得るものと、ランダム値RVを、r1, r2, r3, r4, UUB, 及びVVBを入力として用い、また双一次補間モジュールを用いて算出する手段であって、r1,
r2, r3及びr4が補間された値であり、UUB及びVVBが補間用パラメータであるものと、UUB及びVVBを変更して双一次補間動作を制御する手段と、前記ランダム値RVと前記入力座標(u,v)とを結合して出力(u’,v’)を得る手段と、を備えたシステムである。
【0021】
本発明の第1の態様の好適な一実施例は、上記のいずれかにおいて、前記第2手段が、u又はv座標のいずれか(以下、“t”と称することもある。)を入力して2つのランダム値(u0,u1)及び(v0,v1)の一次元区間を得る、分離しているが同様な乱数発生器2個を用いて2つのランダム値の一次元区間を2個生成する手段であり、ここで各乱数発生器は、2つの数値TA及びTBを前記入力値“t”から算出する手段であって、TBが1未満の浮動小数値でありTA+TBが1に等しいものと、前記値TBをランダム値TTに投影する手段であって、以下“magic_shift1”と称する一定値を得る手段と、TBを前記区間[0,magic_shift1]内に投影する結果としてTTを得る手段であって、単一のマルチプレクサを具備してTT = TB*magic_shift1を計算するものと、を具備するものと、2つの数値TTA及びTTBを前記値TTから算出する手段であって、TTBが1未満の浮動小数値でありTTA+TTBが1に等しいものと、ランダム値を生成する手段であって、前記パラメータの集合{TA,TTA}及び{TA,TTA+1}を用いる結果として2つのランダム値T1及びT2をそれぞれ生成するものであって、以下“magic_shift1”,“magic_mask”, 及び“magic_shift2”と称する一定値を得る手段と、以下の値、すなわち以下“maskT”と称する擬似ランダム値を、TTA又はTTA+1のいずれかを入力として用いて算出する手段であり、“ifステートメント論理回路”、マルチプレクサ、及び論理右ビットシフト演算子(>>)を具備し、もし、Dと表示され且つTTA又はTTA+1のいずれかに等しい前記入力値が、厳密に“magic_shift1”より低ければ、以下の値を算出し、
maskT = magic_mask>>(TA*magic_shift2)
さもなくば、以下の値を算出するものと、
maskT = magic_mask>>((TA+1)*magic_shift2);
Dと表示され且つTA又はTA+1のいずれかに等しい入力値及び“maskT”を入力として用いて乱数Rを算出する手段であって、“ifステートメント論理回路”、マルチプレクサ、及びビット論理演算子“XOR”(^で表す)を具備し、もし、Dが“magic_shift1”より低ければ、以下の値を算出し、R = ((1+TTA)*magic_shift2)^maskTさもなくば、次の値を算出するものと、R = ((1)*magic_shift2)^maskTを具備するものと、を備え、前記第3手段が、ランダム値(u0,u1)及び(v0,v1)の一次元区間2個を結合して、二次元区間[(u0,v0),(u1,v1)]を得る手段であって、 “magic_mask”を得る手段と、以下“maskA”及び“maskB”と称する以下の2つの値を、前記2つのランダム値u0及びu1を用いて算出する手段であって、各maskの算出は、単一の論理右ビットシフト演算子を具備し、入力値“t”について次の計算をするものと、mask =(magic_mask>>t)ここで、“t”はu0又はu1のいずれかに等しく結果として得られる値“mask”は、それぞれ“maskA”又は“maskB”のいずれかに等しくなるものとし、ランダム値を算出する手段であって、4組の入力{u0,v0,maskA}, {u0,v1,maskA},{u1,v0,maskB}, 及び{u1,v1,maskB}を用いる結果としてランダム値R1, R2, R3, 及びR4を得るものであって、加算器及びビット論理XOR (^)演算子を具備し、各入力{s,t,mask}について次の値を算出するものと、R=(s+t)^maskを備え、前記第5手段が、UUB及びVVBを前記乱数発生器から得る手段であって、事前に指定された数値TTBは、前記座標uが前記乱数発生器の入力として用いられた場合はUUBに等しく、また同様に、前記乱数発生器が前記座標vを入力として用いられた場合はVVBに等しいものと、独立して4回使用される加重ランダム値を算出する手段であって、4組の入力{R1, UUB, VVB}, {R2, UUB-1.0, VVB},{R3, UUB, VVB-1.0}, 及び{R4, UUB-1.0, VVB-1.0}を用いる結果として4つの加重値r1, r2, r3, 及びr4を得るものであり、各モジュールが加算器及びマルチプレクサを具備し、各入力{R,a,b}について次の値r = R*(a+b)を算出するものと、ランダム値RVを、r1, r2,r3, r4, UUB, 及びVVBを入力として用い、また双一次補間モジュールを用いて算出する手段であって、r1,r2, r3, 及びr4が補間された値であり、UUB及びVVBが補間用パラメータであるものであって、UUB及びVVBを変更して双一次補間動作を制御する手段であって、前記区間[0,1]におけるUUB及びVVBが定義されているときUUB及びVVBをUUB’及びVVB’にマッピングする参照テーブルと、双一次補間動作用のパラメータとしてUUB’及びVVB’を用いて双一次補間を算出する手段と、を具備したものと、を備え、前記システムが、前記ランダム値の生成を制御する手段であって、前記入力座標(u,v)を変更するために、各入力u及びvについて、スケーリング、トランスレーション、及びクランピング演算を行い、加算器、マルチプレクサ、及びクランピング回路で構成されたものと、スケーリング及びトランスレーション係数及びクランピング動作タイプを得る手段と、を具備するものと、前記出力値RVを変更する手段であって、スケーリング演算を行い、マルチプレクサで構成されたものと、スケーリング係数及びクランピング動作タイプを得る手段と、を具備するものと、をさらに備え、前記第5手段が、前記RVと前記入力座標(u,v)とを結合して出力(u’,v’)を得る手段であり、2つの加算器及び2つの“ifステートメント論理回路”を具備し、独立してu’及びv’座標を以下のように求める:もし(u>0)ならば u’=u+RV さもなくば u’=u-RV、もし(v>0) ならば v’=v+RV さもなくば v’=v-RV、システムである。
【0022】
第2の態様:一次元テクスチャ画像及び設定可能な二次元から一次元へのマッピング関数を用いた二次元テクスチャ画像生成
【0023】
本発明の第2の態様が対象とするのは、テクスチャ座標(u,v)を得る第1手段と、前記テクスチャ座標(u,v)を一次元テクスチャ座標(t)に投影する第2手段と、メモリに格納された一次元テクスチャ画像を、前記一次元テクスチャ座標(t)を用いてアクセスして獲得する第3手段と、前記一次元テクスチャ画像を用いて二次元テクスチャ画像を生成する第4手段と、を備えたことを特徴とする、二次元テクスチャ画像を生成するシステムである。本発明の第2の態様の好適な一例が対象とするのは、上記において、前記第2手段が、2つの関数G1及びG2を複数の固定関数から選択する手段と、あらゆる実関数、以下Fと称する、を表す参照テーブルを定義する手段と、前記関数G1、G2、及びFを結合する手段と、を備えたシステムである。
【0024】
本発明の第2の態様の好適な例は、上記において、前記第2手段が、2つの関数G1及びG2を、{u, v, u+v, u-v, u^2, v^2, sqrt(u^2+v^2),u+v+sqrt(u^2+v^2), u+v-sqrt(u^2+v^2), min(u,v), max(u,v), constant}に等しい関数G(u,v)から選択する手段であって、“sqrt”は数学関数である平方根であり、x^2はxの二乗(xのx倍)であるものと、あらゆる実関数で以下Fと称するものを表す参照テーブルを定義する手段と、前記関数G1、G2、及びFを結合する手段であって、G1を参照テーブルFのの入力として用い、これによりF(G1(u,v))を算出する手段と、参照テーブルの出力とG2を用いて、参照テーブルの出力とG2との積を算出して、結果として値値F(G1 (u,v))*G2(u,v)を得る手段と、を具備するものと、を備え、前記第3手段が、一次元テクスチャ画像F(G1 (u,v))*G2(u,v)を用いるシステムである。
【発明の効果】
【0025】
本発明は、新しい一連の簡単な関数に基づく新しいグラフィック回路であって、グラフィック・チップに回路として容易に実装可能なものを提供することが出来る。
本発明は、新しいグラフィック回路であって、バッファ・アクセス無しに従来のテクスチャ関連技術より少ない動作でメモリのコストを削減することが可能なものを提供することが出来る。
本発明は、一次元入力テクスチャ画像から二次元テクスチャ画像を与えるシステムを提供することが出来、設定を変えれば、二次元テクスチャ画像が興味深い視覚的な特性、例えば擬似的なランダム性(でたらめさ)、反復性等、いわゆるナチュラル・テクスチャ(木、大理石等)に見られる特性だけでなく、幾何学的な特徴(グレア、ハロー、薄い織物の表面に印刷されたモチーフ等)を有するテクスチャも表示することが出来る。
【発明を実施するための最良の形態】
【0026】
従来のテクスチャ・ユニット(コンピュータ・グラフィックスにおいては周知のユニット)は通常次のような役割を担っている。或る入力テクスチャ座標(u,v)が与えられると、出力色RGBA(赤、緑、青、及びアルファ)を生成するために、さまざまな計算が行われる。RGBAにおいて、アルファは一般的に透明性を示している。「課題を解決する手段」の節で説明した三つの手段は、組み合わせると完全なテクスチャ・ユニットを成す。入力二次元テクスチャ座標(u,v)が与えられると、出力色RGBAが生成される。図1は、提案された手段をモジュールに分解した様子を示している。第1段階では、(u,v)座標を摂動し、結果として(u’,v’)を得る。第2段階では、二次元座標(u,v)を一次元座標tにマッピングし、最終段階では、一次元座標tを一次元テクスチャ画像を含む参照テーブルにおけるインデックスとして使用する。図1は、開示された発明を2つのモジュールに分解した様子を示している。入力二次元テクスチャ座標(u,v)が与えられると、モジュール1000(摂動部)が(u,v)を変更し、結果として(u’,v’)を得た後、これらが二次元座標を一次元座標tに対応付けるモジュール3000 CMapの入力として使用される。この一次元座標は、されにモジュール5000における一次元テクスチャ参照テーブルにおけるインデックスとして使用される。
【0027】
第1の態様:プロシージャル一次元擬似ランダム・パターン生成
モジュール1000:PERTUBATER
発明の第1の態様は入力二次元テクスチャ座標(u,v)の摂動に関する。Pertubaterモジュールは、コンピュータ・システムにおいて二次元テクスチャ座標を算出するシステムであって、二次元テクスチャ座標(u,v)を求める第1手段と、前記座標u及びvを用いて2つのランダム値の一次元区間を2個生成する第2手段と、前記ランダム値の一次元区間2個を結合して、4つのランダム値の二次元区間を1個生成する第3手段と、前記テクスチャ座標(u,v)及び前記4つのランダム値の二次元区間に応じて、ランダム値を生成する第4手段と、前記ランダム値と前記入力テクスチャ座標(u,v)を結合して、変換された前記二次元テクスチャ座標(u’,v’)を得る第5手段と、を備えたことを特徴とするシステムである。
【0028】
第1手段がu及びvを求める。第2手段がu及びvを得て2個の一次元区間を生成する。第3手段が、一次元区間2個を結合して4つのランダム値の二次元区間を得る。第4手段が、二次元区間値を得てランダム値を生成する。第5手段が、ランダム値と入力テクスチャ座標(u,v)を結合して、二次元テクスチャ座標を摂動した(u’,v’)を得る。
【0029】
第1のシステムでは、いずれかの先行するモジュールからの通常のバス入力について説明した。第2のシステムは、2つ乱数発生器で構成された汎用モジュールである。この汎用モジュールにおいては、乱数発生器の数が使用される。例えば、2回、1回目は入力uを用い、2回目は入力vを用いる。4つのランダム値が生成される。このとき、(u0, u1)はuを入力とし、(v0,v1)はvを入力とするものである。図2は、モジュール1000 Perturbaterをサブモジュールに分解した様子を示している。以下、これらの各サブモジュールについて説明する。
【0030】
モジュール1100:random1D
random1Dモジュールは、モジュール1000内で2回インスタンス化される。また、座標u及びvについて別々に使用される。或る入力座標tが与えられると、このモジュールのタスクは2つのランダム値及び浮動小数値を生成し、これらは後にそれぞれ、random2Dモジュール(1200)及びランダム結合(randomCombiner)モジュール(1300)で使用される。ランダム値の生成を担当するモジュールは、以下、pseudoRandomGenerator1Dと称する(このモジュールはモジュールrandom1D内で2回インスタンス化され、random1Dモジュールが2回インスタンス化されるので、このモジュールのインスタンスが合計で4つ存在することになる)。
【0031】
モジュールpseudoRandomGenerator1Dの機能は以下の通りである。これは、3つの“magic”数を使用する。これらの数が単に符号なしの整数であり興味深いビット表現を有していると定義すれば十分である。第1のmagic数は“magic mask”と称することとし、符号なしの長い値(32ビット)である。他の2つを以下、“magic_shift1”及び“magic_shift2”と称することとし、それぞれ4ビット値及び8ビット値である。3つのmagic数は全て定数である。提案されるビット長は、説明のために示されたものである。開示された発明を大幅に変更すれば、他のビット長も選択することが出来る。これらのビット長を使用する主な利点は、このモジュールの超小型化(ハードウエアの観点で)である。
【0032】
まず、入力パラメータt(u又はvに等しいもの)が2つの値、TA及びTBに、但し、TBが1未満であり、TA+TBがtに等しくなるように分解される。値TAは、以下のように定義されるmaskTと呼ばれる値を生成するのに使用される。
【0033】
MaskT= (magic_mask >>
((TA*magic_shift2)&0xF))&0xF (1)
ここで、&はビットのAND演算であり、&0xFは最初の4ビット(最下位)が考慮される、言い換えれば、maskTは4ビット値であり、このことがこの関数を非常に小さな回路で実現可能にしている。明確さのために&0xFと書くが、実際のハードウェア実装においては、この演算は適正な回路実装により暗黙的に定義することが出来る。
【0034】
一方、(すなわち、平行して)、別の回路を用いて値TBを区間[0, magic_shift1]に投影
し、この投影の結果が値TTである。
TT = (TB)*magic_shift1. (2)
同様に、値TTが2つの部分、TTA及びTTBに分解されるが、このとき、TTBが1未満であり、TTA+TTBがTTに等しくなる。値TTBは、モジュールrandomCombiner(1300)において使用される。
【0035】
値TTAは、事前に計算されたmaskT(式(1)参照)と共に、実際に乱数を発生するのに使
用される。次に、TTAに対応するランダム値は以下のように定義される:
t0=((((1+TTA)*magic_shift2)&0xF)^MaskT)&0xF (3)
【0036】
出力は、4ビット値として定義される乱数(むろん、擬似乱数)である。モジュール1100 Random1Dは実際に2つのランダム値を、与えられた入力座標tについて生成する。この理由は、入力座標tをランダム空間の区間にマッピングしたいからである。このモジュールの目的は、2つのランダム値を定義することであって、t及びその周辺の区間が投影されるランダム空間に或る区間を定義することではない。言い換えれば、ランダム値は各tの値について生成されるべきではなく、むしろ或るランダム区間がtに隣接している区間に対して定義されるべきである。
【0037】
区間を生成する場合は、連続性を考慮すべきであり、もし、或る与えられた入力値につ
いてランダム空間における区間[R0,R1]が生成されるならば、次の区間は[R1,R2]でなけれ
ばならないということを保証しなければならない。式(3)から分かるように、値TTは区間[0,magic_shift1]内にある。一定の連続性を保証するためには、TTAが値“magic_shift1”に等しいケースを特別のプロシージャが扱うべきである。TTAが値“magic_shift1”以上である場合には、式(1)及び(3)がそれぞれ以下のようになる:
MaskT= (magic_mask >>
(((TA+1)*magic_shift2)&0xF))&0xF (1’)
t0=((((1)*magic_shift2)&0xF)^MaskT)&0xF (3’)
先に言及したように、非常に小さなビット幅で十分である。
【0038】
モジュールpseudoRandomGenerator1Dの好適な例は、前記第2手段が、u又はv座標のいずれか(以下、“t”と称することもある。)を入力して2つのランダム値(u0,u1)及び(v0,v1)の一次元区間を得る、分離しているが同様な乱数発生器2個を用いて2つのランダム値の一次元区間を2個生成する手段であり、ここで各乱数発生器は、2つの数値TA及びTBを前記入力値“t”から算出する手段であって、TBが1未満の浮動小数値でありTA+TBが1に等しいものと、前記値TBをランダム値TTに投影する手段であって、以下“magic_shift1“t”と称する一定値を得る手段と、TBを前記区間[0,magic_shift1]内に投影する結果としてTTを得る手段であって、単一のマルチプレクサを具備してTT = TB*magic_shift1を計算するものと、を具備するものと、2つの数値TTA及びTTBを前記値TTから算出する手段であって、TTBが1未満の浮動小数値でありTTA+TTBが1に等しいものと、ランダム値を生成する手段であって、前記パラメータの集合{TA,TTA}及び{TA,TTA+1}を用いる結果として2つのランダム値T1及びT2をそれぞれ生成するものであって、以下“magic_shift1”, “magic_mask”, 及び“magic_shift2”と称する一定値を得る手段と、以下の値、すなわち以下“maskT”と称する擬似ランダム値を、TTA又はTTA+1のいずかを入力として用いて算出する手段であり、“ifステートメント論理回路”、マルチプレクサ、及び論理右ビットシフト演算子(>>)を具備し、もし、Dと表示され且つTTA又はTTA+1のいずれかに等しい前記入力値が、厳密に“magic_shift1”より低ければ、以下の値を算出し、
maskT = magic_mask>>(TA*magic_shift2)
さもなくば、以下の値を算出するものと、
maskT = magic_mask>>((TA+1)*magic_shift2);
Dと表示され且つTA又はTA+1のいずれかに等しい入力値及び“maskT”を入力として用いて乱数Rを算出する手段であって、“ifステートメント論理回路”、マルチプレクサ、及びビット論理演算子“XOR”(^で表す)を具備し、もし、Dが“magic_shift1”より低ければ、以下の値R =((1+TTA)*magic_shift2)^maskTを算出し、さもなくば、次の値R =((1)*magic_shift2)^maskTを算出するものと、を具備するものと、を備え、前記第3手段が、ランダム値(u0,u1)及び(v0,v1)の一次元区間2個を結合して、二次元区間[(u0,v0),(u1,v1)]を得る手段であって、
“magic_mask”を得る手段と、以下“maskA”及び“maskB”と称する以下の2つの値を、前記2つのランダム値u0及びu1を用いて算出する手段であって、各maskの算出は、単一の論理右ビットシフト演算子を具備し、入力値“t”について次の計算をするものと、mask=(magic_mask>>t)
ここで、“t”はu0又はu1のいずれかに等しく結果として得られる値“mask”は、それぞれ“maskA”又は“maskB”のいずれかに等しくなるものとし、ランダム値を算出する手段であって、4組の入力{u0,v0,maskA}, {u0,v1,maskA},{u1,v0,maskB}, 及び{u1,v1,maskB}を用いる結果としてランダム値R1, R2, R3, 及びR4を得るものであって、加算器及びビット論理XOR (^)演算子を具備し、各入力{s,t,mask}について次の値R=(s+t)^maskを算出するものと、を備え、前記第5手段が、UUB及びVVBを前記乱数発生器から得る手段であって、事前に指定された数値TTBは、前記座標uが前記乱数
発生器の入力として用いられた場合はUUBに等しく、また同様に、前記乱数発生器が前記座標vを入力として用いられた場合はVVBに等しいものと、独立して4回使用される加重ランダム値を算出する手段であって、4組の入力{R1, UUB, VVB}, {R2, UUB-1.0, VVB},{R3, UUB, VVB-1.0}, 及び{R4, UUB-1.0, VVB-1.0}を用いる結果として4つの加重値r1, r2, r3, 及びr4を得るものであり、各モジュールが加算器及びマルチプレクサを具備し、各入力{R,a,b}について次の値r = R*(a+b)を算出するものと、ランダム値RVを、r1, r2,r3, r4, UUB, 及びVVBを入力として用い、また双一次補間モジュールを用いて算出する手段であって、r1,r2, r3, 及びr4が補間された値であり、UUB及びVVBが補間用パラメータであるものであって、UUB及びVVBを変更して双一次補間動作を制御する手段であって、前記区間[0,1]におけるUUB及びVVBが定義されているときUUB及びVVBをUUB’及びVVB’にマッピングする参照テーブルと、双一次補間動作用のパラメータとしてUUB’及びVVB’を用いて双一次補間を算出する手段と、を具備したものと、を備え、前記システムが、前記ランダム値の生成を
制御する手段であって、前記入力座標(u,v)を変更するために、各入力u及びvについて、スケーリング、トランスレーション、及びクランピング演算を行い、加算器、マルチプレクサ、及びクランピング回路で構成されたものと、スケーリング及びトランスレーション係数及びクランピング動作タイプを得る手段と、を具備するものと、前記出力値RVを変更する手段であって、スケーリング演算を行い、マルチプレクサで構成されたものと、スケーリング係数及びクランピング動作タイプを得る手段と、を具備するものと、をさらに備え、前記第5手段が、前記RVと前記入力座標(u,v)とを結合して出力(u’,v’)を得る手段であり、2つの加算器及び2つの“ifステートメント論理回路”を具備し、独立してu’及びv’座標を以下のように求めるものである:
もし(u>0) ならば u’=u+RV さもなくば
u’=u-RV
もし(v>0) ならば v’=v+RV さもなくば
v’=v-RV。
【0039】
図2に示すように、モジュールrandom1Dの出力は乱数(t0,t1)の区間及び値TTBである。
このモジュールは、u又はvを入力として用いて2回インスタンス化される。入力値がuである場合、出力はタプル(u0,u1,UUB)であり、入力値がvである場合、出力タプルは(v0,v1,VVB)である。ランダム区間[u0,u1]及び[v0,v1]がモジュール1200 (random2D)の入力として用いられ、値UUB及びVVBがモジュール1300 (randomCombiner)において用いられる。
【0040】
モジュール1200:random2D
このモジュールの入力は2つのランダム値の区間[u0,u1]及び[v0,v1]である。一次元区間を生成するために使用する手段により、区間[u0,u1]及び[v0,v1]が無相関であることは明らかである。Random2Dモジュールは4つの新しいランダム値を2つの一次元入力区間[u0,u1]及び[v0,v1]を用いて生成する役割を担っている。
【0041】
この回路の好適な実施例は、非常に小さな回路の4つのインスタンスを使用することであり、ここでは、各回路が1つのランダム値を異なる一連の入力値から生成する。この回路を、以下、pseudoRandomGenerator2Dと称する。
【0042】
random2Dモジュールは、まず、この回路用に4セットの入力として、{u0, v0, maskA},{u0, v1, maskA}, {u1, v0, maskB}, 及び{u1, v1, maskB}と定義されるものを生成する。値maskA及びmaskBもまた、単一の論理右ビットシフト演算を用いて4ビット値として表すことが出来る。これらのマスク値を計算する好適な実施例は、以下のプロシージャを実装した回路であればよい:
【0043】
maskA= ((magic_mask>>(u0)))&0xF;
maskB= ((magic_mask>>(u1)))&0xF;
【0044】
maskA及びmaskBの値を計算した後、回路pseudoRandomGenerator2Dの4つのインスタンスを一連の入力パラメータ{u0,v0,maskA}, {u0,v1,maskA}, {u1,v0,maskB}, 及び{u1,v1,maskB}と平行して使用する。この回路の好適な実施例は、加算器と、ビットシフトとXOR演算子とで構成され、各演算が4ビット値で定義されているため、結果として非常に小さい回路規模になる。
【0045】
モジュールrandom2Dの好適な例は:定数magic_maskを使用する手段と、2つの新しい4ビット数であって、以下、maskA及びmaskBと称するものを、2つのランダム値u0及びu1を用いて計算し、このとき、各マスク演算は単一の論理右ビットシフト演算(4ビット)で構成され、入力値tについて次の値mask = (magic_mask>>t)&0xFを計算する手段であって:ここで、tはu0又はu1に等しく、結果として得られる4ビット値はそれぞれmaskA又はmaskBに等しくなるようなものと、4回独立して使用される4ビットのランダム値を、4セットの入力{u0,v0,maskA}, {u0,v1,maskA},{u1,v0,maskB}, 及び{u1,v1,maskB}を用いて計算し、結果として4ビットのランダム値R1,R2, R3, 及びR4を得るものであり、各モジュールが加算器及びビット論理演算子XOR(^)で構成され各入力{s,t,mask}について以下の値R=((s+t)^mask)&0xFを計算する手段であって:ここで、Rは4ビットのランダム値であるものを備えている。
【0046】
4ビットのランダム値{R1, R2, R3,R4}はモジュール1400 randomCombinerにおいて使用される。
【0047】
モジュール1300:randomCombiner
このモジュールの入力は、モジュール1200 random2Dからのランダム値R1, R2, R3, 及びR4並びにモジュール1100 random1Dの2つのインスタンスからのUUB及びVVBである。このモジュールの役割は、最終的なランダム値であって、最初の入力座標(u, v)を摂動するのに使用されるものを生成することである。最終的なランダム値RVの生成は、2つの主要ステップに分解することが出来る。
【0048】
まず、重み付け関数がR1, R2, R3, 及びR4に適用され、結果として4つの新しいランダム値r1, r2, r3, 及びr4が得られる。重み付け関数の好適な実施例は、4セットの異なる入力で同様な回路を4回使用し、重み付け関数を符号付の距離関数として定義することである。この関数rの選択は重要である。
【0049】
特許文献WO 01/39126 A1においては、この関数の代わりに、いわゆるグラディエント計算を用いている。グラディエント関数の使用が意味するのは、与えられたハッシュコード(言い換えれば、参照テーブルを用いて連続した置換により得られたある種の乱数)について、或る特定のグラディエントが計算され、結果として加重値が得られることである。ハッシュコードはグラディエントを定義するためのみに使用される、すなわち、どの入力値を加算又は減算するかを示すが、ハッシュコードそのものの値は実際のグラディエントの計算には使用されない。同様に、グラディエントの計算は、引用された特許文献WO 01/39126 A1において提案された回路で4回実行され、結果として4つの加重値が得られる。
【0050】
randomCombinerの目的は、グラディエント計算と同様であるが、その手段及び得られた値の意味は全く異なる。本発明においては、重み付け関数の好適な実施例は単純化した符号付の距離関数に基づいている。第1の主な違いは、符号付の距離関数を計算する回路を実装するには、ifステートメントやビット比較を、特許文献WO 01/39126 A1で提案された回路のようには、必要としないことである。2つの入力が与えられると、符号付の距離が直接求められた後、符号付の距離値が各ランダム値に重みを付ける重み付けの値として使用される。グラディエント関数の場合においては、ハッシュコードを復号しなければならず、入力値からの選択をしなければならず、選択された値の中には無効にしなければならないものもあり、ハッシュコードによっては選択された値が結合(加算)される。乱数の尺度は入力値の選択を行うときに導入され、ハッシュコードに依存する。ハッシュコードの値は最終的なグラディエントの計算には使用されない。
【0051】
この最後の文が主な違いの1つを説明している。すなわち、本発明では、ランダム値が重み付けされる値であり、重み付けする値は符号付の距離関数として計算される。符号付の距離関数を実装する好適な実施例は、2つの入力値A及びB、1つの加算器、及び値A+Bを出力する回路(以下、SignedDistanceと称する。)として定義される。4つのランダム値R1,R2, R3, 及びR4に重み付けするため、回路SignedDistanceは、4セットの入力{R1, UUB,VVB}, {R2, UUB-1.0, VVB},{R3, UUB, VVB-1.0}, 及び{R4, UUB-1.0, VVB-1.0}で4回使用される。三重項{r, a, b}においては、a及びbの特定の選択により単純化された符号付の距離を定義することができ、a+bと表すことが出来る。
【0052】
重み付け回路の好適な例は、SignedDistance回路に重み付け計算を含めることであり、以下、randomWeighting回路と改称する。この回路は、モジュール1300randomCombinerにおいて、4セットの入力{R1,UUB, VVB}, {R2, UUB-1.0, VVB}, {R3, UUB, VVB-1.0}, 及び{R4,UUB-1.0, VVB-1.0}で4回繰り返される。randomWeighting回路の各インスタンスは、加算器及びマルチプレクサで構成され、新しいランダム値r = R*(a+b)の値を定める。
【0053】
なお、Rは4ビット値であり、a及びbは2つの浮動小数値であることに留意する。浮動小数を16ビットを用いて定義すれば、良い結果(すなわち、最終画像中に目に見える不自然さが無いこと)を得るのに十分である。値Rは、何らかの、好ましくは区間[-1, 1]内の、浮動小数値に変換することができる。Rが4ビット値であることから、この変換は簡単(たった16の可能性ある浮動小数値のみ)である。提案されたビット幅は、品質と回路規模の間の良いトレードオフを提供している。
【0054】
4つのrandomWeighting回路は、4つの加重ランダム値r1, r2, r3, 及びr4を出力する。モジュール1300 randomCombinerの第2の主要なステップは、重み付けされた雑音値r1, r2, r3, 及びr4を双一次補間を用いて補間することである。双一次補間に使用されるパラメータはUUB及びVVBから導き出す。
【0055】
特許文献WO 01/39126 A1においては、同様な手法が提案されている。パラメータとして2つの値を用いて、グラディエントに対して双一次補間を行っている。明確化のため、以下の比較においては、sを入力パラメータの1つとし、s’をsが変更された値であってグラディエントの補間に使用されるものであるとする。特許文献WO 01/39126 A1においては、参照テーブルを用いてsがs’に対応付けられる。参照テーブルは、二次多項式関数、いわゆるイーズ曲線を含んでいる。このマッピングの目的は、双一次補間の結果の連続性を高めることであると主張されている。さらに、多項式関数の選択肢が固定されているため、テーブルのプロパティ(内容のビット幅及びテーブルエントリのビット幅)は固定されている。
【0056】
この書面で開示される発明においても、参照テーブルが使用される。しかしながら、参照テーブルの入力は、定義により区間[0, 1]における16ビットの浮動小数値であるから、より精度が高い。本発明における参照テーブルの目的は、必ずしも双一次補間の結果の連続性を高めることではない。その目的は、結果として得られるテクスチャの見栄えを制御する(ユーザのための)手段を提供することが重要であるため、より総合的なものである。この意味で、参照テーブルは、外部データを用いてこのテーブルを初期化できるような回路に定義されている。初期化とは、誰か(ユーザ)があらゆる事前計算された関数を参照テーブルにロードすることが出来るという意味である。この可能性を提供することにより、開示された発明は柔軟性及び設定変更の可能性を大いに向上させ、テクスチャ・パターンのより豊富な種類が得られるようにする。関数の例としては、定数関数、バイアス関数、利得関数、三角関数及び多項式関数が挙げられるが、これに限定されるものではない。
【0057】
前述の参照テーブルは入力パラメータUUB及びVVBをUUB’及びVVB’に変換する。これらの値は、次に双一次補間を行うために使用される。UUB’は(r1,r2)及び(r3,r4)を直線的に補間し、結果として2つの値を得て、これらの2つの値がVVB’を用いて補間される。最終結果はランダム値RVである。
【0058】
最後のステップは、初期座標(u,v)をランダム値RVで摂動することである。このステップは摂動座標モジュール(1500)によって行われる。本発明の好適な実施例の一つは、単にu及びvに対して、それぞれu及びvの符号に従ってRVを加算するか減算するものである。このような例を定義する回路は、2つのifステートメント論理回路と、2つの否定演算子、及び2つの加算器で構成され、以下の計算を行う:
もし(u>0) ならば u’=u+RV さもなくば
u’=u-RV
もし(v>0) ならば v’=v+RV さもなくば
v’=v-RV
【0059】
摂動された座標(u’,v’)は、次にモジュール3000で使用される。
ランダム値の生成を制御するのに好適な例は、一連のスケーリング、トランスレーション、及びクランピング演算を使用するものである。これは、2つの異なる制御、事前制御と事後制御に分解することが出来る。第1の制御は、ランダム値を計算する前に入力座標(u, v)に適用されるが、事後制御は出力値RVに対して適用される。
【0060】
事前制御のためのスケーリング及びトランスレーション演算は、好適な例において加算器及びマルチプレクサとして実装され、各入力座標u及びvについて、tと総称される値を(t+translation)*scaleとして計算する。ここで、translation及びscaleがどこか別の場所で(一般的にはユーザによって)定義された何らかの値である。一般的に、結果として得られる値はその後従来のクランピング演算を用いてクランプされ、出力値が区間[0, 1]内になるようになる。クランピング演算は、コンピュータ・グラフィックスにおいて周知のクランピング演算であり、開示された発明において新規発明には含まれていない。クランピング演算の例はいくつかあるが、エッジ演算、リピート関数、及びミラー関数が含まれる。
【0061】
事後制御動作は事前制御動作と同様であるが、出力値RVに適用される点が異なる。好適な実施例の一つは、事後演算を、値RV*scaleを計算するマルチプレクサとして実装し、ここで、scaleはどこか別の場所で定義される(一般的にはユーザ定義)別の値とする。同様なクランピング演算が、結果として得られる値にも行われ、結果が確実に区間[0,1]内に収まるようにする。
【0062】
第2の態様:一次元テクスチャ画像及び設定可能な二次元から一次元へのマッピング関数を用いた二次元テクスチャ画像生成
この書面に開示された発明の第2の態様は、図1に示したモジュール3000に相当する。このモジュールはCoordinates Mapping、略してCMap、と呼ばれる。名前が示しているように、このモジュールの役割は二次元入力座標(u,
v)(雑音モジュールの出力(u’,v’)からの可能性あり)を一次元テクスチャ座標(t)にマッピングすることである。
【0063】
発明の第2の態様は基本的に、
テクスチャ座標(u,v)を得る第1手段と、
前記テクスチャ座標(u,v)を一次元テクスチャ座標(t)に投影する第2手段と、メモリに格納された一次元テクスチャ画像を、前記一次元テクスチャ座標(t)を用いてアクセスして獲得する第3手段と、前記一次元テクスチャ画像を用いて二次元テクスチャ画像を生成する第4手段と、を備えたことを特徴とする、二次元テクスチャ画像を生成するシステムを対象としている。
【0064】
第1手段は、u及びvを得る。第2手段は、テクスチャ座標(u,v)を一次元テクスチャ座標(t)に投影する。第3手段は、一次元テクスチャ座標(t)を用いて一次元テクスチャ画像にアクセスしてこれを獲得する。第4手段は、一次元テクスチャ画像を用いて二次元テクスチャ画像を生成する。
【0065】
第2の態様の好適な一例は、上記のシステムにおいて、前記第2手段が、2つの関数G1及びG2を複数の固定関数から選択する手段と、あらゆる実関数、以下Fと称する、を表す参照テーブルを定義する手段と、前記関数G1、G2、及びFを結合する手段と、を備えたものを対象としている。
【0066】
第2の態様の好適な例は、上記のシステムにおいて、前記第2手段が、2つの関数G1及びG2を、{u, v, u+v, u-v, u^2, v^2, sqrt(u2+v2),
u+v+sqrt(u2+v2), u+v-sqrt(u2+v2), min(u,v), max(u,v), constant}に等しい関数G(u,v)から選択する手段であって、“sqrt”は数学関数である平方根であり、x^2はxの二乗(xのx倍)であるものと、あらゆる実関数で以下Fと称するものを表す参照テーブルを定義する手段と、前記関数G1、G2、及びFを結合する手段であって、G1を参照テーブルFのの入力として用い、これによりF(G1(u,v))を算出する手段と、参照テーブルの出力とG2を用いて、参照テーブルの出力とG2との積を算出して、結果として値値F(G1 (u,v))*G2(u.v)を得る手段と、を具備するものと、を備え、前記第3手段が、一次元テクスチャ画像F(G1 (u,v))*G2(u.v)を用いるものを対象としている。
【0067】
上記手段の好適な例は、合計4つの加算器と、3つのマルチプレクサと、平方根演算子とを使用した非常に小さな回路である。この回路の主な利点は、以下、Mapと称し、二次元
点(u,v)を一次元点tに対応付けるマッピング関数を定義することである。このマッピングは、3つの関数の合成であり、一般的に次のように表現することが出来る:
F(G1(u,v))*G2(u,v), (4)
ここで、G1及びG2は一連の固定関数の中から選択され、Fは参照テーブルである。好適
な実施例における代表的な一連の固定関数には以下の関数が含まれる。
【0068】
(5)
| G(u,v) = u (5a)
| G(u,v) = v (5b)
| G(u,v) = u^2 (5c)
| G(u,v) = v^2 (5d)
| G(u,v) = u^2+v^2 (5e)
| G(u,v) = sqrt(u^2+v^2) (5f)
| G(u,v) = u+v+sqrt(u^2+v^2) (5g)
| G(u,v) = u+v-sqrt(u^2+v^2) (5h)
| G(u,v) = min(u,v) (5i)
| G(u,v) = max(u,v) (5j)
| G(u,v) = constant (5k)
【0069】
この固定関数のセットを実装する回路は、5つの加算器、2つのマルチプレクサ、及び平方根演算子を含んでいる。主な利点は、参照テーブルへの入力の選択肢の多様性、及び結果の多様性である。もちろん、この多様性は完全にプログラマブルな回路(すなわち、フラグメントシェーダ)よりもかなり低いが、いくつかのケースでは十分である。それは、コンピュータ・グラフィックスにおいてコンテクストのテクスチャリングに頻繁に使用される数学関数のいくつかを表現することができるからである。
【0070】
例えば、式(5e)及び(5f)は距離関数を表現しているが、従って、適切な参照テーブルを用いれば、全ての可能性の或る、ガウス関数及びその他全ての距離を基にした関数を実現することができる。可能性のある一連の関数で距離関数に基づくものは、次の参考資料(C. Blanc 尾及び C. Schlick. 「ソフトオブジェクト用拡張フィールド関数」 mplicitSurfaces'95, Eurographics/ACM SIGGRAPH Workshop, 頁21-32, 1995年)を参照できる。
【0071】
式(5h)-(5i)及び(5g)-(5j)は周知の関数min/maxを、様々な連続性のレベルで定義している。集合理論的関数のより詳細な説明には、次の参考資料を用いることが出来る。(A.Pasko, V. Adzhiev, A. Sourin, 及び V.Savchenko. 「幾何学モデリングにおける関数表記:概念、実装及び応用」The VisualComputer, 11(8):429-446, 1995年)なお、集合理論的演算のみを使用したいと望む場合には、恒等関数を参照テーブルにロードし、G2は定数1に設定すればよい。別の一般的な関数は、いわゆる正規関数であり、u/sqrt(u^2+v^2)と表現される。この関数は、開示された実施例を用い、sqrt(u^2+v^2)に等しいG1、uに等しいG2、及び事前に抽出された関数1/xが設定された参照テーブルに相当する参照テーブルを選択すれば、求めることが出来る。
【0072】
モジュール3000 CMapを実装する回路の好適な実施例は、式(5a)から(5k)で表現された関数の集合である。これは、回路規模と柔軟性の間の良いトレードオフとなる。回路規模が重大な問題でない場合には、他の固定関数を追加することにより柔軟性を向上させることが出来るのは明らかである。また、ハードウェア規模が大きな問題でないならば、いくつかの他の構成により投影関数を拡張することが出来ることも明らかである。例えば、提案された実施例は、F2(F(G1(u,v))*G2(u,v))*G3(u,v)に拡張することができ、ここでF2及びG3の可能性としては、新しい2つの回路であって固定関数の新規の集合或いは新規テーブルを定義するものである。
【0073】
開示された発明の最終ステップは、式(4)で定義された値(t)を用いて、一次元テクスチャ画像におけるインデックスを計算し、結果としてRGBA色を得ることである。インデックス計算の好適な実施例には、コンピュータ・グラフィックス及びテクスチャ関連技術における通常の技術が含まれる。インデックス計算は開示された発明の請求の範囲の一部ではない。
【0074】
この書面に開示された本発明の端的な拡張は、単一の値tの代わりに2つの出力値t_rgb及びt_aを生成することである。これにより、RGB色及びA(アルファ)値をそれぞれ別々にインデックス付けすることができ、自由度を向上させることが出来る。この拡張の好適な例は、二次元クランプドテクスチャ座標(u,v)を一次元テクスチャ座標(t)に投影する手段であって、4つの関数G1_rgb, G2_rgb, G1_a, 及びG2_aを、いくつかの固定関数の中から選択する手段であって、固定関数としては、{u,v,u+v,u-v,u^2,v^2,sqrt(u2+v2),u+v+sqrt(u2+v2), u+v-sqrt(u2+v2), min(u,v), max(u,v)}に等しいG(u,v)であって、sqrtは数学的関数である平方根、及びx^2はxの二乗(xのx倍)を含むものであるが、これに限定されず、5つの加算器と、2つのマルチプレクサと1つの平方根演算子を備えたものと、2つの参照テーブルであって、以下、F_rgb及びF_aに対応するあらゆる実数を提示するものと、
一方で関数G1_rgb, G2_rgb, 及びF_rgbを結合し、他方でG1_a, G2_a, 及びF_aを結合する手段であって、参照テーブルF_rgbの入力としてG1_rgbを求め、これによりF_rgb (G1_rgb (u,v))を計算する手段と、G2_rgbを求め、参照テーブルの出力とG2_rgbとの積を計算し、結果として値F_rgb(G1_rgb (u,v))* G2_rgb(u,v)を1つのマルチプレクサを用いて求める手段と、参照テーブルF_aの入力としてG1_aを求め、これによりF_a(G1_a(u,v))を計算する手段と、G2_aを求め、参照テーブルの出力とG2_aとの積を計算し、結果として値F_a(G1_rgb (u,v))* G2_a(u,v)を1つのマルチプレクサを用いて求める手段と、を備えたものと、で構成される。
【0075】
この好適な例を使用すれば、ほんの僅かなハードウェアの変更、すなわち、追加の参照テーブル1つ、追加のマルチプレクサ1つ、及び入力関数G1_rgb, G2_rgb, G1_a, 及びG2_aを選択する手段の拡張.によって、RGB及びAに別々の処理を施すことができる
【実施例1】
【0076】
図3に示す例は、本明細書において開示された発明により結果として得られる画像の一例である。マッピング関数の様々な選択の様子が示されている。入力の幾何学図形は四辺形であり、左下角のテクスチャ座標(u0, v0)が(-1,-1)に等しく、右上角のテクスチャ座標(u1, v1)が(1, 1)に等しく、u座標は画像の中の横軸に沿っている。一次元テクスチャ画像は2色の配列である。第1の色は白であり、第2の色は黒である。この初期設定を用いて3つの画像が生成される。マッピング関数が変わるだけである。マッピング関数の一般形は以下の通りである: Map(u,v)=F(G1(u,v))*G2(u,v)
【0077】
第1の画像では、固定関数G1をG1(u,v) = uと定義し、第2の固定関数G2をG2(u,v)=1と定義し、関数F(参照テーブル)をF(x) = x (恒等関数)と定義している。従って、最終的な関数は、Map(u,v)=uである。テクスチャ画像が黒と白の2色しか含まないことを思い出せば、予測可能な結果は灰色のグラディエントである。uが0に等しければ、結果として得られる色は白であり、uが1に等しければ、結果は黒であり、その中間では、中間色は灰色である。
【0078】
第2の画像では、固定関数G1をG1(u,v)=u^2+v^2と定義し、第2の固定関数G2をG2(u,v)=u^2と定義し、関数F(参照テーブル)をF(x)=1/x (逆関数)と定義している。結果は、関数u^2/(u^2/v^2)に対応した灰色のグラディエントである。
【0079】
最後の画像では、固定関数G1をG1(u,v)=sqrt(u^2+v^2)と定義し、第2の固定関数G2をG2(u,v)=1と定義し、関数F(参照テーブル)をポテンシャル関数と定義している。関数G1が四辺形の中心までの距離であることに注目すれば、距離がゼロに等しいとき、ポテンシャルは1に等しくなり、中心までの距離が増加するにつれてゼロまで低下することから、結果として放射状の灰色のグラディエントが得られる。
【実施例2】
【0080】
図4に示す例は、開示された発明により結果として得られる画像の一例である。1つのマッピング関数が選択され、様々なランダム摂動が与えられている。入力の幾何学図形は四辺形であり、左下角のテクスチャ座標(u0, v0)が(-1,-1)に等しく、右上角のテクスチャ座標(u1, v1)が(1, 1)に等しく、u座標は画像の中の横軸に沿っている。一次元テクスチャ画像は2色の配列である。第1の色は白であり、第2の色は黒である。3つの画像を生成するため、同じマッピング関数が使用され、それは次の通りである:Map(u,v)=u 第1の画像では、摂動が与えられていない。結果が図3における第1の画像と同様であることが分かる。第2及び第3の画像では、摂動が与えられているが、異なる倍率が事前制御及び事後制御演算に設定されている。
【産業上の利用可能性】
【0081】
本発明の回路は、三次元コンピュータ・グラフィック・チップに適用できる。
【図面の簡単な説明】
【0082】
【図1】図1は、開示された発明を2つのモジュールに分解した様子を示している。二次元入力テクスチャ座標(u,v)が与えられると、モジュール1000 (Perturbater)が(u,v)を変換し、結果として(u’,v’)を得て、これらが次にモジュール3000 CMapの入力として使用され、二次元座標から一次元座標tにマッピングされる。その後、この一次元座標がモジュール5000の一次元テクスチャ参照テーブルのインデックスとして使用される。
【図2】図2は、モジュール1000 Perturbaterをサブモジュールに分解した様子を示している。2つの同一モジュールrandom1D、1つのrandom2Dモジュール、1つのrandomCombiner、及び最後に1つのperturbCoordinatesモジュールに分解される。
【図3】図3は、開示された発明の結果として得られる画像の一例を示している。マッピング関数の様々な選択肢を説明している。
【図4】図4は、開示された発明の結果として得られる画像の一例を示している。1つのマッピング関数が選択され、様々な摂動が与えられている。

【特許請求の範囲】
【請求項1】
二次元テクスチャ座標(u,v)を得る第1手段と、
tを導く関数f(u,v)により、前記二次元テクスチャ座標(u,v)を一次元テクスチャ座標(t)に投影する第2手段と、
tに基づいてテクスチャメモリアドレスを生成する第3手段と、
前記一次元テクスチャ座標(t)を用いて、メモリに格納された一次元テクスチャ画像にアクセスし、前記一次元テクスチャ画像に記憶された値を読み出す第4手段とを備え、当該値は、他のモジュールにおいて消費される
二次元テクスチャ画像を生成するシステム。
【請求項2】
請求項1において、
前記第2手段が、
2つの関数G1及びG2を複数の固定関数から選択する手段と、
あらゆる実関数、以下Fと称する、を表す参照テーブルを定義する手段と、
前記関数G1、G2、及びFを結合する手段であって、
G1を参照テーブルFの入力として用い、これによりF(G1(u,v))を算出する手段と、
参照テーブルの出力とG2を用いて、参照テーブルの出力とG2との積を算出して、結果として値F(G1(u,v))*G2(u,v)を得る手段と、を具備するものと、
を備えたシステム。
【請求項3】
請求項1において、
前記第2手段が、
2つの関数G1及びG2を、{u, v, u+v, u-v, u^2, v^2, sqrt(u^2+v^2), u+v+sqrt(u^2+v^2), u+v-sqrt(u^2+v^2),
min(u,v), max(u,v), constant}に等しい関数G(u,v)から選択する手段であって、“sqrt”は数学関数である平方根であり、x^2はxの二乗(xのx倍)であり、“min(u,v)”は(u,v)の最小値であり、“max(u,v)”は(u,v)の最大値であり、“constant”は定数であるものと、
あらゆる実関数で以下Fと称するものを表す参照テーブルを定義する手段と、
前記関数G1、G2、及びFを結合する手段であって、
G1を参照テーブルFの入力として用い、これによりF(G1(u,v))を算出する手段と、参照テーブルの出力とG2を用いて、参照テーブルの出力とG2との積を算出して、結果として値F(G1(u,v))*G2(u,v)を得る手段と、
を具備するものと、
を備え、
前記第3手段が、一次元テクスチャ画像F(G1(u,v))*G2(u,v)を用いるシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2013−37703(P2013−37703A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2012−197504(P2012−197504)
【出願日】平成24年9月7日(2012.9.7)
【分割の表示】特願2011−109500(P2011−109500)の分割
【原出願日】平成18年8月1日(2006.8.1)
【出願人】(502401703)株式会社ディジタルメディアプロフェッショナル (26)
【Fターム(参考)】