(57)【要約】【課題】  テキスチャーマッピングにおいて、双３次相関関数等によるテキスチャーパターンのマッピング面への拡大あるいは縮小に伴う補間計算の高速演算回路によるリアルタイム表示【解決手段】  テキスチャーアドレス発生回路１で、テキスチャーパターンをキャシュメモリ２から読みだし、キャシュミス検出回路４がキャシュミスを検出すると外部メモリ３から該当データをロードするための回路構成と、双３次関数による補間回路４を用いて、原始パターンの高速拡大および縮小変換演算回路を構成する。【選択図】図１
2006120181.tif 000002
【特許請求の範囲】
【請求項１】
テキスチャーマッピングパターンの読みだしアドレスを決定する少なくとも２組以上のテキスチャーアドレスプロセッサと、
テキスチャーパターンの一部あるいは全てを記憶するキャシュメモリおよびマッピング面の拡大縮小に対応するテキスチャーパターンのスケーリング回路から構成される回路において、
キャシュメモリはｍ行ｎ列（ｍ，ｎ≧２）の２次元画素配列（以下ＵＶ座標とする）を単位とする２次元配列の複数のキャシュメモリブロックで構成すると共に、これらキャシュメモリブロックに対するキャシュミス検出回路を有する手段と、
キャシュミスの検出には、前記それぞれのテキスチャーアドレスプロセッサからのキャシュメモリ読みだしアドレス（以下ＵＶアドレスという）を中心に、隣接する少なくともＵＶ座標それぞれ２画素以上の２次元領域を定め、この領域に含まれるメモリブロックアドレスをレジスタにラッチすると共に、テキスチャーアドレスプロセッサのアドレス更新毎に前記レジスタの入出力値を比較し、不一致が生じると、他のテキスチャーアドレスプロセッサがもつレジスタとの比較を同時に行って、一致するものがなければキャシュミスとして外部メモリから所定のキャシュブロックに原始パターンをロードする手段と、
不要キャシュブロックを検出する手段において、キャシュメモリブロックにはそれぞれ該当するブロックアドレスを記憶するブロックレジスタを設け、このレジスタ毎に、前記全てのテキスチャーアドレスプロセッサのブロックアドレス出力とをそれぞれ比較して、全てが不一致となるブロックレジスタがある場合、このキャシュメモリブロックは不要ブロックと見なして、そのブロックに、要求する原始パターンを画像メモリからロードする手段を持つテキスチャーマッピング回路。
【請求項２】
テキスチャーパターンの拡大及び縮小に関して、請求項１の複数のテキスチャーアドレスプロセッサから与えられるそれぞれのＵＶアドレスを差分して、その距離を求め、この値から原始パターンに対するスケール値を決定する手段を有するテキスチャーマッピング回路。
【請求項３】
請求項１又は請求項２に記載のテキスチャーマッピング回路を用いたコンピューターグラフィックス映像の生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、テキスチャーマッピング回路などに関する。
【背景技術】
【０００２】  テキスチャーマッピングを行う際の原始パターンのスケーリングは一般に単純な画素の拡大（隣接画素方式）、あるいはＵＶ座標それぞれの二つの画素間の値を線形に補間する双線形補間方法が採用されている。
【発明が解決しようとする課題】
【０００３】  前者はラスター画像の階段状波形をそのまま拡大することになり画質の劣化が著しく、また後者は２点間の線形補間であるための誤差を含む。リモートセンシングではすでに利用されている双三次相関関数による補間は最も再現性のある方式として知られているがコンピュータグラフィックのテキスチャーマッピングにハードウェア回路として応用されている例は見られない。それはこの方式が３次式と複数の画素を参照したマトリックス計算等の複雑な処理を要する反面、ポリゴンレンダリングのテキスチャーマッピングでは描画性能として画素当たり数十ｎｓの実時間処理が不可欠であり、実現困難なためである。
【課題を解決するための手段】
【０００４】  本発明は、テキスチャーマッピングパターンの読みだしアドレスを決定する少なくとも２組以上のテキスチャーアドレスプロセッサと、テキスチャーパターンの一部あるいは全てを記憶するキャシュメモリおよびマッピング面の拡大縮小に対応するテキスチャーパターンのスケーリング回路から構成される回路において、キャシュメモリはｍ行ｎ列（ｍ，ｎ≧２）の２次元画素配列（以下ＵＶ座標とする）を単位とする２次元配列の複数のキャシュメモリブロックで構成すると共に、これらキャシュメモリブロックに対するキャシュミス検出回路を有する手段と、キャシュミスの検出には、前記それぞれのテキスチャーアドレスプロセッサからのキャシュメモリ読みだしアドレス（以下ＵＶアドレスという）を中心に、隣接する少なくともＵＶ座標それぞれ２画素以上の２次元領域を定め、この領域に含まれるメモリブロックアドレスをレジスタにラッチすると共に、テキスチャーアドレスプロセッサのアドレス更新毎に前記レジスタの入出力値を比較し、不一致が生じると、他のテキスチャーアドレスプロセッサがもつレジスタとの比較を同時に行って、一致するものがなければキャシュミスとして外部メモリから所定のキャシュブロックに原始パターンをロードする手段と、不要キャシュブロックを検出する手段において、キャシュメモリブロックにはそれぞれ該当するブロックアドレスを記憶するブロックレジスタを設け、このレジスタ毎に、前記全てのテキスチャーアドレスプロセッサのブロックアドレス出力とをそれぞれ比較して、全てが不一致となるブロックレジスタがある場合、このキャシュメモリブロックは不要ブロックと見なして、そのブロックに、要求する原始パターンを画像メモリからロードする手段を持つテキスチャーマッピング回路などに関する。
【０００５】  本発明の好ましい態様は、テキスチャーパターンの拡大及び縮小に関して、上記の複数のテキスチャーアドレスプロセッサから与えられるそれぞれのＵＶアドレスを差分して、その距離を求め、この値から原始パターンに対するスケール値を決定する手段を有するテキスチャーマッピング回路に関する。
【０００６】  本発明の好ましい別の態様は、上記のテキスチャーマッピング回路を用いたコンピューターグラフィックス映像の生成装置に関する。
【０００７】  本発明の好ましい別の態様は、ヒットしたキャシュメモリからテキスチャーパターンをスケーリングしてレンダリング面にマッピングする回路構造に関し、キャシュメモリはｍ（Ｕ）ｘｎ（Ｖ）の２次元配列からなるメモリで構成し、このメモリからＵＶアドレスを中心に隣接するｐ行ｐ列のパターン画素（ｎ，ｍ，ｐは≧２の整数値）を読みだして、各行あるいは列上のｐ個の画素の輝度を、ｐ入力をもつｐ個の補間回路の制御点として与える手段と、補間関数のノット値（ノット値ｔは０≦ｔ≦１の範囲）はＵＶアドレスのいずれか一方の下位データで決定して該当する軸上の補間輝度を求め、次にこうして得られた列あるいは行数分の補間画素値を、前記とは別に設けた他の一つのｐ入力からなる補間回路に制御点として与え、この補間回路のノット値は、前記とは異なるＵＶアドレスの一方の下位データで決定して、ｐｘｐ画素から補間されたテキスチャー画素を得る手段と、補間回路は、ノット関数テーブルを記憶する記憶素子と乗算器および加算器で構成し、乗算器の一方には行あるいは列上のｐ個の画素カラー成分を、他の一方にはノット関数テーブル出力値を与えた後、乗算器の出力を加算して補間値を得る補間回路をもつテキスチャーマッピング回路であって、前記ノット関数テーブルは、それぞれのマッピングされる画像に応じて単純隣接画素方式、線形補間、又はスプライン補間関数をプログラマブルにロード選択する構造をもつ上記のテキスチャーマッピング回路に関する。
【０００８】  上記のテキスチャーマッピング回路は、好ましくは、ノット関数テーブルには、それぞれのマッピングされる画像に応じて単純隣接画素方式、線形補間、スプライン補間関数をプログラマブルにロード選択する構造をもつテキスチャーマッピング回路である。
【発明の効果】
【０００９】  本発明の方式により拡大縮小を伴うマッピング面に対するテキスチャーマッピングの高速の表示が可能となり、リアルタイムシステム、例えばバーチャルリアリティシステムに有効となる。
【発明を実施するための最良の形態】
【００１０】  本発明ではテキスチャーパターンの読みだしアドレスに対して、その点を中心に隣接する所定数の２次元配列画素（例えばｐｘｐ＝４ｘ４、以下この数値で説明する）を同時に読むことができるテキスチャーパターン記憶用キャシュメモリを用意する。このキャシュメモリはＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であっても、レジスタから構成されていてもよい。ＵＶアドレスを中心に４ｘ４の２次元配列画素を１クロック以内に読み込むためにはキャシュメモリはその数に相当する最小１６本の入出力信号をもたなければならない。【００１１】  ＵＶアドレスの移動によって、この領域が逐次変化することと、複数組のＵＶアドレスが複数のテキスチャーアドレスプロセッサから出力される本発明の回路では、２次元配列のキャシュメモリはそれら全ての領域に対応するある特定の大きさをもつことが一度にキャシュメモリにアクセスするためには必要である。【００１２】  また、読みだし領域のデータがそのキャシュメモリに存在しない場合（キャシュミス）、外部メモリから該当するデータを読み込む際、通常の汎用コンピュータのキャシュに見られるような一次元配列よりは特定の大きさをもつ２次元配列データを読み込むほうが領域の２次元的な局所性からその後の領域移動に伴うヒット率が向上する。よって、キャシュメモリはｍｘｎの読み込み単位としてのキャシュブロックの複数から構成する。【００１３】  同時に複数のラインをマッピングする本発明ではマッピング処理に伴い一つのＵＶアドレスにより定められる４ｘ４領域の一部がそれまでのヒットブロックをオーバーあるいはアンダーフローしてキャシュミスを生じた場合、隣接する他のＵＶアドレスがヒット中のブロックに該当するブロックを使用している場合がある。この場合はキャシュメモリ内にすでにそのブロックは存在しているため、共有して使用でき、外部メモリからは該当するブロックを読み込む必要はない。【００１４】  一方、全てのＵＶアドレスを中心としてそれぞれのラインのもつ領域の全範囲以上にキャシュサイズを設定すればＵＶアドレスの移動に伴い、有効（ヒット）ブロックと無効ブロックがキャシュメモリ内に存在する。このキャシュミスの検出と無効ブロックの検出はそれぞれのＵＶアドレスと領域定義から得られたブロックアドレスをラッチして、ラッチ前と後とのブロックアドレスを比較し、不一致の場合、他の全てのラッチ出力と、不一致が生じた該当するラッチ前のブロックアドレスとを全て比較し、全てに一致しない場合には共有可能なキャシュブロックは無し、一致する場合は有るものとし、また無効ブロックの検出は、キャシュメモリにロードされたキャシュブロックには全てブロックアドレスを付加し、このブロックアドレスと、全ての実行中のブロックアドレスを比較することで検出することができる。キャシュミスが生じて、外部メモリから無効ブロックにブロックデータを読み込む一連の処理は以上の回路で構成できる。【００１５】  一方、双三次相関による補間は４つの参照する輝度を基に、それぞれの参照点間の任意の位置における輝度を、３次曲線で近似して求めるものである。よってキャシュメモリから読み出される各４行あるいは４列毎の４つの画��情報を基（制御点として）に、まず行あるいは列単位に４つの画素点からの距離をそれぞれパラメータとする曲線式より所定の補間位置の輝度を決定し、つぎにそれら４行あるいは４列の補間データを新たな４つの制御点情報として前記同様にさらに補間を行うことにより２次元面での双３次補間データを得ることができる。補間値は４つの制御点とマトリックスで表現されるパラメトリック関数との乗算で求められる。【００１６】  本発明では１６回の乗算と加算を一クロック以内で実行するために補間位置を入力変数とするパラメトリック（ノット）関数テーブルと、これから得られた値と各列あるいは行のそれぞれ４点の輝度成分とを乗算した後、それぞれを加算して補間輝度を得る積和回路を用意する。すなわち、補間回路全体は、関数テーブルと積和回路を一組として、それぞれの行数に対応する４組の回路と、さらにその４組の回路からの補間出力を入力とする他の一組の、合計５組の補間回路で構成する。これは４ｘ４領域に含まれる画素を参照に所定の位置での一つの輝度成分を求める補間計算回路であり、もし３原色を用いる場合には３倍の１５組が必要となる。こうして得られた補間輝度はマップ面を走査するＸＹアドレスの位置にマップされる。パラメトリック関数テーブルは３次相関関数だけでなくこれをＲＡＭとすることで、１次関数や２次関数の設定も可能である。１次関数では線形補間となる。
【実施例１】
【００１７】  本発明に関する実施例を図１に示す。図１においてテキスチャーアドレス生成回路１は複数のテキスチャーアドレスプロセッサを有し、線形補間されたテキスチャーアドレスＵ’及びＶ’と、視点軸Ｚの関数からなるＷを基にＵ’／Ｗ及びＶ’／Ｗの除算を経て２次元のテキスチャーパターン座標ＵＶを決定する回路である。このＵＶ座標はテキスチャーパターンを記憶するキャシュメモリ２のアドレスとなり、本発明では生成回路１から複数の組のアドレスが出力する。【００１８】  このキャシュメモリはｍ行ｎ列の同時アクセスが可能な２次元配列のブロックから構成される。このｍ行ｎ列に含まれるｍｘｎ個の画素は原始テキスチャーパターンを記憶する外部メモリ３からキャシュメモリに同時にロードできる数となる。キャシュメモリ２ではこのｍｘｎ単位を一つのキャシュブロック容量とする。例えばｍ＝８，ｎ＝４とすれば３２画素がブロック当たりの画素数となる。テキスチャーパターンアドレスが生成回路１で求まると、キャシュメモリ２からこの点を中心として隣接する複数の画素を同時に読みだす。【００１９】  ３次スプライン補間を例にとると、４行ｘ４列の合計１６画素が読み出される。これら１６画素は補間回路４に同時に与えられ、目的の輝度を生成する。一方、キャシュメモリ２はキャシュミスおよび無効キャシュブロックを検出するための回路５を持つ。【００２０】  図２は本発明の検出回路を示す。検出回路にはＵＶ座標を中心としてそれぞれ所定の領域（例えば４ｘ４）から、これに含まれるブロックアドレスを決定する加減算器６と、これを記憶するレジスタ７とレジスタの入出力値を比較する比較器８で構成される。比較器８はキャシュブロックｍｘｎに対応するＵＶ座標の下位ビット（例えば８ｘ４の場合、Ｕは下位から３ビット、Ｖは２ビット）を除く上位ビットのブロックアドレスのみを比較する。レジスタ７はテキスチャーアドレスプロセッサの数、すなわちＵＶを一組の出力として、例えば４ラインを同時にマッピングする場合は４組必要であり、図１のテキスチャーアドレス生成回路１から出力される４組のＵＶアドレスに対して、それらの点を中心とする所定の領域に含まれるブロックアドレスを記憶する。【００２１】  いま一つのレジスタ７の入出力値が不一致を起こしたとすると、そのＵＶ座標値の上位ビットが下位ビットによって桁上げあるいは下げが生じ、それまでの有効キャシュブロックから読みだし領域の一部がオーバーフローあるいはアンダーフローを起こしたことを意味する。このキャシュミスが比較器８で検出されると、同時に他の組の全てのレジスタとの比較を比較回路８で行う。この新たなキャシュブロックアドレスが、もしいずれかのレジスタにすでに登録されていれば、キャシュメモリロード回路９は起動しない。いずれの比較回路も不一致となればキャシュメモリには該当するブロックが存在しないものとしてキャシュメモリロード回路９に対してロード要求を行う。【００２２】  キャシュメモリロード回路９はこの要求によって外部メモリから該当するブロックを読みだしキャシュにロードする。一方、ＵＶアドレスを中心に隣接する４ｘ４画素をその領域とし、またスケールが１より大きい拡大の場合、４ラインを同時にマッピングしてもそれぞれのアドレスを中心にした４ｘ４の領域全体は、８（Ｕ）ｘ４（Ｖ）をキャシュブロックサイズとした場合、最小６ブロック（１６ｘ１２画素）を用意すれば、キャシユ内に包括される。【００２３】  この結果、ＵＶアドレスの移動によっていずれかのラインにキャシュミスが生じれば、新たに外部メモリから該当するデータを読み込むためのキャシュブロックが必要となる反面、６ブロックのうちいずれかのブロックにはすでに使用されないものが出て来る。このことから６ブロックそれぞれにキャシュブロックアドレス（前記下位ビットを除くＵＶ座標値）を記憶するレジスタ１０を設け、キャシュミスが生じたときこのレジスタ１０と加減算器６からの全てのブロックアドレスとを比較回路１１において比較する。【００２４】  もし一致するものがあれば有効キャシュブロックとしてそのままに、全て不一致となるレジスタがあれば、このレジスタに記憶されたキャシュブロックを無効ブロックとして前記キャシュミスによるロードを、このブロックに対して実行する。一方、キャシュメモリから読み出された画素と、ＵＶ座標およびそのアドレスは本発明に係わる図３に示す関係となる。読み出された４行４列の１６個の画素は図１の補間回路４に行あるいは列毎に与えられる。【００２５】  図３において、Ｐｘｙ（０≦ｘ，ｙ≦３）はキャシュメモリに記憶された画素であり、ＵＶ座標点（ｉ，ｊ）は常に画素Ｐ１１，Ｐ１２，Ｐ２１，Ｐ２２の４画素間に位置する。キャシュメモリから読み出された画素はそれぞれ本発明の図４の補間回路に加えられる。この回路は図１の補間回路４となる。図３の各列の画素（Ｐ００，Ｐ０１，Ｐ０２，Ｐ０３）、（Ｐ１０，Ｐ１１，Ｐ１２，Ｐ１３）、（Ｐ２０，Ｐ２１，Ｐ２２，Ｐ２３）、（Ｐ３０，Ｐ３１，Ｐ３２，Ｐ３３）がそれぞれの補間回路４０、４１，４２，４３，の入力となる。これらの補間回路で求められた補間値Ｐ０ｊ，Ｐ１，ｊＰ２ｊ，Ｐ３ｊはさらに後段の補間回路４４に出力され、これら４点間の輝度を補間する。なお、図３中、Ｐｘｙ（０≦ｘ，ｙ≦３）は参照画素であり、Ｐｉｊは補間画素である。【００２６】  図５は本発明の補間回路の回路構成を示す。補間回路はノット関数テーブル４５と乗算器４６ａ，４６ｂ，４６ｃ，４６ｄ，と加算器４７ａ，４７ｂ，４７ｃで構成する。ここでノット関数テーブル４５には３次曲線を刻むノット値ｔが、０≦ｔ≦１の範囲で与えられる。また乗算器には４点の輝度Ｐ０，Ｐ１，Ｐ２，Ｐ３が与えられる。小数点部の値は図３Ｒ＞３に示すように画素間内の一点の座標値ｊに対応する。ここでノット関数値の範囲０≦ｔ≦１は４点間（例えばＰ００−Ｐ０３）の距離に対応するが、小数点部の値を区間（Ｐ０１−Ｐ０２）で０≦ｊ≦１と定義するためにｔ＝（１／３）（ｊ＋１）の関係となる。これはｉ点も同様である。【００２７】  ｊ点の補間テータＰ０ｊ，Ｐ１ｊ，Ｐ２ｊ，Ｐ３ｊは、このテーブルから出力される値と、参照する４行あるいは４列いずれか一方の画素の輝度、例えば４列の場合（Ｐ００，Ｐ０１，Ｐ０２，Ｐ０３）、（Ｐ１０，Ｐ１１，Ｐ１２，Ｐ１３）、（Ｐ２０，Ｐ２１，Ｐ２２，Ｐ２３）、（Ｐ３０，Ｐ３１，Ｐ３２，Ｐ３３）とをそれぞれ��和して求められる。これは行であっても、あるいは列であっても良く、いずれを補間参照データ（制御点）とするかは任意である。【００２８】  ４組の補間回路から得られる値は図３に示すように補間をまず列に対して行ったとすれば、結果はそれぞれ同一のＶ座標上の値となる。次にこの４つの補間値Ｐ０ｊ，Ｐ１ｊ，Ｐ２ｊ，Ｐ３ｊを参照点（制御点）としてＰ１ｊ，Ｐ２ｊ間の補間値を求めることによって２次元空間の補間が終了する。これは前記Ｖの小数点部の値に対して、Ｕの小数点部の値ｉを図４の後段の補間回路４４のノット関数テーブルに加えることになる。【００２９】  こうして得られた補間点の輝度Ｐｉｊがマップされる面に与えられるテキスチャー輝度となる。実施例ではノット関数テーブルは３次相関関数とした。しかし、関数テーブルはその回路をＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｅｏｒｙ）とすることでその補間関数に対して入力アドレスをパラメータとする線形、ベージェ、Ｂスプライン、３次相関関数等を記憶することができる。一方、スケールが１以下の縮小の場合には、４つのテキスチャーアドレスプロセッサからのＵＶアドレスは離散的な値となる。すなわち複数のＵＶアドレスはそれぞれ１以上の距離を持つことになる。例えば８ブロック（１６ｘ１６画素）でキャシュメモリを構成した場合で、距離が４となる場合（スケール１／４）、それぞれの点を中心に隣接する４画素を参照点として読みだし１点が補間される点では拡大と処理は変わらない。しかし、もし画素間の距離がキャシュサイズを越える場合、そのほとんどはキャシュミスを生じ一つのＵＶアドレスに一つのキャシュブロックが使用される。よって縮小には外部メモリとのアクセスが増加し、演算処理速度が低下する。【００３０】  この速度低下を避けるにはサイズの異なる複数の原始テキスチャーパターンを画像メモリに予め記憶しておくことが必要である。このサイズの異なる原始パターンを選択する方法としてテキスチャーアドレスプロセッサから得られた隣接するＵＶ座標値を差分してその距離を求める。距離が１あるいは以下の場合は拡大、２あるいは以上の場合は縮小となる。よってこの差分値によって変換されるＵＶアドレスを外部メモリアドレスとして、所定の原始テキスチャーパターンにアクセスすることで最適なパターンの選択が可能となる。
【産業上の利用可能性】
【００３１】  本発明は、コンピュータグラフィックのテキスチャーマッピングに用いられるハードウェア回路などを提供できるので、コンピュータグラフィックなどの分野で利用されうる。
【図面の簡単な説明】
【００３２】
【図１】  本発明に関するテキスチャーマッピング回路
【図２】  本発明のキャシュミス、無効ブロック検出回路
【図３】  本発明に係わる補間画素とテキスチャーアドレス関係図
【図４】  本発明の補間回路
【図５】  本発明の補間回路詳細図
【符号の説明】
【００３３】１  テキスチャーアドレス生成回路
２  キャシュメモリ
３  外部メモリ
４  補間回路
５  検出回路
６  加減算器
７  レジスタ
８  比較器
９  キャシュロード回路
１０  レジスタ
１１  比較回路
４０−４４  補間回路
４５  ノット関数テーブル
４６ａ−４６ｄ  乗算器
４７ａ−４７ｃ  加算器
【図１】
2006120181.tif 000003
【図２】
2006120181.tif 000004
【図３】
2006120181.tif 000005
【図４】
2006120181.tif 000006
【図５】
2006120181.tif 000007