JP2814631B2 - シェーディングにおける演算回路 - Google Patents

シェーディングにおける演算回路

Info

Publication number
JP2814631B2
JP2814631B2 JP33363589A JP33363589A JP2814631B2 JP 2814631 B2 JP2814631 B2 JP 2814631B2 JP 33363589 A JP33363589 A JP 33363589A JP 33363589 A JP33363589 A JP 33363589A JP 2814631 B2 JP2814631 B2 JP 2814631B2
Authority
JP
Japan
Prior art keywords
value
circuit
output
vertex
variation
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 - Fee Related
Application number
JP33363589A
Other languages
English (en)
Other versions
JPH03192483A (ja
Inventor
睦弘 大森
典仁 市川
英弘 平瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP33363589A priority Critical patent/JP2814631B2/ja
Priority to KR1019900020769A priority patent/KR100232931B1/ko
Priority to EP90124779A priority patent/EP0434037B1/en
Priority to DE69032367T priority patent/DE69032367T2/de
Publication of JPH03192483A publication Critical patent/JPH03192483A/ja
Priority to US08/302,965 priority patent/US5418901A/en
Application granted granted Critical
Publication of JP2814631B2 publication Critical patent/JP2814631B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明は、3次元物体を2次元ディスプレイ上に表
示させる際、3次元物体に陰影を付加するのに用いられ
るシェーディングにおける演算回路に関する。
〔発明の概要〕
この発明は、曲面を複数の多角形で近似し、多角形の
各頂点に値を入力し、多角形の各頂点に入力された値か
ら、多角形内の値を線形補間により求めるようにしたシ
ェーディングにおける演算回路において、加算器の出力
をラッチ回路に供給し、ラッチ回路の出力を加算器に供
給する加算ループを用いて、変分を足し込んでいくDDA
演算とが行なえるとともに、初期位置での値と変分とを
乗算する補正演算が行なえるようにして、ハードウェア
の簡単化を図るようにしたものである。
〔従来の技術〕
コンピュータグラフィックスにおいて、2次元ディス
プレイ上に3次元物体を表示する場合、3次元物体を写
実的に見せ、3次元物体の認識を高めるために、3次元
物体の表面に陰影を付加することが行われている。この
ように、3次元物体の表面に陰影を付加して表示する手
法は、シェーディングと呼ばれている。シェーディング
の表示方法としては、例えば点光源の位置を定め、点光
源からの光源に対して垂直な面を明るくし、面が光源に
対して垂直でなくなるに従って暗くするような方法が用
いられる。
2次元ディスプレイ上に表示される3次元物体は、複
雑な曲線をもっている。このような複雑な曲面を持つ3
次元物体に対して、曲面の形状に応じた自然で最適なシ
ェーディングを行うために、曲面を複数の多角形で近似
し、それぞれの多角形の各頂点座標の値を入力し、各頂
点座標に与えられた値から、多角形内の値を線形補間に
より求めることが行われている。線形補間は、座標格子
間隔毎の値の変分を足し込んでいくDDA(ディジタル
ディファレンシャル アナライザ)演算により行なわれ
る(例えば特開昭61−52737号公報)。
2次元ディスプレイ上に3次元物体を表示させる場
合、座標格子点上にピクセルが設けられ、このピクセル
に対応する値(深さ値,明るさ値)が入力される。
上述のように、曲面を複数の多角形で近似し、それぞ
れの多角形の各頂点座標の値を入力し、多角形内の値を
線形補間により求める場合、多角形の各頂点の座標が座
標格子点から外れた位置にくることがある。
ところが、従来では、座標格子点上以上の座標には値
を入力できない。このため、従来では、曲面を近似して
得られた多角形の頂点の座標が座標格子点から外れた位
置にくる場合には、その値を、その座標から最も近傍に
ある座標格子点上の値として処理するようにしている。
この場合、座標格子点のピクセルに正しい値が入力さ
れるのではなく、座標格子点に近い座標の値が座標格子
点のピクセルに入力される。したがって、3次元物体を
移動させたり、変形させたり、光源を移動させたりする
と、1ピクセル以内で表示が揺らぐことになる。
そこで、本願発明者は、多角形の各頂点の値に水平方
向の補正演算を施してスキャンライン端点での値を算出
し、このスキャンライン端点での値に水平方向の補正演
算を施して座標格子点上にあるスタート点に対応する値
を算出し、このスタート点での値に変分を足し込んで座
標格子点での各値を求めるようにすることにより、座標
格子点での正確な値を入力でき、ちらつきがなく、自然
なシェーディングを行なえるようにしたものを提案して
いる。
〔発明が解決しようとする課題〕
このようなシェーディング装置では、補正演算が必要
になってくる。2点A,B間で値A(V)、B(V)が直
線的に変化している場合、2点A,B間の点Rの値R
(V)を、値A(V)、B(V)から求める補正演算
は、従来、 で行われている。
ところが、このような補正演算の場合、2回の乗算と
1回の割算が必要である。乗算や割算を多く行うと、回
路規模が増大する。
したがって、この発明の目的は、簡単なハードウェア
で補正演算が行なえるシェーディングにおける演算回路
を提供することにある。
この発明の他の目的は、DDA演算と補正演算とが同一
のハードウェアで行なえるシェーディングにおける演算
回路を提供することにある。
〔課題を解決するための手段〕
この発明は、曲面を複数の多角形で近似し、多角形の
各頂点に値を入力し、多角形の各頂点に入力された値か
ら、多角形内の値を線形補間により求めるようにしたシ
ェーディングにおける演算回路であって、 加算器の出力をラッチ回路に供給し、ラッチ回路の出
力を加算器に供給する加算ループを有し、 加算ループを用いて、変分を足し込んでいくDDA演算
とが行なえるとともに、初期位置での値と変分とを乗算
する補正演算が行なえるようにしたシェーディングにお
ける演算回路である。
〔作用〕
2点A,B間で値A(V)、B(V)が直線的に変化し
ている場合、2点A,B間で点Rの値、R(V)は、 R(V)=A(V)+(R−A)・DD で求められる。
変分DDは、DDA演算を行うために予め求められてい
る。したがって、上式のように補正演算を行うと、1回
の乗算だけで補正演算が行なえるようになる。
そして、補正演算処理には、DDA演算回路の一部が利
用できる。
すなわち、補正演算を行う際には、ゼロ判定回路34
に、変分DDがパラレルデータで供給されるとともに、補
正位置までの距離(R−A)が最下位ビットからシリア
ルデータで供給される。加算器35の出力は、マルチプレ
クサ38で、1ビットづつ右にシフトされながら、加算器
35に供給され、累積される。このような加算を繰り返す
ことにより、補正位置までの距離(R−A)と変分DDと
の乗算が実行される。
〔実施例〕
この発明の実施例について、以下の順序で説明する。
a.シェーディング方法の概要 b.補正演算について b1.補正演算の原理 b2.補正演算機能付きDDA演算回路 c.シェーディング方法の説明 c1.処理に必要な演算 c2.描画手順 c3.任意の多角形への拡張 c4.大きな演算誤差が発生する場合の処理 d.シェーディング装置 d1.シェーディング装置の構成 d2.演算精度とビット数 e.並列処理状態遷移回路 e1.基本回路の説明 e2.シェーディング処理のための並列処理状態遷移回
路 a.シェーディング方法の概要 この発明は、曲面を複数の多角形で近似し、それぞれ
の多角形の各頂点座標の値を入力し、各頂点座標に与え
られた値から、多角形内の値を線形補間により求め、曲
面の形状に応じて自然で最適なシェーディングを行う場
合に適用される。
このように、曲面を複数の多角形で近似し、それぞれ
の多角形の各頂点座標の値を入力し、多角形内の値を線
形補値により求める場合、多角形の各頂点の座標が座標
格子点から外れた位置にくることがある。
この発明の一実施例では、小数部分まで水平値X及び
垂直値Yを入力することで、座標格子点と座標格子点と
の間のピクセルの無い座標に値を入力することが可能で
ある。このことを、以下、サブピクセルアドレシングと
称する。したがって、曲面を近似して得られた多角形の
頂点の座標が座標格子点から外れた位置にきても、その
ままの頂点座標(水平値X,垂直値Y)に対応する値(深
さ値Z,明るさ値R(赤),G(緑),B(青))を入力でき
る。
この発明の一実施例では、このように、サブピクセル
アドレシングが行われる。そして、補正演算が行われ、
各スキャンラインでのDDA演算のスタート点の座標格子
点上のピクセルでの正しい値が求められる。以後、DDA
演算が繰り返され、座標格子点上の各ピクセルの値が求
められる。
つまり、曲面を近似して得られた台形のプリミティブ
に対して、左辺の縦方向の補正演算と、右辺の縦方向の
補正演算とが行われ、スキャンラインの左端(左側から
右側にスキャンしているので、スキャンラインの始端に
対応する)とスキャンラインの右端(スキャンラインの
終端に対応する)の値が求められる。スキャンラインの
左端の値とスキャンラインの右端の値から、水平方向の
補正演算により、スキャンラインの左端近傍の座標格子
点上にあるスタート点のピクセルの正しい値が求められ
る。スタート点のピクセルの値に対して、水平方向の変
分を足し込んでいく水平方向のDDA演算を繰り返すこと
により、各スキャンラインの座標格子点上にあるピクセ
ルの正しい値が求められる。次のスキャンラインの左端
の値及び次のスキャンラインの右端の値は、前スキャン
ラインの左端の値及び前スキャンラインの右端の値に、
左辺の縦方向の変分及び右辺の縦方向の変分をそれぞれ
足し込んでいく縦方向のDDA演算により求められる。
この場合、座標格子点上のピクセルの正確な値を入力
しているので、3次元物体の動きや光源の動きにリアル
タイムでスムーズに対応でき、画面のちらつきがなく、
精度の高いシェーディングが行なえる。
ところで、曲面を複数の多角形で近似する際、任意の
多角形で近似できれば、効率良く曲面を分割でき、描画
効率が向上する。この発明の一実施例では、左辺の頂点
と右辺の頂点とが同じ水平ライン上にあった場合にの
み、左辺の頂点の値と右辺の頂点の値とが同時に入力さ
れるようにし、一方の頂点だけ入力された時には、他方
の頂点をナルとし、ナルの場合には、前回のDDA演算を
引き継ぐような処理が行われる。これにより、台形の演
算処理を任意の多角形に拡張できる。
b.補正演算について b1.補正演算の原理 この発明の一実施例では、上述のように、左辺及び右
辺の縦方向の補正演算によりスキャンラインの端点の値
を求め、水平方向の補正演算によりスタート点の座標格
子点上のピクセルの正しい値を求め、以後、左辺縦方向
及び右辺縦方向のDDA演算と水平方向のDDA演算を繰り返
して、座標格子点上の各ピクセルの値を求めるようにし
ている。
このようなシェーディング処理の説明に先立って、こ
の補正演算について説明する。
第2図に示すように、2点A及びBに値A(V)、B
(V)がそれぞれ与えられているとし、この値が直線的
に変化しているとする。そして、いま、2点A,B間の点
Rの値R(V)を求めたいとする。
この場合、値が直線的に変化していれば、2点A,B間
の点Rの値R(V)は、線形補間により求めることがで
きる。
すなわち、2点A,B間の点Rの値R(V)は、 で求められる。
このような線形補間演算の場合、2回の乗算と1回の
割算が必要である。乗算や割算を多く行うと、回路規模
が増大し、演算時間が長く必要になる。
そこで、上式が のように変形される。
上式で、 の項は変分DDである。
したがって、2点A,B間の点Rの値R(V)は、 R(V)=A(V)+(R−A)・DD … で求められる。
曲面を複数の多角形で近似し、各多角形内の値を線形
補間により求めるようなシェーディングを行う場合、変
分DDは、DDA演算を行うために予め求められている。し
たがって、上式のように補正演算を変形すると、1回の
乗算だけで補正演算が行なえるようになる。そして、補
正演算処理には、DDA演算回路の一部が利用できること
になる。このような、補正演算機能付きDAA演算回路に
ついて、以下に説明する。
b2.補正演算機能付きDDA演算回路 補正演算処理は、上述したように、初期位置Aから補
正位置Rまでの長さ(R−A)と変分DDとの積に、初期
位置での値A(V)を加算して求められる。このような
処理は、第1図に示すような補正演算機能付きDDA演算
回路で実現できる。
この補正演算機能付きDDA演算回路は、3つのモード
に設定される。1つのモードは、補正値を求める補正値
演算モードである。この補正値演算モードの時には、入
力端子30からの補正位置までの距離(R−A)と、入力
端子33から変分DDとが乗算され、 (R−A)・DD なる演算がなされる。なお乗算は、補正位置までの距離
(R−A)を最下位ビットからシリアルデータで与え、
この補正位置までの距離(R−A)の各ビットと変分DD
とをビット毎に乗算し、これを、右シフトさせながら加
算していくことにより求められている。
2つ目のモードは、補正値と初期位置での値とを加算
し、補正後の値を求めるモードである。これにより、 A(V)+(R−A)・DD なる演算が行われ、点Rでの値R(V)が求められる。
3つ目のモードは、DDA演算を行うモードである。DDA
演算では、前回の値に成分DDを加算していく処理が繰り
返される。
第1図において、マルチプレクサ31の一方の入力端に
は、入力端子32から初期位置での値A(V)が供給され
る。マルチプレクサ31の他方の入力端には、入力端子33
からの変分DDが供給される。この入力端子32からの初期
位置での値A(V)及び入力端子33から変分DDは、パラ
レルデータで入力される。
マルチプレクサ31の出力がゼロ判定回路34に供給され
る。ゼロ判定回路34には、入力端子30から、補正位置ま
での距離(R−A)が最下位ビットからシリアルデータ
で供給される。
ゼロ判定回路34は、補正値演算モードの時に、補正位
置までの距離(R−A)と変分DDとの乗算を実行するの
に用いられる。
ゼロ判定回路34は、第3図に示すように、ANDゲート4
21、422、423、…42nから構成される。ANDゲート421、4
22、423、…42nのそれぞれの一方の入力端に、マルチプ
レクサ31の出力データの各ビットの出力が供給される。
ANDゲート421、422、423、…42nの他方の入力端に、入
力端子30からのシリアルデータが供給される。
第1図において、ゼロ判定回路34の出力が加算器35に
供給される。加算器35の出力がラッチ回路36に供給され
る。
ラッチ回路36には、クロック入力端子39からDDAクロ
ックDDA CKが供給される。また、ラッチ回路36には、リ
セット端子40から、リセット信号RSTが供給される。
ラッチ回路36の出力が出力端子37から取り出される。
これとともに、ラッチ回路36の出力がマルチプレクサ38
に供給される。
マルチプレクサ38には、入力端子41から補正ループ信
号AJLが供給される。マルチプレクサ38に入力端子41か
らの補正ループ信号AJLが与えられると、ラッチ回路36
の出力は、1クロック毎に1ビットづつ右にシフトされ
ながら、マルチプレクサ38から出力される。
マルチプレクサ38の出力が加算器35に供給される。
最初に、ラッチ回路36に、入力端子40からリセット信
号RSTが供給される。このリセット信号RSTにより、ラッ
チ回路36がリセットされる。
そして、補正値演算モードに設定され、補正値が求め
られる。補正値演算モードでは、マルチプレクサ31で、
入力端子33からの変分DDが選択される。この変分DDがパ
ラレルデータでマルチプレクサ31からゼロ判定回路34に
供給される。また、入力端子30からは、補正位置までの
距離(R−A)が最下位ビットから順にシリアルデータ
でゼロ判定回路34に供給される。
ゼロ判定回路34で、補正位置までの距離(R−A)
と、変分DDとの乗算が1ビット毎に行われる。補正位置
までの距離(R−A)の1つのビットが「1」なら、変
分DDに「1」を乗じたことになるので、変分DDがゼロ判
定回路34を介してそのまま出力される。補正位置までの
距離(R−A)の1つのビットが「0」なら、変分DDに
「0」を乗じたことになるので、ゼロ判定回路34から
「00…0」が出力される。
加算器35の出力は、ラッチ回路36を介して、マルチプ
レクサ38に供給される。マルチプレクサ38には、入力端
子41から補正ループ信号AJLが供給される。したがっ
て、加算器35の出力は、マルチプレクサ38で、1ビット
づつ右にシフトされながら、加算器35に供給され、累積
される。
このような加算を繰り返すことにより、補正位置まで
の距離(R−A)と変分DDとの乗算が実行される。
つまり、例えば変分DDが4ビットのデータ「d3,d2,
d1,d0」であり、補正位置までの距離(R−A)が4ビ
ットのデータ「a3,a2,a1,a0」であったとする。この場
合、補正位置までの距離(R−A)と変分DDとの乗算
は、第4図に示すようにして実行できる。
ゼロ判定回路34には、先ず、補正位置までの距離(R
−A)の最下位ビット「a0」が供給され、この最下位ビ
ット「a0」と「d3,d2,d1,d0」とが乗算され、「a0d3,a0
d2,a0d1,a0d0」が求められる。
次に、補正位置までの距離(R−A)の下位2ビット
目「a1」が供給され、この下位2ビット「a1」と「d3,d
2,d1,d0」とが乗算され、「a1d3,a1d2,a1d1,a1d0」が求
められる。
この「a1d3,a1d2,a1d1,a1d0」と、右に1ビットシフ
トされた「a0d3,a0d2,a0d1,a0d0」とが加算される。
以下、同様にして、「a2d3,a2d2,a2d1,a2d0」、「a3d
3,a3d2,a3d1,a3d0」が求められ、右に1ビットづつシフ
トされながら、これらが加算される。
これにより、「d3,d2,d1,d0」、と「a3,a2,a1,a0」と
の乗算が実行され、乗算値「c7,c6,c5,c4,c3,c2,c1,
c0」が求められる。
第1図において、このようにして求められた補正値
((R−A)DD)は、ラッチ回路36に格納される。ラッ
チ回路36に、補正値((R−A)DD)が格納されたら、
補正値((R−A)DD)と初期位置での値A(V)とを
加算し、補正後の値を求めるモードとなる。
このモードの時には、マルチプレクサ31から、入力端
子32からの初期位置での値A(V)が出力される。この
初期位置での値A(V)がゼロ判定回路34を介して加算
器35に供給される。
ラッチ回路36には、補正値演算値モードで求められた
補正値((R−A)DD)が格納されている。この補正値
((R−A)DD)がマルチプレクサ38を介して加算器35
に供給される。加算器35で、補正値((R−A)DD)と
初期位置での値A(V)とが加算され、この値がラッチ
回路36に蓄えられる。
ラッチ回路36に、補正値((R−A)DD)と初期位置
での値A(V)とが加算された値(A(V)+(R−
A)DD)が蓄えられたら、DDAモードに設定される。
DDAモードでは、マルチプレクサ31から、入力端子33
からの変分DDが出力される。この変分DDがゼロ判定回路
34を介して加算器35に供給される。
加算器35で、ラッチ回路36に蓄えられていた前回まで
の値と、変分DDとが加算され、この値がラッチ回路36に
蓄えられる。このように、変分DDを足し込んでいく演算
が繰り返される。
c.シェーディング方法の説明 この発明が適用されたシェーディング方法について、
以下に詳述する。
いま、曲面を複数の多角形で近似した時の一つのプリ
ミティブとして、第5図に示すような台形が得られたと
する。第5図において、縦方向に並ぶ破線と横方向に並
ぶ破線との交点が座標格子であり、この座標格子点上に
ピクセルがある。各座標格子間の距離は1である。そし
て、この台形の各頂点LS、LE、RS、REの値(水平値X、
垂直値Y、深さ値Z、明るさ値R(赤の値),G(緑の
値),B(青の値))を入力し、この各頂点LS、LE、RS、
REの各値から、台形内部の座標格子点上にあるピクセル
の各値を線形補間により求めることにする。
c1.処理に必要な演算 このようなシェーディング処理を行う場合、以下のよ
うな演算が行われる。
・左辺縦方向の変分の演算(式) ・右辺縦方向の変分の演算(式) ・左辺縦方向の補正演算(式) ・右辺縦方向の補正演算(式) ・左辺縦方向のDDA演算(式) ・右辺縦方向のDDA演算(式) ・水平方向の変分の演算(式) ・水平方向の補正演算(式) ・水平方向のDDA演算(式) ・左辺縦方向の変分の演算 先ず、縦方向の演算について説明する。左辺での縦方
向の1座標格子間当たりの各値の変分DL(X,Z,R,G,B)
は、 LS(X,Y):左上の頂点LSでの水平値X及び垂直値Y LS(Z):左上の頂点LSでの深さ値Z LS(R,G,B):左上の頂点LSでの明るさ値R,G,B LE(X,Y):左下の頂点LEでの水平値X及び垂直値Y LE(Z):左下の頂点LEでの深さ値Z LE(R,G,B):左下の頂点LEでの明るさ値R,G,B で求められる。
・右辺縦方向の変分の演算 同様に、右上の縦方向の1座標格子間当たりの各値の
変分DR(X,Z,R,G,B)は、 RS(X,Y):右上の頂点RSでの水平値X及び垂直値Y RS(Z):右上の頂点RSでの深さ値Z RS(R,G,B):右上の頂点RSでの明るさ値R,G,B RE(X,Y):右上の頂点REでの水平値X及び垂直値Y RE(Z):右上の頂点REでの深さ値Z RE(R,G,B):右上の頂点REでの明るさ値R,G,B で求められる。
・左辺縦方向のDDA演算 サブピクセルアドレシングを行った場合、各ピクセル
間の距離が1なので、左上の頂点LSから最も近傍のスキ
ャンラインy0までの縦方向の距離は、 1−(LS(Y)−Int(LS(Y))) である。なお、Intは、小数部分を0にする演算であ
る。(つまり、(LS(Y)−Int(LS(Y)))は、頂
点LSの垂直値Yの小数部を求めることである。)したが
って、スキャンラインy0の左端の値HS0(X,Z,R,G,B)
は、 HS0(X,Z,R,G,B) =LS(X,Z,R,G,B)+(1−(LS(Y) −Int(LS(Y)))・DL(X,Z,R,G,B) … で求められる。これを、左辺縦方向の補正演算とする。
なお、補正演算の求め方は、前述の式と同様である。
・右辺縦方向の補正演算 同様に、スキャンラインy0の右端の値HE0(X,Z,R,G,
B)は、 HE0(X,Z,R,G,B) =RS(X,Z,R,G,B)+(1−(RS(Y) −Int(RS(Y)))・DR(X,Z,R,G,B) … で求められる。これを、右辺縦方向の補正演算とする。
・左辺縦方向のDDA演算 次のスキャンラインyj+1での左端の値HSj+1(X,Z,R,
G,B)は、前回のスキャンラインyjの左端の値HSj(X,Z,
R,G,B)に左辺縦方向の変分DL(X,Z,R,G,B)を足し込ん
でいく左辺縦方向のDDA演算により求められる。すなわ
ち、次のスキャンラインyj+1での左端の値HSj+1(X,Z,
R,G,B)は、 HSj+1(X,Z,R,G,B) =HSj(X,Z,R,G,B)+DL(X,Z,R,G,B) … で求められる。
・右辺縦方向のDDA演算 同様に、次のスキャンラインyj+1での右端の値HEj+1
は、右辺縦方向のDDA演算により求められる。すなわ
ち、スキャンラインyj+1での右端の値HEj+1(X,Z,R,G,
B)は、 HEj+1(X,Z,R,G,B) =HEj(X,Z,R,G,B)+DR(X,Z,R,G,B) … で求められる。
・水平方向の変分の演算 次に水平方向の演算について説明する。スキャンライ
ンyjでの水平方向の1座標格子間当たりの各種の変分DH
j(Z,R,G,B)は、スキャンラインyjでの左端の値HS
j(X,Z,R,G,B)(式、式で求められる)と、スキャ
ンラインyjでの右端の値HEj(X,Z,R,G,B)(式、式
で求められてる)とを用いて、 で求められる。
・水平方向の補正演算 スキャンラインyjでの左端近傍の座標格子点上のピク
セルの値Hj0(Z,R,G,B)は、スキャンラインyjの左端の
値HSj(Z,R,G,B)と、水平方向の変分DHj(Z,R,G,B)と
を用いて、 Hj0(Z,R,G,B) =HSj(Z,R,G,B)+(1−(HSj(X) −Int(HSj(X))・DHj(Z,R,G,B) … で求められる。これをスキャンラインyjでの水平方向の
補正演算とする。そして、Hj0(Z,R,G,B)をスキャンラ
インyjでのスタート点の値とする。
・水平方向のDDA演算 スキャンラインyjでのスタート点以降の座標格子点上
の値は、水平方向のDDA演算を繰り返していくことによ
り順次求められる。すなわち、スキャンラインyjでの座
標格子点上の値Hji+1(Z,R,G,B)は、 Hji+1(Z,R,G,B) =Hji(Z,R,G,B)+DHj(Z,R,G,B) … で求められる。
c2.描画手順 この発明が適用されたシェーディング方法の描画手順
を、第6図を参照しながら説明する。
先ず、式に基づいて、頂点LSと頂点LEと結ぶ左辺で
の縦方向の変分DL(X,Z,R,G,B)が求められる(ステッ
プ1)。また、式に基づいて、頂点RSと頂点REとを結
ぶ右辺での縦方向の変分DR(X,Z,R,G,B)が求められる
(ステップ2)。
次に、式に基づいて、左辺での縦方向の補正演算が
行われ、最初のスキャンラインy0の左端の値HS0(X,Z,
R,G,B)が求められる(ステップ3)。また、式に基
づいて、右辺での縦方向の補正演算が行われ、最初のス
キャンラインy0の右端の値HE0(X,Z,R,G,B)が求められ
る(ステップ4)。なお、ステップ3及びステップ4
は、並列処理可能である。
ステップ3及びステップ4で、最初のスキャンライン
y0の左端の値HS0(X,Z,R,G,B)と右端の値HE0(X,Z,R,
G,B)が求められたら、式に基づいて、最初のスキャ
ンラインy0での水平方向の変分DH0(Z,R,G,B)が求めら
れる(ステップ5)。
式に基づいて、最初のスキャンラインy0での水平方
向の補正演算が行われ、最初のスキャンラインy0での左
端近傍の座標格子点の値H00(Z,R,G,B)が求められる
(ステップ6)。
スキャンラインy0でのスタート点の値H00(Z,R,G,B)
が求められたら、スキャンラインy0での水平方向の変分
DH0(Z,R,G,B)を加算ししていくDDA演算が繰り返され
る(ステップ7)。これにより、スタート点以降の座標
格子点の値H01(X,Z,R,G,B)、H02(X,Z,R,G,B)、…が
順次求められる。
スキャンラインy0での座標格子点上の値H00(X,Z,R,
G,B)、H01(X,Z,R,G,B)、H02(X,Z,R,G,B)…が全て
求められたら、式に基づく左辺での縦方向のDDA演算
により、次のスキャンラインy1の左端の値HS1(X,Z,R,
G,B)が求められる(ステップ8)。また、式に基づ
く右辺での縦方向のDDA演算により、次のスキャンライ
ンy1での右端の値HE1(X,Z,R,G,B)が求められる(ステ
ップ9)。
ステップ8及びステップ9で、スキャンラインy1の左
端の値HS1(X,Z,R,G,B)と右端の値HE1(X,Z,R,G,B)が
求められたら、ステップ5に戻り、式に基づいて、次
のスキャンラインy1での水平方向の変分DH1(X,Z,R,G,
B)が求められる(ステップ5)。
ステップ6で、式に基づいて、次のスキャンライン
y1での補正演算が行われ、次のスキャンラインy1での座
標格子上のスタート点の値H10(X,Z,R,G,B)が求められ
る。そして、ステップ7で、式に基づく水平方向のDD
A演算を繰り返していくことにより、スキャンラインy1
での座標格子上の値H10(X,Z,R,G,B)、H11(X,Z,R,G,
B)…が順次求められる。
スキャンラインy1での座標格子上の値H10(X,Z,R,G,
B)、H11(X,Z,R,G,B)、H12(X,Z,R,G,B)…が全て求
められたら、式に基づく左辺での縦方向のDDA演算に
より、更に次のスキャンラインy2での左端の値HS2(X,
Z,R,G,B)が求められ(ステップ8)、また、式に基
づく右辺での縦方向のDDA演算により、更に次のスキャ
ンラインy2の右端の値HE2(X,Z,R,G,B)が求められる
(ステップ9)。そして、ステップ5に戻り、同様な処
理が繰り返される。
c3.任意の多角形への拡張 この発明の一実施例では、曲面を近似して得られた多
角形に対して、左辺の頂点と右辺の頂点とが同じ水平ラ
イン上にあった場合のみ、左辺の頂点の値と右辺の頂点
の値とが同時に入力されるようにし、一方の頂点だけ入
力された時には、他方の頂点をナルとし、ナルの場合に
は、前回のDDA演算を引き継ぐような処理が行なわれ
る。これにより、台形の演算処理を任意の多角形に拡張
できる。
例えば、第8図に示すような凸多角形が与えられたと
する。入力された図形は、ひとまず台形と見做し、左辺
か右辺かを判断しながら、上から下に、左上の頂点をL
S、左下の頂点をLE、右上の頂点をRS、右下の頂点をRE
としながら値を入力していく。
ラインL1では、左上の頂点LSとして頂点A1の値が入力
され、左下の頂点LEとして頂点A3の値が入力される。右
上の頂点RSとして頂点A1の値が入力され、右下の頂点RE
として頂点A2の値が入力される。
ラインL2で右辺の頂点A2が見つかる。ラインL2で、右
上の頂点RSとして頂点A2の値が入力され、右下の頂点RE
として頂点A5の値が入力される。頂点A2と同一の水平線
上には、左辺の頂点は無い。そこで、左辺はナルとされ
る。
ラインL3で左辺の頂点A3が見つかる。ラインL3で左上
の頂点LSとして頂点A3の値が入力され、左下の頂点LEと
して頂点A4の値が入力される。頂点A3と同一の水平線上
には、右辺の頂点は無いので、右辺はナルとされる。
ラインL4で左辺の頂点A4が見つかる。ラインL4では、
左上の頂点LSとして頂点A4の値が入力され、左下の頂点
LEとして頂点A6の値が入力される。頂点A4と同一の水平
線上には、右辺の頂点は無いので、右辺はナルとされ
る。
ラインL5で右辺の頂点A5が見つかる。ラインL5では、
右上の頂点RSとして頂点A5の値が入力され、右下の頂点
REとして頂点A8の値が入力される。頂点A5と同一の水平
線上には、左辺の頂点は無いので、左辺はナルとされ
る。
ラインL6で左辺の頂点A6が見つかる。ラインL6では、
左上の頂点LSとして頂点A6の値が入力され、左下の頂点
LEとして頂点A7の値が入力される。頂点A6と同一の水平
線上には、右辺の頂点は無いので、右辺はナルとされ
る。
ラインL7で左辺の頂点A7が見つかる。ラインL7では、
左上の頂点LSとして頂点A7の値が入力され、左下の頂点
LEとして頂点A8の値が入力される。頂点A7と同一の水平
線上には、右辺の頂点は無いので、右辺はナルとされ
る。
このように、左辺の頂点と右辺の頂点とが同じ水平ラ
イン上にあった場合のみ、左辺の頂点の値と右辺の頂点
の値とが同時に入力されるようにし、一方の頂点だけ入
力された時には、他方の頂点をナルとし、ナルの場合に
は、前回のDDA演算を引き継ぐような処理を行うと、メ
モリ数を増加することなく、台形の処理を任意の多角形
に拡張できる。
つまり、ラインL1〜L2では、頂点A1の値と頂点A3の値
とを用いて左辺縦方向の変分が求められるとともに、左
辺縦方向の補正演算が行われる。頂点A1の値と頂点A2の
値とを用いて右辺縦方向の変分が求められるとともに、
右辺縦方向の補正演算が行われる。そして、各スキャン
ラインでの左端の値及び右端の値が求められ、これから
水平方向の変分が求められ、水平方向の補正演算が行わ
れ、スタート点の値が求められる。そして、水平方向の
DDA演算により、ラインL1〜L2でのスキャンラインの座
標格子点上のピクセルの値が求められる。
ラインL2〜L3では、左辺では、前回までの左辺縦方向
の変分が引き継がれ、左辺縦方向のDDA演算により、ス
キャンラインでの左端の値が求められる。右辺では、頂
点A2の値と頂点A5の値とを用いて右辺での変分が求めら
れるとともに、右辺の補正演算が行われ、スキャンライ
ンでの右端の値が求められる。これから水平方向の変分
が求められ、水平方向の補正演算が行われ、スタート点
での値が求められる。そして、水平方向のDDA演算によ
り、ラインL2〜L3でのスキャンラインの座標格子点上の
ピクセルの値が求められる。
以下同様にして、ラインL3〜L4では、左辺では、頂点
A3の値と頂点A4の値とを用いて左辺縦方向の変分が求め
られ、右辺では、前回までの変分が引き継がれる。
ラインL4〜L5では、左辺が、頂点A4と頂点A6の値を用
いて左辺縦方向の変分が求められ、右辺では、前回まで
の変分が引き継がれる。
ラインL5〜L6では、左辺では、前回までの変分が引き
継がれ、右辺では、頂点A5と頂点A8の値を用いて右辺縦
方向の変分が求められる。
ラインL6〜L7では、左辺では、頂点A6と頂点A7の値を
用いて左辺縦方向の変分が求められ、右辺では、前回ま
での変分が引き継がれる。
ラインL7〜L8では、左辺では、頂点A7と頂点A8の値を
用いて左辺縦方向の変分が求められ、右辺では、前回ま
での変分が引き継がれる。
任意の多角形を、このように処理していくと、頂点で
だけ演算処理が行われ、直線部分では演算処理が行われ
ないので、図形の接続性が良好である。つまり、曲面を
多角形で近似した時に、第9図において、図形45と図形
46とが生じたとする。図形を所定の多角形で管理してい
こうとすると、図形46を図形46Aと図形46Bとに分割しな
ければならなくなる。すると、図形46Aと図形46Bと、図
形45との接続部47に演算誤差による隙間が生じる可能性
がある。
上述のように任意の多角形を処理する場合には、各図
形の直線部分と直線との接続部に隙間が生じることはな
い。なぜなら、頂点の無い部分は、ナルとされ、前回の
DDA演算を引き継ぐ処理をするからである。
c4.大きな演算誤差が発生する場合の処理 曲面を近似して得られた台形の縦方向の長さが1より
小さくなる場合がある。この場合、縦方向の変分を求め
る際、0に近い数を除数として割算することになるの
で、割算器がオーバーフローする可能性が高い。オーバ
ーフローした値で図形が表示されてしまうと、描画が乱
れてしまう。
そこで、縦方向の長さが0に近い図形は無視してしま
うことが考えられる。
ところが、縦方向の長さが0に近い図形を無視してし
まうと、図形の接続性の問題が生じる。
そこで、この発明の一実施例では、縦方向の長さが1
より小さい台形を処理する場合、辺の長さが長くなり、
割算器がオーバーフローする可能性が高い水平に近い辺
では、この辺が始点を同じにする垂直な辺に置き換えら
れる。このようにすると、割算器がオーバーフローする
可能性が回避できるとともに、図形の接続性が良好であ
る。
つまり、第10図に示すように、縦方向の長さが1以下
の台形48Aが生じたとする。この図形は、座標格子点上
にあるので、この図形を表示しないと、図形の接続性の
問題が生じる。このような図形では、左上の頂点LS1と
左下の頂点LE1とを結ぶ左辺での変分を求める際に、左
辺が水平に近く縦方向の長さに対して非常に長いので、
割算器がオーバーフローする可能性がある。
そこで、第10図において、頂点LS1とLE1とを結ぶ左辺
が第11図に示すように始点LS1を同じにする垂直線(LS1
〜LE2)に置き換えられ、台形48Bとして処理される。水
平に近い辺(LS1〜LE1)が垂直な辺(LS1〜LE2)に置き
換えられれば、辺の長さが短くなるので、左辺の変分を
求める際に、割算器がオーバーフローすることはなくな
る。
そして、この時、台形48Aと隣接していた図形49Aの右
辺についても、第11図に示すように、水平に近い右辺RS
3〜RE3が始点RS3を同じにする垂直な辺(RS3〜RE4)で
置き換えられ、台形49Bとして処理される。
台形48Bの左辺(LS1〜LE2)と、台形49Bの右辺(RS3
〜RE4)とを結ぶ右辺とは一致するので、図形の接続性
の問題が生じない。
d.シェーディング装置 d1.シェーディング装置の構成 第7図は、前述のようにして、座標格子点上の各ピク
セルの深さ値Z及び明るさ値R、G、Bを求めるハード
ウェアの構成を示すものである。なお、第7図では、説
明を簡単とするために、各値(Z,R,G,B)を1つのハー
ドウェアで処理するようにしているが、各値(Z,R,G,
B)に対して、別々なハードウェアが用意され、これら
が並列的に動作している。
第7図において、入力端子11に左上の頂点の値LS(X,
Y,Z,R,G,B)が入力され、入力端子12に左下の頂点の値L
E(X,Y,Z,R,G,B)が入力される。入力端子13に右上の頂
点の値RS(X,Y,Z,R,G,B)が入力され、入力端子14に右
下の頂点の値RE(X,Y,Z,R,G,B)が入力される。
入力端子11からの値がマルチプレクサ15のa側入力端
に供給される。入力端子13からの値がマルチプレクサ15
のb側入力端に供給される。
入力端子12からの値がマルチプレクサ16のa側入力端
に供給される。入力端子14からの値がマルチプレクサ16
のb側入力端に供給される。
マルチプレクサ15で、入力端子11からの値と、入力端
子13からの値とが選択される。マルチプレクサ16で、入
力端子12からの値と、入力端子14からの値とが選択され
る。
マルチプレクサ15及び16の出力が減算器17に供給され
る。
減算器17の出力がマルチプレクサ18のa側入力端に供
給される。マルチプレクサ18のb側入力端には、減算器
22の出力が供給される。
マルチプレクサ18の出力が割算器19に供給される。割
算器19の出力が左辺補正演算機能付きDDA演算回路20に
供給されるとともに、右辺補正演算機能付きDDA演算回
路21に供給される。また、割算器19の出力が水平補正演
算機能付きDDA演算回路23に供給される。
左辺補正演算機能付きDDA演算回路20の出力及び右辺
補正演算機能付きDDA演算回路21の出力が減算器22に供
給される。減算器22の出力がマルチプレクサ18のb側入
力端に供給される。
水平補正演算機能付きDDA回路23の出力が出力端子24
から出力される。
先ず、マルチプレクサ15がa側に設定され、入力端子
11からの左上の頂点の値LS(X,Y,Z,R,G,B)が減算器17
に与えられる。また、マルチプレクサ16がa側に設定さ
れ、入力端子12からの左下の頂点の値LE(X,Y,Z,R,G,
B)が減算器17に与えられる。
減算器17で、左下の頂点の値と左上の頂点の値とが減
算され、この減算値がマルチプレクサ18のa側入力端に
供給される。
マルチプレクサ18は、a側に設定されており、この減
算値が割算器19に供給される。
割算器19で、式に基づいて、左辺縦方向の変分が求
められる。この左辺縦方向の変分が左辺補正演算機能付
きDDA演算回路20にセットされる。
左辺縦方向の変分が左辺補正演算機能付きDDA演算回
路20にセットされると、マルチプレクサ15がb側に設定
され、入力端子13からの右上の頂点の値RS(X,Y,Z,R,G,
B)が減算器17に与えられる。また、マルチプレクサ16
がb側に設定され、入力端子14からの右下の頂点の値RE
(X,Y,Z,R,G,B)が減算器17に与えられる。
減算器17で、右下の頂点の値と右上の頂点の値とが減
算され、この減算値がマルチプレクサ18のa側入力端に
供給される。
マルチプレクサ18は、a側に設定されており、この減
算値が割算器19に供給される。
割算器19で、式に基づいて、右辺縦方向の変分が求
められる。この右辺縦方向の変分が右辺補正演算機能付
きDDA演算回路21にセットされる。
左辺縦方向の変分が左辺補正演算機能付きDDA演算回
路20にセットされ、右辺縦方向の変分が右辺補正演算機
能付きDDA演算回路21にセットされたら、左辺補正演算
機能付きDDA演算回路20及び右辺補正演算機能付きDDA演
算回路21で、左辺縦方向及び右辺縦方向の補正演算がそ
れぞれ行われる。
これにより、スキャンラインの左端及び右端の値が求
められる。
このスキャンラインの左端及び右端の値が減算器22に
供給される。減算器22で、スキャンラインの右端の値と
スキャンラインの左端の値とが減算される。
左辺補正演算機能付きDDA演算回路20及び右辺補正演
算機能付きDDA演算回路21で、左辺縦方向及び右辺縦方
向の補正演算が終了されると、マルチプレクサ18がb側
に切り換えられる。
したがって、減算器22で求められたスキャンラインの
右端の値とスキャンラインの左端の値との減算値がマル
チプレクサ18を介して割算器19に供給される。
割算器19で、式に基づいて、水平方向の変分が求め
られる。この水平方向の変分が水平補正演算機能付きDD
A演算回路23に供給される。
水平補正演算機能付きDDA演算回路23で、水平方向の
補正演算が行われ、スキャンラインのスタート点の座標
格子点上の値が求められる。水平補正演算機能付きDDA
演算回路23で、このスタート点での値に対してDDA演算
が繰り返され、スキャンライン上の座標格子点上の値が
順次求められる。この値が出力端子24から出力される。
1スキャンラインの座標格子点上の値がすべて求めら
れると、左辺補正演算機能付きDDA演算回路20及び右辺
補正演算機能付きDDA演算回路21で、左辺縦方向及び右
辺縦方向のDDA演算が行われ、次のスキャンラインの右
端の値と左端の値が求められる。
次のスキャンラインの左端の値及び右端値が減算器22
に供給される。減算器22で、次のスキャンラインの右端
の値と次のスキャンラインの左端の値とが減算される。
減算器22で求められた次のスキャンラインの右端の値
と左端の値との減算値がマルチプレクサ18を介して割算
器19に供給される。
割算器19で、次のスキャンラインでの水平方向の変分
が求められる。この水平方向の変分が水平補正演算機能
付きDDA演算回路23に供給される。
水平補正演算機能付きDDA演算回路23で、水平方向の
補正演算が行われ、次のスキャンラインのスタート点の
座標格子点上の値が求められる。水平補正演算機能付き
DDA演算回路23で、このスタート点での値に対してDDA演
算が繰り返され、スキャンライン上の座標格子点上の値
が順次求められる。この値が出力端子24から出力され
る。
以下、同様の動作が繰り返される。
d2.演算精度とビット数 第7図に示すようなハードウェアを、各値(深さ値Z
と、明るさR、G、B)毎にそれぞれ別々に用意して並
列処理を図っても、回路規模が増大することはい。これ
は、各値の演算を行う場合に必要とされる小数部分のビ
ット数が決められるので、固定小数点演算で演算を行な
えるからである。
このことについて説明する。先ず水平値X及び垂直値
Yのデバイス座標の最大値と深さ値Zの小数部分のビッ
ト数との関係を考察する。
深さ値Zは、DDA演算を繰り返して求められる。した
がって、深さ値Zの誤差は、画面の端から端までDDA演
算が繰り返された時に最大となる。この最大誤差を±1
以下にする必要がある。
デバイス座標が画面の端から端まででnビット分あっ
たとすると、画面の端から端までDDA演算を繰り返して
深さ値Z値を求めるのに、2n回のDDA演算が繰り返され
る。したがって、1回のDDA演算での誤差をεとする
と、誤差の最大値は、2nεとなる。この時の深さ値Zの
誤差を±1以下にするためには、DDA演算1回当たりの
誤差を(ε<1/2n)としなければならない。すなわち、
深さ値Zには、(1/2n)の精度が必要であり、深さ値Z
の小数部分のビット数ZFBは少なくともnビット必要で
ある。
このことから、深さ値Zの小数部分のビット数ZFBと
水平値X及び垂直値Yのデバイス座標の最大値との関係
は、 ZFB=Max(XD,YD) XD:水平値Xのデバイス座標の最大値(整数部分のビッ
ト数) YD:水平値Yのデバイス座標の最大値(整数部分のビッ
ト数) とされる。
次に深さ値Zの最大値と水平値X及び垂直値Yの小数
部分のビット数との関係について考察する。式、式
及び式で示したように、補正演算を行う際に、垂直値
Yの小数部分(LS(Y)−Int(LS(Y)))(RS
(Y)−Int(RS(Y)))及び水平値Xの小数部分(H
Sj(X)−Int(HS(X)))と、深さ値Zの変分(DL
(Z))、(DR(Z))及び(DHj(Z))との乗算が
行われる。この時、求められる誤差を±1以下のにする
ためには、深さ値Zの変分の有効数字分(「1」となっ
ている最上位の桁から整数部の最下位の桁分)だけ水平
値Xの小数点部分及び垂直値Yの小数点部分のビット数
を設ける必要がある。
深さ値Zの変分が最大になった場合には、深さ値Zの
変分の整数部分が全て有効数字になる。したがって、水
平値Xの小数点ビット数XFD及び垂直値Yの小数点ビッ
ト数YFDは、深さ値Zの最大値分だけ必要になる。
すなわち、Xの小数点ビット数XFD及びYの小数点ビ
ット数YFDは、 XFD=ZD YFD=ZD ZD:深さ値Zの最大値(整数部分のビット数)必要であ
る。
以上、深さ値Zで必要とされるビット数について説明
したが、明るさ値R,G,Bとの演算を行う場合に必要とさ
れる小数部分のビット数の関係についても、同様に求め
ることができる。このように、各値の演算を行う場合に
必要とされる小数部分のビット数が決められる。したが
って、浮動小数点演算で演算処理を行う必要がない。浮
動小数点演算を行わなければ、各値毎に演算を行うハー
ドウェアを設けても、回路規模が大きくならない。
e.並列処理状態遷移回路 e1.基本回路の説明 第7図に示すハードウェアは、第17図に示すような並
列処理状態遷移回路により制御される。
この並列処理状態遷移回路は、ウェイト回路、ジャン
プ回路、ジョイン回路、ディレイ回路の4種類の基本回
路からなっている。これらの基本回路について説明す
る。
・ウェイト回路 ウェイト回路は、二つの入力A,Bを持ち、A入力パル
ス後に、B入力パルスが入るまで出力パルスを止めてお
く機能を持つ。このウェイト回路は、ある処理を開始さ
せるためのトリガーパルスが出力された後、そのトリガ
ーパルスに対する処理が終了するまで、次の処理に進ま
ないように制御するのに用いられる。
・ウェイト回路の構成 ウェイト回路は、第12図に示すように構成でいきる。
第12図において、51及び52が入力端子である。入力端子
51からのトリガーパルスT1がフリップフロップ53に供給
されるとともに、NORゲート54の一方の入力端に供給さ
れる。入力端子52からのトリガーパルスT2がフリップフ
ロップ55に供給される。フリップフロップ53及び55のク
ロック入力端には、クロックCLKが供給される。フリッ
プフロップ53及び55は、D入力端にトリガーパルスが与
えられると、クロックCLKの立ち上がりでセットされ、
その出力がハイレベルになる。そして、そのリセット端
子にローレベルのリセット信号が与えられるまで、出力
がハイレベルに維持される。
56がリセット入力端子である。リセット入力端子56か
らのリセット信号RSTがORゲート57の一方の入力端に供
給される。ORゲート57の出力がNORゲート54の他方の入
力端に供給されるとともに、インバータ58に供給され
る。NORゲート54の出力がフリップフロップ55のリセッ
ト端子に供給される。インバータ58の出力がフリップフ
ロップ53のリセット端子に供給されるとともに、NANDゲ
ート59の入力端に供給される。
フリップフロップ53の出力がNANDゲート59の入力端に
供給される。フリップフロップ55の出力がNANDゲート59
の入力端に供給される。
NANDゲート59の出力がDフリップフロップ60の入力端
に供給される。Dフリップフロップ60のクロック入力端
には、クロックCLKが供給される。Dフリップフロップ6
0の出力がインバータ61を介して出力端子62から出力さ
れる。また、Dフリップフロップ60の反転出力がORゲー
ト57の他方の入力端に供給される。
リセット入力端子56にハイレベルのリセット信号RST
が与えられると、ORゲート57の出力がハイレベルにな
り、インバータ58の出力がローレベルになるとともに、
NORゲート54の出力がローレベルになる。これにより、
フリップフロップ53がリセットされるとともに、フリッ
プフロップ55がリセットされる。
また、インバータ58の出力がローレベルになると、NA
NDゲート59の出力がハイレベルになり、Dフリップフロ
ップ60の出力がハイレベルに維持される。したがって、
Dフリップフロップ60の出力をインバータ61で反転して
得られる出力はローレベルになる。
第13図Bに示すように、時点t1で入力端子51にトリガ
ーパルスT1が供給されるとする。すると、第13図Dに示
すように、クロックCLK(第13図A)の立ち上がりの時
点t2でこのトリガーパルスT1がフリップフロップ53に取
り込まれ、フリップフロップ53の出力Q1がハイレベルに
なる。
次に、時点t3で入力端子52にトリガーパルスT1が供給
されるとする。すると、第13図Eに示すように、クロッ
クCLK(第13図A)の立ち上がりの時点t4で、このトリ
ガーパルスT2がフリップフロップ55に取り込まれ、フリ
ップフロップ55の出力Q2がハイレベルになる。
この時、第13図Dに示すように、フリップフロップ53
の出力はハイレベルである。また、リセット時にDフリ
ップフロップ60にハイレベルを取り込まれるので、Dフ
リップフロップ60の反転出力がローレベルであり、ORゲ
ート57の出力がローレベルであり、インバータ58の出力
はハイレベルである。したがって、トリガーパルスT2
与えられ、フリップフロップ55の出力Q2がハイレベルに
なると、NANDゲート59の出力がローレベルになる。
NANDゲート59の出力がローレベルになると、クロック
CLKの立ち上がりの時点t5で、Dフリップフロップ60の
出力がローレベルになり、第13図Fに示すように、出力
端子62の出力Pがハイレベルになる。
Dフリップフロップ60の出力がローレベルになると、
Dフリップフロップ60の反転出力がハイレベルになり、
ORゲート57の出力がハイレベルになる。
ORゲート57の出力がハイレベルになると、インバータ
58の出力がローレベルになるとともに、NORゲート54の
出力がローレベルになる。これにより、第13図Dに示す
ように、フリップフロップ53及び55がリセットされる。
そして、フリップフロップ53の出力及びフリップフロ
ップ55の出力がローレベルになり、インバータ58の出力
がローレベルになるので、NANDゲート59の出力がハイレ
ベルになる。NANDゲート59の出力がハイレベルになる
と、クロックCLKの立ち上がる時点t6で、Dフリップフ
ロップ60の出力がハイレベルになる。したがって、時点
t6で、出力パルスPはローレベルになる。
第13図Fに示すように、このようなウェイト回路で
は、トリガーパルスT1(第13図B)が供給されてから、
トリガーパルスT2(第13図C)が供給された後に、出力
端子62からパルスPが出力される。
・ジャンプ回路 ジャンプ回路は、二つの入力A,Sを持ち、S入力のレ
ベルにより、A入力パルスを二つの出力O1或いはO2のど
ちらに出力するかを選択する機能を持つ。このJUMP回路
は、外部の状態に応じて、制御を変えたい場合に適用さ
れる。
・ジャンプ回路の構成 ジャンプ回路は、第14図に示すようにして構成され
る。第14図において、入力端子71にトリガーパルスT11
が供給される。このトリガーパルスT11がANDゲート73の
一方の入力端に供給されるとともに、ANDゲート74の一
方の入力端に供給される。
入力端子72に選択パルスS11が供給される。この選択
パルスS11がANDゲート73の他方の入力端に供給されると
ともに、インバータ75を介してANDゲート74の他方の入
力端に供給される。ANDゲート73の出力が出力端子76か
ら出力される。ANDゲート74の出力が出力端子77から出
力される。
入力端子72からの選択パルスS11がハイレベルの間
に、入力端子71からトリガーパルスT11が供給される
と、ANDゲート73を介して、出力端子76からトリガーパ
ルスT11が出力される。
入力端子72からの選択パルスS11がローレベルの間
に、入力端子71からトリガーパルスT11が供給される
と、ANDゲート74を介して、出力端子77からトリガーパ
ルスT11が出力される。
・ジョイン回路 ジョイン回路は、二つの入力I1及びI2を持ち、I1又は
I2にパルスが入ったら、パルスを出力する機能を持つ。
このジョイン回路は、別々の制御系からの信号をひとつ
の制御系に集める場合に適用される。
・ジョイン回路の構成 ジョイン回路は、第15図に示すようにして構成でき
る。第15図において、入力端子81にトリガーパルスT21
が供給される。入力端子81からのトリガーパルスT21がO
Rゲート83の一方の入力端に供給される。入力端子82に
トリガーパルスT22が供給される。入力端子82からのト
リガーパルスT22がORゲート83の他方の入力端に供給さ
れる。ORゲート83の出力が出力端子84から出力される。
入力端子81にトリガーパルスT21が供給される時に
は、ORゲート83を介して、このトリガーパルスT21が出
力端子84から出力される。
入力端子82にトリガーパルスT22が供給される時に
は、ORゲート83を介して、このトリガーパルスT22が出
力端子84から出力される。
・ディレイ回路 ディレイ回路は、入力を一定時間遅らせる機能を持
つ。このディレイ回路は、トリガーパルスから常に一定
の遅れ時間後、処理が終了するような制御に適用され
る。
・ディレイ回路の構成 ディレイ回路は、第16図に示すようにして構成され
る。第16図において、入力端子91にトリガーパルスT31
が供給される。この入力端子91からのトリガーパルスT
31がフリップフロップ92に供給される。フリプフロップ
92の出力が出力端子93から出力される。
入力端子91にトリガーパルスT31は、フリップフロッ
プ92を介して遅延されて、出力端子93から出力される。
e2.シェーディング処理のための並列処理状態遷移回路 第17図は、第7図に示したハードウェアを制御するた
めの並列処理状態遷移回路の一例である。この並列処理
状態遷移回路には、上述の4つの基本回路が用いられ
る。第17図と第7図とを参照しながら、この発明の一実
施例の演算処理制御について説明する。
第17図において、入力端子101に外部トリガーパルスE
XTRGが与えられる。この外部トリガパルスEXTRGは、並
列処理状態遷移回路を構成する各基本回路間を伝えられ
ていく。この時、各基本回路から、ハードウェアの各部
を制御するためのトリガー信号が出力されていく。
すなわち、入力端子101からの外部トリガーパルスEXT
RGがディレイ回路102に供給され、外部トリガーパルスE
XTRGがディレイ回路102に供給されてから所定時間経過
後、ディレイ回路102からトリガー信号が出力される。
このトリガー信号がセレクト信号SEL ABCとされる。セ
レクトSEL ABCにより、第7図におけるマルチプレクサ1
5及び16がa側に切り換えられ、マルチプレクサ18がa
側に切り換えられる。そして、左下の頂点の値と左上の
頂点の値が減算器17で減算され、割算器19に設定され
る。
ジャンプ回路103のA入力端には、ディレイ回路102か
らのトリガー信号が供給される。ジャンプ回路103のS
入力端には、ナル判別信号Nullが供給される。左辺に頂
点があれば、(第8図参照)ジャンプ回路103のO1出力
端からトリガーパルスが出力される。このトリガーパル
スが割算トリガー信号DIV TRGとされる。この割算トリ
ガー信号DIV TRGにより、第7図における割算器19で割
算が開始される。こるにより、左辺縦方向の変分が求め
られる。左辺に頂点が無く、左辺の頂点がナルとされて
いたら、ジャンプ回路103のO2出力端からトリガーパル
スが出力され、このトリガーパルスがディレイ回路105
に供給される。
ウェイト回路104のA入力端には、ジャンプ回路103の
O1出力端からのトリガーパルスが供給される。ウェイト
回路104のB入力端には、割算終了信号DIV ENDが供給さ
れる。割算器19で割算が終了され、左辺縦方向の変分が
求められると、割算器19から割算終了信号DIV ENDが発
生される。割算終了信号DIV ENDが発生されると、ウェ
イト回路104からトリガーパルスが出力される。このト
リガーパルスがDDAセット信号DDA SET Aとされる。この
DDAセット信号DDA SET Aにより、割算器19で求められた
左辺縦方向の変分が左辺補正演算機能付きDDA演算回路2
0にセットされる。
ジョイン回路106のI1入力端には、ウェイト回路104か
ら出力されるトリガーパルスが供給される。ジョイン回
路106のI2入力端には、ディレイ回路105から出力される
トリガーパルスが供給される。ジョイン回路106のI1
力端にウェイト回路104からトリガーパルスが与えられ
るか、又は、ジョイン回路106のI2入力端にディレイ回
路105からトリガーパルスが与えられると、ジョイン回
路106からトリガーパルスが出力される。このトリガー
パルスがセレクト信号SEL ABとされる。このセレクト信
号SEL ABにより、マルチプレクサ15及び16がb側に切り
換えられ、右下の頂点の値と右上の頂点の値が減算器17
で減算され、割算器19に設定される。
ジャンプ回路107のA入力端には、ジョイン回路106か
らのトリガー信号が供給される。ジャンプ回路103のS
入力端には、ナル判別信号Nullが供給される。右辺に頂
点があれば、ジャンプ回路107のO1出力端からトリガー
パルスが出力される。このトリガーパルスが割算トリガ
ー信号DIV TRGとされる。割算トリガー信号DIV TRGによ
り、割算器19で割算が開始される。これにより、右辺縦
方向の変分が求められる。右辺に頂点が無く、右辺の頂
点がナルとされていたら、ジャンプ回路107のO2出力端
からトリガーパルスが出力され、このトリガーパルスが
ディレイ回路109に供給される。
ウェイト回路108のA入力端には、ジャンプ回路107の
O1出力端からのトリガーパルスが供給される。ウェイト
回路107のB入力端には、割算終了信号DIV ENDが供給さ
れる。割算器19で割算が終了され、右辺縦方向の変分が
求められると、割算器19から割算終了信号DIV ENDが発
生される。割算終了信号DIV ENDが発生されると、ウェ
イト回路108からトリガーパルスが出力される。このト
リガーパルスがDDAセット信号DDA SET Bとされる。この
DDAセット信号DDA SET Bにより、割算器19で求められた
右辺縦方向の変分が右辺補正演算機能付きDDA演算回路2
1にセットされる。
ジョイン回路110のI1入力端には、ウェイト回路108か
ら出力されるトリガーパルスが供給される。ジョイン回
路110のI2入力端には、ディレイ回路109から出力される
トリガーパルスが供給される。ジョイン回路110のI1
力端にウェイト回路108からトリガーパルスが与えられ
るか、又は、ジョイン回路110のI2入力端にディレイ回
路109からトリガーパルスが与えられると、ジョイン回
路110からトリガーパルスが出力される。このトリガー
パルスがDDA補正演算トリガー信号DDA TRG ABとされ
る。このDDA補正演算トリガー信号DDA TRG ABにより、
左辺補正演算機能付きDDA演算回路20及び右辺補正演算
機能付きDDA演算回路21がトリガーされ、左辺補正演算
及び右辺補正演算が開始される。この補正演算により、
スキャンラインの左端及び右端の値が求められる。
ウェイト回路111のA入力端には、ジョイン回路110か
ら出力されるトリガーパルスが供給される。ウェイト回
路111のB入力端には、補正演算終了信号AJST ENDが供
給される。左辺補正演算機能付きDDA演算回路20及び右
辺補正演算機能付きDDA演算回路21で左辺補正演算及び
右辺補正演算が終了されると、左辺補正演算機能付きDD
A演算回路20及び右辺補正演算機能付きDDA演算回路21か
ら、補正演算終了信号AJST ENDが発生される。補正演算
終了信号AJST ENDが発生されると、ウェイト回路111か
らトリガーパルスが出力される。
ジョイン回路112のI1入力端には、ウェイト回路111か
ら出力されるトリガーパルスが供給される。ジョイン回
路112のI2入力端には、ウェイト回路117から出力される
トリガーパルスが供給される。ジョイン回路112のI1
力端にウェイト回路111からトリガーパルスが与えられ
るか、又は、ジョイン回路112のI2入力端にウェイト回
路107からトリガーパルスが与えられると、ジョイン回
路112からトリガーパルスが出力される。このトリガー
パルスがセレクト信号SEL Cとされる。このセレクト信
号SEL Cにより、第7図におけるマルチプレクサ18がb
側に切り換えられる。
マルチプレクサ18がb側に切り換えられると、減算器
22で求められた水平方向の変分が割算器19にセットされ
る。
ディレイ回路113には、ジョイン回路112から出力され
るトリガーパルスが供給される。ディレイ回路113で、
このトリガーパルスが所定時間遅延され、所定時間経過
後、ディレイ回路113からトリガーパルスが出力され
る。このトリガーパルスが割算トリガー信号DIV TRGと
される。この割算トリガー信号DIV TRGにより、割算器1
9で割算が開始される。
ウェイト回路114のA入力端には、ディレイ回路113か
ら出力されるトリガーパルスが供給される。ウェイト回
路114のB入力端には、割算終了信号DIV ENDが供給され
る。割算器19で割算が終了され、水平方向の変分が求め
られると、割算器19から割算終了信号DIV ENDが発生さ
れる。割算終了信号DIV ENDが発生されると、ウェイト
回路114からトリガーパルスが出力される。このトリガ
ーパルスがDDAセット信号DDA SET Hとされる。このDDA
セット信号DDA SET Hにより、割算器19で求められた水
平方向の変分が水平補正演算機能付きDDA演算回路23に
セットされる。
ディレイ回路115には、ウェイト回路114から出力され
るトリガーパルスが供給される。ディレイ回路115で、
このトリガーパルスが所定時間遅延され、所定時間経過
後、ディレイ回路115からトリガーパルスが出力され
る。このトリガーパルスがDDA補正演算トリガー信号DDA
TRG Hとされる。このDDA補正演算トリガー信号DDA TRG
Hにより、水平補正演算機能付きDDA演算回路23がトリ
ガーされ、水平補正演算が開始される。このDDA補正演
算により、スキャンラインの左端の座標格子点の値が求
められる。
ウェイト回路116のA入力端には、ディレイ回路115か
ら出力されるトリガーパルスが供給される。ウェイト回
路116のB入力端には、補正演算終了信号AJST ENDが供
給される。水平補正演算機能付きDDA演算回路23で水平
補正演算が終了されると、水平補正演算機能付きDDA演
算回路23から、補正演算終了信号AJST ENDが発生され
る。補正演算終了信号AJST ENDが発生されると、ウェイ
ト回路116からトリガーパルスが出力される。このトリ
ガーパルスがDDA演算トリガー信号DDA H INCとされる。
このDDA演算トリガー信号DDA H INCにより、水平補正演
算機能付きDDA演算回路23でDDA演算を繰り返される。こ
れにより、スキャンラインの各座標格子点の値が求めら
れる。
ウェイト回路117のA入力端には、ウェイト回路116か
ら出力されるトリガー信号が供給される。ウェイト回路
117のB入力端には、ラインの終端を示す信号END OF LI
NEが供給される。ラインの終わりまで各座標格子点の値
が求められると、ラインの終端を示す信号END OF LINE
が発生される。そして、ラインの終端を示す信号END OF
LINEが発生されると、ウェイト回路117からトリガーパ
ルスが出力される。このトリガーパルスがDDA演算トリ
ガー信号DDA AB INCとされる。このトリガーパルスがDD
A演算トリガー信号DDA AB INCにより、左辺補正演算機
能付きDDA演算回路20及び右辺補正演算機能付きDDA演算
回路21でDDA演算が行われ、次のスキャンラインの左端
の値及び右端の値が求められる。
ウェイト回路117からの出力パルスがジョイン回路112
のI2入力端に供給される。そして、次ラインの処理が行
われる。
〔発明の効果〕 この発明によれば、1回の乗算だけで補正演算が行な
える。そして、補正演算処理とDDA演算とが同一のハー
ドウェアで求められる。すなわち、補正演算を行う際に
は、ゼロ判定回路34に、変分DDがパラレルデータで供給
されるとともに、補正位置までの距離(R−A)が最下
位ビットからシリアルデータで供給される。加算器35の
出力は、マルチプレクサ38で、1ビットづつ右にシフト
されながら、加算器35に供給され、累積される。このよ
うな加算を繰り返すことにより、補正位置までの距離
(R−A)と変分DDとの乗算が実行される。
このように、DDA回路を利用して補正演算を行なえる
ので、ハードウェアの簡略化が図れる。
【図面の簡単な説明】
第1図はこの発明が適用された補正演算機能付きDDA演
算回路の一例のブロック図,第2図は補正演算の説明に
用いる略線図,第3図は補正演算機能付きDDA演算回路
の説明に用いるブロック図,第4図は補正演算機能付き
DDA演算回路での乗算の説明に用いる略線図,第5図は
シェーディングの説明に用いる略線図,第6図はこの発
明の一実施例の説明に用いるフロー図,第7図はシェー
ディング回路の一例のブロック図,第8図及び第9図は
この発明の一実施例において任意の多角形を処理する場
合の説明に用いる略線図,第10図及び第11図はこの発明
の一実施例において大きな演算誤差が生じる場合の処理
の説明に用いる略線図,第12図はウェイト回路の一例の
ブロック図,第13図はウェイト回路の一例の説明に用い
るタイミング図,第14図はジャンプ回路の一例のブロッ
ク図,第15図はジョイン回路の一例のブロック図,第16
図はディレイ回路の一例のブロック図,第17図はこの発
明が適用された並列処理状態遷移回路の一例のブロック
図である。 図面における主要な符号の説明 30:補正位置までの距離の入力端子, 31:変分の入力端子, 32:初期位置での値の入力端子, 34:ゼロ判定回路, 35:加算器,36:リセット回路, 38:マルチプレクサ。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】曲面を複数の多角形で近似し、上記多角形
    の各頂点に値を入力し、上記多角形の各頂点に入力され
    た値から、上記多角形内の値を線形補間により求めるよ
    うにしたシェーディングにおける演算回路において、 2点A、Bでの値をA(V)、B(V)とし、 上記2点A、Bの間にある補正点Rでの値をR(V)と
    し、 上記2点A、B間の距離に対する上記2点A、Bの値A
    (V)、B(V)の変化((B(V)−A(V))/
    (B−A))を変分DDとしたとき、 上記補正点Rでの値R(V)を、上記点Aから上記補正
    点Rまでの距離(R−A)と変分DDとの積に、上記点A
    での値A(V)を加算した値 R(V)=A(V)+(R−A)・DD として求めるようにしたものであって、 上記点Aの値A(V)のデータが入力される初期値入力
    端子と、 上記変分DDのデータが入力される変分値入力端子と、 上記点Aから上記補正点Rまでの距離(R−A)がシリ
    アルデータで入力される被乗数入力端子と、 上記初期値入力端子からのデータと上記変分値入力端子
    からのデータとを選択する選択手段と、 上記選択手段の出力データと上記被乗数入力端子からの
    データとの部分積を求める部分積演算手段と、 加算手段と保持手段とからなり上記保持手段の出力を上
    記加算手段にフィードバックして累積演算を行なうと共
    に、上記フィードバックループ中にシフト手段が設けら
    れ、上記保持手段の出力を桁数をシフトさせながら累積
    させることが可能とされた累積手段と、 上記累積手段の出力から出力データを取り出す出力端子
    とを備え、 上記変分DDを足し込んでいくDDA演算と、 上記変分DDのデータと上記シリアルデータで入力される
    上記点Aから上記補正点Rまでの距離(R−A)の各ビ
    ット毎の部分積を順次求め、上記部分積を上記累積手段
    により桁数をシフトさせながら累積して、上記点Aから
    上記補正点Rまでの距離(R−A)と変分DDとの積 (R−A)・DD を求める補正演算と、 求められた上記点Aから上記補正点Rまでの距離(R−
    A)と変分DDとの積に、上記点Aでの値A(V)を加算
    する演算 A(V)+(R−A)・DD を行なう初期値加算演算と を行なえるようにしたことを特徴とするシェーディング
    における演算回路。
JP33363589A 1989-12-21 1989-12-22 シェーディングにおける演算回路 Expired - Fee Related JP2814631B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP33363589A JP2814631B2 (ja) 1989-12-22 1989-12-22 シェーディングにおける演算回路
KR1019900020769A KR100232931B1 (ko) 1989-12-21 1990-12-17 컴퓨터 그래픽용 쉐이딩 방법 및 시스템
EP90124779A EP0434037B1 (en) 1989-12-21 1990-12-19 A shading method and shading apparatus for computer graphics
DE69032367T DE69032367T2 (de) 1989-12-21 1990-12-19 Schattierungsverfahren und -gerät in einem Grafikrechner
US08/302,965 US5418901A (en) 1989-12-21 1994-09-12 Shading method and shading apparatus for computer graphics

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33363589A JP2814631B2 (ja) 1989-12-22 1989-12-22 シェーディングにおける演算回路

Publications (2)

Publication Number Publication Date
JPH03192483A JPH03192483A (ja) 1991-08-22
JP2814631B2 true JP2814631B2 (ja) 1998-10-27

Family

ID=18268254

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33363589A Expired - Fee Related JP2814631B2 (ja) 1989-12-21 1989-12-22 シェーディングにおける演算回路

Country Status (1)

Country Link
JP (1) JP2814631B2 (ja)

Also Published As

Publication number Publication date
JPH03192483A (ja) 1991-08-22

Similar Documents

Publication Publication Date Title
JP2910979B2 (ja) コンピュータグラフィックシステムのサブピクセルマスク発生方法および装置
JP3675488B2 (ja) 線形補間を用いて非同次2次遠近テクスチャマッピング座標を決定する回路
KR100320483B1 (ko) 디스플레이회로
JPH0719297B2 (ja) グラフィック表示処理システム及び方法
KR100200818B1 (ko) 분할된 룩업테이블을 이용한 효과적인 앤티에일리어싱 방법
CN109616080B (zh) 一种异形屏轮廓补偿方法及终端
US4951230A (en) Method and apparatus for tiling an image
EP0391265A2 (en) Method and apparatus for linear shading in a raster graphics display
KR100232931B1 (ko) 컴퓨터 그래픽용 쉐이딩 방법 및 시스템
US5892516A (en) Perspective texture mapping circuit having pixel color interpolation mode and method thereof
KR100305461B1 (ko) 그래픽처리장치
JP2770513B2 (ja) シェーディング方法及びシェーディング装置
US7636095B2 (en) Pixel delta interpolation method and apparatus
JP2814631B2 (ja) シェーディングにおける演算回路
KR970004120B1 (ko) 3차원도형처리장치
JP2770514B2 (ja) シェーディング装置
EP0600204A2 (en) Method and apparatus for rendering primitives with multiple processors
JP3066596B2 (ja) アドレス変換装置
JPH03192480A (ja) シェーディング方法
KR100313846B1 (ko) 바이리니어밉매핑에서의상세도(lod)계산방법및장치
JPH03192482A (ja) シェーディング方法
JPH07105404A (ja) 立体画像処理装置及びその処理方法
JPH11242585A (ja) 除算回路およびグラフィック演算装置
JP2002049931A (ja) 画像生成方法
JP4224887B2 (ja) 信号処理装置および画像処理装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees