JPH10116358A - スペキュラ・ライティングを計算する装置と方法 - Google Patents

スペキュラ・ライティングを計算する装置と方法

Info

Publication number
JPH10116358A
JPH10116358A JP21142597A JP21142597A JPH10116358A JP H10116358 A JPH10116358 A JP H10116358A JP 21142597 A JP21142597 A JP 21142597A JP 21142597 A JP21142597 A JP 21142597A JP H10116358 A JPH10116358 A JP H10116358A
Authority
JP
Japan
Prior art keywords
value
log
product
look
index
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.)
Pending
Application number
JP21142597A
Other languages
English (en)
Inventor
Jack R Mckeown
ジャック・アール・マッコーウン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10116358A publication Critical patent/JPH10116358A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【課題】 フォング・シェーディングモデルによる光に
さらされる表示オブジェクトの鏡面反射色成分の高速計
算を実現する。 【解決手段】 表示オブジェクト上の表面位置につい
て、D=<Ve,Vr> の浮動小数点データを得る。ただ
し、Ve はオブジェクトから眼点への単位ベクトルであ
り、Vr はオブジェクトからの反射単位ベクトルであ
る。次に、乗算器及び加算器を用いてDのベクトルドッ
ト積を得る。このドット積に定数を掛けて、log2(D)
の事前記憶値が書き込まれた第1のルックアップテーブ
ルに対するインデックスを生成する。次に、log2(D)
の値にOeを掛けてOe*log2D を表す指数及び小数フィ
ールドビットを得る。次に、この値をCs′に加えてCs
を得る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、広義には、鏡面反
射照明にさらされる3次元オブジェクトの図的表示に関
し、より詳しくは、そのような表示で使用する鏡面反射
カラー照明データを計算するための装置及び方法に関す
る。
【0002】
【従来の技術】最新の3次元コンピュータグラフィック
スは、様々なグラフィック表現を用いて3次元オブジェ
クトを表現するのに幾何学を大いに利用する。コンピュ
ータグラフィックスは、コンピュータ援用設計(“CA
D”)プログラムのようなアプリケーションに特に広範
な用途がある。表示しようとするオブジェクトの複雑で
滑らかな表面は、高水準の抽象法を用いて表現すること
ができる。詳細な表面ジオメトリはテクスチャマップを
用いてレンダリングすることができるが、より大きなリ
アル感を得るためには、通常トライアングルの形のむき
だしのジオメトリが必要である。それらのトライアング
ルの位置、色、及び法線成分は通常浮動小数点数として
表される。
【0003】図1は、たとえばサン・マイクロシステム
ズ(Sun Microsystems,Inc.)の
SPARCワークステーションのような、コンピュータ
またはワークステーションと共にユーザ生成画像を表示
するために使用されるような一般的なビデオシステムの
ブロック図で、システム全体を記号10で示す。このシ
ステムは、とりわけ、たとえば描画プログラムを用い
て、上記のような画像をマウス、トラックボールまたは
その他のユーザ入力装置20で生成し、ビデオモニタ3
0に表示することができる。以下に説明する本発明との
関連で言うと、表示されるオブジェクト40は、通常、
その表現に光と陰影の効果が含まれる3次元面を有す
る。たとえば、オブジェクト表面上の1つ以上のハイラ
イト領域50があると、オブジェクトのよりリアルな表
現に効果がある。
【0004】入力装置20からの入力データは、通常、
装置バス60に接続され、装置バス60からビデオシス
テム70へ接続されると共に、コンピュータシステム入
出力インタフェース装置80、及びコンピュータシステ
ムメモリコントローラ装置90へ接続される。装置80
及び90は、通常、システムバス100へ接続され、シ
ステムバス100はシステムの中央処理装置(“CP
U”)110、及びコンピュータシステムの固定記憶装
置120に接続されている。多くのタスクの中でも、C
PU110は、とりわけ、モニタ30に表示されるオブ
ジェクトの3次元面を表すトライアングルデータの処理
を行うことができる。
【0005】CPU処理されたビデオ情報は、システム
バス100、メモリコントローラ90、装置バス60を
介してビデオシステム70へ転送される。ビデオシステ
ム70は、通常、グラフィックスアクセラレータ装置1
30、ビデオフレームバッファ・ランダムアクセスメモ
リ(“RAM”)装置140及びビデオ制御装置150
を有する。ビデオシステム70からの処理済みビデオデ
ータは、画像40のような画像を表示するモニタ30に
供給される。
【0006】3次元オブジェクトのコンピュータ表示画
像40のリアル感は、オブジェクトの表面に注ぐ入射光
から生じる陰影50の効果をうまくシミュレートできる
かどうかに左右される。このようなシミュレーションに
は、オブジェクトの表面上の様々な位置に表示しようと
する輝度及び色を計算するために、シェーディングモデ
ルがしばしば用いられる。このシェーディングモデル
は、せいぜい現実の世界で上記のような表面に注ぐ光の
挙動を近似化するだけである。実際、シェーディングモ
デルを実装して使うことは、シミュレーションの正確さ
とシミュレーションを得るための計算コストとの妥協を
図ることである。いずれにしても、モデルは、近似化に
よって観察者の正常な人間の視覚系内での知覚が乱され
るようなことは避けなければならない。たとえば、陰影
の不連続性によって生じるいわゆるマッハバンドや、不
適切にサンプリングされた面エッジに生じるぎざぎざ段
は出ないようにしなければならない。
【0007】シェーディングモデルの二大要素は、オブ
ジェクト表面の特性と、その面に注ぐ照明の特性であ
る。主な表面特性は、その反射率、すなわち入射光がど
れだけ反射されるかの尺度である。ある表面が、異なる
波長の光に対して異なる反射率を持つならば、その表面
は着色されているように見える。また、その表面がテク
スチャ状であったり、彩色模様を持つ場合は、反射率は
表面上の位置によって変わる。もう一つの表面特性は、
表面が裏側から、あるいは内部から光を通すことができ
る性質、すなわち透明性である。
【0008】表面の位置における輝度を測定する際には
照明も重要である。照明は、周辺光であったり、散光
(すなわち全方向から一様に注ぐ)であったり、あるい
はオブジェクト表面にハイライトや鏡面反射を生じさせ
る点光源が設けられる場合もある。最後に、オブジェク
トの照明は、物陰となって一部遮られることもある。
【0009】オブジェクトが入射照明光にさらされる
と、オブジェクト表面上のハイライトは鏡面反射から生
じるのに対し、オブジェクトの残りの部分から反射され
る光は周辺光または乱反射ないしは拡散反射より生じ
る。そのハイライト領域は入射光の色を有するのに対
し、オブジェクトの残りの部分は、オブジェクトの表面
色(たとえば、オブジェクトがリンゴならば赤)を呈す
る。観察者が頭を動かすと、表面、特に光っている面が
異なる方向に不均等に光を反射するので、ハイライトの
領域も移動する。
【0010】シェーディングモデルは、オブジェクト表
面上のある点における陰影を、拡散照明の影響、特定光
源の影響、及び透明性の効果を考慮したいくつかの属性
で表した形で決定する。
【0011】ここで、周辺反射光、拡散反射光、鏡面反
射光、及び平行光線を含む照明光成分の種々のモデル、
及びニュートン‐ラフソン(Newton−Raphs
on)照明モデル及びフォング(Phong)照明モデ
ルを図2によって簡単に説明する。図2において、現実
のオブジェクト200(たとえば実物のリンゴ)は光源
220からの光にさらされる外面210を有し、観察者
230によって観察される面210は複数のトライアン
グルとして描かれている。
【0012】観察者230に見える光の一つの成分は周
辺反射であり、これはオブジェクト200に一様な明る
さを加える。このように、周辺反射は、1つの光源方向
または位置からやって来るのではなく、一様な強さで全
方向からやって来る。周辺反射は次式で表すことができ
る。 Ca=Ka*Od*Lc 式中、Caは光源(たとえば光源220)からの周辺光
分であり、Kaはオブジェクト表面210の周辺反射係
数であり、Odはオブジェクト200の拡散色である。
【0013】観察者に見える光のもう一つの成分は、拡
散反射である。拡散反射波、全方向に散乱される指向性
光の作用を形に表したものである。従って、反射光の強
さは、入来光線の入射角、及び対象オブジェクトの反射
係数によって決まる。拡散反射は次式によって与えられ
る。 Cd=Kd*Od*Lc*La*<Vn,Vl> 式中、Cdは光源からの拡散成分であり、Kdは拡散反射
係数であり、Odはオブジェクトの拡散色であり、Lc
光源色であり、Laは減衰係数である。項<Vn,Vl>はベ
クトルVn(オブジェクト表面からの単位法線ベクト
ル)とVe(オブジェクト表面から光源への単位ベクト
ル)とのドット積である。もちろん、2つのベクトルの
ドット積は、下記のように、X軸、Y軸、Z軸のスカラ
ー積の和として表すことができる。 <Vn,Vl>=Vnx*Vlx+Vny*Vly+Vnz*Vlz
【0014】観察者に見える光のもう一つの成分は鏡面
反射光で、観察しているオブジェクトの輝いている表面
からのハイライトを形成する。これは、たとえば、図1
のオブジェクト40のハイライト50のように表され
る。鏡面反射は、反射角及びオブジェクトから見た観察
者の位置に比例する。たとえば、光っているリンゴのよ
うなハイライトで光っている面を見ているとき、観察位
置がオブジェクトに対して相対的に変われば、ハイライ
トも移動する。一般に、オブジェクト表面の輝きが強い
ほど、ハイライトは鮮明になる。
【0015】鏡面反射照明の効果を計算するための一つ
の従来技術の方法として、いわゆるニュートン‐ラフソ
ン法がある。この反復法は、f(tN+1)=f(tN)−
f(t)/df(t)で与えられる鏡面反射照明関数f
(tN )を計算するものである。残念なことには、ニュ
ートン‐ラフソン法による実際の計算はハードウェア集
約的で、f(tN )の計算が遅いことがあり、特に緩慢
収束系では遅くなる。このような緩慢収束系では、各計
算毎にCPUによる多数回の反復計算が必要になり得
る。その結果、計算が終了するまでに時間がかかること
から、表示画像40上のハイライトが「ジャーキ」した
り、あるいは非現実的に見えたりし、特に画像が動く際
にこの傾向が強く現れる。
【0016】鏡面反射照明の効果を計算するための従来
技術によるもう一つの方法として、鏡面反射Csを含む
いわゆるフォング・ブイ・ツォング(Phong Bu
i−Tuong)(「フォング」)シェーディングモデ
ルを用いる方法がある。このフォングモデルは、たとえ
ばリンゴのような不完全反射物体に対してしばしば用い
られる。
【0017】フォング・シェーディングモデルでは、鏡
面反射Cs は次式で与えられる。 Cs=Ks*Os*Lc*La*<Ve,Vr>Oe (1) 式中、Cs は光源からの鏡面反射分、Ksは鏡面反射係
数、Osはオブジェクトの鏡面反射色、Lc は光源色、
aは減衰係数である。前と同様に、<Ve,Vr>はオブジ
ェクトから観察者の眼点への単位ベクトルVe とオブジ
ェクトからの単位反射ベクトルVrとのドット積であ
る。べき項Oeは、ハイライトの鮮明度を具体的な形に
表現するスペクトルべき関数を表す。
【0018】減衰係数Laの関数は次式で与えられる。 La=1/[C1+C2norm(Op−Lp)] C1及びC2はユーザ定義定数であり、ベクトルOp はオ
ブジェクトの位置であり、ベクトルLp は光源の位置で
ある。
【0019】反射ベクトルVr は次式で表される。 Vr=2<Vn,Ve>Vn−Vl 式中、ベクトルVnは単位表面法線ベクトルであり、Ve
はオブジェクトから観察者の眼点方向の単位ベクトルで
あり、Vl はオブジェクトから光源方向の単位ベクトル
である。
【0020】完全なフォング照明モデルは、周辺反射C
a、拡散反射Cd、及び鏡面反射Csを合計したものであ
り、たとえば次式で表される。 C=Ca+Cd+Cs
【0021】フォングモデルの計算が最も難しい部分
は、鏡面反射成分Cs で、これを求めるにはドット積を
計算してから、一定のべき項Oe でべき乗する必要があ
る。このようにして計算したCs は、オブジェクト40
のよりリアルな表示を得るために、通常、グラフィック
スアクセラレータ130(図1参照)内のグラフィック
スレンダリング装置で用いられる。Cs の値を求めるこ
とは非常に計算集約的であるため、フォングモデルの適
用は、前記同様に、ニュートン‐ラフソン法の計算の特
徴である「ジャーキ」シミュレーション欠陥を生じるこ
とがある。
【0022】
【発明が解決しようとする課題】従って、フォング・シ
ェーディングモデルによって3次元オブジェクトのトラ
イアングルデータを含むデータをレンダリングする際に
鏡面反射照明成分Csを迅速に計算するための手段が必
要とされている。好ましくは、このような手段は安価に
製造することができ、既成の一般的な部品を用いて実施
可能であることが望ましい。
【0023】本発明の目的は、上記のような手段を提供
することにある。
【0024】
【課題を解決するための手段】本発明は、フォング・シ
ェーディングモデルの項を並べ替えて、色の鏡面反射成
分Csをより迅速に計算できるようにしたものである。
鏡面反射色成分Cs=(Ks*Os*Lc*La)*<Ve,Vr>Oe
=(Cs′)*<Ve,Vr>Oeであり、式中Ks は鏡面反射
係数、Osはオブジェクトの鏡面反射色、Lcは光源
色、Laは光の減衰係数、Veはオブジェクトから眼点へ
の単位ベクトル、Vrはオブジェクトからの反射単位ベ
クトル、Oeはオブジェクトのスペクトルべき指数、
s′は定数である。上式で、ベクトル量<Ve,Vr> を
そのドット積(D)で置き換えると、色の鏡面反射成分
sはCs=Cs′*DOeと書くことができ、その2を底と
する対数を取ると、次式が得られる。 log2(Cs)=log2s′+Oe* log2D 上式の2を底とする真数(antilog)を取ると、次式が
得られる。
【数13】 成分Oe、Cs′、及びDは下記の形の浮動小数点数であ
る。
【数14】 これは、sf2e と簡略に書くことができる。式中、s
は正または負の符号を示し、fは数の小数部を示し、e
は数の指数部を示す。Oe、Cs′、及びDは次の形式に
従って16ビットで表す。 [15: s][14:10 e][9: g][8:0 f] 式中、ビット15は±の符号を示すシングルビットであ
り、ビット14〜10は5ビットの指数フィールドであ
り、ビット9はシングルビット“0”または“1”の保
護(g)ビットであり、ビット8〜0は9ビットの小数
フィールド(f)である。
【0025】一般化されている好ましい16ビット積の
計算では、入力された数のs‐ビット(s1、s2)の
排他的論理和を取ることによって積符号(s3)を得
る。積の小数フィールド(f3)は、第1の変数の小数
フィールド(f1)と第2の変数の少数フィールド(f
2)とを好ましくは10ビット乗算器を用いて掛け算す
ることによって得られる。積の指数フィールド(e3)
は、第1の変数の指数フィールド(e1)と第2の変数
の指数フィールド(e2)とを好ましくは加算器を用い
て足し算することによって得られる。乗算器の出力及び
加算器の出力を正規化し、それらの正規化された値を排
他的論理和出力と共に用いて所望の浮動小数点積を得
る。s3、e3、f3の計算は、同時に行ってもよく、
また任意の順序で行うことができる。
【0026】log2Dの値は、第1のリードオンリーメモ
リ(“ROM”)のルックアップテーブル(“LU
T”)に事前記憶されている。このやり方で、モデル化
中のオブジェクトの表面上のいろいろな点について、lo
g2Dの値が、ハードウェアを用いて迅速かつ簡単に求め
られる。その後、この値に第2の乗算器を用いてOe
乗じられる。次に、このようにして求められた積を用い
て、Oe*log2Dの値の2を底とする真数が書き込まれた
第2のROM LUTへのポインタが計算される。この
第2のROM LUTの出力をCs′に加算して、モデル
化中のオブジェクトの表面上の点についてのCs が得ら
れる。このようにして、一般的な部品を用いてCs を迅
速に計算することが可能であり、その計算にはせいぜい
8計算サイクルしか要しない。
【0027】本発明のその他の特徴並びに長所について
は、添付図面を参照して行う以下の実施形態の詳細な説
明より明らかとなろう。
【0028】
【発明の実施の形態】図3は、本発明によるビデオシス
テム300を示し、図示のビデオシステムのグラフィッ
クスアクセラレータ装置310は、好ましくは、鏡面反
射係数成分Cs を計算するために使用されるハードウェ
ア320を具備したものである。図4はCs を迅速に計
算する本発明によるハードウェア320のブロック図で
ある。図4の右余白には、各種の演算が行われるCPU
のクロックサイクルが示してある。
【0029】ハードウェア320の動作は、以下の色の
鏡面反射成分Cs についての数学的説明によってよりよ
く理解できると思われる。前述したように、フォング・
シェーディングモデルによれば色の鏡面反射成分は次式
によって与えられる。 Cs=(Ks*Os*Lc*La)*<Ve,Vr>Oe (1) 式中、Ksは鏡面反射係数、Osはオブジェクトの鏡面反
射色、Lcは光源色、Laは減衰係数、Veは、オブジェ
クトから眼点への単位ベクトル、Vrはオブジェクトか
らの単位反射ベクトル、Oeはスペクトルべき関数であ
る。Ks、Os、Lc、La、及びOeの値は、一般に、モ
デル化中のオブジェクトの表面上の点によって異なる。
s、Os、Lc、La、及びOe は、通常、グラフィック
スアクセラレータ310(図4参照)に付随の浮動小数
点プロセッサ320内で得られる。これらの値を得る方
法の詳細については本願では説明しないが、本発明の関
連技術分野の当業者にとっては、その知見を得ることは
容易である。
【0030】積(Ks*Os*Lc*La)は定数Cs′で表す
ことができ、それによって上式(1)は次式のようにな
る。 Cs=Cs′<Ve,Vr>Oe (2)
【0031】式(2)は、ベクトル量<Ve,Vr>をVe
r とのドット積(D)で置き換えることによってさら
に簡単化することができる。しかしながら、2つのベク
トルのドット積は、次式のように、単にベクトル成分の
積の和によって表されるスカラー量に過ぎない。D=V
ex*Vrx+Vey*Vry+Vez*Vrz
【0032】従って、式(2)は次式のように書くこと
ができる。 Cs=Cs′*DO e (3) 上式(3)のlog2を取ると、次式が得られる。 log2(Cs)=log2(Cs′)+Oe*log2(D) (4)
【0033】上式(4)は、
【数15】 の 関係を使って式(3)から導くこともできる。式
(4)を底2のべきに上げる、すなわち式(4)の底2
の真数を取ると、次式が得られる。
【数16】 (5)
【0034】上記の関係は下記のようにして用いられ
る。モデル化中のオブジェクトの表面は複数の点Pで定
義することができる。そのような各点P毎に、対応する
s 、Os、Lc、La、Oe及びドット積Dが既知であ
る。言い換えると、それらの点Pについて、Cs′=Ks
*Os*Lc*Laの値及び Dの値が既知である。
【0035】実際には、Oe、Cs′、及びDは
【数17】 、あるいはより簡単にsf10e の形の浮動小数点数で
ある。ただし、sは正または負の符号を示し、fは小数
部を示し、eは指数部を示す。本願で使用する命名法に
関して言うと、s1がCs′ の符号のビット表現であ
り、s2がDの符号のビット表現であり、s3が積全体
のビット表現である。Cs′ については、小数フィール
ド及び指数フィールドはそれぞれf1、e1であり、D
については、これらのフィールドはそれぞれf2及びe
2である。従って、積はs3・f32e3として表すこと
ができる。
【0036】ディジタル計算においては、Oe、Cs′、
及びDについての値を計算するために利用可能な2進ビ
ット数がコンピュータシステムの必要によって制約され
ることがある。たとえば、この実施形態の場合、システ
ムアーキテクチャ上の理由から16ビットという制限が
課される。その結果、Oe、Cs′、及びDは各々16ビ
ットを用いて下記の形式で表される。ただし、これ以外
のビット長及び形式を用いることも可能である。 [15: s][14:10 e][9: g][8:0 f]
【0037】上記の表現形式では、ビット15は正また
は負の符号を示すシングルビットである。ビット14〜
10は5ビットフィールドであり、ビット9はシングル
ビット“0”または“1”の保護(g)ビットである。
保護ビットは、小数ビットフィールドを指数ビットフィ
ールドと区別するのに役立つ。ビット8〜0は9ビット
の小数フィールドである。
【0038】次に図4において、CPU110は、モニ
タ30上に表示しようとするオブジェクト40の所与の
位置について、<Ve,Vr> の使用可能な浮動小数点表現
と共にOe及びCs′に関するデータを持ち、これによっ
て、前出の式(2)乃至(5)で示されているように、
s の計算を行うことができる。
【0039】好ましくは10ビット×10ビットの乗算
器330‐A、330‐B、330‐Cを用いて、それ
ぞれ積Vex*Vrx、Vey*Vry、及びVez*Vrz が計算さ
れる。後で説明するように、図5Aにこのような乗算器
の一般化した形の実施形態が示してある。図4におい
て、乗算器330‐Aと330‐Bの積出力は加算器3
40を用いて互いに加算され、加算器340の出力は加
算器350の入力に接続されている。乗算器330‐C
の積出力は、加算器350のもう一方の入力に接続され
ている。加算器350の出力はVex*Vrx+Vey*Vry
ez*Vrz 、すなわちDである。もちろん、上記のドッ
ト積が既にCPU110内部で計算済みであるか、CP
U110が利用できる形であらかじめ用意されているよ
うな場合は、Csを得るまでに必要な計算サイクルはよ
り少なくて済む。
【0040】Oe の値は既知であり、この段階では、D
も既知になっている。ブロック360の構成要素には、
定数、すなわち第1のルックアップテーブル(LUT
1)390の16ビットサイズが記憶され、これはこの
実施形態では512.0に設定されている。この定数
は、乗算器370の第1の入力として供給され、乗算器
370の第2の入力には加算器350からのD出力の値
が供給される。乗算器370は、上記定数にDを掛けた
浮動小数点積を出力する。この積は浮動小数点‐固定小
数点変換器380によって固定小数点形式に変換され
る。この実施形態においては、この変換は、左及び右シ
フトレジスタを用いて当業者に周知の方法で行われる。
従って、変換器380に関する詳細な説明は省略する。
変換器380の固定小数点出力は、第1のルックアップ
テーブル390へのポインタとして用いられ、ルックア
ップテーブル390は、好ましくは512×16ビット
のリードオンリーメモリ(“ROM”)で、log2(D)
の事前記憶値が書き込まれている。
【0041】LUT1はlog2(D)を乗算器400の入
力として出力し、乗算器400の第2の入力には値Oe
が供給される。乗算器400は指数ビットフィールド及
び小数フィールドビットを出力し、これらのフィールド
ビットは本願ではそれぞれe及びfで示され、Oe*log2
(D)を表す。指数フィールドビットは、この実施形態
では9桁位置だけ左シフトされることによって256倍
関数が実行されてから、小数フィールドビットと共にO
R論理装置430に入力される。その論理和出力は第2
のROMルックアップテーブル(LUT2)440の内
容に対するインデックスポインタとして用いられる。L
UT2はantilog2の値を事前記憶し、この実施形態では
5120×16ビットサイズである。
【0042】第2のルックアップテーブル(LUT2)
440の出力は
【数18】 で、加算器450の入力に供給され、加算器450のも
う一方の入力にはCs′が供給される。加算器450の
出力は
【数19】 、たとえばCsの所望の値である。
【0043】図5Aは、たとえば乗算器330‐Aを実
施するために使用することができる典型的な乗算器ユニ
ット330を示したものである。掛け算しようとする2
つの数V1、V2は、各々符号ビットS1、S2、指数フィ
ールドビットe1、e2、及び小数フィールドビット
1、f2によって特徴付けられる。これらの符号、指
数、及び小数フィールドビットは、好ましくはレジスタ
345‐1及び345‐2に保持される。排他的論理和
(EX‐OR)装置460で符号ビットS1、S2の排他
的論理和を取ることによって、積V1*V2の符号S3が得
られる。またこの積の指数フィールドビットe3は、加
算器470でe1、e2 ビットを加算し、その加算器出
力を正規化器ユニット490で正規化することによって
得られる。この積の小数フィールドビットf3は、f1
2 ビットを乗算器480で掛け算し、その積出力を正
規化器ユニット490で正規化することにより得られ
る。上記の積の符号、指数及び小数フィールドビット
は、以後の使用のためにレジスタ500に入れられる。
この実施形態では、積は16ビット長で浮動小数点形式
を有するワードである。当業者にとっては、乗算器ユニ
ットを他の形態で実施することが可能なことは理解でき
よう。
【0044】図5Bは、図4のユニット490のような
典型的な正規化器ユニットを示したものである。このよ
うな正規化器ユニットの動作は当業者にとっては説明な
しで理解できるので、正規化器ユニット490の動作の
詳細な説明は省略する。さらには値の正規化も別の方法
で行うことが可能である。
【0045】図6は、本発明によりCs を計算する際に
必要なステップを示したフローチャートである。ステッ
プ700で、CPU110より、表示しようとするオブ
ジェクトの表面上の点についての<Vn,Ve>=D の浮動
小数点形式の値が得られる。ステップ710で、D=V
nx*Vex+Vny*Vey+Vnz*Vez のドット積が求められ
る。前に図5Bに関連して説明したように、このドット
積の符号は、掛け算する数の符号ビットの排他的論理和
を取ることによって得られ、この積の指数フィールドビ
ットは成分値の指数フィールドビットを足し算し、その
和を正規化することによって得られ、また積の小数フィ
ールドビットは、成分値の小数フィールドビットを掛け
算し、その積を正規化することによって得られる。
【0046】ステップ720では、図4の変換器380
に関連して説明したようにして、LUT1のインデック
スが計算される。ステップ730では、ステップ720
で求まった固定小数点形式のポインタインデックスを用
いて、LUT1よりlog2Dの該当する値が取り出され
る。
【0047】ステップ740では、積Oe*log2Dが、C
PU110に供給されるOe の値を用い、また図4の乗
算器400に入力されるlog2Dの値を用いて計算され
る。ステップ750では、LUT2に対するインデック
スポインタが計算されて(図4のORゲート430参
照)、ステップ760でLUT2より該当値
【数20】 を得るために用いられる。ステップ770では、Cs
該当値が計算され、出力される。Csが計算されたなら
ば、加算によって値C=Ca+Cd+Csが容易に求めら
れる。
【0048】容易に理解できるように、使用可能な16
ビット(または他のビットサイズ)の使い方を割り振る
際には、設計上のトレードオフがある。この実施形態に
おいては、出願人は、コンピュータシミュレーションに
よって、本願で記載したように、5ビットの指数フィー
ルドビットと9ビットの小数フィールドビットを用いる
と妥当な結果が得られるという知見を得た。これに対し
て、4ビットの指数フィールドビットと10ビットの小
数フィールドビットを用いた場合は、あまり妥当な結果
は得られないということが判明した。出願人は、C言語
で書かれたシミュレータを用いて、e=5ビット、f=
9ビットフィールドを用いた本発明によるCs 計算とI
EEE標準による32ビット計算とを比較した。本発明
で使用したビット形式では、迅速にCs の値が得られ、
その分解能は、約0.002の許容差の範囲内でCs
IEEE方式の計算値に合致する十分なものであった。
【0049】要約すると、本発明によれば、容易に入手
可能な一般的なハードウェアコンポーネントを用いて、
迅速に実行可能なCs の値の解法が得られる。図4の右
余白に記されているように、本発明によれば、Cs をわ
ずか8CPUクロックサイクルで計算することができ
る。もちろん、Csが既知になれば、Ca+Cd+Cs=D
が容易に求められる。本発明によるCs の計算は、従来
技術のニュートン‐ラフソン反復法を用いた計算より十
分に速い。その結果、システム300は、従来技術で可
能なよりもリアルな表示オブジェクトのグラフィック表
現をレンダリングすることができる。たとえば、Cs
計算は、ハイライトを有する表示オブジェクトを過度に
急速に動かした場合に見られるジャーキを、ほぼ全面的
になくすことはできないまでも、最小限に抑えられるだ
け十分速く行われる。もちろん、システム300から得
られる適切にレンダリングされた画像は、たとえばビデ
オテープ、コンパクトディスク(“CD”)、光学記憶
装置等にしておいて、後で利用することも可能である。
【0050】本願で開示した本発明の実施形態について
は、特許請求の範囲の記載によって定まる本発明の主題
及び精神を逸脱することなく、種々の修正態様や変更態
様が可能なことは明らかであろう。
【図面の簡単な説明】
【図1】従来技術によってビデオ表示画像が陰影と共に
表示されるビデオシステムを示すブロック図である。
【図2】従来技術における入射光と鏡面反射光との間の
関係を示す模式図である。
【図3】本発明によってビデオ表示画像が陰影と共に表
示されるビデオシステムを示すブロック図である。
【図4】本発明により鏡面反射色成分Cs を計算するた
めに用いられるハードウェアの一実施形態を示すブロッ
ク図である。
【図5】図4のハードウェアで用いられる乗算器ユニッ
トの一実施形態を示すブロック図(A)と正規化器ユニ
ットのブロック図(B)である。
【図6】本発明において鏡面反射色成分Csを迅速に計
算するために使用されるステップを示すフローチャート
である。
【符号の説明】
300 ビデオシステム、310 グラフィックアクセ
ラレータ、320 ハードウエア
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A.

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 Cs′及びOeが既知であり、単位ベクト
    ル成分Vex、Vrx、Vey、Vry、Vez、及びVrz
    も既知で、該単位ベクトル成分のドット積を求めるとベ
    クトル量<Ve,Vr>=Dとなる鏡面反射色成分 【数1】 を計算する方法において:(a)前記Vex、Vrx、V
    y、Vry、Vez、及びVrzの値から値Dを計算する
    ステップと;(b)log2Dの事前記憶値が書き込まれた
    第1のルックアップテーブルを設けるステップと;
    (c)前記ステップ(a)で計算した前記Dの値を前記
    第1のルックアップテーブルに対するインデックスとし
    て用いて、該第1のルックアップテーブルから値log2
    を得るステップと;(d)前記Oeに前記ステップ)
    (c)で得られた前記値log2Dを掛けてOe*log2Dを求
    めるステップと;(e)antilog2の値が書き込まれた第
    2のルックアップテーブルを形成するステップと;
    (f)前記ステップ(d)で計算したOe*log2Dの値を
    前記第2のルックアップテーブルに対するインデックス
    として用いて、該第2のルックアップテーブルから値 【数2】 を得るステップと;(g)前記値Cs′を前記ステップ
    (f)で求めた前記値 【数3】 に加えて前記Csを得るステップと;を具備した方法。
  2. 【請求項2】 前記ステップ(a)が、VexにVrx
    掛けて第1の積を形成し、VeyにVryを掛けて第2の
    積を形成し、VezにVrzを掛けて第3の積を形成し、
    該第3の積を該第1の積と該第2の積との和と足し算す
    るステップを含む請求項1記載の方法。
  3. 【請求項3】 前記ステップ(a)が:(i)Vex
    びVrxに付随する符号ビットの排他的論理和を取って
    前記第1の積の符号を表す符号ビットを形成するステッ
    プと;(ii)前記Vex及び前記Vrxを表す指数フィー
    ルドビット同士を加算して前記第1の積を表すフィール
    ドビットを形成するステップと;(iii)前記Vex及び
    Vrxの小数フィールドビット同士を掛け算して前記第
    1の積を表す小数フィールドビットを形成するステップ
    と;を少なくとも含む請求項2記載の方法。
  4. 【請求項4】 前記ステップ(c)が:(i)フォール
    ト・トレラント・コンピュータ・システム中で障害のあ
    るモジュールの位置を突き止める機構を提供するi)前
    記ステップ(a)で求めた前記値Dに前記第1のルック
    アップテーブルの記憶容量を表す定数を掛けて中間積を
    形成するステップと;(ii)前記中間積を固定小数点形
    式に変換して前記インデックスを形成するステップと;
    を含む請求項1記載の方法。
  5. 【請求項5】 前記ステップ(f)が、前記Oe*log2
    の指数フィールドビットを表すビットを桁移動すること
    によって、前記ステップ(d)で求めた前記Oe*log2
    を表す小数フィールドビットの論理和を取るステップを
    含む請求項1記載の方法。
  6. 【請求項6】 前記ステップ(a)乃至(g)の実行が
    9計算サイクルより少ない計算サイクルで行われる請求
    項1記載の方法。
  7. 【請求項7】 Cs′、Oe及びD=<Ve,Vr>=単位
    ベクトル成分Vex、Vrx、Vey、Vry、Vez、及
    びVrz のドット積が既知である鏡面反射色成分 【数4】 を計算する方法において:(a)log2Dの事前記憶値が
    書き込まれた第1のルックアップテーブルを設けるステ
    ップと;(b)前記Dの所与の値を前記第1のルックア
    ップテーブルに対するインデックスとして用いて、該第
    1のルックアップテーブルから値log2Dを得るステップ
    と;(c)前記Oeに前記ステップ)(b)で得られた
    前記値log2Dを掛けてOe*log2Dを求めるステップと;
    (d)antilog2の値が書き込まれた第2のルックアップ
    テーブルを設けるステップと;(e)前記ステップ
    (c)で計算したOe*log2Dの値を前記第2のルックア
    ップテーブルに対するインデックスとして用いて、該第
    2のルックアップテーブルから値 【数5】 を得るステップと;(f)前記値Cs′を前記ステップ
    (e)で求めた前記値 【数6】 に加えて前記Csを得るステップと;を具備した方法。
  8. 【請求項8】 前記ステップ(b)が:(i)前記値D
    に前記第1のルックアップテーブルの記憶容量を表す定
    数を掛けて中間積を形成するステップと;(ii)前記中
    間積を固定小数点形式に変換して前記インデックスを形
    成するステップと;を含む請求項7記載の方法。
  9. 【請求項9】 前記ステップ(e)が、前記Oe*log2
    の指数フィールドビットを表すビットを桁移動すること
    によって、前記ステップ(c)で求めた前記Oe*log2
    を表す小数フィールドビットの論理和を取るステップを
    含む請求項7記載の方法。
  10. 【請求項10】 前記ステップ(a)乃至(f)の実行
    が9計算サイクルより少ない計算サイクルで行われる請
    求項7記載の方法。
  11. 【請求項11】 Cs′及びOeが既知であり、単位ベク
    トル成分Vex 、Vrx、Vey、Vry、Vez、及びV
    z も既知で、該単位ベクトル成分のドット積を求める
    とベクトル量<Ve,Vr>=Dとなる鏡面反射色成分 【数7】 を計算するためのシステムにおいて:前記Vex、V
    x、Vey、Vry、Vez、及びVrzの値から値Dを
    計算するようプログラムされた中央処理装置(CPU)
    システムと;前記Dの値を使用するように、かつ第1の
    ポインタインデックスを出力するよう接続された第1の
    インデックスポインタ機構と;log2Dの事前記憶値が書
    き込まれた第1のルックアップテーブルで、前記第1の
    ポインタインデックスがその中の該値を指示すると同時
    にその値log2Dを出力する第1のルックアップテーブル
    と;前記Oe に前記値log2Dを掛けて積Oe*log2Dを出
    力するよう接続された乗算器と;前記値Oe*log2Dを使
    用するよう、かつ第2のポインタインデックスを出力す
    るよう接続された第2のインデックスポインタ機構と;
    antilog2の値が書き込まれた第2のルックアップテーブ
    ルで、前記第2のポインタインデックスがその中の前記
    antilog2の値を指示すると同時に値 【数8】 を出力する第2のルックアップテーブルと;前記値
    s′を前記値 【数9】 に加えて前記Csを得るよう接続された加算器と;を具
    備したシステム。
  12. 【請求項12】 前記CPUシステムが:VexにVrx
    を掛けて第1の積を形成する第1の乗算器と;Vey
    Vryを掛けて第2の積を形成する第2の乗算器と;V
    zにVrzを掛けて第3の積を形成する第3の乗算器
    と;前記第3の積を該第1の積と該第2の積との和と足
    し算する加算器機構と;を具備する請求項11記載のシ
    ステム。
  13. 【請求項13】 少なくとも前記第1の乗算器が:Ve
    x及びVrxに付随する符号ビットの排他的論理和を取っ
    て前記第1の積の符号を表す符号ビットを形成するよう
    接続された排他的論理和装置と;前記Vex及び前記V
    xを表す指数フィールドビット同士を加算して前記第
    1の積を表すフィールドビットを形成するよう接続され
    た加算器と;前記Vex及びVrxの小数フィールドビッ
    ト同士を掛け算して前記第1の積を表す小数フィールド
    ビットを形成する小数フィールド乗算器と;を具備する
    請求項12記載のシステム。
  14. 【請求項14】 前記第1のインデックスポインタ機構
    が:前記値Dに前記第1のルックアップテーブルの記憶
    容量を表す定数を掛けて中間積を形成するよう接続され
    た乗算器と;前記中間積を固定小数点形式に変換して前
    記インデックスを形成する浮動小数点‐固定小数点形式
    変換器と;を具備する請求項11記載のシステム。
  15. 【請求項15】 前記第2のインデックスポインタ機構
    が:前記Oe*log2Dを表す指数フィールドビットを桁移
    動するよう接続されたビット位置シフタ装置と;前記O
    e*log2Dを表す小数フィールドビットと該Oe*log2Dを
    表す桁移動された前記指数フィールドビットとの論理和
    を取るよう、かつ前記第2のインデックスポインタを出
    力するよう接続されたORゲートと;を具備する請求項
    11記載のシステム。
  16. 【請求項16】 前記Csを前記CPUシステムの9計
    算サイクルより少ない計算サイクルで計算する請求項1
    1記載のシステム。
  17. 【請求項17】 16ビットワードを使用し、そのうち
    5ビットが指数フィールドを表すために使用され、9ビ
    ットが小数フィールドを表すために用いられる請求項1
    1記載のシステム。
  18. 【請求項18】 (i)前記第1のルックアップテーブ
    ルが512×16ビットの容量を有する;(ii)前記第
    2のルックアップテーブルが5120×16ビットの容
    量を有する;(iii)前記値Dが10×10ビット乗算器
    を用いて計算される;の3つの特徴からなる群から選択
    される少なくとも1つの特徴を有する請求項11記載の
    システム。
  19. 【請求項19】Cs′、Oe及びD=<Ve,Vr>=単位
    ベクトル成分Vex、Vrx、Vey、Vry、Vez、及
    びVrzのドット積が既知である鏡面反射色成分 【数10】 を計算するためのシステムにおいて:前記Dの値を使用
    するように、かつ第1のポインタインデックスを出力す
    るよう接続された第1のインデックスポインタ機構と;
    log2Dの事前記憶値が書き込まれた第1のルックアップ
    テーブルで、前記第1のポインタインデックスがその中
    の該値を指示すると同時にその値log2Dを出力する第1
    のルックアップテーブルと;前記Oe に前記値log2Dを
    掛けて積Oe*log2Dを出力するよう接続された乗算器
    と;前記値Oe*log2Dを使用するよう、かつ第2のポイ
    ンタインデックスを出力するよう接続された第2のイン
    デックスポインタ機構と;antilog2の値が書き込まれた
    第2のルックアップテーブルで、前記第2のポインタイ
    ンデックスがその中の前記antilog2の値を指示すると同
    時に値 【数11】 を出力する第2のルックアップテーブルと;前記値
    s′を前記値 【数12】 に加えて前記Csを得るよう接続された加算器と;を具
    備したシステム。
  20. 【請求項20】 前記Csを前記CPUシステムの5計
    算サイクルより少ない計算サイクルで計算する請求項1
    9記載のシステム。
JP21142597A 1996-07-01 1997-06-30 スペキュラ・ライティングを計算する装置と方法 Pending JPH10116358A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67304496A 1996-07-01 1996-07-01
US08/673044 1996-07-01

Publications (1)

Publication Number Publication Date
JPH10116358A true JPH10116358A (ja) 1998-05-06

Family

ID=24701096

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21142597A Pending JPH10116358A (ja) 1996-07-01 1997-06-30 スペキュラ・ライティングを計算する装置と方法

Country Status (2)

Country Link
EP (1) EP0817130A3 (ja)
JP (1) JPH10116358A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100824055B1 (ko) 2006-07-18 2008-04-21 엠텍비젼 주식회사 3차원 정반사 조명 처리 장치 및 방법
CN111766703A (zh) * 2020-07-14 2020-10-13 孝感华中精密仪器有限公司 一种基于像方扫描的摄录一体机光学系统的建模方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9904676D0 (en) * 1999-03-01 1999-04-21 Canon Kk Apparatus and method for performing data computations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100824055B1 (ko) 2006-07-18 2008-04-21 엠텍비젼 주식회사 3차원 정반사 조명 처리 장치 및 방법
CN111766703A (zh) * 2020-07-14 2020-10-13 孝感华中精密仪器有限公司 一种基于像方扫描的摄录一体机光学系统的建模方法

Also Published As

Publication number Publication date
EP0817130A3 (en) 1998-05-20
EP0817130A2 (en) 1998-01-07

Similar Documents

Publication Publication Date Title
US5369737A (en) Normalization of vectors associated with a display pixels of computer generated images
US6577312B2 (en) Graphics system configured to filter samples using a variable support filter
JP3478568B2 (ja) 画像データ処理方法及び装置
US8615542B2 (en) Multi-function floating point arithmetic pipeline
EP0933729A2 (en) Three-dimensional graphics accelerator
US6115047A (en) Method and apparatus for implementing efficient floating point Z-buffering
US6989843B2 (en) Graphics system with an improved filtering adder tree
JPH06215151A (ja) 画像データ処理方法及び装置
GB2187615A (en) Geometry processor for graphics display system
US6437781B1 (en) Computer graphics system having per pixel fog blending
JPH10116357A (ja) Zバッファプリミティブによるレンダリング方法およびzバッファ装置
JPH06203179A (ja) 画像データ処理方法及び装置
Stark et al. Barycentric parameterizations for isotropic BRDFs
US5912830A (en) System and method for conditionally calculating exponential values in a geometry accelerator
US6681237B1 (en) Exponentiation circuit for graphics adapter
JP4456070B2 (ja) 光反射強度計算回路
JPH10116358A (ja) スペキュラ・ライティングを計算する装置と方法
US6317126B1 (en) Method and device for associating a pixel with one of a plurality of regions in a logarithm or cosine space
JP3884809B2 (ja) ディジタルべき乗演算装置及びそれを用いたグラフィックスシステム
Szirmay-Kalos et al. Hardware implementation of Phong shading using spherical interpolation
Sabella et al. Toward fast color-shaded images of CAD/CAM geometry
JPH11328438A (ja) 高効率浮動小数点zバッファリングの方法および装置
Chen et al. A cost effective lighting processor for 3D graphics application
JPH06203177A (ja) 画像データ処理方法及び装置
CN116601662A (zh) 一种图形处理方法、装置、设备及介质