JP3657350B2 - 関数発生器 - Google Patents
関数発生器 Download PDFInfo
- Publication number
- JP3657350B2 JP3657350B2 JP13070896A JP13070896A JP3657350B2 JP 3657350 B2 JP3657350 B2 JP 3657350B2 JP 13070896 A JP13070896 A JP 13070896A JP 13070896 A JP13070896 A JP 13070896A JP 3657350 B2 JP3657350 B2 JP 3657350B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- adders
- adder
- data
- arithmetic processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Description
【発明の属する技術分野】
この発明は、例えば、3次元コンピュータグラフィックスに適用される画像生成装置における曲面分割を行うためのスプライト関数の演算を行うのに好適な関数発生器に関する。
【0002】
【従来の技術】
3次元コンピュータグラフィックスでは、多数のポリゴン(例えば三角形や四角形などの多角形)の集合として物体を表示している。このため、3次元コンピュータグラフィックスに適用される画像生成装置において、曲面を含む画像の当該曲面部分を、より自然に表現しようとする場合には、細かい多くのポリゴンを生成して画像を描画画像を生成するようにする必要がある。
【0003】
しかし、この多数のポリゴンの頂点座標のデータを格納するためには、大容量のメモリが必要であり、ゲーム機などのようにメモリ容量に制限がある場合には、ポリゴンの大きさが大きくなり、きめの細かい曲面を表現することが困難である。
【0004】
そこで、従来から曲面などの形状をスプライン関数等を合成して表現し、ポリゴンの頂点座標の代わりに曲面を決定するコントロールポイントのデータのみをメモリに格納して、メモリを節約する手法が用いられている。
【0005】
この方法は、例えば3次元等の多次元関数であるスプライン関数を高速に生成しなければならなず、多数個の積和演算器が必要になる。このため、ハードウエア構成が複雑になり、LSI化したときに、チップ面積が大きくなり、また、高価格になってしまう。
【0006】
【発明が解決しようとする課題】
ところで、後述するように、微分解析器を組み合わせることにより、スプライン関数を逐次計算することができる。しかし、スプライン関数を専用に計算するための微分解析器を命令実行型演算処理装置(以下、マイクロプロセッサという)の演算処理部分に内蔵するには、専用の回路をマイクロプロセッサ内に設ける必要があり、チップ面積の増大を伴い、製造コストの上昇を招くという問題がある。このため、従来は、このような計算機能を専用化したマイクロプロセッサは存在せず、その結果、スプライン関数は、通常の加算命令等を組み合わせてソフトウエアで作成する必要があり、計算速度が遅いという問題があった。
【0007】
この発明は、以上のような欠点の生じない関数発生器を提供することを目的とする。
【0008】
【課題を解決するための手段】
上記課題を解決するために、この発明による関数発生器は、マイクロプロセッサ内部の算術演算回路における加算器に変更を加えて、機能を拡張したものであり、
m個(mは自然数)の加算器と、少なくとも一つのレジスタとを備えると共に、
前記マイクロプロセッサ内の一つのレジスタのうちの全部もしくは一部が、それぞれ所定ビット数のワードをストアする0番からm番までの(m+1)個のレジスタ部分に分割され、
前記m個の加算器のうちのi(i≦m)番目の加算器における2個の入力端の一方がi番目の前記レジスタ部分に、他方が(i−1)番目の前記レジスタ部分に、それぞれ接続され、当該i番目の加算器の出力端が、前記i番目のレジスタ部分に接続されて構成されることを特徴とする。
【0009】
そして、一つの命令により、前記m個の加算器の加算が同時に実行させられることにより、高速に関数演算が実行される。
【0010】
【発明の実施の形態】
以下、この発明による関数発生器の一実施の形態を、ゲーム機内に設けられ、曲面描画のときの曲面分割処理に用いられる命令実行型演算処理部に適用した場合について、図を参照しながら説明する。
【0011】
図3は、この発明の一実施の形態の画像生成装置の構成例を示すもので、この例は3Dグラフィックス機能と、動画再生機能とを備えるゲーム機の場合の例である。
【0012】
図4は、この例のゲーム機の外観を示すもので、この例のゲーム機は、ゲーム機本体1と、ユーザの操作入力部を構成するコントロールパッド2とからなる。コントロールパッド2は、このコントロールパッド2に接続されているケーブル3の先端に取り付けられているコネクタプラグ4を、ゲーム機本体1のコネクタジャック5Aに結合させることにより、ゲーム機本体1に接続される。この例では、いわゆる対戦ゲーム等のために、2個のコントロールパッド2がゲーム機本体1に対して接続することができるように、2個のコネクタジャック5A,5Bがゲーム機本体1に設けられている。
【0013】
この例のゲーム機は、ゲームプログラムや画像データが書き込まれたCD−ROMディスク6をゲーム機本体1に装填することにより、ゲームを楽しむことができる。
【0014】
次に、図3を参照しながら、この例の画像生成装置の構成について説明する。この例の画像生成装置としてのゲーム機は、メインバス10と、サブバス20とからなる2つのシステムバスを備える構成を有している。これらメインバス1と、サブバス2との間のデータのやり取りは、バスコントローラ30により制御される。
【0015】
そして、メインバス10には、メインCPU11と、メインメモリ12と、画像伸長部13と、前処理部14と、描画処理部15と、メインのDMAコントローラ16(以下、メインDMACという)が接続されている。描画処理部15には、処理用メモリ17が接続されていると共に、この描画処理部15は表示データ用のいわゆるフレームメモリと、D/A変換回路を含み、この描画処理部15からのアナログビデオ信号がビデオ出力端子18に出力される。図示しないが、このビデオ出力端子18は、表示装置としての例えばCRTディスプレイに接続される。
【0016】
サブバス20には、サブCPU21と、サブメモリ22と、ブートROM23と、サブのDMAコントローラ24と、音声処理用プロセッサ25と、入力部26と、CD−ROMデコーダ27と、拡張用の通信インターフェース部28とが接続される。ブートROM23には、ゲーム機としての立ち上げを行うためのプログラムが格納されている。また、音声処理用プロセッサ25に対しては、音声処理用メモリ25Mが接続されている。そして、この音声処理用プロセッサ25はD/A変換回路を備え、これよりはアナログ音声信号を音声出力端子29に出力する。
【0017】
そして、CD−ROMデコーダ27は、CD−ROMドライバ40に接続されており、CD−ROMドライバ40に装填されたCD−ROMディスク6に記録されているアプリケーションプログラム(例えばゲームのプログラム)やデータをデコードする。CD−ROMディスク6には、例えば離散コサイン変換(DCT)により画像圧縮された動画や静止画の画像データや、ポリゴンを修飾するためのテクスチャー画像の画像データも記録されている。
【0018】
CD−ROMディスク6のアプリケーションプログラムには、ポリゴン描画命令が含まれており、曲面の場合には、使用するスプライン関数を特定するデータと、曲面を決定するコントロールポイントのデータが、このCD−ROM31に記憶されている。後述するように、コントロールポイントのデータの代わりに、微分解析器からなるスプライン関数発生器に与える初期化データに適するデータを記憶しておくようにしてもよい。
【0019】
入力部26は、前述した操作入力手段としてのコントロールパッド2と、ビデオ信号の入力端子と、音声信号の入力端子を備えるものである。
【0020】
メインCPU11は、メインバス10側の各部の管理および制御を行なう。また、このメインCPU11は、物体を多数のポリゴンの集まりとして描画する場合の処理の一部を行う。メインCPU11は、後述もするように、1画面分の描画画像を生成するための描画命令例をメインメモリ12上に作成する。
【0021】
また、このメインCPU11は、キャッシュメモリ11Mを有し、CPUインストラクションの一部は、メインバス10からフェッチすることなく実行できる。さらに、メインCPU11には、描画命令を作成する際にポリゴンについての座標変換演算を行なうための座標演算部11Gが、CPU内部コプロセッサとして設けられている。座標演算部11Gは、3次元座標変換及び3次元から表示画面上の2次元への変換の演算を行なう。
【0022】
このように、メインCPU11は、内部に命令キャッシュ11Mと座標演算部11Gを有しているため、その処理をメインバス10を使用しなくても、ある程度行うことができるため、メインバス10を開放しやすい。
【0023】
メインメモリ12は、動画や静止画の画像データに対しては、圧縮された画像データのメモリ領域と、伸長デコード処理された伸長画像データのメモリ領域とを備えている。また、メインメモリ12は、描画命令列などのグラフィックスデータのメモリ領域(これをパケットバッファという)を備える。このパケットバッファは、メインCPU11による描画命令列の設定と、描画命令列の描画処理部への転送とに使用される。
【0024】
画像伸長部13は、CD−ROMディスク6から再生された圧縮画像データの伸長処理を行なうもので、ハフマン符号のデコーダと、逆量子化回路と、逆離散コサイン変換回路のハードウエアを備える。ハフマン符号のデコーダの部分は、メインCPU11がソフトウエアとしてその処理を行うようにしてもよい。
【0025】
描画処理部15は、メインメモリ12から転送されてくる描画命令を実行して、その結果をフレームメモリに書き込む。フレームメモリから読み出された画像データは、D/A変換器を介してビデオ出力端子18に出力され、画像モニター装置の画面に表示される。
【0026】
前処理部14は、CPUを備えるプロセッサの構成とされるもので、メインCPU11の処理の一部を分担することができるようにするものである。この例の場合には、後述するように、この前処理部14において、曲面についての画像生成処理を行うようにする。その場合には、曲面分割処理と、分割処理により得られた多数個のポリゴンデータを、表示のための2次元座標データに変換する処理も、この前処理部14が行う。
【0027】
このゲーム機の基本的な処理について以下に説明する。
【0028】
[CD−ROMディスク6からのデータの取り込み]
図3の例のゲーム機に電源が投入され、ゲーム機本体1にCD−ROMディスク6が装填されると、ブートROM23の、ゲームを実行するためのいわゆる初期化処理をするためのプログラムが、サブCPU21により実行される。すると、CD−ROMディスク6の記録データが次のようにして取り込まれる。
【0029】
すなわち、CD−ROMディスク6から、圧縮画像データ、描画命令及びメインCPU11が実行するプログラムが、CD−ROMドライバ40、CD−ROMデコーダ27を介して読み出され、サブDMAC24によってサブメモリ22に一旦ロードされる。
【0030】
そして、このサブメモリ22に取り込まれたデータは、サブDMACおよびバスコントローラ30、さらにはメインDMAC16によってメインメモリ12に転送される。なお、サブCPU21は、描画処理部15のフレームに対して直接的にアクセスできるように構成されており、このサブCPU21によっても表示画像内容の変更が、描画処理部15の制御とは離れて可能とされている。
【0031】
[圧縮画像データの伸長及び転送]
メインメモリ12の入力データのうち、圧縮画像データは、この例では、メインCPU11がハフマン符号のデコード処理を行った後、再びメインCPU11によりメインメモリ12に書き込まれる。そして、メインDMAC16は、このハフマン符号のデコード処理後の画像データをメインメモリ12から画像伸長部13に転送する。画像伸長部13は、逆量子化の処理と、逆DCTの処理を行って画像データの伸長デコード処理を行う。伸長された画像データは、メインDMAC16が、メインメモリ12に転送する。
【0032】
メインCPU11は、伸長された画像データのマクロブロックと呼ばれる単位データが一定量、メインメモリ12に蓄積された時点で、当該伸長データを描画処理部15のフレームメモリに転送する。この際に、伸長画像データがフレームメモリの画像メモリ領域に転送されれば、そのまま背景動画像として画像モニター装置で表示されることになる。また、フレームメモリのテクスチャー領域に転送される場合もある。このテクスチャー領域の画像データは、テクスチャー画像として、ポリゴンの修飾に使用される。
【0033】
[描画命令列についての処理と転送]
物体の面を構成するポリゴンは、3次元的な奥行きの情報であるZデータに従って奥行き方向の深い位置にあるポリゴンから順に描画することにより、2次元画像表示面に立体的に画像を表示することができる。メインCPU11は、このように奥行き方向の深い位置にあるポリゴンから順に、描画処理部15で描画が行われるようにするための描画命令列をメインメモリ12上に作成する。
【0034】
メインCPU11は、入力部26のコントロールパッドからのユーザーの操作入力に基づいて、物体や視点の動きを計算し、メインメモリ12上にポリゴン描画命令列を作成する。
【0035】
この描画命令列が完成すると、メインDMAC16は、前処理部14を通じて、描画命令毎に、メインメモリ12から描画処理部15に転送する。この際に、前処理部14において、曲面のデータについては後述のような曲面分割演算およびポリゴン生成処理が施される。
【0036】
描画処理部15では、送られてきたデータを順次実行して、その結果を、フレームメモリの描画領域に格納する。このポリゴン描画の際、データは、描画処理部15の勾配計算ユニットに送られ、勾配計算が行なわれる。勾配計算は、ポリゴン描画で多角形の内側をマッピングデータで埋めていく際、マッピングデータの平面の傾きを求める計算である。テクスチャーの場合はテクスチャー画像データでポリゴンが埋められ、また、グーローシェーディングの場合は輝度値でポリゴンが埋められる。
【0037】
更に、動画のテクスチャーが可能である。つまり、動画テクスチャーの場合には、前述したように、CD−ROMディスクからの圧縮された動画データは、一旦、メインメモリ12に読み込まれる。そして、この圧縮画像データは、画像伸長部13に送られる。画像伸長部13で、画像データが伸長される。このとき、前述したように、伸長処理の一部は、メインCPU11が負担する。
【0038】
そして、伸長された動画データは描画処理部15のフレームメモリ上のテクスチャー領域に送られる。テクスチャー領域は、この描画処理部15のフレームメモリ内に設けられているので、テクスチャーパターン自身も、フレーム毎に書き換えることが可能である。このように、テクスチャー領域に動画を送ると、テクスチャーが1フレーム毎に動的に書き換えられて変化する。このテクスチャー領域の動画により、ポリゴンへのテクスチャーマッピングを行えば、動画のテクスチャーが実現される。
【0039】
[曲面描画処理の説明]
図5は、曲面描画処理についての、前処理部14と、描画処理部15の要部の構成を示す図である。
【0040】
この図5に示すように、前処理部14は、ポリゴン分割手段141と、スプライン関数発生器142と、座標変換手段143とを備える。ポリゴン分割手段141と、座標変換手段143とは曲線描画処理の場合の前処理部出の機能をブロックとして示したものである。スプライン関数発生器142は、この発明による関数発生器の一実施例であり、後述するように、複数の加算器からなる微分解析器で構成される。
【0041】
そして、描画処理部15は、機能手段としての描画手段151と、フレームメモリ152とからなる。
【0042】
曲面描画処理の場合には、前処理部14には、この例の場合には、曲面のコントローラポイントのデータがメインメモリ12から転送される。ポリゴン分割手段141は、このコントローラポイントのデータを加工して、スプライン関数発生器142に供給する初期化データを生成する。また、ポリゴン分割手段141は、予め、描画しようとする曲面を分割したときの分割ステップの大きさを定めておく。そして、生成した初期化データと、分割ステップの大きさの情報とを、スプライン関数発生器142に与え、このスプライン関数発生器142を初期化する。
【0043】
スプライン関数発生器142は、初期化データを起算点として関数演算処理を行う。そして、各分割ステップごとのスプライン関数値を生成する。生成されたスプライン関数値は、ポリゴン分割手段141により、読み出される。
【0044】
ポリゴン分割手段141は、スプライン関数発生器142から読み出したスプライン関数値を元に、描画しようとする曲面を前記の分割ステップで分割したときに生じる分割平面の、例えば4角形ポリゴンのポリゴンデータを生成する。この各分割平面のポリゴンデータは、座標変換手段143に送られる。座標変換手段143は、このポリゴンデータを、表示装置としてのCRTディスプレイに適合するスクリーン座標系の2次元頂点データに変換し、描画手段151に送る。
【0045】
描画手段151は、受け取った2次元頂点データに基づいて平面の塗り潰し、必要に応じてテクスチャーや光源計算から得られた輝度値を元にしたシェーディングを施すような処理をした画像データをフレームメモリ152に書き込む。フレームメモリ152のデータは、適宜、読み出されて、D/A変換され、ビデオ出力端子18より画像モニター装置としてのCRTディスプレイに供給されて曲面を含む画像が表示される。
【0046】
次に、以上の曲面描画処理について、さらに説明する。
【0047】
図6は、描画しようとする一つの曲面の例を示すものである。この図6において、u,vは、曲面に関するパラメータ座標であり、図6のように、曲面に沿ってそれぞれ矢印の方向に増加するものとする。Q(u,v)は、この曲面上の点であり、3次元ベクトルである。今、3次のスプライン関数を用いた曲面を考え、この曲面のコントロールポイントを3次元ベクトルPijとすると、u,v曲面上の点Q(u,v)は、図7の式(eq1)で表される。
【0048】
この式(eq1)で、Bi(u),Bj(v)は3次のスプライン関数であり、Bi(u)は図7の式(eq2)のように表され、Bj(v)は図7の式(eq3)のように表される。
【0049】
そして、図7の式(eq1)を変形すると、図7の式(eq4)のようになる。ただし、この式(eq4)のSk(v)は、図7の式(eq5)のように表されるスプライン関数であり、3次元ベクトルである。また、式(eq5)におけるvの各次数の項の係数Rklは、図7の式(eq6)であり、これも3次元ベクトルである。
【0050】
以上のことから、式(eq6)で表される3次元ベクトルRklが求まると、式(eq5)で表される3次元ベクトルSk(v)が求まり、これにより点Q(u,v)が求められることになる。式(eq6)において、akjおよびaljは、スプライン関数が決まれば決まる値であり、CD−ROMディスク6には、曲面のデータとしてのコントロールポイントのデータのほかに、曲面を決定するスプライン関数を特定するための情報として記憶されている。
【0051】
したがって、今、曲面をu方向にG個、v方向にH個に、等分割すれば、各々の分割により得られる分割平面の頂点は、以下に説明するアルゴリズムにより求めることができる。このアルゴリズムを図8および図9のフローチャートを参照しながら説明する。
【0052】
まず、ステップS1において、式(eq6)より、k,l∈{0,1,2,3}に対して、コントロールポイントの3次元ベクトルPijから、前記3次元ベクトルRklを求める。なお、このようにして、演算により3次元ベクトルRklを求めるのではなく、予め曲面データとして、コントロールポイントのデータの代わりに、この3次元ベクトルRklをCD−ROMディスク6に記憶しておき、このCD−ROMディスク6から直接的に読み出すようにしてもよい。
【0053】
ステップS1が終了すると、ステップS2に進み、この例では、曲面をu方向にG個、v方向にH個に、等分割するときの、u方向およびv方向の分割ステップ幅ΔuおよびΔvを、Δu=1/G、Δv=1/Hとして設定する。
【0054】
次に、ステップS3に進み、k∈{0,1,2,3}に対する各々の3次のスプライン関数Sk(v)の関数発生器に、v方向の分割ステップ幅Δvと、前記3次元ベクトルRklを渡して、前記スプライン関数発生器を初期化する。すなわち、このときには、スプライン関数発生器112は、スプライン関数Sk(v)の関数発生器として働くものである。
【0055】
そして、次のステップS4において、vの値を0、v方向の繰り返しのステップ回数rvを0として初期設定をした後、v方向の以下の処理をrv=H回だけ、繰り返す。すなわち、ステップS5においては、rv=H回のv方向の処理が終了したか否か判断し、未だ、終了していなければ、ステップS6に進む。
【0056】
このステップS6では、関数発生器112において、現在の3次元ベクトルSk(v)を求め、この求めたSk(v)と、u方向の分割ステップ幅Δuとを、スプライン関数Q(u,v)の関数発生器の初期化データとして渡して、このスプライン関数発生器を初期化する。すなわち、このときには、スプライン関数発生器112は、スプライン関数Q(u,v)の関数発生器として働くことになる。
【0057】
そして、次のステップS7において、uの値を0、u方向の繰り返しのステップ回数ruを0として初期設定をした後、u方向の以下の処理をru=G回だけ、繰り返す。すなわち、ステップ85においては、ru=G回のu方向の処理が終了したか否か判断し、未だ、終了していなければ、ステップS9に進む。
【0058】
ステップS9では、現在のスプライン関数Q(u,v)の値を求めて、その値をポリゴン分割手段141に出力する。そして、ステップS10に進み、uの値を分割ステップ幅Δuだけ大きくすると共に、u方向の繰り返しステップ回数ruを1だけ、インクリメントする。そして、ステップS8〜ステップS10の処理を繰り返し、u方向の次の分割ステップのところでの、スプライン関数Q(u,v)の値を求めて、その値をポリゴン分割手段141に出力する。
【0059】
ステップS8〜ステップS10の処理を、ru=G回だけ繰り返して、v方向の1つの分割ステップのところでの、u方向のすべての分割ステップについての、スプライン関数Q(u,v)の値が求まると、ステップS8からステップS11に進み、vの値を分割ステップΔvだけ大きくすると共に、v方向の繰り返しステップ回数rvを1だけ、インクリメントする。そして、ステップS5以降の処理を繰り返す。これにより、v方向の各分割ステップ点ごとの、u方向のすべての分割ステップ点についての、スプライン関数Q(u,v)の値が求まり、その値がポリゴン分割手段141に送られる。
【0060】
以上のようにして繰り返し処理が行われて、ステップS5において、v方向の繰り返しステップ回数rv=Hとなったことが判別されると、このステップS5からステップS12に進み、ポリゴン分割手段141は、蓄えていた各分割ステップ点ごとのスプライン関数Q(u,v)の値を元にして、G×H個の4角形ポリゴンを作成し、これを座標変換手段143に送る。
【0061】
座標変換手段143は、前述したように、4角形ポリゴンのデータをCRTディスプレイに表示するための2次元頂点データに変換して、描画処理部15に送る。描画処理部15は、これに基づいて、前述したような描画処理を実行し、CRTディスプレイの画面には、曲面の画像が表示される。
【0062】
なお、上記のアルゴリズムにおいては3次元ベクトルを扱ったが、同時座標系の4次元ベクトル系にも同様な手法で拡張可能である。また、上述のアルゴリズムでは、分割ステップ幅Δu、Δvごとのスプライン関数Q(u,v)の値を、すべて得た後に、G×H個の4角形ポリゴンを作成し、これを座標変換手段143に送るようにしたが、ステップS9において、スプライン関数Q(u,v)が得られた時点で、ポリゴン分割手段141が対応する4角形ポリゴンを作成して、座標変換手段143に出力するようにしてもよい。
【0063】
また、上述したように、曲面のスプライン関数を特定する情報と、曲面のコントロールポイントのデータとを、CD−ROMディスク6に記憶しておくのではなく、コントロールポイントのデータに代えて、スプライン関数発生器の初期化データに適した情報、例えば上記の例で言えば、3次元ベクトルRklを、CD−ROMディスク6に保存しておくようにすれば、上述した計算アルゴリズムの計算時間の短縮化が図れるものである。
【0064】
[関数発生器の一実施例]
この例の関数発生器の構成を説明する前に、前処理部14を構成するマイクロプロセッサの内部の要部のハードウエア構成について説明する。図10は、この例のマイクロプロセッサのALU(論理演算装置)の部分の要部構成例を示すもので、加算部51、減算部52、掛算部53、割算部54の四則演算部に加えて微分解析部55を備える。
【0065】
これら加算部51、減算部52、掛算部53、割算部54、微分解析部55には、図示しないレジスタからの入力データIN1,IN2がそれぞれ供給される。また、これら加算部51、減算部52、掛算部53、割算部54、微分解析部55の出力は、スイッチ回路56にそれぞれ供給される。スイッチ回路56は、切換制御命令CNTにより切り換えられ、図示しないレジスタに出力が送られるものである。
【0066】
微分解析器55は、複数個の加算器により構成されるもので、上述したアルゴリズムの場合のように、3次元ベクトル値(3次元関数値)を計算するものである場合には、3個の加算器を用いて構成できる。
【0067】
図1は、このように3次元ベクトル値を計算する場合の微分解析器55の構成の一例を、レジスタとの関連も併せて示した図である。この例の場合の微分解析器55は、スプライン関数発生器142を構成するものである。
【0068】
すなわち、この例の微分解析器55は、3個の加算器A1,A2,A3を備える。そして、この例の場合、マイクロプロセッサには、複数個のレジスタが設けられるが、各レジスタのビット数は、例えば64ビット分とされている。つまり、このマイクロプロセッサは、64ビットを1ワードとして扱うことができるものである。
【0069】
微分解析器55では、図1にも示すように、一つのレジスタRGの、この例では、全容量を、加算器の数mとしたとき、(m+1)個のレジスタ部分に分割して、その各レジスタ部分のデータを1ワードとして扱うようにする。すなわち、図1の例では、m=3であるので、64ビットの容量のレジスタRGを、16ビットを1ワードとする4個のレジスタ部分RA0,RA1,RA2,RA3に分割したものと見做して使用する。
【0070】
そして、説明を一般化するために、レジスタ部分RA0,RA1,RA2,RA3と、3個の加算器A1,A2,A3を、図1のように、図の右側から、そのサフィックスの数値の小さいものから順に並べたと仮定した場合、i(i≦3)番目の加算器Aiの2個の入力端は、i番目および(i−1)番目のレジスタ部分RAiおよびRA(i−1)に、それぞれ接続される。また、当該i番目の加算器Aiの出力端は、前記i番目のレジスタ部分RAiに接続される。
【0071】
そして、一つの命令により、この微分解析器55の3個の加算器A1〜A3は、加算演算を同時に実行する。すなわち、3個の加算器Ai(i=1,2,3)は、レジスタRA(i−1)とレジスタRAiからデータを読み出し、加算した結果をレジスタRAiに書き込むという動作を、同時に行うものである。
【0072】
ここで、前述した分割ステップ幅Δuごとの、uに関する3次のスプライン関数の値は、次のようにして、この図1の構成の微分解析器55からなるスプライン関数発生器142から得られる。
【0073】
この場合、スプライン関数演算に当たって、まず、レジスタ部分RA0,RA1,RA2,RA3のそれぞれには、図11Aに示すような初期値が書き込まれる。この図11Aから分かるように、この初期値には、分割ステップ幅Δuが含まれる。なお、このΔuの大きさは、前述したように、等分割の場合には、その分割数によって定まるものであり、分割数がユーザの入力や、CD−ROMディスク6に記憶されている情報に基づいて設定されることにより、定まるものであり、一定ではない。もっとも、曲面分割が等分割でない場合であっても勿論良い。
【0074】
このようにレジスタ部分RA0〜RA3に初期値が設定された後、加算器A1,A2,A3による加算を同時に実行すると、レジスタ部分RA0〜RA3の内容は、その実行回数により、図11Bに示すように変わる。この図11Bから分かるように、加算器A1,A2,A3による加算を、この例では、3回、同時に実行すると、レジスタ部分RA3には、3次のスプライン関数の値が得られるものである。
【0075】
このように、所定回数rだけ、加算器A1,A2,A3による加算を同時に実行すると、レジスタRA3には、
a・(r・Δu)3 +b・(r・Δu)2 +c・(r・Δu)+d
が格納されるものである。すなわち、分割ステップ幅Δuごとの、uに関する3次のスプライン関数がレジスタ部分RA3に得られる。したがって、各分割ステップ幅Δuごとのr回の加算器A1,A2,A3による加算の同時実行後のレジスタ部分RA3の値を、スプライン関数発生器142の出力とすることで、上述したアルゴリズム中の各分割ステップごとのスプライン関数の値がポリゴン分割手段141に与えられるものである。
【0076】
なお、3次以上のn次のスプライン関数を発生する関数発生器は、n個の加算器を用いた微分解析器により関数発生器を構成して、上述と同様の手法で求めることができる。
【0077】
従来のマルチメディア命令においては、図2に示すように、4個の加算器A0〜A3のj番目(j=0,1,2,3)の加算器Ajの2つの入力の一方には、レジスタRG1の各分割レジスタ部分RAjの値を、他方にはレジスタRG2の各分割レジスタ部分RBjの値を、それぞれ供給する構成として、それぞれのレジスタ部分の内容を書き換えながら、それぞれの加算器Ajにそれぞれ加算命令を加えるようにしなければならない。
【0078】
これに対して、図1に示した、この実施の形態による微分解析器の構成によれば、レジスタは一つでよく、また、加算器Aiを同時に実行させる命令を設けることにより、高速にスプライン関数の値を、レジスタ部分RA3に得ることができる。
【0079】
図12は、この発明による関数発生器の他の実施の形態を示すものである。
【0080】
この実施の形態は、4個の加算器A0,A1,A2,A3を備える場合である。この例の場合も、レジスタ部分RA0,RA1,RA2,RA3と、4個の加算器A0,A1,A2,A3を、図1のように図の右側から、そのサフィックスの数値の小さいものから順に並べたと仮定した場合、加算器A1〜A3については、図1の例とまったく同様に接続構成される。そして、この例の場合には、加算器A0の一方の入力端には、定数、例えば「0」が供給され、他方の入力端には、レジスタ部分RA0の値が供給される。
【0081】
この図12の例は、機能的には、図1の実施の形態の場合と同じ機能を有するが、この構成は、図2に示した構成と近い構成になり、より現実的な構成例となる。
【0082】
図13は、この発明による関数発生器のさらに他の実施の形態を示すものである。この例は、図11の構成と同様に、4個の加算器A0〜A3を用いる場合の例であるが、加算器A0の一方の入力端には、定数に代えて、他のレジスタの分割レジスタ部分からのデータを取り入れるようにしたものである。
【0083】
すなわち、この図13の実施の形態の場合には、2個のレジスタRGkとレジスタRG(k+1)(kは整数)を想定すると共に、これらのレジスタRGkとレジスタRG(k+1)を、前述の実施の形態と同様に16ビット単位で分割して、それぞれ4個のレジスタ部分RA0〜RA3、RB0〜RB3を備えるものとする。そして、レジスタRGkのレジスタ部分RB3からの16ビットワードを、加算器A0の他方の入力とする。
【0084】
なお、この場合、レジスタRGk,RG(k+1)は、加算器A0〜A3に対して固定的なものではなく、命令により切り換えられる任意のものである。
【0085】
この図13の実施の形態によれば、スプライン関数の次数が微分解析器を構成する加算器の個数よりも多い場合にも、以下に説明するような手法により、その高次のスプライン関数の値を、効率よく求めることができる。
【0086】
例えば7次のスプライン関数を計算する場合について、この図13の実施の形態の動作について説明する。
【0087】
(1)まず、予め適切な初期値をレジスタRG(k+1)の各レジスタ部分RA3,RA2,RA1,RA0に設定し、また、レジスタRGkのレジスタ部分RB3に「0」を設定しておく。
【0088】
(2)次に、一つの命令により、それぞれの加算器A1,A2,A3は、以下のような計算を同時に行い、その計算結果を、矢印で示すように、対応するレジスタに格納する。この場合、計算上は、3つのレジスタを使用することになるので、それらのレジスタをR0,R1,R2とする。そして、それぞれのレジスタ部分に格納される16ビットワードを、R0(W0)〜R0(W3)、R1(W1)〜R1(W3)、R2(W2)〜R2(W3)とする。つまり、Rk(Wi)は、レジスタRGkにおけるレジスタ部分RAiのワードを示している。
【0089】
R2(W3)←R2(W3)+R2(W2)
R2(W2)←R2(W2)+R2(W1)
R2(W1)←R2(W1)+R2(W0)
R2(W0)←R2(W0)+R1(W3)。
【0090】
(3)次に、一つの命令により、それぞれの加算器A1,A2,A3は、以下のような計算を同時に行い、その計算結果を、矢印で示すように、対応するレジスタに格納する。
R1(W3)←R1(W3)+R1(W2)
R1(W2)←R1(W2)+R1(W1)
R1(W1)←R1(W1)+R1(W0)
R1(W0)←R1(W0)+R0(W3)。
【0091】
(4)前記(3)で求めたワードR1(W3)を得る。
【0092】
(5)そして、前記(2)に戻り、以上をr回繰り返す。
【0093】
以上のアルゴリズムにより、前記(4)では、r回目の繰り返し計算の結果のワードR1(W3)として、
で表される7次のスプライン関数の値を得ることができる。
【0094】
図14は、この発明による関数発生器の、さらに他の実施の形態である。この例では、図13の実施の形態において、加算器A0の一方の入力端側にスイッチ回路SWを設け、このスイッチ回路SWを、命令により切り換えるようにすることによって、この加算器A0の一方の入力として、定数「0」と、他のレジスタRGkのレジスタ部分RB3のデータとのいずれかを、選択的に選べるように構成している。
【0095】
この図14の実施の形態によれば、前記の計算のアルゴリズムの(1)において、レジスタRGkのレジスタ部分RB3に「0」を設定する代わりに、スイッチ回路SWを切換制御して、定数「0」を選択して入力する状態にすることができ、レジスタを、その分だけ、節約することができる。
【0096】
図12および図14の実施の形態においては、加算器A0の一方の入力としての定数は、「0」としたが、この定数としては、「0」以外の値や一般的なレジスタ値であってもよい。例えば、定数を「0」以外にすることにより、より多様なスプライン関数が生成可能となる。
【0097】
以上のようにして、マイクロプロセッサの算術演算装置に、若干の変更を加えて、命令を拡張することにより、スプライン関数等の関数発生機能を、マイクロプロセッサに持たせることが簡単にできる。
【0098】
そして、図13および図14の実施の形態のような構成とすることにより、限られた数の加算器を用いた微分解析器を用いて、高次のスプライン関数を効率よく発生する関数発生器を実現することができる。
【0099】
さらに、基本演算を1命令として実行し、また、中間データを汎用レジスタに置くことができるようにしているので、管理がしやすく、ソフトウエア作成上、使いやすいというメリットもある。
【0100】
なお、以上の例では、1つのレジスタのすべての容量部分を分割し、その分割レジスタ部分を用いるようにしたが、レジスタの容量のが大きい場合には、その一部の容量部分を分割して、その分割レジスタ部分を用いるようにしてもよい。
【0101】
また、以上の説明では、この発明による関数発生器を、コンピュータグラフィックス機能を備えるゲーム機における、曲面分割のために使用する場合について説明したが、使用用途はこれに限られるものではなく、多次の多項式を計算する関数発生器のすべてに適用可能である。
【0102】
【発明の効果】
以上説明したように、この発明によれば、マイクロプロセッサの算術演算装置に若干の変更を加えて、命令を拡張するという簡単な構成により、n次のスプライン関数等の値を得ることができる関数発生器を実現することができる。
【図面の簡単な説明】
【図1】この発明による関数発生器の一実施の形態を示すブロック図である。
【図2】一般的なマルチメディア命令の例を示す図である。
【図3】この発明の適用例としてのゲーム機の構成例を示すブロック図である。
【図4】図3の例のゲーム機の外観例を示す図である。
【図5】この発明による関数発生器の一例を用いて曲面分割処理を行うための構成を示すブロック図である。
【図6】曲面の分割例を説明するための図である。
【図7】3次のスプライン関数を説明するための図である。
【図8】この発明による画像生成方法の一実施の形態の要部の動作手順を説明するフローチャートの一部である。
【図9】この発明による画像生成方法の一実施の形態の要部の動作手順を説明するフローチャートの一部である。
【図10】この発明による関数発生器の一例を含むマイクロプロセッサの要部の構成例を示す図である。
【図11】図5の関数発生器142に与える初期値データおよび関数発生動作を説明するために用いる図である。
【図12】この発明の関数発生器の他の実施の形態を説明するための図である。
【図13】この発明の関数発生器の他の実施の形態を説明するための図である。
【図14】この発明の関数発生器の他の実施の形態を説明するための図である。
【符号の説明】
141…ポリゴン分割手段、142…スプライン関数発生器、143…座標変換手段、15…描画処理部、151…描画手段、152…フレームメモリ、A1〜A3…加算器、RG,RGk,RG(k+1)…レジスタ、RA0〜RA3,RB0〜RB3…分割されたレジスタ部分、SW…スイッチ回路
Claims (6)
- 命令実行型演算処理装置内に設けられる関数発生器であって、
m個(mは自然数)の加算器と、少なくとも一つのレジスタとを備えると共に、
一つのレジスタのうちの全部もしくは一部が、それぞれ所定ビット数のデータを格納する0番からm番までの(m+1)個のレジスタ部分に分割され、
前記m個の加算器のうちのi(i≦mである自然数)番目の加算器における2個の入力端の一方がi番目の前記レジスタ部分に、他方が(i−1)番目の前記レジスタ部分に、それぞれ接続され、当該i番目の加算器の出力端が、前記i番目のレジスタ部分に接続され、
前記i番名の加算器は、前記2個の入力端を介して、前記i番目のレジスタ部分に格納されているデータおよび前記(i−1)番目のレジスタ部分に格納されているデータの入力を受付け、該受付けたデータを用いて加算演算を行い、該加算結果を前記出力端を介して前記i番目のレジスタに格納する演算処理を行い、
一つの命令により、前記m個の加算器は、各々、前記演算処理を同じタイミングで実行し、
前記m個の加算器は、前記演算処理を所定の回数繰り返し実行すること
を特徴とする関数発生器。 - 命令実行型演算処理装置内に設けられる関数発生器であって、
0番からm番までの(m+1)個(mは自然数)の加算器と、少なくとも一つのレジスタとを備えると共に、
一つのレジスタのうちの全部もしくは一部が、それぞれ所定ビット数のデータを格納する0番からm番までの(m+1)個のレジスタ部分に分割され、
前記m+1個の加算器のうちの0番目の加算器の2個の入力端に0番目のレジスタ部分に格納されたデータと所定の定数を示すデータとが入力され、該0番目の加算器の出力端が、前記0番目のレジスタ部分に接続され、
前記m+1個の加算器のうちのi(1≦i≦mを満足する自然数)番目の加算器における2個の入力端の一方がi番目の前記レジスタ部分に、他方が(i−1)番目の前記レジスタ部分に、それぞれ接続され、当該i番目の加算器の出力端が、前記i番目のレジスタ部分に接続され、
前記m+1個の加算器のうちの0番目の加算器は、前記2個の入力端を介して、前記0番目のレジスタ部分に格納されたデータおよび前記所定の定数を示すデータの入力を受付け、該受付けたデータを用いて加算演算を行い、該加算結果を前記出力端を介して前記0番目のレジスタ部分に格納する演算処理を行い、
前記m+1個の加算器のうちのi番目の加算器は、前記2個の入力端を介して、前記i番目のレジスタ部分に格納されているデータおよび前記(i−1)番目のレジスタ部分に格納されているデータの入力を受付け、該受付けたデータを用いて加算演算を行い、該加算結果を前記出力端を介して前記i番目のレジスタに格納する演算処理を行い、
一つの命令により、前記m+1個の加算器は、各々、前記演算処理を同じタイミングで実行し、
前記m+1個の加算器は、前記演算処理を所定の回数繰り返し実行すること
を特徴とする関数発生器。 - 命令実行型演算処理装置内に設けられる関数発生器において、
0番からm番までの(m+1)個(mは自然数)の加算器と、少なくとも一つのレジスタとを備えると共に、
一つのレジスタのうちの全部もしくは一部が、それぞれ所定ビット数のデータを格納する0番からm番までの(m+1)個のレジスタ部分に分割され、
前記m+1個の加算器のうちの0番目の加算器の2個の入力端の一方に0番目のレジスタ部分に格納されたデータが入力され、他方に前記レジスタ以外の他のレジスタに格納されたデータが入力され、該0番目の加算器の出力端が、前記0番目のレジスタ部分に接続され、
前記m+1個の加算器のうちのi(1≦i≦mを満足する自然数)番目の加算器における2個の入力端の一方がi番目の前記レジスタ部分に、他方が(i−1)番目の前記レジスタ部分に、それぞれ接続され、当該i番目の加算器の出力端が前記i番目のレジスタ部分に接続され、
前記m+1個の加算器のうちの前記0番目の加算器は、前記2個の入力端を介して、前記0番目のレジスタ部分に格納されたデータ、および、前記他のレジスタに格納されたデータの入力を受付け、該受付けたデータを用いて加算演算を行い、該加算結果を前記出力端を介して前記0番目のレジスタ部分に格納する演算処理を行い、
前記m+1個の加算器のうちの前記i番目の加算器は、前記2つの入力端を介して、前記i番目のレジスタ部分に格納されているデータ、および、前記(i−1)番目のレジスタ部分に格納されているデータの入力を受付け、該取得したデータを用いて加算演算を行い、該加算結果を前記出力端を介して前記i番目のレジスタに格納する演算処理を行い、
一つの命令により、前記m+1個の加算器は、各々、前記演算処理を同じタイミングで実行し、
前記m+1個の加算器は、前記演算処理を所定の回数繰り返し実行すること
を特徴とする関数発生器。 - 命令実行型演算処理装置内に設けられる関数発生器において、
0番からm番までの(m+1)個(mは自然数)の加算器と、少なくとも一つのレジスタと、スイッチ回路とを備えると共に、
一つのレジスタのうちの全部もしくは一部が、それぞれ所定ビット数のデータを格納する0番からm番までの(m+1)個のレジスタ部分に分割され、
前記m+1個の加算器のうちの0番目の加算器の2個の入力端の一方に、0番目のレジスタ部分に格納されたデータが入力され、他方に前記スイッチ回路により選択された前記レジスタ以外の他のレジスタに格納されたデータおよび所定の定数を示すデータの一方が選択的に入力され、該0番目の加算器の出力端が前記0番目のレジスタ部分に接続され、
前記m+1個の加算器のうちの前記i(1≦i≦mを満足する自然数)番目の加算器における2個の入力端の一方がi番目の前記レジスタ部分に、他方が(i−1)番目の前記レジスタ部分にそれぞれ接続され、当該i番目の加算器の出力端が前記i番目のレジスタ部分に接続され、
前記m+1個の加算器のうちの前記0番目の加算器は、前記2つの入力端を介して、前記0番目のレジスタ部分に格納されたデータ、および、前記スイッチ回路により選択された前記他のレジスタに格納されたデータおよび前記定数を示すデータのいずれかの入力を受付け、該受付けたデータを用いて加算演算を行い、該加算結果を前記出力端を介して前記0番目のレジスタ部分に格納する演算処理を行い、
前記m+1個の加算器のうちのi番目の加算器は、前記2つの入力端を介して、前記i番目のレジスタ部分に格納されているデータおよび前記(i−1)番目のレジスタ部分に格納されているデータの入力を受付け、該受付けたデータを用いて加算演算を行い、該加算結果を前記出力端を介して前記i番目のレジスタに格納する演算処理を行い、
一つの命令により、前記m+1個の加算器は、各々、前記演算処理を同じタイミングで実行し、
前記m+1個の加算器は、前記演算処理を所定の回数繰り返し実行すること
を特徴とする関数発生器。 - 請求項1〜4のいずれか一項に記載の関数発生器を備える命令実行型演算処理装置。
- 請求項5の命令実行型演算処理装置を備え、前記関数発生器によりスプライン関数を求めて、曲面分割を行うようにする画像生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13070896A JP3657350B2 (ja) | 1996-04-26 | 1996-04-26 | 関数発生器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13070896A JP3657350B2 (ja) | 1996-04-26 | 1996-04-26 | 関数発生器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09292927A JPH09292927A (ja) | 1997-11-11 |
JP3657350B2 true JP3657350B2 (ja) | 2005-06-08 |
Family
ID=15040726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13070896A Expired - Lifetime JP3657350B2 (ja) | 1996-04-26 | 1996-04-26 | 関数発生器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3657350B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017207747A (ja) | 2016-05-17 | 2017-11-24 | 株式会社半導体エネルギー研究所 | 表示システムおよび移動体 |
JP7467883B2 (ja) * | 2019-04-29 | 2024-04-16 | セイコーエプソン株式会社 | 回路装置、電子機器及び移動体 |
-
1996
- 1996-04-26 JP JP13070896A patent/JP3657350B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH09292927A (ja) | 1997-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6807620B1 (en) | Game system with graphics processor | |
JP3886184B2 (ja) | 画像データの処理方法および画像処理装置 | |
KR100527324B1 (ko) | 정보처리장치 | |
JP3620857B2 (ja) | 画像処理装置及び画像処理方法 | |
JP2002008060A (ja) | データ処理方法、記録媒体及びデータ処理装置 | |
JP3645024B2 (ja) | 描画装置及び描画方法 | |
KR20020012561A (ko) | 이미지 생성 장치 | |
US10600142B2 (en) | Compression and decompression of indices in a graphics pipeline | |
JP2000507009A (ja) | 単一の命令に応答して演算を複数回実行する方法および装置 | |
US8254701B1 (en) | Data compression using a geometry shading unit | |
US8243086B1 (en) | Variable length data compression using a geometry shading unit | |
US7212215B2 (en) | Apparatus and method for rendering an antialiased image | |
US8482559B2 (en) | Method and apparatus for triangle tessellation | |
US8295621B1 (en) | Data decompression using a geometry shading unit | |
US11978234B2 (en) | Method and apparatus of data compression | |
JP3338043B2 (ja) | 並列演算装置、エンタテインメント装置、演算処理方法、コンピュータプログラム、半導体デバイス | |
JP3657350B2 (ja) | 関数発生器 | |
JP2023530306A (ja) | デルタトリプレットインデックス圧縮 | |
JPH0353668B2 (ja) | ||
EP1288863B1 (en) | Method and device for drawing | |
JP2004280157A (ja) | 画像処理装置 | |
JP3638568B2 (ja) | 画像処理プログラム、画像処理プログラムを記録した記録媒体、画像処理装置及び方法 | |
JP3479184B2 (ja) | 画像生成方法および画像生成装置 | |
CA2298337C (en) | Game system with graphics processor | |
JP3548648B2 (ja) | 描画装置及び描画方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041005 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041206 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050301 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050309 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080318 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090318 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090318 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100318 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100318 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110318 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120318 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120318 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130318 Year of fee payment: 8 |