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

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

Info

Publication number
JPH03192483A
JPH03192483A JP1333635A JP33363589A JPH03192483A JP H03192483 A JPH03192483 A JP H03192483A JP 1333635 A JP1333635 A JP 1333635A JP 33363589 A JP33363589 A JP 33363589A JP H03192483 A JPH03192483 A JP H03192483A
Authority
JP
Japan
Prior art keywords
value
circuit
vertex
calculation
output
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.)
Granted
Application number
JP1333635A
Other languages
English (en)
Other versions
JP2814631B2 (ja
Inventor
Mutsuhiro Omori
睦弘 大森
Norihito Ichikawa
市川 典仁
Hidehiro Hirase
平瀬 英弘
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野] この発明は、3次元物体を2次元デイスプレィ上に表示
させる際、3次元物体に陰影を付加するのに用いられる
シェーブイブにおける演算回路に関する。
〔発明の概要〕
この発明は、曲面を複数の多角形で近似し、多角形の各
頂点に値を入力し、多角形の各頂点に入力された値から
、多角形内の値を線形補間により求めるようにしたシェ
ーディングにおける演算回路において、加算器の出力を
ラッチ回路に供給し、ラッチ回路の出力を加算器に供給
する加算ループを用いて、変分を足し込んでいくDDA
演算とが行なえるとともに、初期位置での値と変分とを
乗算する補正演算が行なえるようにして、ハードウェア
の簡単化を図るようにしたものである。
〔従来の技術〕
コンピュータグラフィックスにおいて、2次元デイスプ
レィ上に3次元物体を表示する場合、3次元物体を写実
的に見せ、3次元物体の認識を高めるために、3次元物
体の表面に陰影を付加することが行われている。このよ
うに、3次元物体の表面に陰影を付加して表示する手法
は、シェーディングと呼ばれている。シェーディングの
表示方法としては、例えば点光源の位置を定め、点光源
からの光源に対して垂直な面を明るくし、面が光源に対
して垂直でなくなるに従って暗くするような方法が用い
られる。
2次元デイスプレィ上に表示される3次元物体は、複雑
な曲面をもっている。このような複雑な曲面を持つ3次
元物体に対して、曲面の形状に応じた自然で最適なシェ
ーディングを行うために、曲面を複数の多角形で近似し
、それぞれの多角形の各頂点座標の値を入力し、各頂点
座標に与えられた値から、多角形内の値を線形補間によ
り求めることが行われている。線形補間は、座標格子間
隔毎の値の変分を足し込んでいくDDA(ディジタル 
ディファレンシャル アナライザ)演算により行なわれ
る(例えば特開昭61−52737号公報)。
2次元デイスプレィ上に3次3元物体を表示させる場合
、座標格子点上にピクセルが設けられ、このピクセルに
対応する値(深さ値、明るさ値)が入力される。
上述のように、曲面を複数の多角形で近似し、それぞれ
の多角形の各頂点座標の値を入力し、多角形内の値を線
形補間により求める場合、多角形の各頂点の座標が座標
格子点から外れた位置にくることがある。
ところが、従来では、座標格子点上以外の座標には値を
入力できない。このため、従来では、曲面を近似して得
られた多角形の頂点の座標が座標格子点から外れた位置
にくる場合には、その値を、その座標から最も近傍にあ
る座標格子点上の値として処理するようにしている。
この場合、座標格子点のピクセルに正しい値が入力され
るのではなく、座標格子点に近い座標の値が座標格子点
のピクセルに入力される。したがって、3次元物体を移
動させたり、変形させたり、光源を移動させたりすると
、1ピクセル以内で表示が揺らぐことになる。
そこで、本廓発明者は、多角形の各頂点の値に水平方向
の補正演算を施してスキャンライン端点での値を算出し
、このスキャンライン端点での値に水平方向の補正演算
を施して座標格子点上にあるスタート点に対応する値を
算出し、このスタート点での値に変分を足し込んで座標
格子点上での多値を求めるようにすることにより、座標
格子点での正確な値を入力でき、ちらつきがなく、自然
なシェーディングを行なえるようにしたものを提案して
いる。
(発明が解決しようとする課題) このようなシェーディング装置では、補正演算が必要に
なって(る。2点A、B間で値A (V)、B(v)が
直線的に変化している場合、2点A、B間の点R(7)
値R(V)を、値A m、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で、lビットづつ右にシフトされながら、加
算器35に供給され、累積される。このような加算を繰
り返すことにより、補正位置までの距離(R−A)と変
分DDとの乗算が実行される。
〔実施例〕
この発明の実施例について、以下の順序で説明する。
a、シェーディング方法の概要 す、補正演算について bl、補正演算の原理 b2.補正演算機能付きDDA演算回路C,シェーディ
ング方法の説明 cl、処理に必要な演算 c2.描画手順 c3.任意の多角形への拡張 c4.大きな演算誤差が発生する場合の処理d、シェー
ディング装置 dl、シェーディング装置の構成 d2.演算精度とビット数 e、並列処理状態遷移回路 el、基本回路の説明 e2.  シェーディング処理のための並列処理状態遷
移回路 a、シェーディング方法の概要 この発明は、曲面を複数の多角形で近似し、それぞれの
多角形の各頂点座標の値を入力し、各頂点座標に与えら
れた値から、多角形内の値を線形補間により求め、曲面
の形状に応じた自然で最適なシェーディングを行う場合
に適用される。
このように、曲面を複数の多角形で近似し、それぞれの
多角形の各頂点座標の値を入力し、多角形内の値を線形
補間により求める場合、多角形の各頂点の座標が座標格
子点から外れた位置にくることがある。
この発明の一実施例では、小数部分まで水平値X及び垂
直値Yを入力することで、座標格子点と座標格子点との
間のピクセルの無い座標に値を入力することが可能であ
る。このことを、以下、サブピクセルアドレシングと称
する。したがって、曲面を近似して得られた多角形の頂
点の座標が座標格子点から外れた位置にきても、そのま
まの頂点座標(水平値X、垂直値Y)に対応する値(深
さ値Z、明るさ値R(赤)、G(緑)、B(青))を入
力できる。
この発明の一実施例では、このように、サブピクセルア
ドレシングが行われる。そして、補正演算が行われ、各
スキャンラインでのDDA演算のスタート点の座標格子
点上のピクセルでの正しい値が求められる。以後、DD
A演算が繰り返され、座標格子点上の各ピクセルの値が
求められる。
つまり、曲面を近似して得られた台形のプリミティブに
対して、左辺の縦方向の補正演算と、右辺の縦方向の補
正演算とが行われ、スキャンラインの左端(左側から右
側にスキャンしているので、スキャンラインの始端に対
応する)とスキャンラインの右端(スキャンラインの終
端に対応する)の値が求められる。スキャンラインの左
端の値とスキャンラインの右端の値から、水平方向の補
正演算により、スキャンラインの左端近傍の座標格子点
上にあるスタート点のビクセルの正しい値が求められる
。スタート点のピクセルの値に対して、水平方向の変分
を足し込んでいく水平方向のDDA演算を繰り返すこと
により、各スキャンラインの座標格子点上にあるビクセ
ルの正しい値が求められる。次のスキャンラインの左端
の値及び次のスキャンラインの右端の値は、前スキャン
ラインの左端の値及び前スキャンラインの右端の値に、
左辺の縦方向の変分及び右辺の縦方向の変分をそれぞれ
足し込んでいく縦方向のDDA演算により求められる。
この場合、座標格子点上のピクセルの正確な値を入力し
ているので、3次元物体の動きや光源の動きにリアルタ
イムでスムーズに対応でき、画面のちらつきがなく、精
度の高いシェーディングが行なえる。
ところで、曲面を複数の多角形で近似する際、任意の多
角形で近似できれば、効率良く曲面を分割でき、描画効
率が向上する。この発明の一実施例では、左辺の頂点と
右辺の頂点とが同じ水平ライン上にあった場合にのみ、
左辺の頂点の値と右辺の頂点の値とが同時に入力される
ようにし、方の頂点だけ入力された時には、他方の頂点
をナルとし、ナルの場合には、前回のDDA演算を引き
継ぐような処理が行われる。これにより、台形の演算処
理を任意の多角形に拡張できる。
b、補正演算について bl、補正演算の原理 この発明の一実施例では、上述のように、左辺及び右辺
の縦方向の補正演算によりスキャンラインの端点の値を
求め、水平方向の補正演算によりスタート点の座標格子
点上のピクセルの正しい値を求め、以後、左辺縦方向及
び右辺縦方向の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演算回路の一部が利用できる
ことになる。このような、補正演算機能付きDDA演算
回路について、以下に説明する。
b2.補正演算機能付きDDA演算回路補正演算処理は
、上述したように、初期位置Aから補正位置Rまでの長
さ(R−A)と変分DDとの積に、初期位置での値A 
(V)を加算して求められる。このような処理は、第1
図に示すような補正演算機能付きDDA演算回路で実現
できる。
この補正演算機能付きDDA演算回路は、3つのモード
に設定される。1つのモードは、補正値を求める補正値
演算モードである。この補正値演算モードの時には、入
力端子30からの補正位置までの距離(R−A)と、入
力端子33から変分DDとが乗算され、 (R−A)  ・DD なる演算がなされる。なお乗算は、補正位置までの距M
 (R−A)を最下位ビットからシリアルデータで与え
、この補正位置までの距離(R−A)の各ビットと変分
DDとをビット毎に乗算し、これを、右シフトさせなが
ら加算していくことにより求められている。
2つ目のモードは、補正値と初期位置での値とを加算し
、補正後の値を求めるモードである。これにより、 A (V)+  (R−A)  ・DDなる演算が行わ
れ、点Rでの値R(V)が求められる。
3つ目のモードは、DDA演算を行うモードである。D
DA演算では、前回の値に変分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ゲー
ト42+ 、42g 、423 、”・42nから構成
される。ANDゲート421,42□、423、・・・
427のそれぞれの一方の入力端に、マルチプレクサ3
1の出力データの各ビットの出力が供給される。AND
ゲート42+、42□、423、・・・42.の他方の
入力端に、入力端子30からのシリアルデータが供給さ
れる。
第1図において、ゼロ判定回路34の出力が加算器35
に供給される。加算器35の出力がラッチ回路36に供
給される。
ラッチ回路36には、クロック入力端子39からDDA
クロシ、りDDA CKが供給される。また、ラッチ回
路36には、リセット端子40から、リセット信号R5
Tが供給される。
ラッチ回路36の出力が出力端子37から取り出される
。これとともに、ラッチ回路36の出力がマルチプレク
サ38に供給される。
マルチプレクサ38には、入力端子41から補正ループ
信号AJLが供給される。マルチプレクサ38に入力端
子41からの補正ループ信号AJLが与えられると、ラ
ッチ回路36の出力は、1クロツク毎に1ビツトづつ右
にシフトされながら、マルチプレクサ38から出力され
る。
マルチプレクサ38の出力が加算器35に供給される。
最初に、ラッチ回路36に、入力端子40からリセット
信号RSTが供給される。このリセット信号R5Tによ
り、ラッチ回路36がリセットされる。
そして、補正値演算モードに設定され、補正値が求めら
れる。補正値演算モードでは、マルチプレクサ31で、
入力端子33からの変分DDが選択される。この変分D
Dがパラレルデータでマルチプレクサ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ビツトのデータ’d:+ 
、dz 、dl 、do Jであり、補正位置までの距
離(R−A)が4ピントのデータ「a。
az、a++aoJであったとする。この場合、補正位
置までの距離(R−A)と変分DDとの乗算は、第4図
に示すようにして実行できる。
ゼロ判定回路34には、先ず、補正位置までの距離(R
−A)の最下位ビット「ao」が供給され、この最下位
ビット「ao」とra3.d、。
dl、doJとが乗算され、ra、d3.ao dt 
+  ao dl +  ao do Jが求められる
次に、補正位置までの距離(R−A)の下位2ビツト目
「a、」が供給され、この下位2ビットra、Jと[d
s 、dt 、dl 、do Jとが乗算され、「at
  d3.at  di、at  dl l  at 
 d。」が求められる。
この”at  di、at  dz、al  dl 、
aHd。」と、右に1ビツトシフトされたra、d3゜
aoa2.ao a、l  ao do Jとが加算さ
れる。
以下、同様にして、’ a z d 31  a 2 
d 2 、  a2 dl +  a2do j、[a
s d:+、az dz、a3 dl 、a= do 
jが求められ、右に1ビツトづつシフトされながら、こ
れらが加算される。
これにより、「dz、dz、dl 、do J、と「a
3+  az +  at 、ao Jとの乗算が実行
され、乗算値rc、、Cb+  C5t  C4+  
C3+  C2+C+、CoJが求められる。
第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、R3,REの値(水平
値X、垂直値Y、深さ値Z、明るさ値R(赤の値)、G
(緑の値)、B(青の値))を入力し、この各頂点LS
、LE、R3,REの多値から、台形内部の座標格子点
上にあるピクセルの多値を線形補間により求めることに
する。
cl、処理に必要な演算 このようなシェーディング処理を行う場合、以下のよう
な演算が行われる。
・左辺縦方向の変分の演算(0式) ・右辺縦方向の変分の演算(0式) ・左辺縦方向の補正演算(0式) ・右辺縦方向の補正演算(0式) ・左辺縦方向のDDA演算(0式) ・右辺縦方向のDDA演算(0式) ・水平方向の変分の演算(0式) ・水平方向の補正演算(0式) ・水平方向のDDA演算(0式) ・左辺縦方向の変分の演算 先ず、縦方向の演算について説明する。左辺での縦方向
の1座標格子間当たりの多値の変分DL(X、Z。
R,G、B) は、 ・・・■ LS(X、Y)  :左上の頂点LSでの水平値X及び
垂直値Y LS(Z)  :左上の頂点LSでの深さ値ZLS (
R,G、B) :左上の頂点LSでの明るさ値R,CL
H(X、Y)  :左下の頂点LEでの水平値X及び垂
直値Y LE(Z)  :左下の頂点LEでの深さ値ZLE (
R,G、B) :左下の頂点LEでの明るさ値R,Gで
求められる。
・右辺縦方向の変分の演算 同様に、右上の縦方向の1座標格子間当たりの多値の変
分DR(X、 Z、 R,G、 B)は、・・・■ R3(X、Y)  :右上の頂点R3での水平値X及び
垂直値Y R5(Z)  :右上の頂点R3での深さ値ZRS (
R,G、B) :右上の頂点R3での明るさ値R,G。
RE(X、Y)  :右上の頂点REでの水平値X及び
垂直値Y RE(Z)  :右上の頂点REでの深さ値ZRE (
R,G、B) :右上の頂点REでの明るさ値R,G。
で求められる。
・左辺縦方向のDDA演算 サブピクセルアドレシングを行った場合、各ピクセル間
の距離が1なので、左上の頂点LSから最も近傍のスキ
ャンラインy。までの縦方向の距離は、 1−(LS(Y)−1nt(LS(Y)))である。な
お、Intは、小数部分をOにする演算である。(つま
り、(LS (Y) −In t (LS (Y) )
)は、頂点LSの垂直値Yの小数部を求めることである
。)したがって、スキャンラインy。の左端の値H5゜
(X、Z、R,G、B) は、 1(So (X、Z、R,G、B) −LS(X、Z、R,G、B)+ (1−(LS(Y)
−1nt(LS(Y)))OL(X、Z、R,G、B)
・・・■ で求められる。これを、左辺縦方向の補正演算とす、る
。なお、補正演算の求め方は、前述の@弐と同様である
・右辺縦方向の補正演算 同様に、スキャンラインy0の右端の値HEO(X、Z
R,G、 B)  は、 HEo (X、 Z、 R,G、 B)=RS(X、Z
、R,G、B)+ (1−(R5(Y)−Int(RS
(Y)))DR(X、Z、R,G、B)  ・・・■で
求められる。これを、右辺縦方向の補正演算とする。
・左辺縦方向のDDA演算 次のスキャンラインy、。1での左端の値HS、。。
(X、Z、R,G、B)は、前回のスキャンラインy、
の左端の値HS、(X、Z、R,G、B) ニ左辺縦方
向の変分DL(X、Z。
R,G、B)を足し込んでいく左辺縦方向のDDA演算
により求められる。すなわち、次のスキャンラインY 
j++ での左端の値)ISj−+(X、Z、R,G、
B)は、H5J4+ (X、Z、R,G、B) =HS、(X、Z、R,G、B)+0L(X、Z、R,
G、B)・・・■で求められる。
・右辺縦方向のDDA演算 同様に、次のスキャンライン)’ j+1での右端の値
HE、。1は、右辺縦方向のDDA演算により求められ
る。すなわち、スキャンラインy、。lでの右端の値H
E、。、 (X、 Z、 Il、 G、 B)は、HE
J++ (X、 Z、 R,G、 B)=t(E=(X
、Z、R,G、B)+DR(X、Z、R,G、B)・・
・■で求められる。
・水平方向の変分の演算 次に水平方向の演算について説明する。スキャンライン
yJでの水平方向の1座標格子間当たりの多値の変分D
)l、(Z、R,G、B)は、スキャンラインyjでの
左端の値H5j(X、Z、R,G、B)  (0式、0
式で求められる)と、スキャンラインyJでの右端の値
HB、(X、Z、R,G、B)  (0式、■式テ求メ
ラレテる)とを用いて、 ・・・■ で求められる。
・水平方向の補正演算 スキャンラインy、での左端近傍の座標格子点上のビク
セルの値H4゜(Z、R,G、B)は、スキャンライン
y、の左端の値)1sJ (Z、 R,G、 B)と、
水平方向の変分DH,(Z、R,G、B)とを用いて、
■、。(Z、R,G、B) =HSi(Z、R,G、B)+ (1−(HSi(X)
−Int(HSj(X)) HD)lj(Z、 R,G
、 B) ・・・■ で求められる。これをスキャンラインy、での水平方向
の補正演算とする。そして、Hjo (Z、R,G。
B)をスキャンラインyjでのスタート点の値とする。
・水平方向のDDA演算 スキャンラインy、でのスタート点以降の座標格子点上
の値は、水平方向のDDA演算を繰り返していくことに
より順次求められる。すなわち、スキャンラインy、で
の座標格子点上の値Hj i * 1(Z、R,G、B
)は、 H4□。l(Z、R,G、B) −Hji(Z、R,G、B) +DHj(Z、R,G、
B)  ・・・■で求められる。
c2.描画手順 この発明が適用されたシェーディング方法の描画手順を
、第6図を参照しながら説明する。
先ず、0式に基づいて、頂点LSと頂点LEとを結ぶ左
辺での縦方向の変分DL(X、Z、R,G、B)が求め
られる(ステップ1)。また、0式に基づいて・頂点R
3と頂点REとを結ぶ右辺での縦方向の変分DR(X、
Z、R,G、B)が求められる(ステップ2)。
次に、0式に基づいて、左辺での縦方向の補正演算が行
われ、最初のスキャンラインy0の左端の値日S、 (
X、Z、R,G、B)が求メラレル(ステップ3)。ま
た、0式に基づいて、右辺での縦方向の補正演算が行わ
れ、最初のスキャンラインy0の右端の値HEo (X
、 Z、 R,G、 B)が求められる(ステップ4)
。なお、ステップ3及びステップ4は、並列処理可能で
ある。
ステップ3及びステップ4で、最初のスキャンラインy
0の左端の値HSo (X、Z、R,G、’B)と右端
の値HEo (X、 Z、 R,G、 B)が求められ
たら、0式に基づいて、最初のスキャンラインy0での
水平方向の変分D)io (Z、R,G、B)が求めら
れる(ステップ5)。
0式に基づいて、最初のスキャンラインy0での水平方
向の補正演算が行われ、最初のスキャンラインy0での
左端近傍の座標格子点の値H0゜(Z、R,G、B)が
求められる(ステップ6)。
スキャンラインy0でのスタート点の値H0゜(Z、R
,G、B)が求められたら、スキャンラインy0での水
平方向の変分DHo (Z、R,G、B)を加算しして
い(DDA演算が繰り返される(ステップ7)。
これにより、スタート点以降の座標格子点の値Ho1(
X、Z、R,G、B)、Hot (X、Z、R2O,B
)、・・・が順次求められる。
スキャンラインy0での座標格子点上の値H0゜(X、
 Z、 R,G、 B)、Hol (X、Z、R,G、
B)、)(ox (X、Z、R。
G、B)・・・が全て求められたら、0式に基づく左辺
での縦方向のDDA演算により、次のスキャンラインy
Iの左端の値HSI (X、Z、R,G、B)が求めら
れる(ステップ8)。また、0式に基づ(右辺での縦方
向のDDA演算により、次のスキャンラインy1での右
端の値HEI (X、Z、R,G、B)が求められる(
ステップ9)。
ステップ8及びステップ9で、スキャンラインyIの左
端の値HS+ (X、Z、R,G、B)と右端の値HE
(X、 Z、 R,G、 B)が求められたら、ステッ
プ5に戻り、0式に基づいて、次のスキャンラインyI
での水平方向の変分D)l、 (X、Z、R,G、B)
が求められる(ステップ5)。
ステップ6で、0式に基づいて、次のスキャンラインy
、での補正演算が行われ、次のスキャンラインy1での
座標格子上のスタート点の値H1゜(X、Z、R,G、
B)が求められる。そして、ステップ7で、0式に基づ
く水平方向のDDA演算を繰り返していくことにより、
スキャンラインyIでの座標格子上の値H+o(X、Z
、R,G、B) 、H++(X、Z、R,G。
B)・・・が順次求められる。
スキャンラインy、での座標格子上の値H1゜(X、Z
R,G、B) 、H++(X、Z、R,G、B) 、H
I2(X、Z、R,G、B)・・・が全て求められたら
、0式に基づく左辺での縦方向のDDA演算により、更
に次のスキャンラインy2での左端の値H3,(X、Z
、R,G、B)が求められ(ステップ8)、また、0式
に基づく右辺での縦方向のDDA演算により、更に次の
スキャンライフy、の右端の値HEz (X、 Z、 
R,G、 B)が求められる(ステップ9)。そして、
ステップ5に戻り、同様な処理が繰り返される。
c3.任意の多角形への拡張 この発明の一実施例では、曲面を近似して得られた多角
形に対して、左辺の頂点と右辺の頂点とが同じ水平ライ
ン上にあった場合のみ、左辺の頂点の値と右辺の頂点の
値とが同時に入力されるようにし、一方の頂点だけ入力
された時には、他方の頂点をナルとし、ナルの場合には
、前回のDDA演算を引き継ぐような処理が行なわれる
。これにより、台形の演算処理を任意の多角形に拡張で
きる。
例えば、第8図に示すような凸多角形が与えられたとす
る。入力された図形は、ひとまず台形と見做し、左辺か
右辺かを判断しながら、上から下に、左上の頂点をLS
、左下の頂点をLE、右上の頂点をR3、右下の頂点を
REとしながら値を入力していく。
ラインL1では、左上の頂点LSとして頂点AIの値が
入力され、左下の頂点LEとして頂点A3の値が入力さ
れる。右上の頂点R3として頂点A1の値が入力され、
右下の頂点REとして頂点A2の値が入力される。
ラインL2で右辺の頂点A2が見つかる。ラインL2で
、右上の頂点R3として頂点A2の値が入力され、右下
の頂点REとして頂点A5の値が入力される。頂点A2
と同一の水平線上には、左辺の頂点は無い。そこで、左
辺はナルとされる。
ラインL3で左辺の頂点A3が見つかる。ラインL3で
左上の頂点LSとして頂点A3の値が入力され、左下の
頂点LEとして頂点A4の値が入力される。頂点A3と
同一の水平線上には、右辺の頂点は無いので、右辺はナ
ルとされる。
ラインL4で左辺の頂点A4が見つがる。ラインL4で
は、左上の頂点LSとして頂点A4の値が人力され、左
下の頂点LEとして頂点A6の値が入力される。頂点A
4と同一の水平線上には、右辺の頂点は無いので、右辺
はナルとされる。
ラインL5で右辺の頂点A5が見つかる。ラインL5で
は、右上の頂点R3として頂点A5の値が入力され、右
下の頂点REとして頂点A8の値が入力される。頂点A
5と同一の水平線上には、左辺の頂点は無いので、左辺
はナルとされる。
ラインL6で左辺の頂点A6が見つかる。ラインL6で
は、左上の頂点LSとして頂点A6の値が入力され、左
下の頂点LEとして頂点A7の値が入力される。頂点A
6と同一の水平線上には、右辺の頂点は無いので、右辺
はナルとされる。
ラインL7で左辺の頂点A7が見つかる。ラインL7で
は、左上の頂点LSとして頂点A7の値が入力され、左
下の頂点LEとして頂点A8の値が入力される。頂点A
7と同一の水平線上には、右辺の頂点は無いので、右辺
はナルとされる。
このように、左辺の頂点と右辺の頂点とが同じ水平ライ
ン上にあった場合のみ、左辺の頂点の値と右辺の頂点の
値とが同時に入力されるようにし、一方の頂点だけ入力
された時には、他方の頂点をナルとし、ナルの場合には
、前回のDDA演算を引き継ぐような処理を行うと、メ
モリ数を増加することなく、台形の処理を任意の多角形
に拡張できる。
つまり、ラインL1〜L2では、頂点A1の値と頂点A
3の値とを用いて左辺縦方向の変分が求められるととも
に、左辺縦方向の補正演算が行われる。頂点A1の値と
頂点A2の値とを用いて右辺縦方向の変分が求められる
とともに、右辺縦方向の補正演算が行われる。そして、
各スキャンラインでの左端の値及び右端の値が求められ
、これから水平方向の変分が求められ、水平方向の補正
演算が行われ、スタート点の値が求められる。そして、
水平方向のDDA演算により、ラインL1〜L2でのス
キャンラインの座標格子点上のピクセルのイ直が求めら
れる。
ラインL2〜L3では、左辺では、前回までの左辺縦方
向の変分が引き継がれ、左辺縦方向のDDA演算により
、スキャンラインでの左端の値が求められる。右辺では
、頂点A2の値と頂点A5の値とを用いて右辺での変分
が求められるとともに、右辺の補正演算が行われ、スキ
ャンラインでの右端の値が求められる。これから水平方
向の変分が求められ、水平方向の補正演算が行われ、ス
タート点での値が求められる。そして、水平方向のDD
A演算により、ラインL2〜L3でのスキャンラインの
座標格子点上のピクセルの値が求められる。
以下同様にして、ラインL3〜L4では、左辺では、頂
点A3の値と頂点A4の値とを用いて左辺縦方向の変分
が求められ、右辺では、前回までの変分が引き継がれる
ラインL4〜L5では、左辺では、頂点A4と頂点A6
の値を用いて左辺縦方向の変分が求められ、右辺では、
前回までの変分が引き継がれる。
ラインL5〜L6では、左辺では、前回までの変分が引
き継がれ、右辺では、頂点A5と頂点A8の値を用いて
右辺縦方向の変分が求められる。
ラインL6〜L7では、左辺では、頂点A6と頂点A7
の値を用いて左辺縦方向の変分が求められ、右辺では、
前回までの変分が引き継がれる。
ラインL7〜L8では、左辺では、頂点A7と頂点へ8
の値を用いて左辺縦方向の変分が求められ、右辺では、
前回までの変分が引き継がれる。
任意の多角形を、このように処理していくと、頂点でだ
け演算処理が行われ、直線部分では演算処理が行われな
いので、図形の接続性が良好である。つまり、曲面を多
角形で近似した時に、第9図において、図形45と図形
46とが生じたとする。図形を所定の多角形で管理して
いこうとすると、図形46を図形46Aと図形46Bと
に分割しなければならなくなる。すると、図形46Aと
図形46Bと、図形45との接続部47に演算誤差によ
る隙間が生じる可能性がある。
上述のように任意の多角形を処理する場合には、各図形
の直線部分と直線との接続部に隙間が生じることはない
、なぜなら、頂点の無い部分は、ナルとされ、前回のD
DA演算を引き継ぐ処理をするからである。
c4.大きな演算誤差が発生する場合の処理曲面を近似
して得られた台形の縦方向の長さが1より小さくなる場
合がある。この場合、縦方向の変分を求める際、0に近
い数を除数として割算することになるので、割算器がオ
ーバーフローする可能性が高い。オーバーフローした値
で図形が表示されてしまうと、描画が乱れてしまう。
そこで、縦方向の長さがOに近い図形は無視してしまう
ことが考えられる。
ところが、縦方向の長さが0に近い図形を無視してしま
うと、図形の接続性の問題が生じる。
そこで、この発明の一実施例では、縦方向の長さが1よ
り小さい台形を処理する場合、辺の長さが長くなり、割
算器がオーバーフローする可能性が高い水平に近い辺で
は、この辺が始点を同じにする垂直な辺に置き換えられ
る。このようにすると、割算器がオーバーフローする可
能性が回避できるとともに、図形の接続性が良好である
つまり、第10図に示すように、縦方向の長さが1以下
の台形48Aが生じたとする。この図形は、座標格子点
上にあるので、この図形を表示しないと、図形の接続性
の問題が生じる。このような図形では、左上の頂点LS
Iと左下の頂点LE1とを結ぶ左辺での変分を求める際
に、左辺が水平に近く縦方向の長さに対して非常に長い
ので、割算器がオーバーフローする可能性がある。
そこで、第10図において、頂点LS’lとLElとを
結ぶ左辺が第11図に示すように始点LSIを同じにす
る垂直線(LSI〜LE2)に置き換えられ、台形48
Bとして処理される。水平に近い辺(LSI〜LEI)
が垂直な辺(LSI〜LE2)に置き換えられれば、辺
の長さが短(なるので、左辺の変分を求める際に、割算
器がオーバーフローすることはなくなる。
そして、この時、台形48Aと隣接していた図形49A
の右辺についても、第11図に示すように、水平に近い
右辺R33〜RE3が始点R33を同じにする垂直な辺
(R33〜RE4)で置き換えられ、台形49Bとして
処理される。
台形48Bの左辺(LSI〜LE2)と、台形49Bの
右辺(R33〜RE4)とを結ぶ右辺とは一致するので
、図形の接続性の問題が生じない。
d、シェーディング装置 dl、シェーディング装置の構成 第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に
左下の頂点の値LE(X、Y、Z、R,G、B)が入力
される。
入力端子13に右上の頂点の値R3(X、Y、Z、R,
G、B)が入力され、入力端子14に右下の頂点の値R
E(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に供給されるとともに、右辺補正演算機能付きD
DA演算回路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で、0式に基づいて、左辺縦方向の変分が求
められる。この左辺縦方向の変分が左辺補正演算機能付
き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で、0式に基づいて、右辺縦方向の変分が求
められる。この右辺縦方向の変分が右辺補正演算機能付
きDDA演算回路21にセットされる。
左辺縦方向の変分が左辺補正演算機能付きDDA演算回
路20にセットされ、右辺縦方向の変分が右辺補正演算
機能付きDDA演算回路21にセットされたら、左辺補
正演算機能付きDDA演算回路20及び右辺補正演算機
能付きDDA演算回路21で、左辺縦方向及び右辺縦方
向の補正演算がそれぞれ行われる。
これにより、スキャンラインの左端及び右端の値が求め
られる。
このスキャンラインの左端及び右端の値が減算器22に
供給される。減算器22で、スキャンラインの右端の値
とスキャンラインの左端の値とが減算される。
左辺補正演算機能付きDDA演算回路20及び右辺補正
演算機能付きDDA演算回路21で、左辺縦方向及び右
辺縦方向の補正演算が終了されると、マルチプレクサ1
8がb側に切り換えられる。
したがって、減算器22で求められたスキャンラインの
右端の値とスキャンラインの左端の値との減算値がマル
チプレクサ18を介して割算器19に供給される。
割算器19で、0式に基づいて、水平方向の変分が求め
られる。この水平方向の変分が水平補正演算機能付きD
DA演算回路23に供給される。
水平補正演算機能付きDDA演算回路23で、水平方向
の補正演算が行われ、スキャンラインのスタート点の座
標格子点上の値が求められる。水平補正演算機能付きD
DA演算回路23で、このスタート点での値に対してD
DA演算が繰り返され、スキャンライン上の座標格子点
上の値が順次水められる。この値が出力端子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値を求めるのに、2i回のDDA演算が繰り返
される。したがって、1回のDDA演算での誤差をεと
すると、誤差の最大値は、2″ εとなる。この時の深
さ値Zの誤差を±1以下にするためには、DDA演算演
算1九当の誤差を(ε<1/2’)としなければならな
い。すなわち、深さ値Zには、(1/2″)の精度が必
要であり、深さ値Zの小数部分のビット数ZFBは少な
くともnビット必要である。
このことから、深さ値Zの小数部分のビット数ZFBと
水平値X及び垂直値Yのデバイス座標の最大値との関係
−は、 ZFB=Max(XD、YD) XD:水平値Xのデバイス座標の最大値(整数部分のビ
ット数) YD:水平値Yのデバイス座標の最大値(整数部分のビ
ット数) とされる。
次に深さ値Zの最大値と水平値X及び垂直値Yの小数部
分のビット数との関係について考察する。
0式、0式及び■弐で示したように、補正演算を行う際
に、垂直値Yの小数部分(LS (Y)4nt(LS(
Y)))  (R’S (Y)−Int(RS(Y))
)及び水平値Xの小数部分(HSj(X)−1nt()
Is(X)))と、深さ値Zの変分(DL(Z))、(
DR(Z))及び(DFI、(2))との乗算が行われ
る。この時、求められる誤差を±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、並列処理状態遷移回路 el、基本回路の説明 第7図に示すハードウェアは、第17図に示すような並
列処理状態遷移回路により制御される。
この並列処理状態遷移回路は、ウェイト回路、ジャンプ
回路、ジョイン回路、デイレイ回路の4種類の基本回路
からなっている。これらの基本回路について説明する。
・ウェイト回路 ウェイト回路は、二つの入力A、Bを持ち、六入カバホ
ス後に、B入力パルスが入るまで出力パルスを止めてお
く機能を持つ。このウェイト回路は、ある処理を開始さ
せるためのトリガーパルスが出力された際、そのトリガ
ーパルスに対する処理が終了するまで、次の処理に進ま
ないように制御するのに用いられる。
・ウェイト回路の構成 ウェイト回路は、第12図に示すように構成でいきる。
第12図において、51及び52が入力端子である。入
力端子51から−のトリガーパルスT1がフリップフロ
ップ53に供給されるとともに、NORゲート54の一
方の入力端に供給される。入力端子52からのトリガー
パルスT2がフリップフロップ55に供給される。フリ
ップフロップ53及び55のクロック入力端には、クロ
ックCLKが供給される。フリップフロップ53及び5
5は、D入力端にトリガーパルスが与えられると、クロ
ックCLKの立ち上がりでセットされ、その出力がハイ
レベルになる。そして、そのリセット端子にローレベル
のリセット信号が与えられるまで、出力がハイレベルに
維持される。
56がリセット入力端子である。リセット入力端子56
からのリセット信号R3TがORゲート57の一方の入
力端に供給される。ORゲート57の出力がNORゲー
ト54の他方の入力端に供給されるとともに、インバー
タ58に供給される。
NORゲート54の出力がフリップフロップ55のリセ
ット端子に供給される。インバータ58の出力がフリッ
プフロップ53のリセット端子に供給されるとともに、
NANDゲート59の入力端に供給される。
フリップフロップ53の出力がNANDゲート59の入
力端に供給される。フリップフロップ55の出力がNA
NDゲート59の入力端に供給される。
NANDゲート59の出力がDフリップフロップ60の
入力端に供給される。Dフリップフロップ60のクロッ
ク入力端には、クロックCLKが供給される。Dフリッ
プフロップ60の出力がインバータ61を介して出力端
子62から出力される。また、Dフリップフロップ60
の反転出力がORゲート57の他方の入力端に供給され
る。
リセット入力端子56にハイレベルのリセット信号R3
Tが与えられると、ORゲート57の出力がハイレベル
になり、インバータ58の出力がローレベルになるとと
もに、NORゲート54の出力がローレベルになる。こ
れにより、フリップフロップ53がリセットされるとと
もに、フリ・ノブフロップ55がリセットされる。
また、インバータ58の出力がローレベルになると、N
ANDゲート59の出力がハイレベルになり、Dフリッ
プフロップ60の出力がハイレベルに維持される。した
がって、Dフリップフロップ60の出力をインバータ6
1で反転して得られる出力はローレベルになる。
第13図Bに示すように、時点t1で入力端子51にト
リガーパルスT、が供給されるとする。
すると、第13図りに示すように、クロックCLK(第
13図A)の立ち上がりの時点t2でこのトリガーパル
スT、がフリップフロップ53に取り込まれ、フリップ
フロップ53の出力Q、がハイレベルになる。
次に、時点t、で入力端子52にトリガーパルスT+が
供給されるとする。すると、第13図已に示すように、
クロックCLK (第13図A)の立ち上がりの時点t
4で、このトリガーパルスT2がフリップフロップ55
に取り込まれ、フリップフロップ55の出力Q2がハイ
レベルになる。
この時、第13図りに示すように、フリップフロップ5
3の出力はハイレベルである。また、すセット時にDフ
リップフロップ60にハイレベルが取り込まれるので、
Dフリップフロップ60の反転出力がローレベルであり
、ORゲート57の出力がローレベルであり、インバー
タ58の出力はハイレベルである。したがって、トリガ
ーパルスTzが与えられ、フリップフロップ55の出力
Q2がハイレベルになると、NANDゲート59の出力
がローレベルになる。
NANDゲート59の出力がローレベルになると、クロ
ックCLKの立ち上がりの時点t、で、Dフリップフロ
ップ60の出力がローレベルになり、第13図Fに示す
ように、出力端子62の出力Pがハイレベルになる。
Dフリップフロップ60の出力がローレベルになると、
Dフリップフロップ60の反転出力がハイレベルになり
、ORゲート57の出力がハイレベルになる。
ORゲート57の出力がハイレベルになると、インバー
タ58の出力がローレベルになるとともに、NORゲー
ト54の出力がローレベルになる。
これにより、第13図りに示すように、フリップフロッ
プ53及び55がリセットされる。
そして、フリップフロップ53の出力及びフリップフロ
ップ55の出力がローレベルになり、インバータ5日の
出力がローレベルになるので、NANDゲート59の出
力がハイレベルになる。NANDゲート59の出力がハ
イレベルになると、クロックCLKの立ち上がる時点t
6で、Dフリップフロップ60の出力がハイレベルにな
る。したがって、時点t、で、出力パルスPはローレベ
ルになる。
第13図Fに示すように、このようなウェイト回路では
、トリガーパルスTI  (第13図B) が供給され
てから、トリガーパルスT2(第13図C)が供給され
た後に、出力端子62からパルスPが出力される。
・ジャンプ回路 ジャンプ回路は、二つの入力A、Sを持ち、S入力のレ
ベルにより、A入力パルスを二つの出力01或いは02
のどちらに出力するかを選択する機能を持つ。このJU
MP回路は、外部の状態に応じて、制御を変えたい場合
に通用される。
・ジャンプ回路の構成 ジャンプ回路は、第14図に示すようにして構成される
。第14図において、入力端子71にトリガーパルスT
11が供給される。このトリガ−パルスT、がANDゲ
ート73の一方の入力端に供給されるとともに、AND
ゲート74の一方の入力端に供給される。
入力端子72に選択パルスSl+が供給される。
この選択パルスSllがANDゲート73の他方の入力
端に供給されるとともに、インバータ75を介してAN
Dゲート74の他方の入力端に供給される。ANDゲー
ト73の出力が出力端子76から出力される。ANDゲ
ート74の出力が出力端子77から出力される。
入力端子72からの選択パルスS I+がハイレベルの
間に、入力端子71からトリガーパルスT目が供給され
ると、ANDゲート73を介して、出力端子76からト
リガーパルスTl+が出力される。
入力端子72からの選択パルス311がローレベルの間
に、入力端子71からトリガーパルスTl+が供給され
ると、ANDゲート74を介して、出力端子77からト
リガーパルスTl+が出力される。
・ジョイン回路 ジョイン回路は、二つの入力11及びI2を持ち、11
又はI2にパルスが入ったら、パルスを出力する機能を
持つ。このジョイン回路は、別々の制御系からの信号を
ひとつの制御系に集める場合に適用される。
・ジョイン回路の構成 ジョイン回路は、第15図に示すようにして構成できる
。第15図において、入力端子81にトリガーパルスT
RIが供給される。入力端子81からのトリガーパルス
721がORゲート83の一方の入力端に供給される。
入力端子82にトリガーパルスT22が供給される。入
力端子82からのトリガーパルスT2□がORゲート8
3の他方の入力端に供給される。ORゲート83の出力
が出力端子84から出力される。
入力端子81にトリガーパルスTRIが供給される時に
は、ORゲート83を介して、このトリガーパルスT2
1が出力端子84から出力される。
入力端子82にトリガーパルスT2□が供給される時に
は、ORゲート83を介して、このトリガーパルスT2
□が出力端子84から出力される。
・デイレイ回路 デイレイ回路は、入力を一定時間遅らせる機能を持つ。
このデイレイ回路は、トリガーパルスから常に一定の遅
れ時間後、処理が終了するような制御に適用される。
・デイレイ回路の構成 デイレイ回路は、第16図に示すようにして構成される
。第16図において、入力端子91にトリガーパルスT
31が供給される。この入力端子91からのトリガーパ
ルスT31がフリブフロップ92に供給される。フリプ
フロップ92の出力が出力端子93から出力される。
入力端子91にトリガーパルスT31は、フリップフロ
ップ92を介して遅延されて、出力端子93から出力さ
れる。
e2. シェーディング処理のための並列処理状態遷移
回路 第17図は、第7図に示したハードウェアを制御するた
めの並列処理状態遷移回路の一例である。
この並列処理状態遷移回路には、上述の4つの基本回路
が用いられる。第17図と第7図とを参照しながら、こ
の発明の一実施例の演算処理制御について説明する。
第17図において、入力端子101に外部トリガーパル
スEXTRGが与えられる。この外部トリガーパルスE
XTRGは、並列処理状態遷移回路を構成する各基本回
路間を伝えられてい(。この時、各基本回路から、ハー
ドウェアの各部を制御するためのトリガー信号が出力さ
れていく。
すなわち、入力端子101からの外部トリガーパルスE
XTRGがデイレイ回路102に供給され、外部トリガ
ーパルスEXTRGがデイレイ回路102に供給されて
から所定時間経過後、デイレイ回路102からトリガー
信号が出力される。このトリガー信号がセレクト信号S
EL ABCとされる。セレクトSEL ABCにより
、第7図におけるマルチプレクサ15及び16がa側に
切り換えられ、マルチプレクサ18がa側に切り換えら
れる。そして、左下の頂点の値と左上の頂点の値が減算
器17で減算され、割算器19に設定される。
ジャンプ回路103のへ入力端には、デイレイ回路10
2からのトリガー信号が供給される。ジャンプ回路10
3のS入力端には、ナル判別信号Nullが供給される
。左辺に頂点があれば、(第8図参照)ジャンプ回路1
03の01出力端からトリガーパルスが出力される。こ
のトリガーパルスが割算トリガー信号DIV TRGと
される。この割算トリガー信号DIV TRGにより、
第7図における割算器19で割算が開始される。これに
より、左辺縦方向の変分が求められる。左辺に頂点が無
く、左辺の頂点がナルとされていたら、ジャンプ回路1
03の02出力端からトリガーパルスが出力され、この
トリガーパルスがデイレイ回路105に供給される。
ウェイト回路104のA入力端には、ジャンプ回路10
3の01出力端からのトリガーパルスが供給される。ウ
ェイト回路104のS入力端には、割算終了信号DIV
 ENDが供給される。割算器19で割算が終了され、
左辺縦方向の変分が求められると、割算器19から割算
終了信号DIV ENDが発生される。割算終了信号D
IV ENDが発生されると、ウェイト回路104から
トリガーパルスが出力される。このトリガーパルスがD
DAセット信号DDA SET Aとされる。このDD
Aセット信号DDA 5ETAにより、割算器19で求
められた左辺縦方向の変分が左辺補正演算機能付きDD
A演算回路20にセットされる。
ジョイン回路106のIt入力端には、ウェイト回路1
04から出力されるトリガーパルスが供給される。ジョ
イン回路106のI2入力端には、デイレイ回路105
から出力されるトリガーパルスが供給される。ジョイン
回路106のI1入力端にウェイト回路104からトリ
ガーパルスが与えられるか、又は、ジョイン回路106
のI2入力端にデイレイ回路105からトリガーパルス
が与えられると、ジョイン回路106からトリガーパル
スが出力される。このトリガーパルスがセレクト信号S
EL ABとされる。このセレクト信号5ELABによ
り、マルチプレクサ15及び16がb側に切り換えられ
、右下の頂点の値と右上の頂点の値が減算器17で減算
され、割算器19に設定される。
ジャンプ回路107のA入力端には、ジョイン回路10
6からのトリガー信号が供給される。ジャンプ回路10
3のS入力端には、ナル判別信号Nullが供給される
。右辺に頂点があれば、ジャンプ回路107の01出力
端からトリガーパルスが出力される。このトリガーパル
スが割算トリガー信号DIV TRGとされる。割算ト
リガー信号DIV TRGにより、割算器19で割算が
開始される。これにより、右辺縦方向の変分が求められ
る。右辺に頂点が無く、右辺の頂点がナルとされていた
ら、ジャンプ回路107の02出力端からトリガーパル
スが出力され、このトリガーパルスがデイレイ回路10
9に供給される。
ウェイト回路108のA入力端には、ジャンプ回路10
7の01出力端からのトリガーパルスが供給される。ウ
ェイト回路1070B入力端には、割算終了信号DIV
 ENDが供給される。割算器19で割算が終了され、
右辺縦方向の変分が求められると、割算器19から割算
終了信号DIV ENDが発生される。割算終了信号D
IV ENDが発生されると、ウェイト回路108から
トリガーパルスが出力される。このトリガーパルスがD
DAセット信号DDA SET Bとされる。このDD
Aセット信号DDA 5ETBにより、割算器19で求
められた右辺縦方向の変分が右辺補正演算機能付きDD
A演算回路21にセットされる。
ジョイン回路110の1.入力端には、ウェイト回路1
08から出力されるトリガーパルスが供給される。ジョ
イン回路110のI2入力端には、デイレイ回路109
から出力される・トリガーパルスが供給される。ジョイ
ン回路110の1.入力端にウェイト回路108からト
リガーパルスが与えられるか、又は、ジョイン回路11
0の12入力端にデイレイ回路109からトリガーパル
スが与えられると、ジョイン回路110からトリガーパ
ルスが出力される。このトリガーパルスがDDA補正演
算トリガー信号DDA TRG ABとされる。このD
DA補正演算トリガー信号DDA TRG ABにより
、左辺補正演算機能付きODA演算回路20及び右辺補
正演算機能付きDDA演算回路21がトリガーされ、左
辺補正演算及び右辺補正演算が開始される。この補正演
算により、スキャンラインの左端及び右端の値が求めら
れる。
ウェイト回路111のA入力端には、ジョイン回路11
0から出力されるトリガーパルスが供給される。ウェイ
ト回路111のS入力端には、補正演算終了信号AJS
T ENDが供給される。左辺補正演算機能付きDDA
演算回路20及び右辺補正演算機能付きDDA演算回路
21で左辺補正演算及び右辺補正演算が終了されると、
左辺補正演算機能付きDDA演算回路20及び右辺補正
演算機能付きDDA演算回路21から、補正演算終了信
号AJST ENDが発生される。補正演算終了信号^
JST ENDが発生されると、ウェイト回路111か
らトリガーパルスが出力される。
ジョイン回路112の11入力端には、ウェイト回路1
11から出力されるトリガーパルスが供給される。ジョ
イン回路112のI2入力端には、ウェイト回路117
から出力されるトリガーパルスが供給される。ジョイン
回路112の1.入力端にウェイト回路111からトリ
ガーパルスが与えられるか、又は、ジョイン回路112
のI2入力端にウェイト回路107からトリガーパルス
が与えられると、ジョイン回路112からトリガーパル
スが出力される。このトリガーパルスがセレクト信号S
EL Cとされる。このセレクト信号5ELCにより、
第7図におけるマルチプレクサ18がb側に切り換えら
れる。
マルチプレクサ18がb側に切り換えられると、減算器
22で求められた水平方向の変分が割算器19にセット
される。
デイレイ回路113には、ジョイン回路112から出力
されるトリガーパルスが供給される。デイレイ回路11
3で、このトリガーパルスが所定時間遅延され、所定時
間経過後、デイレイ回路113からトリガーパルスが出
力される。このトリガーパルスが割算トリガー信号DI
V TRGとされる。
この割算トリガー信号DIV TRGにより、割算器1
9で割算が開始される。
ウェイト回路114のへ入力端には、デイレイ回路11
3から出力されるトリガーパルスが供給される。ウェイ
ト回路114のB入力端には、割算終了信号DIV E
NDが供給される。割算器19で割算が終了され、水平
方向の変分が求められると、割算器19から割算終了信
号DIV ENDが発生される。割算終了信号DIV 
ENDが発生されると、ウェイト回路114からトリガ
ーパルスが出力される。
このトリガーパルスがDDAセット信号ODA 5ET
Hとされる。このDDAセット信号ODA SET H
により、割算器19で求められた水平方向の変分が水平
補正演算機能付きDDA演算回路23にセットされる。
デイレイ回路115には、ウェイト回路114から出力
されるトリガーパルスが供給される。デイレイ回路11
5で、このトリガーパルスが所定時間遅延され、所定時
間経過後、デイレイ回路115からトリガーパルスが出
力される。このトリガーパルスがDDA補正演算トリガ
ー信号DDA TRGHとされる。このDDA補正演算
トリガー信号DDA TRG Hにより、水平補正演算
機能付きDDA演算回路23がトリガーされ、水平補正
演算が開始される。このDDA補正演算により、スキャ
ンラインの左端の座標格子点の値が求められる。
ウェイト回路116のへ入力端には、デイレイ回路11
5から出力されるトリガーパルスが供給される。ウェイ
ト回路116のB入力端には、補正演算終了信号AJS
T ENDが供給される。水平補正演算機能付きDDA
演算回路23で水平補正演算が終了されると、水平補正
演算機能付きDDA演算回路23から、補正演算終了信
号AJST ENDが発生される。補正演算終了信号A
JST ENDが発生されると、ウェイト回路116か
らトリガーパルスが出力される。このトリガーパルスが
DDA演算トリガー信号DDA HINCとされる。こ
のDDA演算トリガー信号DDA HINCにより、水
平補正演算機能付きDDA演算回路23でDDA演算を
繰り返される。これにより、スキャンラインの各座標格
子点の値が求められる。
ウェイト回路117のA入力端には、ウェイト回路11
6から出力されるトリガー信号が供給される。ウェイト
回路117のB入力端には、ラインの終端を示す信号E
ND OF LINEが供給される。
ラインの終わりまで各座標格子点の値が求められると、
ラインの終端を示す信号END OF LINEが発生
される。そして、ラインの終端を示す信号ENDOF 
LINEが発生されると、ウェイト回路117からトリ
ガーパルスが出力される。このトリガーパルスがDDA
演算トリガー信号DDA AB INCとされる。この
トリガーパルスがDDA演算トリガー信号DDA AB
 INCにより、左辺補正演算機能付きDDA演算回路
20及び右辺補正演算機能付きDDA演算回路21でD
DA演算が行われ、次のスキャンラインの左端の値及び
右端の値が求められる。
ウェイト回路117からの出力パルスがジョイン回路1
12の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)

  1. 【特許請求の範囲】 曲面を複数の多角形で近似し、上記多角形の各頂点に値
    を入力し、上記多角形の各頂点に入力された値から、上
    記多角形内の値を線形補間により求めるようにしたシェ
    ーディングにおける演算回路であって、 加算器の出力をラッチ回路に供給し、上記ラッチ回路の
    出力を上記加算器に供給する加算ループを有し、 上記加算ループを用いて、上記変分を足し込んでいくD
    DA演算が行なえるとともに、初期位置での値と変分と
    を乗算する補正演算が行なえるようにしたシェーディン
    グにおける演算回路。
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 true JPH03192483A (ja) 1991-08-22
JP2814631B2 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
JP2814631B2 (ja) 1998-10-27

Similar Documents

Publication Publication Date Title
US5544294A (en) Method for generating a subpixel mask for computer graphics system and apparatus thereof
KR100278565B1 (ko) 그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서
JP3675488B2 (ja) 線形補間を用いて非同次2次遠近テクスチャマッピング座標を決定する回路
US6377265B1 (en) Digital differential analyzer
US4951230A (en) Method and apparatus for tiling an image
US5036316A (en) Method and apparatus for high speed linear shading in a raster graphics system
US5418901A (en) Shading method and shading apparatus for computer graphics
JPH01124077A (ja) 画素生成方法及びシステム
US5179647A (en) Method and apparatus for implementing adaptive forward differencing using integer arithmetic
JPS62219182A (ja) グラフイツクス表示システム用の表示プロセツサ
JPH03192483A (ja) シェーディングにおける演算回路
JP2770513B2 (ja) シェーディング方法及びシェーディング装置
KR970004120B1 (ko) 3차원도형처리장치
JPH03192480A (ja) シェーディング方法
EP0600204A2 (en) Method and apparatus for rendering primitives with multiple processors
JP2770514B2 (ja) シェーディング装置
JPH03192482A (ja) シェーディング方法
JPS6266383A (ja) 基準画像信号から中間画像信号を発生する方法及び装置
KR970004107B1 (ko) 파라미터곡선발생기
JPH02129769A (ja) スキヤン変換装置
JP2611098B2 (ja) ベクタ・ラスタ変換方式
JP2787487B2 (ja) コンピュータシステムに表示され且つ操作される線分の位置を決定する回路
JPH02159683A (ja) 補間方法
DeRose Technical Report 87-08-07 August 1987
JPH01288977A (ja) 画像表示装置

Legal Events

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