(57)【特許請求の範囲】
【請求項１】
各々所定ビット幅の任意の値Ａ，Ｂと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）の演算を行い、上位所定ビットを演算結果として得る演算装置であって、
α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、
前記値Ａまたは値Ｂとして選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段と、
を有し、
前記演算手段は、
係数αの各ビットごとに、当該ビットが１の場合は値Ａを選択し、当該ビットが０の場合は値Ｂを選択し、該選択された値を当該ビットに対応する位置にシフトさせて部分積を生成する部分積生成手段と、
前記選択された加算値Ｆおよび前記生成された前記αのビット数分の部分積とを加算する加算手段と
を有する演算装置。
【請求項２】
前記加算手段は、１ビットの加算器をツリー状に構成したｗａｌｌａｃｅ＿ｔｒｅｅ型アーキテクチャーにより構成される
請求項１記載の演算装置。
【請求項３】
各々所定ビット幅の任意の値Ａ，Ｂ，Ｃと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）＋Ｃの演算を行い、上位所定ビットを演算結果として得る演算装置であって、
α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、
前記値Ａまたは値Ｂとして選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ＋Ｃ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段と、
を有し、
前記演算手段は、
係数αの各ビットごとに、当該ビットが１の場合は値Ａを選択し、当該ビットが０の場合は値Ｂを選択し、該選択された値を当該ビットに対応する位置にシフトさせて部分積を生成する部分積生成手段と、
前記選択された加算値Ｆ、前記生成された前記αのビット数分の部分積および前記Ｃとを加算する加算手段と
を有する演算装置。
【請求項４】
前記各手段は、集積回路上に構成される
請求項３記載の演算装置。
【請求項５】
各々所定ビット幅の任意の値Ａ，Ｂと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）の演算を行い、上位所定ビットを演算結果として得る演算装置であって、
α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、前記値Ａまたは値Ｂとして選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段とを有する演算装置と、
所定の第１のモードの時に、前記演算装置に対して、前記値Ａとしてテクスチャマッピングデータを、前記係数αとしてテクスチャが張り付けられる側の画像データを、前記値Ｂとして０を、各々入力する入力制御手段と、
を有し、
前記演算手段は、
係数αの各ビットごとに、当該ビットが１の場合は値Ａを選択し、当該ビットが０の場合は値Ｂを選択し、該選択された値を当該ビットに対応する位置にシフトさせて部分積を生成する部分積生成手段と、
前記選択された加算値Ｆおよび前記生成された前記αのビット数分の部分積とを加算する加算手段と
を有する画像処理装置。
【請求項６】
前記入力制御手段は、所定の第２のモードの時に、前記演算装置に対して、前記値Ａとして画素データを、係数αとしてフォグ係数を、前記値Ｂとしてフォグカラーを、各々入力する
請求項５記載の画像処理装置。
【請求項７】
各々所定ビット幅の任意の値Ａ，ＢおよびＣと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）＋Ｃの演算を行い、上位所定ビットを演算結果として得る演算装置であって、
α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、前記値Ａまたは値Ｂとして選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ＋Ｃ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段とを有する演算装置と、
所定の第１のモードの時に、前記演算装置に対して、前記値Ａとしてテクスチャマッピングデータを、前記係数αとしてテクスチャが張り付けられる側の画像データを、前記値Ｂおよび値Ｃとして０を、各々入力する入力制御手段と、
を有し、
前記演算手段は、
係数αの各ビットごとに、当該ビットが１の場合は値Ａを選択し、当該ビットが０の場合は値Ｂを選択し、該選択された値を当該ビットに対応する位置にシフトさせて部分積を生成する部分積生成手段と、
前記選択された加算値Ｆ、前記生成された前記係数αのビット数分の部分積および前記Ｃとを加算する加算手段と
を有する画像処理装置。
【請求項８】
前記入力制御手段は、所定の第２のモードの時に、前記演算装置に対して、前記値Ａとして画素データを、係数αとしてフォグ係数を、前記値Ｂとしてフォグカラーを、前記値Ｃとして０を、各々入力する
請求項７記載の画像処理装置。
【請求項９】
前記入力制御手段は、所定の第３のモードの時に、前記演算装置に対して、前記値Ａとしてテクスチャマッピングデータを、前記係数αとして環境光を示す値を、前記値Ｂとして０を、前記値Ｃとして特定の光源の光を示す値を、各々入力する
請求項８記載の画像処理装置。
【請求項１０】
前記各手段は、集積回路上に構成される
請求項７から９のいずれか一に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、たとえば線形補間や補正などを行うための積和演算を高速に行うことのできる演算装置、および、特にコンピュ−タグラフィクス分野などにおいて３次元画像を生成するのに好適な画像処理装置に関する。
【０００２】
【従来の技術】
種々のＣＡＤシステムや、アミューズメント装置などにおいて、コンピュータグラフィクスがしばしば用いられている。特に、近年の画像処理技術の進展に伴って、３次元コンピュータグラフィクス技術を用いたシステムが急速に普及している。
この３次元コンピュータグラフィックスを行う場合において、最も広く使用されている手法の１つに、ポリゴンレンダリングシステムがある。これは、立体モデルを３角形の単位図形（ポリゴン）の張り合わせとして表現しておき、このポリゴンを描画することで表示画面の各画素の色を決定しディスプレイに表示するシステムである。
【０００３】
ところで、そのようなレンダリング処理においては、たとえば、三角形の頂点に基づいて各頂点間あるいは三角形内部の画素データを生成する場合、テクスチャデータに対してハイライト効果を施す場合、テクスチャマッピング時、フォグ効果を施す場合など、頻繁に線形補間演算処理が行われる。
このような場合に行われる線形補間演算を式で示すと、式１のように表すことができる。
【０００４】
【数１】
Ａ×α＋Ｂ×（１−α）                                    …（１）
【０００５】
式１に示すような線形補間演算を行う場合、通常であれば、２個の乗算器と１個の加算器、または、１個の乗算器と１個の減算器と１個の加算器を使うような構成が容易に推測できる。
また、図５に示すような演算器で構成することも考えられる。
図５に示す演算器は、Ａ×α＋Ｂ×（１−α）を、Ａ×α＋Ｂ×￣α＋Ｂ（ただし、￣αはαのビット反転を示す。）と展開し、加算項Ｂと、変数αのビットに対応して選択された部分積ｏｕｔ＿０〜ｏｕｔ７を図示のごとくシフトさせた値とを加算することにより求めるものである。
なお、各部分積ｏｕｔ＿０〜ｏｕｔ＿７は、αの各ビットごとに、そのビットが１であればＡを選択し、０であればＢを選択した値である。
【０００６】
【発明が解決しようとする課題】
ところで、式１に示すような一般的な線形補間演算を、たとえば各変数が８ビットの変数であるような８ビットの処理系で行う場合において、Ａ＝１，α＝１，Ｂ＝０として通常の乗算を行うと、式２に示すような演算が行われ、上位８ビットを乗算結果として出力すると０ｘＦＥとなる。
【０００７】
【数２】
０ｘＦＦ×０ｘＦＦ＋０×（１−０ｘＦＦ）＝０ｘＦＥ０１    …（２）
【０００８】
これは、数学的に０から１．０を０ｘ００から０ｘＦＦに対応させて考えた場合、１．０×１．０≠１．０ということになり、正しい演算結果が得られなくなることを意味している。
したがって、たとえばこの線形補間演算を前述したような３次元コンピュータグラフィクスシステムのフォグ演算などに適用した場合には、フォグ効果を全く出さないようにフォグ係数を１．０に設定した場合にも、入力した元の画素データが何らかの影響を受けてしまい元の画素データが維持できないことになるという問題が生じる。
【０００９】
そのため、これまでは図５に示したような演算器から出力された演算結果に対しては、α＝１．０の場合は補正を行って使用するようにしている場合が多いが、これでは回路規模が大きくなるという問題がある。特に、近年このような演算回路は集積回路上に構成したいという要望があるが、その場合にこのような補正回路は、集積回路の外部に設けると装置規模が大きくなり、また内部に設けるとチップ上の回路面積が大きくなるという問題が生じ、回路構成上無くしたいという要望がある。
【００１０】
また、このような３次元コンピュータグラフィクスシステムに係わる画像処理回路を集積回路上に構成する場合には、このような線形補間演算器を使用して積和演算を行わせたいという要望がある。しかしながら、これまでは、積を算出する部分と和を算出する部分が２段階となり２つの演算器で構成する形となり、回路規模的にも処理速度的にも改善が望まれていた。
【００１１】
したがって、本発明の目的は、補間係数α＝１．０の場合においても適切に元のデータが得られるような演算を行うことができる線形補間演算装置であって、積和演算をも高速に行うことができ、一方で回路規模はほとんど増加せず集積回路化に適したような演算装置を提供することにある。
また、本発明の目的は、そのような演算装置を適用することにより、たとえば、テクスチャマッピング処理、フォグ演算、ハイライト演算などの画像処理が高速に効率よく行え、さらには集積回路化に適したような画像処理装置を提供することにある。
【００１２】
【課題を解決するための手段】
本願発明者は、前述したような誤差は、αについて、０ｘＦＦ（２５５）を１．０に対応させようとしているために誤差が生じることを考えると、この場合にさらにＡを加算し、α＋１が２５６となるようにすることで誤差をなくすことができると考えた。そして、図５に示した回路の基本式であるＡ×α＋Ｂ×￣α＋Ｂに対して、α＝１．０の時に＋Ｂの項を＋Ａに切り替えれば、このＡの加算が行えることを見いだした。そして、さらに積和演算を行うための新たな項をも付加して、補正乗算、線形補間演算、および、積和演算を行える演算装置およびそれを好適に画像処理に適用できるようにした画像処理装置を発明した。
【００１３】
したがって、本発明の演算装置は、各々所定ビット幅の任意の値Ａ，Ｂと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）の演算を行い、上位所定ビットを演算結果として得る演算装置であって、α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、前記選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段とを有する。
【００１４】
好適には、前記演算手段は、係数αの各ビットごとに、当該ビットが１の場合は値Ａを選択し、当該ビットが０の場合は値Ｂを選択し、該選択された値を当該ビットに対応する位置にシフトさせて部分積を生成する部分積生成手段と、前記選択された加算値Ｆおよび前記生成された前記αのビット数分の部分積とを加算する加算手段とを有する。
特定的には、前記加算手段は、１ビットの加算器をツリー状に構成したｗａｌｌａｃｅ＿ｔｒｅｅ型アーキテクチャーにより構成される。
【００１５】
また、本発明の他の演算装置は、各々所定ビット幅の任意の値Ａ，Ｂ，Ｃと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）＋Ｃの演算を行い、上位所定ビットを演算結果として得る演算装置であって、α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、前記選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ＋Ｃ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段とを有する。
【００１６】
また、本発明の画像処理装置は、各々所定ビット幅の任意の値Ａ，Ｂと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）の演算を行い、上位所定ビットを演算結果として得る演算装置であって、α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、前記選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段とを有する演算装置と、所定の第１のモードの時に、前記演算装置に対して、前記値Ａとしてテクスチャマッピングデータを、前記係数αとしてテクスチャが張り付けられる側の画像データを、前記値Ｂとして０を、各々入力する入力制御手段とを有する。
【００１７】
好適には、前記入力制御手段は、所定の第２のモードの時に、前記演算装置に対して、前記値Ａとして画素データを、係数αとしてフォグ係数を、前記値Ｂとしてフォグカラーを、各々入力する。
【００１８】
また、本発明の他の画像処理装置は、各々所定ビット幅の任意の値Ａ，ＢおよびＣと、所定のビット幅で０≦α≦１の値をとる係数αに対して、Ａ×α＋Ｂ×（１−α）＋Ｃの演算を行い、上位所定ビットを演算結果として得る演算装置であって、α＝１の場合、加算値Ｆとして値Ａを選択し、α≠１の場合、前記加算値Ｆとして値Ｂを選択する加算値選択手段と、前記選択された加算値Ｆに基づいて、Ａ×α＋Ｂ×￣α＋Ｆ＋Ｃ（ただし、￣αはαのビット反転を示す。）の演算を行う演算手段とを有する演算装置と、所定の第１のモードの時に、前記演算装置に対して、前記値Ａとしてテクスチャマッピングデータを、前記係数αとしてテクスチャが張り付けられる側の画像データを、前記値Ｂおよび値Ｃとして０を、各々入力する入力制御手段とを有する。
【００１９】
好適には、前記入力制御手段は、所定の第２のモードの時に、前記演算装置に対して、前記値Ａとして画素データを、係数αとしてフォグ係数を、前記値Ｂとしてフォグカラーを、前記値Ｃとして０を、各々入力する。
また好適には、前記入力制御手段は、所定の第３のモードの時に、前記演算装置に対して、前記値Ａとしてテクスチャマッピングデータを、前記係数αとして環境光を示す値を、前記値Ｂとして０を、前記値Ｃとして特定の光源の光を示す値を、各々入力する。
【００２０】
【発明の実施の形態】
本発明の一実施の形態について図１〜図５を参照して説明する。
本実施の形態においては、家庭用ゲーム機などに適用される、任意の３次元物体モデルに対する所望の３次元画像をディスプレイ上に高速に表示する３次元コンピュータグラフィックスシステムに、本発明の演算装置および画像処理装置を適用した場合について説明する。
【００２１】
まず、その３次元コンピュータグラフィックスシステムについて図１を参照して説明する。
この３次元コンピュータグラフィックスシステム１は、立体モデルを単位図形である三角形（ポリゴン）の張り合わせとして表現しておき、このポリゴンを描画することで表示画面の各画素の色を決定しディスプレイに表示するポリゴンレンダリング処理を行うシステムである。
また、３次元コンピュータグラフィックスシステム１においては、平面を表わす（ｘ、ｙ）座標のほかに、奥行きを表わすｚ座標を用いて３次元物体を表わし、またこのｘ、ｙ、ｚの３つの座標で３次元空間内の任意の１点を特定する。
【００２２】
図１は、その３次元コンピュータグラフィックスシステム１の構成を示すブロック図である。
３次元コンピュータグラフィックスシステム１は、入力部２、３次元画像生成装置３および表示装置４を有する。
また、３次元画像生成装置３は、ジオメトリ演算部３２、パラメータ演算部３３、画素発生部３４、マッピング部３５、テクスチャメモリ３６、メモリ制御部３７、画像メモリ３８およびディスプレイ制御部３９を有する。
【００２３】
まず、各部の構成・機能について説明する。
入力部２は、３次元画像生成装置３に対して、表示対象の立体モデルのデータを入力する入力部である。本実施の形態においては、３次元コンピュータグラフィックスシステム１は家庭用ゲーム機に適用されているので、入力部２は、その家庭用ゲーム機のゲーム自体を制御する主制御装置などに接続される。その主制御装置においては、ゲームの進行状況などに基づいて表示する画面を決定し、その画面表示に必要な立体モデルを選択し、その表示方法の情報を生成する。したがって入力部２は、家庭用ゲーム機の主制御装置より、この表示対象の立体モデルのポリゴンデータなどの情報を受け取り、３次元画像生成装置３へ入力するのに適した形態に変換するなどして、３次元画像生成装置３のジオメトリ演算部３２に入力する。なお、その入力されるポリゴンのデータは、各頂点のｘ，ｙ，ｚ座標データおよびカラー、透明度、テクスチャなどの付随データである。
【００２４】
ジオメトリ演算部３２は、入力部２より入力されたポリゴンを、３次元空間中の所望の位置に配置させその位置におけるポリゴンデータを生成する。具体的には、ポリゴンの各頂点（ｘ、ｙ、ｚ）ごとに、並進変換、平行変換および回転変換などの幾何学的変換処理（ジオメトリ変換処理という場合もある）を行う。ジオメトリ変換処理を行ったポリゴンデータは、パラメータ演算部３３に出力される。
【００２５】
パラメータ演算部３３は、ジオメトリ演算部３２から入力されたポリゴンのデータ、すなわち、ポリゴンの各頂点のデータに基づいて、画素発生部３４においてポリゴン内部の画素データを発生するために必要なパラメータを求め、画素発生部３４に出力する。具体的にはたとえば、カラー、奥行きおよびテクスチャの傾きの情報などを求める。
【００２６】
画素発生部３４は、ジオメトリ演算部３２でジオメトリ変換処理が行われたポリゴンデータ、および、パラメータ演算部３３で求められたパラメータに基づいて、ポリゴンの各頂点間を線形補間してポリゴン内部およびエッジ部分の画素データを発生する。また画素発生部３４は、画素データの表示に対応した所定の２次元平面上でのアドレスの生成を行う。生成された画素データおよびアドレスは順次マッピング部３５に入力される。
【００２７】
マッピング部３５は、画素発生部３４で生成された画素データおよびアドレスを読み出し、テクスチャマッピング処理などを行って、各画素に対するカラー値を決定する。具体的には、マッピング部３５は、テクスチャメモリ３６に格納されているテクスチャデータを用いてテクスチャマッピング処理を行い、さらに所望のフォグカラーおよびフォグ係数のデータを用いてフォグ演算を行う。なお、これらの処理は後に詳細に説明する演算装置を用いて行う。これらの処理を行った画素データおよびアドレスは、メモリ制御部３７に出力される。
【００２８】
テクスチャメモリ３６は、マッピング部３５でテクスチャマッピングする際に用いるテクスチャパタンを記憶しておくメモリである。本実施の形態において、このテクスチャメモリ３６には、テクスチャデータがインデックスデータで記憶されている。
【００２９】
メモリ制御部３７は、マッピング部３５から入力される画素データおよびアドレス、および、既に画像メモリ３８に記憶されている対応する画素データに基づいて、新たな画素データを生成し、画像メモリ３８に記憶する。すなわち、メモリ制御部３７は、マッピング部３５から入力されるアドレスに対応した画素データを画像メモリ３８から読み出し、その画素データと、マッピング部３５から入力された画素データとを用いて、所望の画素演算処理を行い、得られた画素データを画像メモリ３８へ書き込む。
また、メモリ制御部３７は、ディスプレイ制御部３９から表示領域が指定された場合には、その表示領域の画素データを、画像メモリ３８から読み出し、ディスプレイ制御部３９に出力する。
【００３０】
画像メモリ３８は、表示用の画像データを記録するメモリであり、実質的に同時にアクセスすることができる２つのメモリバッファ、フレームバッファとＺバッファを有する。フレームバッファには、各画素のカラー情報であるフレームデータが格納される。また、Ｚバッファには、各画素の奥行き情報（Ｚ値）であるＺデータが格納される。
【００３１】
ディスプレイ制御部３９は、メモリ制御部３７を介して画像メモリ３８より読み出した表示領域の画素データを、表示装置４により表示可能なたとえば所定のアナログ信号に変換し、表示装置４に出力する。なお、これに先立ちディスプレイ制御部３９は、メモリ制御部３７に対して、表示すべき表示領域の画素データの要求を行う。
【００３２】
表示装置４は、本実施の形態においては、通常家庭などで用いられているビデオ入力端子などを有するテレビジョン受信機である。３次元画像生成装置３のディスプレイ制御部３９からは、ビデオ信号入力端子を介してアナログビデオ信号が入力され、その信号に基づいて３次元映像を画面上に表示する。
【００３３】
次に、この３次元コンピュータグラフィックスシステム１の動作について説明する。
まず、家庭用ゲーム機のゲーム自体を制御する主制御装置などにおいて、表示する３次元画像が決定されると、その画面表示に必要な立体モデルの情報が入力部２に入力される。入力部２はこの情報に基づいて、その画像を表示するための立体モデルのポリゴンデータを３次元画像生成装置３に入力する。
３次元画像生成装置３に入力された各ポリゴンデータは、まず、ジオメトリ演算部３２において、画面表示のために３次元空間中の所望の位置に配置されるように、並進変換、平行変換および回転変換などのジオメトリ変換処理が行われる。
【００３４】
次に、座標変換の行われたポリゴンデータに対して、パラメータ演算部３３においてポリゴン内部の画素データを発生するために必要なパラメータが求められ、画素発生部３４において、実際にポリゴンの各頂点間を線形補間してポリゴン内部およびエッジ部分の画素データが発生される。
発生された画素データは、順次マッピング部３５に入力される。マッピング部３５においては、テクスチャメモリ３６に記録されているインデックスデータであるテクスチャパタンデータを、リアルカラーデータに変換し、これを用いてテクスチャマッピング処理を行い、さらにフォグ演算を行い、生成した画素データをメモリ制御部３７を介して画像メモリ３８に記憶する。なお、この時に、ハイライト処理を行う場合には、テクスチャパタンデータに対して予めハイライト演算を行っておく。
【００３５】
画像メモリ３８に記憶された画素データは、同様の経路により入力される他の画素データや任意の制御データに基づいて適宜所望の処理が行われる。
これにより画像メモリ３８には常に最新の画像データが格納され、画面表示に供される。すなわち、表示装置４に表示するための所定の領域のデータの出力の要求がディスプレイ制御部３９からメモリ制御部３７に対して行われ、その領域の画素データが適宜画像メモリ３８から読み出され、ディスプレイ制御部３９において画面表示用の所定の信号に変換され、表示装置４に出力される。
これにより、表示装置４には、所望の画像が画面に表示される。
【００３６】
次に、マッピング部３４内に設けられ、前述したようなテクスチャマッピング処理、フォグ演算およびハイライト演算を行うための演算装置について、図２を参照して説明する。
図２は、その演算装置の構成を示すブロック図である。
演算装置１００は、マルチプレクサ１１０、演算器１２０およびレジスタ１４０を有する。
【００３７】
マルチプレクサ１１０は、演算器１２０で所望の演算が行われるように、演算装置１００に対して印加される複数の変数より所定の変数を選択して演算器１２０に入力する。
マルチプレクサ１１０には、外部より、テクスチャマッピングデータＲｔ、テクスチャが張り付けられる側の画像データＲｆ、フォグカラーＲｆｇ、フォグ係数ｆ、特定の環境光Ｄおよび特定の光源の光Ｅなどが、また、フォグ演算される前のデータＲｒとして後述するレジスタ１４０の出力が、各々入力される。マルチプレクサ１１０は、図示せぬ３次元画像生成装置３の制御部より別途入力される、乗算を行うのか積和演算を行うのかフォグ演算を行うのかを示すモードコントロール信号に基づいて、Ａ×α＋Ｂ×（１−α）＋Ｃの演算の各変数となるデータをこれらの入力データより各々選択し、後述する演算器１２０に出力する。
【００３８】
より具体的には、テクスチャマッピングを行う場合で、乗算を行う場合には、演算器１２０の変数ＡとしてテクスチャマッピングデータＲｔを、変数αとしてテクスチャが張り付けられる側の画像データＲｆを、変数Ｂおよび変数Ｃとして０を各々選択し、演算器１２０に出力する。
また、フォグ演算を行う場合には、演算器１２０の変数Ａとしてフォグ演算される前のデータＲｒを、変数αとしてフォグ係数ｆを、変数ＢとしてフォグカラーＲｆｇを、変数Ｃとして０を各々選択し、演算器１２０に出力する。
さらに、ハイライト演算などの乗算を行う場合には、演算器１２０の変数ＡとしてテクスチャマッピングデータＲｔを、変数αとして環境光Ｄを、変数Ｂとして０を、変数Ｃとして特定の光源の光Ｅを各々選択し、演算器１２０に出力する。
【００３９】
演算器１２０は、本発明に係わり、８ビットのＡ×α＋Ｂ×（１−α）＋Ｃの演算を、α＝１．０（０ｘＦＦ）の場合でも適切な結果が得られるように行う演算器である。
この演算器１２０の構成について図３〜図５を参照して説明する。
図３は、演算器１２０における演算方法およびその構成を説明するための図であり、Ａ×α＋Ｂ×（１−α）＋Ｃが、補正項Ｆ、変数αのビットに対応して選択された部分積ｏｕｔ＿０〜ｏｕｔ７、および、積和演算項Ｃを、図示のごとくシフトさせて加算することにより求めることを示している。
【００４０】
補正項Ｆは、α＝０ｘＦＦ（α＝１．０）の場合にはＡを、それ以外の場合にはＢを選択した値である。
各部分積ｏｕｔ＿０〜ｏｕｔ＿７は、αの各ビットごとに、そのビットが１であればＡを選択し、０であればＢを選択した値である。これらの選択したデータは、αのそのビット番号分左にシフトさせて加算の要素とされる。なお、αのビット番号はＬＳＢ（２0 の桁）がビット０であり、ＭＳＢ（２7 の桁）がビット７である。したがって、αのＬＳＢ（２0 の桁）の値が１であればｏｕｔ＿０はＡであり、０であればｏｕｔ＿０はＢとなる。また、αのＭＳＢ（２7 の桁）値が１であればｏｕｔ＿７はＡであり、０であればｏｕｔ＿０はＢであり、この値を左に７ビットシフトさせた値が加算される。
積和演算項Ｃは、８ビット×８ビットの乗算結果の上位８ビットをとって８ビットの演算結果を得た結果にさらにこの積和演算項Ｃが加算できるように、左に８ビットシフトさせて加算される。
【００４１】
演算器１２０の加算器１３０は、前述したように得られて、各々桁がシフトされた補正項Ｆ、各部分積ｏｕｔ＿０〜ｏｕｔ＿７および積和演算項Ｃを加算し、さらにその上位８ビットを演算結果として出力する。
本実施の形態において、加算器１３０は、ｗａｌｌａｃｅ＿ｔｒｅｅ型のア−キテクチャーの加算器である。この、ｗａｌｌａｃｅ＿ｔｒｅｅ型ア−キテクチャーの加算器は、その構成の一部を図４に示すように、１ビットの加算器を順にツリ−状に配置した構成の加算器である。
【００４２】
レジスタ１４０は、演算器１２０行われた演算結果を一旦記憶し、外部に出力するとともに、マルチプレクサ１１０に再入力するためのレジスタである。テクスチャマッピングを行ったデータに対してフォグ演算を行う場合などに、このレジスタ１４０に記憶された結果がマルチプレクサ１１０を介して演算器１２０に再入力される。
【００４３】
このような構成の演算装置１００において、テクスチャマッピング、フォグ演算、および、ハイライト演算などの３次元画像生成装置３のマッピング部３５における処理が行われる。
これらの処理について具体的に説明する。
なお、本実施の形態においては、テクスチャマッピングの際は通常の乗算を行い、フォグ演算の場合には線形補間演算を行い、ハイライト演算の際には積和演算を行うものとする。
【００４４】
テクスチャマッピングを行う場合には、乗算モードを示すモードコントロール信号がマルチプレクサ１１０に入力される。これによりマルチプレクサ１１０において、前述したように、演算器１２０における変数ＡとしてテクスチャマッピングデータＲｔが、変数αとしてテクスチャが張り付けられる側の画像データＲｆが、変数Ｂおよび変数Ｃとして０が各々選択され、演算器１２０に入力される。その結果、演算器１２０では、Ｒｔ×Ｒｆの乗算が行われ、テクスチャマッピングが行われる。
【００４５】
フォグ演算を行う場合には、線形補間演算モードを示すモードコントロール信号がマルチプレクサ１１０に入力される。これによりマルチプレクサ１１０において、演算器１２０における変数Ａとしてフォグ演算される前のデータＲｒが、変数αとしてフォグ係数ｆが、変数ＢとしてフォグカラーＲｆｇが、変数Ｃとして０が各々選択され、演算器１２０に入力される。その結果、演算器１２０では、Ｒｒ×ｆ＋Ｒｆｇ×（１−ｆ）の線形補間演算が行われ、各画素にフォグ効果が印加される。なおこの時、演算器１２０においては前述したような補正が行われているので、フォグ係数ｆが１．０（０ｘＦＦ）の場合には、フォグカラーＲｆｇに全く影響されないフォグ演算される前のデータが演算器１２０より出力される。
【００４６】
さらに、ハイライト演算を行う場合には、積和演算モードを示すモードコントロール信号がマルチプレクサ１１０に入力される。これによりマルチプレクサ１１０において、変数ＡとしてテクスチャマッピングデータＲｔが、変数αとして環境光Ｄが、変数Ｂとして０が、変数Ｃとして特定の光源の光Ｅが各々選択され、演算器１２０に入力される。その結果、演算器１２０では、Ｒｔ×Ｄ＋Ｅの積和演算が行われ、各画素のハイライト効果が印加される。
【００４７】
このように、本実施の形態の演算装置１００においては、演算器１２０において、Ａ×α＋Ｂ×（１−α）を計算する際に、αが０ｘＦＦの時にはＡを加算する補正を行っており、αが０ｘＦＦの時、すなわち数学的には１．０の時の計算結果の誤差を無くすことができる。
またこの補正を行う際に、Ａ×α＋Ｂ×（１−α）を展開したＡ×α＋Ｂ×￣α＋Ｂの＋Ｂの部分を＋Ａに置き換えるようにして補正を行っているので、αの値によってＡかＢかを選択するセレクタを追加するのみでこの補正を行うことができる。
【００４８】
またこの演算器１２０においては、Ａ×α＋Ｂ×（１−α）＋Ｃの演算が行えるので、変数として入力する値に応じて、補正乗算、積和演算、線形補間演算などを全て行うことができる。
また、その際に、演算器１２０はｗａｌｌａｃｅ＿ｔｒｅｅ型ア−キテクチャーの加算器により各部分積や補正項、積和演算項を加算しているので、回路規模や遅延時間の増加を最小限にすることができる。たとえば集積回路上にこの演算器１２０を構成する場合には、この回路の面積の増加を最小限に抑え、ほぼ面積の増加なくしてこの演算器１２０の回路を実現できる。
【００４９】
またこれにより、この演算装置１００を適用した３次元画像生成装置３においては、フォグ係数ｆが１．０（０ｘＦＦ）の場合には、フォグカラーＲｆｇに全く影響されないフォグ演算される前のデータが得られ、適切な画像データが得られる。
また、テクスチャマッピング、フォグ演算、ハイライト演算などを、全てこの演算装置１００を用いて行うことができるので、たとえば３次元画像生成装置３を集積回路上に構成する場合には、効率よく回路を構成することができ、回路規模が小さく高機能な３次元画像生成装置３を提供することができる。
【００５０】
なお、本発明は本実施の形態に限られるものではなく、種々の改変が可能である。
たとえば、前述した演算装置１００の演算器１２０においては、補正項Ｆとして、α＝０ｘＦＦ（α＝１．０）の場合にはＡを、それ以外の場合にはＢを選択するようにした。しかし、α＝０ｘＦＦ（α＝１．０）の場合の補正項は、Ａにすることに限られるものではない。Ａ以上の値であれば、適切に補正が行えるので、たとえば、Ａ＋Ｂを補正項とするようにしてもよい。また、たとえば他の構成部により生成されるＡ以上の値をとることが確かな任意の値を用いて、α＝０ｘＦＦの場合の補正項としてよい。
【００５１】
また、演算器１２０の加算器１３０は、ｗａｌｌａｃｅ＿ｔｒｅｅ型アーキテクチャーの加算器としたが、適切な演算結果が得られることのみを目的とするのであれば、この加算器の構成は任意でよい。たとえば、アレイ型、キャリーセーブ型など、通常知られている任意の加算器で構成してよい。ただし、遅延時間や回路面積などを考慮すると、本実施の形態のようなｗａｌｌａｃｅ＿ｔｒｅｅ型アーキテクチャーの加算器が有効である。
【００５２】
また、前述した演算器１２０においては、８ビットの処理系を用いて説明したが、この変数などのビット幅は８ビットに限られるものではなく、１６ビット、３２ビットなどを初めとして、任意のビット幅でよい。
また、本実施の形態においては、演算器１２０を３次元画像生成装置３に適用した場合を例示したが、その他の任意の装置に適用してよい。
【００５３】
【発明の効果】
以上説明したように、本発明によれば、補間係数α＝１．０の場合においても適切に元のデータが得られるような演算を行うことができる線形補間演算装置であって、積和演算をも高速に行うことができ、一方で回路規模はほとんど増加せず集積回路化に適したような演算装置を提供することができる。
また、たとえば、テクスチャマッピング処理、フォグ演算、ハイライト演算などの画像処理が高速に効率よく行え、さらには集積回路化に適したような画像処理装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態の３次元コンピュータグラフィックスシステムの構成を示すブロック図である。
【図２】図１に示した３次元コンピュータグラフィックスシステムのマッピング部内に設けられる、本発明に係わる演算装置の構成を示すブロック図である。
【図３】図２に示した演算装置の演算器における演算方法およびその構成を説明するための図である。
【図４】図３に示した演算器の加算器の構成を説明するための図である。
【図５】従来の乗算器の演算方法およびその構成を説明するための図である。
【符号の説明】
１…３次元コンピュータグラフィックスシステム、２…入力部、３…３次元画像生成装置、４…表示装置、３２…ジオメトリ演算部、３３…パラメータ演算部、３４…画素発生部、３５…マッピング部、３６…テクスチャメモリ、３７…メモリ制御部、３８…画像メモリ、３９…ディスプレイ制御部、１００…演算装置、１１０…マルチプレクサ、１２０…演算器、１３０…加算器、１４０…レジスタ
【図１】
0003985321.tif 000002
【図２】
0003985321.tif 000003
【図３】
0003985321.tif 000004
【図４】
0003985321.tif 000005
【図５】
0003985321.tif 000006