JP3087640B2 - グラフィックプロセッサ及びシステム - Google Patents
グラフィックプロセッサ及びシステムInfo
- Publication number
- JP3087640B2 JP3087640B2 JP08004517A JP451796A JP3087640B2 JP 3087640 B2 JP3087640 B2 JP 3087640B2 JP 08004517 A JP08004517 A JP 08004517A JP 451796 A JP451796 A JP 451796A JP 3087640 B2 JP3087640 B2 JP 3087640B2
- Authority
- JP
- Japan
- Prior art keywords
- light source
- data
- color
- calculation
- inner product
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、図形表示装置のシ
ェーディング処理(陰影処理,濃淡処理)において、複
数の光源により図形がどの様に見えるか図形の頂点,光
源,視点の位置,色,法線ベクトルなどの情報より頂点
の色を算出する光源計算(輝度計算,照光処理)の高速
化に関する。
ェーディング処理(陰影処理,濃淡処理)において、複
数の光源により図形がどの様に見えるか図形の頂点,光
源,視点の位置,色,法線ベクトルなどの情報より頂点
の色を算出する光源計算(輝度計算,照光処理)の高速
化に関する。
【0002】更に詳細にいえば、前記光源計算を行い色
を算出するグラフィックプロセッサ及び、それをグラフ
ィックシステムに関する。
を算出するグラフィックプロセッサ及び、それをグラフ
ィックシステムに関する。
【0003】
【従来の技術】図形表示装置(コンピュータ・グラフィ
ックス・システム)は、コンピュータの出力を図形とし
て表示するものである。
ックス・システム)は、コンピュータの出力を図形とし
て表示するものである。
【0004】従来の図形表示装置のシェーディング処理
における光源計算は、「OpenGL Programming Guide
(日本語版)(星雲社,1993,pp157−194)」に詳細が
記載されている。
における光源計算は、「OpenGL Programming Guide
(日本語版)(星雲社,1993,pp157−194)」に詳細が
記載されている。
【0005】図形表示装置は、図形の頂点の座標変換を
行い、図形の頂点,光源,視点の位置,色,法線ベクト
ルなどの情報より図形がどの様に見えるか光源計算を行
い頂点の色を算出するなどの幾何処理と、頂点の座標,
色などの情報から前記図形の内部の画素を内挿補間によ
り1画素ずつ展開して描画するレンダリング処理を行
い、ディスプレイに表示する内容をビットマップ形式で
保持するフレーム・メモリに書き込む。
行い、図形の頂点,光源,視点の位置,色,法線ベクト
ルなどの情報より図形がどの様に見えるか光源計算を行
い頂点の色を算出するなどの幾何処理と、頂点の座標,
色などの情報から前記図形の内部の画素を内挿補間によ
り1画素ずつ展開して描画するレンダリング処理を行
い、ディスプレイに表示する内容をビットマップ形式で
保持するフレーム・メモリに書き込む。
【0006】図形表示装置は、一般に、画素データを図
形の色データrgba(red,green,blue,alpha)で表現
し、前記幾何処理をfloat型で計算し、前記レンダリン
グ処理をshort int型で計算する。
形の色データrgba(red,green,blue,alpha)で表現
し、前記幾何処理をfloat型で計算し、前記レンダリン
グ処理をshort int型で計算する。
【0007】ここで、float型は32ビット浮動小数点
実数、int型は32ビット整数(以下、固定小数点実数
を含む)、short int型は8〜16ビット整数である。
実数、int型は32ビット整数(以下、固定小数点実数
を含む)、short int型は8〜16ビット整数である。
【0008】以下、説明を簡単にするために、short in
t型は16ビット整数とする。
t型は16ビット整数とする。
【0009】又、フレーム・メモリの画素データである
色データrgbaの各成分が各8ビット(=1バイト),合
計32ビットである図形表示装置について説明する。
色データrgbaの各成分が各8ビット(=1バイト),合
計32ビットである図形表示装置について説明する。
【0010】従来の光源計算は、数4の様な光源計算式
をハードウェア物量が多く低速なfloat 型で計算する。
をハードウェア物量が多く低速なfloat 型で計算する。
【0011】(rgb の各成分は数4により独立に計算
し、aの成分は何も計算しない。I.a=a)
し、aの成分は何も計算しない。I.a=a)
【0012】
【数4】
【0013】但し、光源数m,光源i(i=1〜m),
光源計算で算出した色I=(I.r,I.g,I.b,I.
a),材質の環境反射係数Ka=(Ka.r,Ka.g,
Ka.b),材質の拡散反射係数Kd=(Kd.r,K
d.g,Kd.b),材質の鏡面反射係数Ks=(Ks.
r,Ks.g,Ks.b),材質の放射反射係数Ke=
(Ke.r,Ke.g,Ke.b),材質の鏡面指数SM
(0.0≦SM≦128.0),全体の環境光源の各反射
光用の色Lcta=(Lcta.r,Lcta.g,Lcta.b),
光源の環境反射光用の色Lca.i=(Lca.r.i,Lca.
g.i,Lca.b.i),光源の拡散反射光用の色Lcd.i=(L
cd.r.i,Lcd.g.i,Lcd.b.i),光源の鏡面反射光用
の色Lcs.i=(Lcs.r.i,Lcs.g.i,Lcs.b.i),法
線ベクトルN=(Nx,Ny,Nz),光源方向ベクト
ルL.i=(Lx.i,Ly.i,Lz.i),ハーフウェ
イ・ベクトル(最大ハイライト方向ベクトル)H.i=
(Hx.i,Hy.i,Hz.i),H.i=(V+L.i)
/|V+L.i|,|V+L.i|は(V+L.i)の大きさ 視線方向ベクトルV=(Vx,Vy,Vz),但し、各
ベクトルの大きさは1とする。
光源計算で算出した色I=(I.r,I.g,I.b,I.
a),材質の環境反射係数Ka=(Ka.r,Ka.g,
Ka.b),材質の拡散反射係数Kd=(Kd.r,K
d.g,Kd.b),材質の鏡面反射係数Ks=(Ks.
r,Ks.g,Ks.b),材質の放射反射係数Ke=
(Ke.r,Ke.g,Ke.b),材質の鏡面指数SM
(0.0≦SM≦128.0),全体の環境光源の各反射
光用の色Lcta=(Lcta.r,Lcta.g,Lcta.b),
光源の環境反射光用の色Lca.i=(Lca.r.i,Lca.
g.i,Lca.b.i),光源の拡散反射光用の色Lcd.i=(L
cd.r.i,Lcd.g.i,Lcd.b.i),光源の鏡面反射光用
の色Lcs.i=(Lcs.r.i,Lcs.g.i,Lcs.b.i),法
線ベクトルN=(Nx,Ny,Nz),光源方向ベクト
ルL.i=(Lx.i,Ly.i,Lz.i),ハーフウェ
イ・ベクトル(最大ハイライト方向ベクトル)H.i=
(Hx.i,Hy.i,Hz.i),H.i=(V+L.i)
/|V+L.i|,|V+L.i|は(V+L.i)の大きさ 視線方向ベクトルV=(Vx,Vy,Vz),但し、各
ベクトルの大きさは1とする。
【0014】又、(N・L.i)≧0:(N・L.i)<0
の時、(N・L.i)=0とする。
の時、(N・L.i)=0とする。
【0015】(N・H.i)≧0:(N・H.i)<0の
時、(N・H.i)=0とする。
時、(N・H.i)=0とする。
【0016】又、(N・L.i)≦0の時も、(N・H.i)
=0とする。ここで、減衰係数At.i,スポット光源
効果Sp.iは以下である。
=0とする。ここで、減衰係数At.i,スポット光源
効果Sp.iは以下である。
【0017】 At.i=1 :平行光源の時 =1/(Kc+Kl×d+Kq×d^2):点光源,スポット光源の時 Kc,Kl,Kq:減衰定数 d:光源と頂点の距離 Sp.i=1 :平行光源,点光源の時 =(−SD.i・L.i)^SE.i:スポット光源の照射範囲内 (−SD.i・L.i)≧cos(SC.i) =0 :スポット光源の照射範囲外 (−SD.i・L.i)<cos(SC.i) スポット光源方向ベクトルSD.i=(SDx.i,SD
y.i,SDz.i) スポット光源指数SE.i,スポット光源のカットオフ
指数SC.i 図6に、前記各ベクトルなどの関係を示す。
y.i,SDz.i) スポット光源指数SE.i,スポット光源のカットオフ
指数SC.i 図6に、前記各ベクトルなどの関係を示す。
【0018】従来の光源計算は、前記の様な複雑な光源
計算式をハードウェア物量が多く低速なfloat 型で計算
する。このため、光源計算に膨大なfloat 型演算が必要
となり、従来の図形表示装置では、幾何処理を行う専用
プロセッサであるジオメトリ・プロセッサGPを用いて
ソフトウェアで光源計算を行ってきた。このため、光源
計算に多大な時間を要するという問題を有する。
計算式をハードウェア物量が多く低速なfloat 型で計算
する。このため、光源計算に膨大なfloat 型演算が必要
となり、従来の図形表示装置では、幾何処理を行う専用
プロセッサであるジオメトリ・プロセッサGPを用いて
ソフトウェアで光源計算を行ってきた。このため、光源
計算に多大な時間を要するという問題を有する。
【0019】
【発明が解決しようとする課題】前記の様に、フレーム
・メモリの色データrgbaの各成分は8ビットであるのに
対し、従来の光源計算ではハードウェア物量が多く低速
なfloat 型演算(32ビット)が膨大に必要であり、多
大な時間を要するという問題を有する。
・メモリの色データrgbaの各成分は8ビットであるのに
対し、従来の光源計算ではハードウェア物量が多く低速
なfloat 型演算(32ビット)が膨大に必要であり、多
大な時間を要するという問題を有する。
【0020】従って、本発明の目的は、シェーディング
処理における光源計算を著しく高速に計算することがで
きるグラフィックプロセッサ及びグラフィックシステム
を提供することにある。
処理における光源計算を著しく高速に計算することがで
きるグラフィックプロセッサ及びグラフィックシステム
を提供することにある。
【0021】
【課題を解決するための手段】本発明は、少なくとも3
次元図形の各頂点における法線方向と光源方向及び視線
方向の内積を算出し前記各頂点の色を求めるグラフィッ
クプロセッサにおいて、光源データを保持する光源テー
ブルと、前記光源テーブルに設定する光源データをfloa
t型(単精度浮動小数点実数型)からint型(整数型)へ変
換する変換部と、前記光源データに基づいて前記各頂点
における法線方向と光源方向及び視線方向の内積を算出
する内積算出部と、前記算出された内積に基づいて光源
計算を行い前記各頂点の色を算出する色算出部を設けた
ことに特徴がある。
次元図形の各頂点における法線方向と光源方向及び視線
方向の内積を算出し前記各頂点の色を求めるグラフィッ
クプロセッサにおいて、光源データを保持する光源テー
ブルと、前記光源テーブルに設定する光源データをfloa
t型(単精度浮動小数点実数型)からint型(整数型)へ変
換する変換部と、前記光源データに基づいて前記各頂点
における法線方向と光源方向及び視線方向の内積を算出
する内積算出部と、前記算出された内積に基づいて光源
計算を行い前記各頂点の色を算出する色算出部を設けた
ことに特徴がある。
【0022】上記構成により、光源計算をint 型演算に
て実行可能となり、シェーディング処理における光源計
算を高速に行え、図形の描画処理速度の高速化が図られ
る。更にまた本発明は、少なくとも3次元図形の各頂点
における法線方向と光源方向及び視線方向の内積を算出
し前記各頂点の色を求めるグラフィックプロセッサと、
フレームメモリと、前記求められた各頂点の色に基づい
て図形の内部の画素を内挿補間し前記フレームメモリに
書き込むレンダリングプロセッサと表示装置を備えたグ
ラフィックシステムにおいて、前記グラフィックプロセ
ッサは、光源データを保持する光源テーブルと、前記光
源テーブルに設定する光源データをfloat型(単精度浮
動小数点実数型)からint型(整数型)へ変換する変換部
と、前記光源データに基づいて前記各頂点における法線
方向と光源方向及び視線方向の内積を算出する内積算出
部と、前記算出された内積に基づいて光源計算を行い前
記各頂点の色を算出する色算出部を有することに特徴が
ある。
て実行可能となり、シェーディング処理における光源計
算を高速に行え、図形の描画処理速度の高速化が図られ
る。更にまた本発明は、少なくとも3次元図形の各頂点
における法線方向と光源方向及び視線方向の内積を算出
し前記各頂点の色を求めるグラフィックプロセッサと、
フレームメモリと、前記求められた各頂点の色に基づい
て図形の内部の画素を内挿補間し前記フレームメモリに
書き込むレンダリングプロセッサと表示装置を備えたグ
ラフィックシステムにおいて、前記グラフィックプロセ
ッサは、光源データを保持する光源テーブルと、前記光
源テーブルに設定する光源データをfloat型(単精度浮
動小数点実数型)からint型(整数型)へ変換する変換部
と、前記光源データに基づいて前記各頂点における法線
方向と光源方向及び視線方向の内積を算出する内積算出
部と、前記算出された内積に基づいて光源計算を行い前
記各頂点の色を算出する色算出部を有することに特徴が
ある。
【0023】上記構成とすることにより、シェーディン
グ処理における光源計算を高速に行え、図形の描画処理
速度の高速化が図られる。
グ処理における光源計算を高速に行え、図形の描画処理
速度の高速化が図られる。
【0024】また、本発明のグラフィックプロセッサ
は、光源テーブルに保持されたm個の光源データ各々に
光源計算中か否かを表わす光源計算中フラグを有し、光
源計算開始時、全ての光源データに対応する前記フラグ
をロックし、光源計算される毎に順次対応する前記フラ
グをアンロックする光源テーブル制御部を設ける構成と
することにより、光源テーブルに設定可能な光源データ
が少ない場合においても、光源計算が光源1個分終了す
る毎に、光源テーブルの前記フラグがアンロックされて
いる部分(光源計算が終了している部分)へ、直ちに新
たな光源データを設定することが可能となる。
は、光源テーブルに保持されたm個の光源データ各々に
光源計算中か否かを表わす光源計算中フラグを有し、光
源計算開始時、全ての光源データに対応する前記フラグ
をロックし、光源計算される毎に順次対応する前記フラ
グをアンロックする光源テーブル制御部を設ける構成と
することにより、光源テーブルに設定可能な光源データ
が少ない場合においても、光源計算が光源1個分終了す
る毎に、光源テーブルの前記フラグがアンロックされて
いる部分(光源計算が終了している部分)へ、直ちに新
たな光源データを設定することが可能となる。
【0025】
【発明の実施の形態】以下、実施例を添え付け図面によ
って詳細に説明する。
って詳細に説明する。
【0026】(実施例1)図1は、本発明の光源計算部
の一実施例を示す構成図である。
の一実施例を示す構成図である。
【0027】本発明のグラフィックプロセッサに搭載さ
れる光源計算部(180)は、光源計算に必要な光源デー
タを保持するレジスタである光源テーブル1(100)の
ロック、及び、アンロックを行う光源テーブル制御部
(110)と、ベクトルの内積を計算する内積算出部1−
1(120),内積算出部1−2(130)と、べき乗を算
出するべき乗算出部(150)と、前記算出結果と光源
テーブル1(100)の光源データより、m個の光源に
よる光源計算を行い頂点の色を算出する色算出部(16
0)(r,g,bの3組ある)と、算出した色を出力し
たら現在の途中結果の色を自動的にクリアするクリア部
(170)から構成される。
れる光源計算部(180)は、光源計算に必要な光源デー
タを保持するレジスタである光源テーブル1(100)の
ロック、及び、アンロックを行う光源テーブル制御部
(110)と、ベクトルの内積を計算する内積算出部1−
1(120),内積算出部1−2(130)と、べき乗を算
出するべき乗算出部(150)と、前記算出結果と光源
テーブル1(100)の光源データより、m個の光源に
よる光源計算を行い頂点の色を算出する色算出部(16
0)(r,g,bの3組ある)と、算出した色を出力し
たら現在の途中結果の色を自動的にクリアするクリア部
(170)から構成される。
【0028】以下、説明を簡単にするために、光源テー
ブル1(100)の各データがshortint型で、光源1〜
8のデータ(8組)を保持できる場合について説明す
る。
ブル1(100)の各データがshortint型で、光源1〜
8のデータ(8組)を保持できる場合について説明す
る。
【0029】まず、光源テーブル1(100)は、光源
計算で必要な下記の値を保持するレジスタであり、前記
詳細な構成図を図9に示す。尚、これらの値は、座標変
換などを行うジオメトリ・プロセッサGPにより光源テ
ーブル1(100)に設定される。又、光源テーブル1
(100)に設定された各値は、既に、float 型からsh
ort int型に変換されている。
計算で必要な下記の値を保持するレジスタであり、前記
詳細な構成図を図9に示す。尚、これらの値は、座標変
換などを行うジオメトリ・プロセッサGPにより光源テ
ーブル1(100)に設定される。又、光源テーブル1
(100)に設定された各値は、既に、float 型からsh
ort int型に変換されている。
【0030】光源テーブル1(100)は、法線ベクト
ル、材質の各反射係数など各光源で共通なデータである
共通データ1組と、光源方向ベクトル、光源の各反射光
用の色など光源i(i=1〜8)毎に独立なデータであ
る光源データiが8組ある。又、前記共通データと光源
データi毎に、光源計算部(180)が光源計算で使用
中か否かを示す光源計算中フラグがあり、光源テーブル
制御部(110)がロック、及び、アンロックを設定す
る。光源計算中フラグが、ロックの時、前記データは変
更不可であり、アンロックの時、前記データは変更可で
ある。
ル、材質の各反射係数など各光源で共通なデータである
共通データ1組と、光源方向ベクトル、光源の各反射光
用の色など光源i(i=1〜8)毎に独立なデータであ
る光源データiが8組ある。又、前記共通データと光源
データi毎に、光源計算部(180)が光源計算で使用
中か否かを示す光源計算中フラグがあり、光源テーブル
制御部(110)がロック、及び、アンロックを設定す
る。光源計算中フラグが、ロックの時、前記データは変
更不可であり、アンロックの時、前記データは変更可で
ある。
【0031】共通データとしては、法線ベクトルN=
(Nx,Ny,Nz),透明度a,放射反射光成分の色
と全体の環境反射光成分の色の和K=(K.r,K.g,
K.b),材質の鏡面指数SM,共通データの光源計算
中フラグLflagc,がある。
(Nx,Ny,Nz),透明度a,放射反射光成分の色
と全体の環境反射光成分の色の和K=(K.r,K.g,
K.b),材質の鏡面指数SM,共通データの光源計算
中フラグLflagc,がある。
【0032】又、光源データi(i=1〜8)として
は、光源方向ベクトルL.i=(Lx.i,Ly.i,L
z.i),ハーフウェイ・ベクトルH.i=(Hx.i,
Hy.i,Hz.i),(但し、各ベクトルは正規化され
ているとする。) 減衰係数At.iとスポット光源効果Sp.iの積AtS
p.i,材質の環境反射係数と光源の環境反射光用の色
の積Ca.i=(Ca.r.i,Ca.g.i,Ca.b.
i),材質の拡散反射係数と光源の拡散反射光用の色の
積Cd.i=(Cd.r.i,Cd.g.i,Cd.b.
i),材質の鏡面反射係数と光源の鏡面反射光用の色の
積Cs.i=(Cs.r.i,Cs.g.i,Cs.b.
i),光源データiの光源計算中フラグLflag.i,が
ある。
は、光源方向ベクトルL.i=(Lx.i,Ly.i,L
z.i),ハーフウェイ・ベクトルH.i=(Hx.i,
Hy.i,Hz.i),(但し、各ベクトルは正規化され
ているとする。) 減衰係数At.iとスポット光源効果Sp.iの積AtS
p.i,材質の環境反射係数と光源の環境反射光用の色
の積Ca.i=(Ca.r.i,Ca.g.i,Ca.b.
i),材質の拡散反射係数と光源の拡散反射光用の色の
積Cd.i=(Cd.r.i,Cd.g.i,Cd.b.
i),材質の鏡面反射係数と光源の鏡面反射光用の色の
積Cs.i=(Cs.r.i,Cs.g.i,Cs.b.
i),光源データiの光源計算中フラグLflag.i,が
ある。
【0033】次に、光源計算部(180)について説明
する。
する。
【0034】光源計算部(180)の詳細な構成図を図
1に示す。
1に示す。
【0035】光源計算部(180)は、光源テーブルの
入れ替えを制御する光源テーブル制御部(110)と、
前記法線ベクトルNとハーフウェイ・ベクトルH.iの
内積(N・H.i)を計算する内積算出部1−1(12
0)と、前記法線ベクトルNと光源方向ベクトルL.i
の内積(N・L.i)を計算する内積算出部1−2(13
0)と、前記内積(N・H.i)のSM乗を計算するべき
乗算出部(150)と、前記結果より、光源計算した色
を算出する色算出部(160)と、保持している複数の
光源に対する光源計算の途中結果の色を出力後、自動的
にクリアするクリア部(170)から構成される。
入れ替えを制御する光源テーブル制御部(110)と、
前記法線ベクトルNとハーフウェイ・ベクトルH.iの
内積(N・H.i)を計算する内積算出部1−1(12
0)と、前記法線ベクトルNと光源方向ベクトルL.i
の内積(N・L.i)を計算する内積算出部1−2(13
0)と、前記内積(N・H.i)のSM乗を計算するべき
乗算出部(150)と、前記結果より、光源計算した色
を算出する色算出部(160)と、保持している複数の
光源に対する光源計算の途中結果の色を出力後、自動的
にクリアするクリア部(170)から構成される。
【0036】光源計算部(180)は、GPからの光源
計算を行う光源計算コマンド,光源計算&色コマンドに
より起動され、光源1〜Lnum まで1個ずつ順次光源計
算を行う。ここで、コマンド光源数Lnum(1≦Lnum≦
8)は、コマンドにエンコードされている。又、光源計
算部(180)は、色の計算途中(例えば、内積)の
値,算出した色を、適時、[0.0〜1.0],[0〜2
55]にクランプする。次に、各構成要素について詳細
に説明する。
計算を行う光源計算コマンド,光源計算&色コマンドに
より起動され、光源1〜Lnum まで1個ずつ順次光源計
算を行う。ここで、コマンド光源数Lnum(1≦Lnum≦
8)は、コマンドにエンコードされている。又、光源計
算部(180)は、色の計算途中(例えば、内積)の
値,算出した色を、適時、[0.0〜1.0],[0〜2
55]にクランプする。次に、各構成要素について詳細
に説明する。
【0037】まず、光源テーブル制御部(110)は、光
源計算中に光源テーブル1(100)のデータを変更され
ない様にするため、光源計算開始時に、光源テーブル1
(100)の共通データと光源データi(i=1〜Lnum)の
光源計算中フラグLflagc,Lflag.iをロックする。そ
して、光源計算部(180)は、光源テーブル1(100)の光
源データi(i=1〜Lnum)を1個ずつ読み、光源iの
光源計算を1個ずつ順次行う。光源テーブル制御部(1
10)は、光源計算が光源1個分終了する毎に、前記終
了した光源データiの光源計算中フラグLflag.i を1
個ずつ順次アンロックし、光源計算終了時に、共通デー
タの光源計算中フラグLflagc をアンロックする。これ
により、光源テーブル1(100)は、光源計算中でも
光源計算が光源1個分終了する毎に、光源テーブル1
(100)の光源計算終了部分へ、直ちに次の最大8個
の光源データを1個ずつ順次設定できるので、これによ
り、光源テーブルに設定可能な光源データ数が少なくて
も多数の光源に対応可能となり、著しく高速に光源デー
タを光源テーブル1(100)へ設定することが可能と
なる。
源計算中に光源テーブル1(100)のデータを変更され
ない様にするため、光源計算開始時に、光源テーブル1
(100)の共通データと光源データi(i=1〜Lnum)の
光源計算中フラグLflagc,Lflag.iをロックする。そ
して、光源計算部(180)は、光源テーブル1(100)の光
源データi(i=1〜Lnum)を1個ずつ読み、光源iの
光源計算を1個ずつ順次行う。光源テーブル制御部(1
10)は、光源計算が光源1個分終了する毎に、前記終
了した光源データiの光源計算中フラグLflag.i を1
個ずつ順次アンロックし、光源計算終了時に、共通デー
タの光源計算中フラグLflagc をアンロックする。これ
により、光源テーブル1(100)は、光源計算中でも
光源計算が光源1個分終了する毎に、光源テーブル1
(100)の光源計算終了部分へ、直ちに次の最大8個
の光源データを1個ずつ順次設定できるので、これによ
り、光源テーブルに設定可能な光源データ数が少なくて
も多数の光源に対応可能となり、著しく高速に光源デー
タを光源テーブル1(100)へ設定することが可能と
なる。
【0038】次に、クリア部(170)は、色算出部
(160)が保持している複数の光源に対する光源計算
の途中結果の色を出力後クリアする。色算出部(16
0)は、光源テーブル1(100)が光源データを最大
8組までしか保持できないので、光源数mが8より大き
い時、例えば、m=9の時、まず、光源1〜8のデータ
を光源テーブル1(100)の光源データ1〜8に設定
し、光源計算のみを行う光源計算コマンドとコマンド光
源数Lnum=8 により、光源1〜8の光源計算した色を
途中結果の色として保持する。次に、光源9のデータを
光源テーブル1(100)の光源データ1に設定し(光源1の
データは破壊される)、光源計算を行い色を出力する光
源計算&色コマンドとコマンド光源数Lnum=1 によ
り、光源9の光源計算を行い、前記光源1〜8の途中結
果の色に光源9の色を加算して光源1〜9の色(今回の
途中結果の色)を算出し、前記途中結果の色を出力後ク
リアする。これにより、光源テーブルに設定可能な光源
データ数が少なくても多数の光源に対応し、前記途中結
果の色を出力後、クリアするクリア・コマンドが不要と
なり、著しく高速に光源計算部を制御することが可能と
なる。
(160)が保持している複数の光源に対する光源計算
の途中結果の色を出力後クリアする。色算出部(16
0)は、光源テーブル1(100)が光源データを最大
8組までしか保持できないので、光源数mが8より大き
い時、例えば、m=9の時、まず、光源1〜8のデータ
を光源テーブル1(100)の光源データ1〜8に設定
し、光源計算のみを行う光源計算コマンドとコマンド光
源数Lnum=8 により、光源1〜8の光源計算した色を
途中結果の色として保持する。次に、光源9のデータを
光源テーブル1(100)の光源データ1に設定し(光源1の
データは破壊される)、光源計算を行い色を出力する光
源計算&色コマンドとコマンド光源数Lnum=1 によ
り、光源9の光源計算を行い、前記光源1〜8の途中結
果の色に光源9の色を加算して光源1〜9の色(今回の
途中結果の色)を算出し、前記途中結果の色を出力後ク
リアする。これにより、光源テーブルに設定可能な光源
データ数が少なくても多数の光源に対応し、前記途中結
果の色を出力後、クリアするクリア・コマンドが不要と
なり、著しく高速に光源計算部を制御することが可能と
なる。
【0039】次に、内積算出部1−1(120),内積
算出部1−2(130),べき乗算出部(150),色
算出部(160)について説明する。
算出部1−2(130),べき乗算出部(150),色
算出部(160)について説明する。
【0040】以下、説明を簡単にするため、光源数m=
1〜8の場合について説明する。
1〜8の場合について説明する。
【0041】まず、途中結果の色は、前回の光源計算&
色コマンド終了時に、クリア部(170)により自動的
にクリアされている。
色コマンド終了時に、クリア部(170)により自動的
にクリアされている。
【0042】次に、光源i=1〜mについて、下記の様
に1個ずつ順次光源計算を行う。
に1個ずつ順次光源計算を行う。
【0043】内積算出部1−1(120)は、前記法線
ベクトルNとハーフウェイ・ベクトルH.iの内積(N
・H.i)を計算し、内積算出部1−2(130)は、
前記法線ベクトルNと光源方向ベクトルL.iの内積
(N・L.i)を計算する。
ベクトルNとハーフウェイ・ベクトルH.iの内積(N
・H.i)を計算し、内積算出部1−2(130)は、
前記法線ベクトルNと光源方向ベクトルL.iの内積
(N・L.i)を計算する。
【0044】そして、べき乗算出部(150)は、前記内
積(N・H.i)より(N・H.i)∧SMを、例えば、 (N・H.i)^SM=e^(SM×LOG(N・H.
i)) などより算出する。ここで、LOGは対数演算である。
積(N・H.i)より(N・H.i)∧SMを、例えば、 (N・H.i)^SM=e^(SM×LOG(N・H.
i)) などより算出する。ここで、LOGは対数演算である。
【0045】色算出部(160)は、前記結果より、
(rgbの各成分は数5により独立に計算し、aの成分は
何も計算しない。I.a=a)
(rgbの各成分は数5により独立に計算し、aの成分は
何も計算しない。I.a=a)
【0046】
【数5】
【0047】但し、(N・H.i)のSM乗(N・H.
i)^SM,光源数m,光源i(i=1〜m),光源計
算で算出した色I=(I.r,I.g,I.b,I.a)を
short int 型で計算して、光源1〜mの光源計算を行い
頂点の色Iを算出する。
i)^SM,光源数m,光源i(i=1〜m),光源計
算で算出した色I=(I.r,I.g,I.b,I.a)を
short int 型で計算して、光源1〜mの光源計算を行い
頂点の色Iを算出する。
【0048】以上、詳細に説明した様に、本発明の光源
計算部は、従来はハードウェア物量が多く低速なfloat
型演算でソフトウェアにより処理していた光源計算の大
部分を、ハードウェア物量が少なく高速なshort int 型
演算でハードウェアにより処理することができるので、
float 型演算でハードウェアを構成するよりも非常に少
ないハードウェア物量で、更に、GPがソフトウェアで
計算するよりも著しく高速に光源計算を行うことができ
る。
計算部は、従来はハードウェア物量が多く低速なfloat
型演算でソフトウェアにより処理していた光源計算の大
部分を、ハードウェア物量が少なく高速なshort int 型
演算でハードウェアにより処理することができるので、
float 型演算でハードウェアを構成するよりも非常に少
ないハードウェア物量で、更に、GPがソフトウェアで
計算するよりも著しく高速に光源計算を行うことができ
る。
【0049】又、本発明の光源計算部は、光源テーブル
の入れ替えを制御する光源テーブル制御部により、光源
テーブルに設定可能な光源データ数が少なくても光源デ
ータを入れ替えることで多数の光源に対応し、光源計算
中でも光源計算が光源1個分終了する毎に、光源テーブ
ルの光源計算終了部分へ、直ちに次の光源データを1個
ずつ順次設定できるので、著しく高速に光源データを光
源テーブルへ設定することができる。
の入れ替えを制御する光源テーブル制御部により、光源
テーブルに設定可能な光源データ数が少なくても光源デ
ータを入れ替えることで多数の光源に対応し、光源計算
中でも光源計算が光源1個分終了する毎に、光源テーブ
ルの光源計算終了部分へ、直ちに次の光源データを1個
ずつ順次設定できるので、著しく高速に光源データを光
源テーブルへ設定することができる。
【0050】更に、本発明の光源計算部は、保持してい
る光源計算の途中結果の色を出力後、クリア部により自
動的にクリアされるので、光源テーブルに設定可能な光
源データ数が少なくても光源データを入れ替えることで
多数の光源に対応し、前記途中結果の色を出力後、クリ
アするクリア・コマンドが不要となり、著しく高速に光
源計算部を制御することができる。
る光源計算の途中結果の色を出力後、クリア部により自
動的にクリアされるので、光源テーブルに設定可能な光
源データ数が少なくても光源データを入れ替えることで
多数の光源に対応し、前記途中結果の色を出力後、クリ
アするクリア・コマンドが不要となり、著しく高速に光
源計算部を制御することができる。
【0051】以上の様に、本発明の光源計算部は、グラ
フィックシステムのシェーディング処理における光源計
算を著しく高速化することができる。
フィックシステムのシェーディング処理における光源計
算を著しく高速化することができる。
【0052】次に図9に示した光源テーブルに保持され
る光源データの他の例を図7に示す。
る光源データの他の例を図7に示す。
【0053】共通データとしては、法線ベクトルN=
(Nx,Ny,Nz),透明度a、材質の環境反射係数
Ka=(Ka.r,Ka.g,Ka.b),材質の拡散反
射係数Kd=(Kd.r,Kd.g,Kd.b),材質の
鏡面反射係数Ks=(Ks.r,Ks.g,Ks.b),
放射反射光成分の色と全体の環境反射光成分の色の和K
=(K.r,K.g,K.b),材質の鏡面指数SM,共
通データの光源計算中フラグLflagc,がある。
(Nx,Ny,Nz),透明度a、材質の環境反射係数
Ka=(Ka.r,Ka.g,Ka.b),材質の拡散反
射係数Kd=(Kd.r,Kd.g,Kd.b),材質の
鏡面反射係数Ks=(Ks.r,Ks.g,Ks.b),
放射反射光成分の色と全体の環境反射光成分の色の和K
=(K.r,K.g,K.b),材質の鏡面指数SM,共
通データの光源計算中フラグLflagc,がある。
【0054】又、光源データi(i=1〜8)として
は、光源方向ベクトルL.i=(Lx.i,Ly.i,L
z.i),ハーフウェイ・ベクトルH.i=(Hx.i,
Hy.i,Hz.i),(但し、各ベクトルは正規化され
ているとする。) 減衰係数At.iとスポット光源効果Sp.iの積AtS
p.i,光源の環境反射光用の色Lca.i=(Lca.r.
i,Lca.g.i,Lca.b.i),光源の拡散反射光用の色
Lcd.i=(Lcd.r.i,Lcd.g.i,Lcd.b.i),光源
の鏡面反射光用の色Lcs.i=(Lcs.r.i,Lcs.g.
i,Lcs.b.i),光源データiの光源計算中フラグLfl
ag.i、がある。尚、光源計算部は、図1に示した構成
と同様に実現できるため、ここでは説明を省略する。
は、光源方向ベクトルL.i=(Lx.i,Ly.i,L
z.i),ハーフウェイ・ベクトルH.i=(Hx.i,
Hy.i,Hz.i),(但し、各ベクトルは正規化され
ているとする。) 減衰係数At.iとスポット光源効果Sp.iの積AtS
p.i,光源の環境反射光用の色Lca.i=(Lca.r.
i,Lca.g.i,Lca.b.i),光源の拡散反射光用の色
Lcd.i=(Lcd.r.i,Lcd.g.i,Lcd.b.i),光源
の鏡面反射光用の色Lcs.i=(Lcs.r.i,Lcs.g.
i,Lcs.b.i),光源データiの光源計算中フラグLfl
ag.i、がある。尚、光源計算部は、図1に示した構成
と同様に実現できるため、ここでは説明を省略する。
【0055】色算出部は以下の数6
【0056】
【数6】
【0057】但し、(N・H.i)のSM乗(N・H.
i)^SM,光源数m,光源i(i=1〜m),光源計
算で算出した色I=(I.r,I.g,I.b,I.a)を
short int 型で計算して、光源1〜mの光源計算を行い
頂点の色Iを算出する。
i)^SM,光源数m,光源i(i=1〜m),光源計
算で算出した色I=(I.r,I.g,I.b,I.a)を
short int 型で計算して、光源1〜mの光源計算を行い
頂点の色Iを算出する。
【0058】(実施例2)図2は、本発明の光源計算部
の他の実施例を示す構成図である。
の他の実施例を示す構成図である。
【0059】本発明の光源計算部(280)は、光源計
算に必要な光源データを保持するレジスタである光源テ
ーブル2(200)のロック、及び、アンロックを行う
光源テーブル制御部(210)と、ベクトルの内積を計
算する第1の内積算出部2−1(220),第2の内積
算出部2−2(230),第3の内積算出部2−3(2
40)と、べき乗を算出するべき乗算出部(250)
と、前記算出結果と光源テーブル2(200)の光源デ
ータより、m個の光源による光源計算を行い頂点の色を
算出する色算出部(260)(r,g,bの3組ある)
と、算出した色を出力したら現在の途中結果の色を自動
的にクリアするクリア部(270)から構成される。
算に必要な光源データを保持するレジスタである光源テ
ーブル2(200)のロック、及び、アンロックを行う
光源テーブル制御部(210)と、ベクトルの内積を計
算する第1の内積算出部2−1(220),第2の内積
算出部2−2(230),第3の内積算出部2−3(2
40)と、べき乗を算出するべき乗算出部(250)
と、前記算出結果と光源テーブル2(200)の光源デ
ータより、m個の光源による光源計算を行い頂点の色を
算出する色算出部(260)(r,g,bの3組ある)
と、算出した色を出力したら現在の途中結果の色を自動
的にクリアするクリア部(270)から構成される。
【0060】以下、説明を簡単にするために、光源テー
ブル2(200)の各データがshortint型で、光源1〜
8のデータ(8組)を保持できる場合について説明す
る。
ブル2(200)の各データがshortint型で、光源1〜
8のデータ(8組)を保持できる場合について説明す
る。
【0061】まず、光源テーブル2(200)は、光源
計算で必要な下記の値を保持するレジスタであり、前記
詳細な構成図を図8に示す。尚、これらの値は、座標変
換などを行うジオメトリ・プロセッサGPにより光源テ
ーブル2(200)に設定される。又、光源テーブル2
(200)に設定された各値は、既に、float 型からsh
ort int型に変換されている。
計算で必要な下記の値を保持するレジスタであり、前記
詳細な構成図を図8に示す。尚、これらの値は、座標変
換などを行うジオメトリ・プロセッサGPにより光源テ
ーブル2(200)に設定される。又、光源テーブル2
(200)に設定された各値は、既に、float 型からsh
ort int型に変換されている。
【0062】光源テーブル2(200)は、法線ベクト
ル、材質の各反射係数など各光源で共通なデータである
共通データ1組と、光源方向ベクトル、光源の各反射光
用の色など光源i(i=1〜8)毎に独立なデータであ
る光源データiが8組ある。又、前記共通データと光源
データi毎に、光源計算部(280)が光源計算で使用
中か否かを示す光源計算中フラグがあり、光源テーブル
制御部(210)がロック、及び、アンロックを設定す
る。光源計算中フラグが、ロックの時、前記データは変
更不可であり、アンロックの時、前記データは変更可で
ある。
ル、材質の各反射係数など各光源で共通なデータである
共通データ1組と、光源方向ベクトル、光源の各反射光
用の色など光源i(i=1〜8)毎に独立なデータであ
る光源データiが8組ある。又、前記共通データと光源
データi毎に、光源計算部(280)が光源計算で使用
中か否かを示す光源計算中フラグがあり、光源テーブル
制御部(210)がロック、及び、アンロックを設定す
る。光源計算中フラグが、ロックの時、前記データは変
更不可であり、アンロックの時、前記データは変更可で
ある。
【0063】共通データとしては、法線ベクトルN=
(Nx,Ny,Nz),透明度a,材質の環境反射係数
Ka=(Ka.r,Ka.g,Ka.b),材質の拡散反
射係数Kd=(Kd.r,Kd.g,Kd.b),材質の
鏡面反射係数Ks=(Ks.r,Ks.g,Ks.b),
材質の放射反射係数Ke=(Ke.r,Ke.g,Ke.
b),材質の鏡面指数SM,全体の環境光源の各反射光
用の色Lcta=(Lcta.r,Lcta.g,Lcta.b),共通デ
ータの光源計算中フラグLflagc,がある。
(Nx,Ny,Nz),透明度a,材質の環境反射係数
Ka=(Ka.r,Ka.g,Ka.b),材質の拡散反
射係数Kd=(Kd.r,Kd.g,Kd.b),材質の
鏡面反射係数Ks=(Ks.r,Ks.g,Ks.b),
材質の放射反射係数Ke=(Ke.r,Ke.g,Ke.
b),材質の鏡面指数SM,全体の環境光源の各反射光
用の色Lcta=(Lcta.r,Lcta.g,Lcta.b),共通デ
ータの光源計算中フラグLflagc,がある。
【0064】又、光源データi(i=1〜8)として
は、光源方向ベクトルL.i=(Lx.i,Ly.i,L
z.i),ハーフウェイ・ベクトルH.i=(Hx.i,
Hy.i,Hz.i),(但し、各ベクトルは正規化され
ているとする。) 減衰係数At.i、スポット光源方向ベクトルSD.i=
(SDx.i,SDy.i,SDz.i),スポット光源指
数SE.i,光源の環境反射光用の色Lca.i=(Lca.
r.i,Lca.g.i,Lca.b.i),光源の拡散反射光用
の色Lcd.i=(Lcd.r.i,Lcd.g.i,Lcd.b.i),
光源の鏡面反射光用の色Lcs.i=(Lcs.r.i,Lcs.
g.i,Lcs.b.i),光源データiの光源計算中フラグ
Lflag.i、がある。
は、光源方向ベクトルL.i=(Lx.i,Ly.i,L
z.i),ハーフウェイ・ベクトルH.i=(Hx.i,
Hy.i,Hz.i),(但し、各ベクトルは正規化され
ているとする。) 減衰係数At.i、スポット光源方向ベクトルSD.i=
(SDx.i,SDy.i,SDz.i),スポット光源指
数SE.i,光源の環境反射光用の色Lca.i=(Lca.
r.i,Lca.g.i,Lca.b.i),光源の拡散反射光用
の色Lcd.i=(Lcd.r.i,Lcd.g.i,Lcd.b.i),
光源の鏡面反射光用の色Lcs.i=(Lcs.r.i,Lcs.
g.i,Lcs.b.i),光源データiの光源計算中フラグ
Lflag.i、がある。
【0065】次に、光源計算部(280)について説明
する。
する。
【0066】光源計算部(280)の詳細な構成図を図
2に示す。
2に示す。
【0067】光源計算部(280)は、光源テーブルの
入れ替えを制御する光源テーブル制御部(210)と、
前記法線ベクトルNとハーフウェイ・ベクトルH.iの
内積(N・H.i)を計算する第1の内積算出部2−1
(220)と、前記法線ベクトルNと光源方向ベクトル
L.iの内積(N・L.i)を計算する第2の内積算出部
2−2(230)と、前記スポット光源方向ベクトルS
D.iと光源方向ベクトルL.iの内積(−SD.i・L.
i)を計算する第3の内積算出部2−3(240)と、前
記内積(N・H.i)のSM乗と(−SD.i・L.i)
のSE.i乗を計算するべき乗算出部(250)と、前
記結果より、光源計算した色を算出する色算出部(26
0)と、保持している複数の光源に対する光源計算の途
中結果の色を出力後、自動的にクリアするクリア部(2
70)から構成される。
入れ替えを制御する光源テーブル制御部(210)と、
前記法線ベクトルNとハーフウェイ・ベクトルH.iの
内積(N・H.i)を計算する第1の内積算出部2−1
(220)と、前記法線ベクトルNと光源方向ベクトル
L.iの内積(N・L.i)を計算する第2の内積算出部
2−2(230)と、前記スポット光源方向ベクトルS
D.iと光源方向ベクトルL.iの内積(−SD.i・L.
i)を計算する第3の内積算出部2−3(240)と、前
記内積(N・H.i)のSM乗と(−SD.i・L.i)
のSE.i乗を計算するべき乗算出部(250)と、前
記結果より、光源計算した色を算出する色算出部(26
0)と、保持している複数の光源に対する光源計算の途
中結果の色を出力後、自動的にクリアするクリア部(2
70)から構成される。
【0068】光源計算部(280)は、GPからの光源
計算を行う光源計算コマンド、光源計算&色コマンドに
より起動され、光源1〜Lnumまで1個ずつ順次光源計
算を行う。ここで、コマンド光源数Lnum(1≦Lnum≦
8)は、コマンドにエンコードされている。尚、コマン
ドについては、実施例4で詳細に説明する。又、光源計
算部(280)は、色の計算途中(例えば、内積)の
値、算出した色を、適時、[0.0〜1.0],[0〜2
55]にクランプする。
計算を行う光源計算コマンド、光源計算&色コマンドに
より起動され、光源1〜Lnumまで1個ずつ順次光源計
算を行う。ここで、コマンド光源数Lnum(1≦Lnum≦
8)は、コマンドにエンコードされている。尚、コマン
ドについては、実施例4で詳細に説明する。又、光源計
算部(280)は、色の計算途中(例えば、内積)の
値、算出した色を、適時、[0.0〜1.0],[0〜2
55]にクランプする。
【0069】次に、各構成要素について詳細に説明す
る。
る。
【0070】まず、光源テーブル制御部(210)は、光
源計算中に光源テーブル2(200)のデータを変更され
ない様にするため、光源計算開始時に、光源テーブル2
(200)の共通データと光源データi(i=1〜Lnum)の
光源計算中フラグLflagc,Lflag.i をロックする。
そして、光源計算部(280)は、光源テーブル2(2
00)の光源データi(i=1〜Lnum)を1個ずつ読
み、光源iの光源計算を1個ずつ順次行う。光源テーブ
ル制御部(210)は、光源計算が光源1個分終了する
毎に、前記終了した光源データiの光源計算中フラグL
flag.i を1個ずつ順次アンロックし、光源計算終了時
に、共通データの光源計算中フラグLflagcをアンロッ
クする。これにより、光源テーブル2(200)は、光
源計算中でも光源計算が光源1個分終了する毎に、光源
テーブル2(200)の光源計算終了部分へ、直ちに次
の最大8個の光源データを1個ずつ順次設定できるの
で、これにより、光源テーブルに設定可能な光源データ
数が少なくても多数の光源に対応可能となり、著しく高
速に光源データを光源テーブル2(200)へ設定する
ことが可能となる。
源計算中に光源テーブル2(200)のデータを変更され
ない様にするため、光源計算開始時に、光源テーブル2
(200)の共通データと光源データi(i=1〜Lnum)の
光源計算中フラグLflagc,Lflag.i をロックする。
そして、光源計算部(280)は、光源テーブル2(2
00)の光源データi(i=1〜Lnum)を1個ずつ読
み、光源iの光源計算を1個ずつ順次行う。光源テーブ
ル制御部(210)は、光源計算が光源1個分終了する
毎に、前記終了した光源データiの光源計算中フラグL
flag.i を1個ずつ順次アンロックし、光源計算終了時
に、共通データの光源計算中フラグLflagcをアンロッ
クする。これにより、光源テーブル2(200)は、光
源計算中でも光源計算が光源1個分終了する毎に、光源
テーブル2(200)の光源計算終了部分へ、直ちに次
の最大8個の光源データを1個ずつ順次設定できるの
で、これにより、光源テーブルに設定可能な光源データ
数が少なくても多数の光源に対応可能となり、著しく高
速に光源データを光源テーブル2(200)へ設定する
ことが可能となる。
【0071】次に、クリア部(270)は、色算出部
(260)が保持している複数の光源に対する光源計算
の途中結果の色を出力後クリアする。色算出部(26
0)は、光源テーブル2(200)が光源データを最大
8組までしか保持できないので、光源数mが8より大き
い時、例えば、m=9の時、まず、光源1〜8のデータ
を光源テーブル2(200)の光源データ1〜8に設定
し、光源計算のみを行う光源計算コマンドとコマンド光
源数Lnum=8 により、光源1〜8の光源計算した色を
途中結果の色として保持する。次に、光源9のデータを
光源テーブル2(200)の光源データ1に設定し(光源1
のデータは破壊される)、光源計算を行い色を出力する
光源計算&色コマンドとコマンド光源数Lnum=1 によ
り、光源9の光源計算を行い、前記光源1〜8の途中結
果の色に光源9の色を加算して光源1〜9の色(今回の
途中結果の色)を算出し、前記途中結果の色を出力後ク
リアする。これにより、光源テーブルに設定可能な光源
データ数が少なくても多数の光源に対応し、前記途中結
果の色を出力後、クリアするクリア・コマンドが不要と
なり、著しく高速に光源計算部を制御することが可能と
なる。
(260)が保持している複数の光源に対する光源計算
の途中結果の色を出力後クリアする。色算出部(26
0)は、光源テーブル2(200)が光源データを最大
8組までしか保持できないので、光源数mが8より大き
い時、例えば、m=9の時、まず、光源1〜8のデータ
を光源テーブル2(200)の光源データ1〜8に設定
し、光源計算のみを行う光源計算コマンドとコマンド光
源数Lnum=8 により、光源1〜8の光源計算した色を
途中結果の色として保持する。次に、光源9のデータを
光源テーブル2(200)の光源データ1に設定し(光源1
のデータは破壊される)、光源計算を行い色を出力する
光源計算&色コマンドとコマンド光源数Lnum=1 によ
り、光源9の光源計算を行い、前記光源1〜8の途中結
果の色に光源9の色を加算して光源1〜9の色(今回の
途中結果の色)を算出し、前記途中結果の色を出力後ク
リアする。これにより、光源テーブルに設定可能な光源
データ数が少なくても多数の光源に対応し、前記途中結
果の色を出力後、クリアするクリア・コマンドが不要と
なり、著しく高速に光源計算部を制御することが可能と
なる。
【0072】次に、第1の内積算出部2−1(22
0),第2の内積算出部2−2(230),第3の内積算
出部2−3(240),べき乗算出部(250),色算出部
(260)について説明する。
0),第2の内積算出部2−2(230),第3の内積算
出部2−3(240),べき乗算出部(250),色算出部
(260)について説明する。
【0073】以下、説明を簡単にするため、光源数m=
1〜8の場合について説明する。
1〜8の場合について説明する。
【0074】まず、途中結果の色は、前回の光源計算&
色コマンド終了時に、クリア部(270)により自動的
にクリアされている。
色コマンド終了時に、クリア部(270)により自動的
にクリアされている。
【0075】次に、光源i=1〜mについて、下記の様
に1個ずつ順次光源計算を行う。
に1個ずつ順次光源計算を行う。
【0076】第1の内積算出部2−1(220)は、前
記法線ベクトルNとハーフウェイ・ベクトルH.iの内
積(N・H.i)を計算し、第2の内積算出部2−2(2
30)は、前記法線ベクトルNと光源方向ベクトルL.i
の内積(N・L.i)を計算し、第3の内積算出部2−
3(240)は、前記スポット光源方向ベクトルSD.i
と光源方向ベクトルL.iの内積(−SD.i・L.i)
を計算する。
記法線ベクトルNとハーフウェイ・ベクトルH.iの内
積(N・H.i)を計算し、第2の内積算出部2−2(2
30)は、前記法線ベクトルNと光源方向ベクトルL.i
の内積(N・L.i)を計算し、第3の内積算出部2−
3(240)は、前記スポット光源方向ベクトルSD.i
と光源方向ベクトルL.iの内積(−SD.i・L.i)
を計算する。
【0077】そして、べき乗算出部(250)は、前記内
積(N・H.i)と(−SD.i・L.i)より(N・H.
i)のSM乗と(−SD.i・L.i)のSE.i乗を、
例えば、 (N・H.i)^SM=e^(SM×LOG(N・H.
i)) などより算出する。ここで、LOGは対数演算である。
積(N・H.i)と(−SD.i・L.i)より(N・H.
i)のSM乗と(−SD.i・L.i)のSE.i乗を、
例えば、 (N・H.i)^SM=e^(SM×LOG(N・H.
i)) などより算出する。ここで、LOGは対数演算である。
【0078】色算出部(260)は、前記結果より、
(rgbの各成分は数7により独立に計算し、aの成分は
何も計算しない。I.a=a)
(rgbの各成分は数7により独立に計算し、aの成分は
何も計算しない。I.a=a)
【0079】
【数7】
【0080】但し、(N・H.i)のSM乗(N・H.
i)^SM,(−SD.i・L.i)のSE.i乗(−S
D.i・L.i)^SE.i,スポット光源のカットオフ
指数SC.i,光源数m,光源i(i=1〜m),光源
計算で算出した色I=(I.r,I.g,I.b,I.a) (−SD.i・L.i)^SE.i=1 :平行光源,点光源の時 =(−SD.i・L.i)^SE.i :スポット光源の照射範囲内 (−SD.i・L.i)≧cos(SC.i) =0 :スポット光源の照射範囲外 (−SD.i・L.i)<cos(SC.i) をshort int 型で計算して、光源1〜mの光源計算を行
い頂点の色Iを算出する。
i)^SM,(−SD.i・L.i)のSE.i乗(−S
D.i・L.i)^SE.i,スポット光源のカットオフ
指数SC.i,光源数m,光源i(i=1〜m),光源
計算で算出した色I=(I.r,I.g,I.b,I.a) (−SD.i・L.i)^SE.i=1 :平行光源,点光源の時 =(−SD.i・L.i)^SE.i :スポット光源の照射範囲内 (−SD.i・L.i)≧cos(SC.i) =0 :スポット光源の照射範囲外 (−SD.i・L.i)<cos(SC.i) をshort int 型で計算して、光源1〜mの光源計算を行
い頂点の色Iを算出する。
【0081】以上、詳細に説明した様に、本発明の光源
計算部は、従来はハードウェア物量が多く低速なfloat
型演算でソフトウェアにより処理していた光源計算の大
部分を、ハードウェア物量が少なく高速なshort int 型
演算でハードウェアにより処理することができるので、
float 型演算でハードウェアを構成するよりも非常に少
ないハードウェア物量で、更に、GPがソフトウェアで
計算するよりも著しく高速に光源計算を行うことができ
る。
計算部は、従来はハードウェア物量が多く低速なfloat
型演算でソフトウェアにより処理していた光源計算の大
部分を、ハードウェア物量が少なく高速なshort int 型
演算でハードウェアにより処理することができるので、
float 型演算でハードウェアを構成するよりも非常に少
ないハードウェア物量で、更に、GPがソフトウェアで
計算するよりも著しく高速に光源計算を行うことができ
る。
【0082】又、本発明の光源計算部は、光源テーブル
の入れ替えを制御する光源テーブル制御部により、光源
テーブルに設定可能な光源データ数が少なくても光源デ
ータを入れ替えることで多数の光源に対応し、光源計算
中でも光源計算が光源1個分終了する毎に、光源テーブ
ルの光源計算終了部分へ、直ちに次の光源データを1個
ずつ順次設定できるので、著しく高速に光源データを光
源テーブルへ設定することができる。
の入れ替えを制御する光源テーブル制御部により、光源
テーブルに設定可能な光源データ数が少なくても光源デ
ータを入れ替えることで多数の光源に対応し、光源計算
中でも光源計算が光源1個分終了する毎に、光源テーブ
ルの光源計算終了部分へ、直ちに次の光源データを1個
ずつ順次設定できるので、著しく高速に光源データを光
源テーブルへ設定することができる。
【0083】更に、本発明の光源計算部は、保持してい
る光源計算の途中結果の色を出力後、自動的にクリアす
るクリア部により、光源テーブルに設定可能な光源デー
タ数が少なくても光源データを入れ替えることで多数の
光源に対応し、前記途中結果の色を出力後、クリアする
クリア・コマンドが不要となり、著しく高速に光源計算
部を制御することができる。
る光源計算の途中結果の色を出力後、自動的にクリアす
るクリア部により、光源テーブルに設定可能な光源デー
タ数が少なくても光源データを入れ替えることで多数の
光源に対応し、前記途中結果の色を出力後、クリアする
クリア・コマンドが不要となり、著しく高速に光源計算
部を制御することができる。
【0084】以上の様に、本発明の光源計算部は、グラ
フィックシステムのシェーディング処理における光源計
算を著しく高速化することができる。
フィックシステムのシェーディング処理における光源計
算を著しく高速化することができる。
【0085】図3は、本発明のグラフィックプロセッサ
の全体構成を示す図である。
の全体構成を示す図である。
【0086】ここで、データの始めにはコマンドがあ
り、次に、前記コマンドのデータが複数あるとする。
り、次に、前記コマンドのデータが複数あるとする。
【0087】本発明のグラフィックプロセッサGPIF
(400)は、データの分配を行うシステム・バス・コ
ントローラSBCから送られたコマンドとデータを保持
するバッファであるGPIF入力部(401)と、前記
コマンドとデータを読み座標変換などを行うジオメトリ
・プロセッサGPから送られた光源計算ハードウェア
(402)に対するコマンドとデータを保持するバッフ
ァであるLBuf(403)と、前記コマンドとデータをL
Buf(403)から制御部1(405)へ出力するため
のBufSWレジスタ(404)と、前記コマンドを解釈
するコマンド解釈部(406)と、前記コマンドに従い
必要ならデータのFI変換を行うFI変換部(407)
と、前記コマンドに従い必要なら前記FI変換後のデー
タのパック処理を行うパック処理部(408)と、上述
の実施例において、詳細に説明した光源計算に必要な光
源データを保持する光源テーブル(409)と、光源計
算を行い色を算出する光源計算部(410)と、制御部
1(405)と光源計算部(410)から送られた、図
形を画素展開し描画するレンダリング・プロセッサRP
に対するコマンドとデータの順序を制御する制御部2
(411)と、制御部2(411)とGPから送られた
RPに対するコマンドとデータの順序を制御する制御部
3(413)と、前記コマンドとデータを保持するバッフ
ァであるCBuf(414)と、前記コマンドとデータを
CBuf(414)からRPに出力するためのBufFLレ
ジスタ(415)から構成される。
(400)は、データの分配を行うシステム・バス・コ
ントローラSBCから送られたコマンドとデータを保持
するバッファであるGPIF入力部(401)と、前記
コマンドとデータを読み座標変換などを行うジオメトリ
・プロセッサGPから送られた光源計算ハードウェア
(402)に対するコマンドとデータを保持するバッフ
ァであるLBuf(403)と、前記コマンドとデータをL
Buf(403)から制御部1(405)へ出力するため
のBufSWレジスタ(404)と、前記コマンドを解釈
するコマンド解釈部(406)と、前記コマンドに従い
必要ならデータのFI変換を行うFI変換部(407)
と、前記コマンドに従い必要なら前記FI変換後のデー
タのパック処理を行うパック処理部(408)と、上述
の実施例において、詳細に説明した光源計算に必要な光
源データを保持する光源テーブル(409)と、光源計
算を行い色を算出する光源計算部(410)と、制御部
1(405)と光源計算部(410)から送られた、図
形を画素展開し描画するレンダリング・プロセッサRP
に対するコマンドとデータの順序を制御する制御部2
(411)と、制御部2(411)とGPから送られた
RPに対するコマンドとデータの順序を制御する制御部
3(413)と、前記コマンドとデータを保持するバッフ
ァであるCBuf(414)と、前記コマンドとデータを
CBuf(414)からRPに出力するためのBufFLレ
ジスタ(415)から構成される。
【0088】以下、光源計算ハードウェア(402)に
対するコマンドをLCOM,RPに対するコマンドをR
PCOMとする。LCOMは、コマンドのデータを、F
I変換する又はしない、パックする又はしないをデータ
毎に指定できる。(コマンドについては、後で詳細に説
明する。) まず、各構成要素について詳細に説明する。
対するコマンドをLCOM,RPに対するコマンドをR
PCOMとする。LCOMは、コマンドのデータを、F
I変換する又はしない、パックする又はしないをデータ
毎に指定できる。(コマンドについては、後で詳細に説
明する。) まず、各構成要素について詳細に説明する。
【0089】(1)GPIF入力部(401)は、SB
Cから送られたコマンドとデータを保持するバッファで
ある。
Cから送られたコマンドとデータを保持するバッファで
ある。
【0090】(2)LBuf(403)は、GPが前記コ
マンドとデータを読み座標変換などを行い設定した光源
計算ハードウェア(402)に対するコマンドとデータ
を保持するバッファである。LBuf(403)は、アド
レス付けされており、メモリの様にアドレスでアクセス
できる。
マンドとデータを読み座標変換などを行い設定した光源
計算ハードウェア(402)に対するコマンドとデータ
を保持するバッファである。LBuf(403)は、アド
レス付けされており、メモリの様にアドレスでアクセス
できる。
【0091】(3)BufSWレジスタ(404)は、L
Buf(403)に保持した前記コマンドとデータを制御
部1(405)へ出力するためのレジスタである。GP
がBufSWレジスタ(404)に転送データ数nを設定
すると、LBuf(403)は、4nバイトの前記コマンド
とデータを制御部1(405)に出力できれば出力し、
出力できない時、GPにその旨(NG)を出力し、GP
はBufSWレジスタ(404)への設定を待つ。
Buf(403)に保持した前記コマンドとデータを制御
部1(405)へ出力するためのレジスタである。GP
がBufSWレジスタ(404)に転送データ数nを設定
すると、LBuf(403)は、4nバイトの前記コマンド
とデータを制御部1(405)に出力できれば出力し、
出力できない時、GPにその旨(NG)を出力し、GP
はBufSWレジスタ(404)への設定を待つ。
【0092】(4)制御部1(405)は、コマンド解
釈部(406),FI変換部(407),パック処理部
(408)から構成される。コマンド解釈部(406)は、
LBuf(403)から送られたコマンドを解釈し、前記
コマンドに従い、FI変換部(407)は必要ならデー
タのFI変換を行い、パック処理部(408)は必要な
ら前記FI変換後のデータのパック処理を行う。制御部
1(405)は、前記コマンドが、光源テーブル(40
9)に値を設定する光源テーブル設定コマンドの時、光
源テーブル(409)の光源計算中フラグがアンロック
なら前記データを設定する。設定できない(フラグがロ
ック)時、制御部1(405)は待つ。制御部1(40
5)は、前記コマンドが、光源計算のみを行う光源計算
コマンド,光源計算を行い色を出力する光源計算&色コ
マンドの時、前記データを光源計算部(410)に出力
できれば出力し、出力できない時、制御部1(405)
は待つ。制御部1(405)は、前記コマンドとデータ
が前記以外の時、前記コマンドとデータを制部2(41
1)に出力できれば出力し、出力できない時、制御部1
(405)は待つ。
釈部(406),FI変換部(407),パック処理部
(408)から構成される。コマンド解釈部(406)は、
LBuf(403)から送られたコマンドを解釈し、前記
コマンドに従い、FI変換部(407)は必要ならデー
タのFI変換を行い、パック処理部(408)は必要な
ら前記FI変換後のデータのパック処理を行う。制御部
1(405)は、前記コマンドが、光源テーブル(40
9)に値を設定する光源テーブル設定コマンドの時、光
源テーブル(409)の光源計算中フラグがアンロック
なら前記データを設定する。設定できない(フラグがロ
ック)時、制御部1(405)は待つ。制御部1(40
5)は、前記コマンドが、光源計算のみを行う光源計算
コマンド,光源計算を行い色を出力する光源計算&色コ
マンドの時、前記データを光源計算部(410)に出力
できれば出力し、出力できない時、制御部1(405)
は待つ。制御部1(405)は、前記コマンドとデータ
が前記以外の時、前記コマンドとデータを制部2(41
1)に出力できれば出力し、出力できない時、制御部1
(405)は待つ。
【0093】(5)光源テーブル(409)は、上述の
実施例において説明した様に8組の光源データを保持
し、光源数が9以上の時は、GPが光源データを入れ替
える。 (6)光源計算部(410)は、上述の実施例において
説明した様に、光源計算コマンド,光源計算&色コマン
ドで光源計算を行い色を算出する。
実施例において説明した様に8組の光源データを保持
し、光源数が9以上の時は、GPが光源データを入れ替
える。 (6)光源計算部(410)は、上述の実施例において
説明した様に、光源計算コマンド,光源計算&色コマン
ドで光源計算を行い色を算出する。
【0094】光源計算部(410)は、制御部1(40
5)から光源計算コマンドを受け取ると、コマンド光源
数Lnum 分、光源計算のみを行い、前回の途中結果の色
と加算して色を算出し、前記色を今回の途中結果の色と
して保持する。
5)から光源計算コマンドを受け取ると、コマンド光源
数Lnum 分、光源計算のみを行い、前回の途中結果の色
と加算して色を算出し、前記色を今回の途中結果の色と
して保持する。
【0095】光源計算部(410)は、制御部1(40
5)から光源計算&色コマンドを受け取ると、コマンド
光源数Lnum 分、光源計算を行い、前回の途中結果の色
と加算して色を算出し、前記色を制御部2(411)に
出力できれば出力し、保持している途中結果の色を自動
的にクリアする。出力できない時、光源計算部(41
0)は待つ。
5)から光源計算&色コマンドを受け取ると、コマンド
光源数Lnum 分、光源計算を行い、前回の途中結果の色
と加算して色を算出し、前記色を制御部2(411)に
出力できれば出力し、保持している途中結果の色を自動
的にクリアする。出力できない時、光源計算部(41
0)は待つ。
【0096】(7)制御部2(411)は、光源計算部
(410)を使用する、及び、使用しない時、LBuf
(403)に設定されたコマンドとデータの順序に従
い、光源計算部(410)と制御部1(405)から送
られたRPに出力するコマンドとデータの順序を制御し
て、前記コマンドとデータを制御部3(413)に出力
できれば出力し、出力できない時、制御部2(411)
は待つ。
(410)を使用する、及び、使用しない時、LBuf
(403)に設定されたコマンドとデータの順序に従
い、光源計算部(410)と制御部1(405)から送
られたRPに出力するコマンドとデータの順序を制御し
て、前記コマンドとデータを制御部3(413)に出力
できれば出力し、出力できない時、制御部2(411)
は待つ。
【0097】(8)制御部3(413)は、制御部2
(411)とGPから送られたRPに出力するコマンド
とデータの順序を制御して、前記コマンドとデータをC
Buf(414)又はBufFLレジスタ(415)に出力
できれば出力し、出力できない時、制御部3(413)
は待つ。光源計算ハードウェア(402)を使用してい
る時、光源計算ハードウェア(402)の使用終了ま
で、GPから制御部3(413)へのアクセスは待たさ
れる。同様に、GPが制御部3(413)へアクセスし
ている時、前記アクセス終了まで、光源計算ハードウェ
ア(402)から制御部3(413)へのアクセスは待
たされる。
(411)とGPから送られたRPに出力するコマンド
とデータの順序を制御して、前記コマンドとデータをC
Buf(414)又はBufFLレジスタ(415)に出力
できれば出力し、出力できない時、制御部3(413)
は待つ。光源計算ハードウェア(402)を使用してい
る時、光源計算ハードウェア(402)の使用終了ま
で、GPから制御部3(413)へのアクセスは待たさ
れる。同様に、GPが制御部3(413)へアクセスし
ている時、前記アクセス終了まで、光源計算ハードウェ
ア(402)から制御部3(413)へのアクセスは待
たされる。
【0098】(9)CBuf(414)は、RPに出力す
るコマンドとデータを保持するバッファである。CBuf
(414)は、アドレス付けされており、メモリの様に
アドレスでアクセスできる。CBuf(414)は、光源
計算ハードウェア(402)を使用する時、CBuf設定コ
マンドを使って光源計算ハードウェア(402)により
設定され、光源計算ハードウェア(402)を使用しな
い時、GPにより直接設定される。このスルーモードに
より、光源計算ハードウェア(402)を使用しない時で
も、GPは直接高速にCBuf(414)へアクセスでき
る。CBuf(414)が保持しているコマンドとデータ
をRPへ出力するには、次の2つの方法がある。光源計
算ハードウェア(402)を使用する時は、出力起動コ
マンドによりBufFLレジスタ(415)に転送データ
数を設定する。光源計算ハードウェア(402)を使用
しない時は、GPが直接BufFLレジスタ(415)に
転送データ数を設定する。
るコマンドとデータを保持するバッファである。CBuf
(414)は、アドレス付けされており、メモリの様に
アドレスでアクセスできる。CBuf(414)は、光源
計算ハードウェア(402)を使用する時、CBuf設定コ
マンドを使って光源計算ハードウェア(402)により
設定され、光源計算ハードウェア(402)を使用しな
い時、GPにより直接設定される。このスルーモードに
より、光源計算ハードウェア(402)を使用しない時で
も、GPは直接高速にCBuf(414)へアクセスでき
る。CBuf(414)が保持しているコマンドとデータ
をRPへ出力するには、次の2つの方法がある。光源計
算ハードウェア(402)を使用する時は、出力起動コ
マンドによりBufFLレジスタ(415)に転送データ
数を設定する。光源計算ハードウェア(402)を使用
しない時は、GPが直接BufFLレジスタ(415)に
転送データ数を設定する。
【0099】(10)BufFLレジスタ(415)は、CB
uf(414)が保持しているコマンドとデータをRPへ
出力するためのレジスタである。転送データ数nをBuf
FLレジスタ(415)に設定すると、CBuf(41
4)は、16nバイトの前記コマンドとデータをRPに
出力できれば出力する。出力できない時、BufFLレジ
スタ(415)は制御部3(413)にNGを出力し、制
御部3(413)はBufFLレジスタ(415)への設定
を待つ。
uf(414)が保持しているコマンドとデータをRPへ
出力するためのレジスタである。転送データ数nをBuf
FLレジスタ(415)に設定すると、CBuf(41
4)は、16nバイトの前記コマンドとデータをRPに
出力できれば出力する。出力できない時、BufFLレジ
スタ(415)は制御部3(413)にNGを出力し、制
御部3(413)はBufFLレジスタ(415)への設定
を待つ。
【0100】次に、光源計算ハードウェア(402)の
コマンドLCOMについて説明する。
コマンドLCOMについて説明する。
【0101】まず、コマンドの種類について説明する。
【0102】光源テーブル設定コマンドは、コマンドと
光源テーブル(409)のアドレスを指定し、光源テー
ブル(409)にデータを設定する。
光源テーブル(409)のアドレスを指定し、光源テー
ブル(409)にデータを設定する。
【0103】光源計算コマンドは、コマンドとコマンド
光源数Lnum を指定し、光源計算部(410)で光源計
算のみを行い算出した色を保持する。
光源数Lnum を指定し、光源計算部(410)で光源計
算のみを行い算出した色を保持する。
【0104】光源計算&色コマンドは、コマンドとコマ
ンド光源数Lnumを指定し、光源計算部(410)で光
源計算を行い算出した色をCBuf(414)に設定す
る。
ンド光源数Lnumを指定し、光源計算部(410)で光
源計算を行い算出した色をCBuf(414)に設定す
る。
【0105】CBuf設定コマンドは、コマンドとCBuf
(414)のアドレスを指定し、CBuf(414)にデ
ータを設定する。
(414)のアドレスを指定し、CBuf(414)にデ
ータを設定する。
【0106】出力起動コマンドは、コマンドと転送デー
タ数を指定し、CBuf(414)に保持しているデータ
をRPに出力する。
タ数を指定し、CBuf(414)に保持しているデータ
をRPに出力する。
【0107】各コマンドは、データ設定先(光源テーブ
ル(409)、又は、CBuf(414))に設定するデータ
に対し、以下の2種類のモードを指定できる。
ル(409)、又は、CBuf(414))に設定するデータ
に対し、以下の2種類のモードを指定できる。
【0108】(1)FI変換は、コマンドのデータを、
データ数分、データ毎にFI変換する又はしないを指定
する。
データ数分、データ毎にFI変換する又はしないを指定
する。
【0109】(2)packは、(1)後のコマンドのデー
タを、データ数分、データ毎にパックする又はしないを
指定する。
タを、データ数分、データ毎にパックする又はしないを
指定する。
【0110】次に、コマンド・フォーマットについて説
明する。
明する。
【0111】図5は、本発明のプロセッサにおけるコマ
ンドのコマンド・フォーマットの一実施例を示す図であ
る。
ンドのコマンド・フォーマットの一実施例を示す図であ
る。
【0112】コマンドは32ビットで、オペコードは4
ビットでコマンドの種類を指定する。
ビットでコマンドの種類を指定する。
【0113】モードは2種類あり、FI変換は8ビット
でデータ毎にFI変換する又はしないを指定し、packは
8ビットでデータ毎にパックする又はしないを指定す
る。
でデータ毎にFI変換する又はしないを指定し、packは
8ビットでデータ毎にパックする又はしないを指定す
る。
【0114】len は4ビットで、コマンドの引数のデー
タ数を指定する。
タ数を指定する。
【0115】最後に、アドレスAdr,転送データ数L
2,コマンド光源数Lnum は8ビットで、コマンドの種
類により、次の様に意味が異なる。Adrは、光源テーブ
ル設定コマンドの時、光源テーブル(409)のアドレ
スで、CBuf設定コマンドの時、CBuf(414)のア
ドレスであり、Adrの8ビットに下位2ビットを0拡張
して10ビットである。
2,コマンド光源数Lnum は8ビットで、コマンドの種
類により、次の様に意味が異なる。Adrは、光源テーブ
ル設定コマンドの時、光源テーブル(409)のアドレ
スで、CBuf設定コマンドの時、CBuf(414)のア
ドレスであり、Adrの8ビットに下位2ビットを0拡張
して10ビットである。
【0116】Lnum は、光源計算コマンド、光源計算&
色コマンドの時、光源計算するコマンド光源数である。
色コマンドの時、光源計算するコマンド光源数である。
【0117】L2は、出力起動コマンドの時で、BufF
Lレジスタに設定する転送データ数で、転送データ量は
16×L2バイトである。
Lレジスタに設定する転送データ数で、転送データ量は
16×L2バイトである。
【0118】次に、モードについて説明する。
【0119】尚、lenが8以下の時はlenのデータ数に従
い途中で打ち切り、len が8より大きい時はd1からd
8を繰り返す。
い途中で打ち切り、len が8より大きい時はd1からd
8を繰り返す。
【0120】FI変換は、dnのビット=0の時、コマ
ンドのデータdnをFI変換せず、dnのビット=1の
時、コマンドのデータdnをFI変換する。
ンドのデータdnをFI変換せず、dnのビット=1の
時、コマンドのデータdnをFI変換する。
【0121】packは、以下の様に動作する。
【0122】dnのビット=0の時、FI変換後のコマ
ンドのデータdn(4バイト)をパックせず、データd
n(4バイト)を、データ設定先(光源テーブル(40
9)、又は、CBuf(414))の4バイトに設定す
る。但し、1つ前のデータdn−1が、既に、データ設
定先の下位2バイトに設定されているなら、次の4バイ
トに設定する。
ンドのデータdn(4バイト)をパックせず、データd
n(4バイト)を、データ設定先(光源テーブル(40
9)、又は、CBuf(414))の4バイトに設定す
る。但し、1つ前のデータdn−1が、既に、データ設
定先の下位2バイトに設定されているなら、次の4バイ
トに設定する。
【0123】dnのビット=1の時、FI変換後のデー
タdn(4バイト)をパックして(4バイトのうち、下
位2バイトが有効)、データdn(2バイト)を、デー
タ設定先(光源テーブル(409)、又は、CBuf(4
14))の下位2バイトに設定する。但し、1つ前のデ
ータdn−1が、既に、データ設定先の下位2バイトに
設定されているなら、前記上位2バイトに設定する。
尚、本実施例では、4バイトの下位2バイトを先に設定
するが、上位2バイトを先に設定する様にしてもよい。
タdn(4バイト)をパックして(4バイトのうち、下
位2バイトが有効)、データdn(2バイト)を、デー
タ設定先(光源テーブル(409)、又は、CBuf(4
14))の下位2バイトに設定する。但し、1つ前のデ
ータdn−1が、既に、データ設定先の下位2バイトに
設定されているなら、前記上位2バイトに設定する。
尚、本実施例では、4バイトの下位2バイトを先に設定
するが、上位2バイトを先に設定する様にしてもよい。
【0124】図11に、本発明のプロセッサのFI変換
とパックの動作の一実施例を示す。LCOMは光源計算
ハードウェアのコマンドで、d1〜d6はコマンドのデ
ータである。
とパックの動作の一実施例を示す。LCOMは光源計算
ハードウェアのコマンドで、d1〜d6はコマンドのデ
ータである。
【0125】尚、データd1〜d3はint 型、データd
4〜d6はfloat 型である。
4〜d6はfloat 型である。
【0126】又、“数”は2進数を意味し、?は0又は
1のどちらでも良いことを意味する。
1のどちらでも良いことを意味する。
【0127】ここで、LCOMのFI変換のd8〜d1
のビット=“??111000”,packのd8〜d1の
ビット=“??001110”の時、以下の様に動作す
る。まず、FI変換については、FI変換のd1,d
2,d3のビット=“0”よりデータd1,d2,d3
はFI変換せず、FI変換のd4,d5,d6のビット
=“1”よりデータd4,d5,d6はFI変換する。
ここで、データd4をFI変換したものを(int)d4
とし、他も同様である。
のビット=“??111000”,packのd8〜d1の
ビット=“??001110”の時、以下の様に動作す
る。まず、FI変換については、FI変換のd1,d
2,d3のビット=“0”よりデータd1,d2,d3
はFI変換せず、FI変換のd4,d5,d6のビット
=“1”よりデータd4,d5,d6はFI変換する。
ここで、データd4をFI変換したものを(int)d4
とし、他も同様である。
【0128】次に、パックについては、packのd1,d
5,d6のビット=“0”よりデータd1,d5,d6
はパックせず、packのd2,d3,d4のビット=
“1”よりデータd2,d3,d4はパックする。ここ
で、パックする前のデータは4バイトであり、パックし
た後のデータは2バイトである。
5,d6のビット=“0”よりデータd1,d5,d6
はパックせず、packのd2,d3,d4のビット=
“1”よりデータd2,d3,d4はパックする。ここ
で、パックする前のデータは4バイトであり、パックし
た後のデータは2バイトである。
【0129】次に、各コマンドの動作について説明す
る。
る。
【0130】(1)光源テーブル設定コマンド 光源テーブル設定コマンドは、モードに従って、コマン
ドのデータを必要ならFI変換,パックし、前記データ
を光源テーブル(409)のアドレスAdrで指定した部
分に設定する。
ドのデータを必要ならFI変換,パックし、前記データ
を光源テーブル(409)のアドレスAdrで指定した部
分に設定する。
【0131】(2)光源計算コマンド 光源計算コマンドは、コマンドのデータがなく、コマン
ドにエンコードされているコマンド光源数(Lnum)分、
光源テーブル(409)を参照して光源計算部(41
0)で光源計算のみを行い色を算出し、前回の途中結果
の色と今回算出した色を加算して色を算出し、前記色を
今回の途中結果として保持する。
ドにエンコードされているコマンド光源数(Lnum)分、
光源テーブル(409)を参照して光源計算部(41
0)で光源計算のみを行い色を算出し、前回の途中結果
の色と今回算出した色を加算して色を算出し、前記色を
今回の途中結果として保持する。
【0132】(3)光源計算&色コマンド 光源計算&色コマンドは、コマンドのデータがなく、コ
マンドにエンコードされているコマンド光源数(Lnum)
分、光源テーブル(409)を参照して光源計算部(4
10)で光源計算を行い色を算出し、前回の途中結果の
色と今回算出した色を加算して色を算出し、前記色をC
Buf(414)に設定した後、保持している途中結果の
色を自動的にクリアする。
マンドにエンコードされているコマンド光源数(Lnum)
分、光源テーブル(409)を参照して光源計算部(4
10)で光源計算を行い色を算出し、前回の途中結果の
色と今回算出した色を加算して色を算出し、前記色をC
Buf(414)に設定した後、保持している途中結果の
色を自動的にクリアする。
【0133】(4)CBuf設定コマンド CBuf設定コマンドは、モードに従って、コマンドのデ
ータを必要ならFI変換,パックし、前記データをCB
uf(414)に設定する。
ータを必要ならFI変換,パックし、前記データをCB
uf(414)に設定する。
【0134】(5)出力起動コマンド 出力起動コマンドは、コマンドのデータがなく、コマン
ドにエンコードされている転送データ数(L2)をBuf
FLレジスタに設定し、CBuf(414)のデータ(1
6×L2バイト)をRPに出力する。
ドにエンコードされている転送データ数(L2)をBuf
FLレジスタに設定し、CBuf(414)のデータ(1
6×L2バイト)をRPに出力する。
【0135】次に、コマンドの使い方と全体の動作につ
いて説明する。
いて説明する。
【0136】図10は、本発明のプロセッサのコマンド
の使い方の一実施例を示す図である。
の使い方の一実施例を示す図である。
【0137】ここでは、説明を簡単にするために、光源
数mが9の時の例について説明する。又、GPは、既
に、幾何処理を行い頂点座標(x,y,z),法線ベク
トル(Nx,Ny,Nz),テクスチャ・データ(s,
t,w,rate)を算出済みであるとする。
数mが9の時の例について説明する。又、GPは、既
に、幾何処理を行い頂点座標(x,y,z),法線ベク
トル(Nx,Ny,Nz),テクスチャ・データ(s,
t,w,rate)を算出済みであるとする。
【0138】(ST1)GPは、共通データ,光源デー
タ1〜8を光源テーブル(409)に設定するために、
光源テーブル設定コマンドLCOM(LtblW),共通デ
ータ,光源データ1〜8をLBuf(403)に設定し、
BufSWレジスタ(404)に転送データ数を設定す
る。もし、BufSWレジスタ(404)に転送データ数
を設定できない時は、BufSWレジスタ(404)がG
PにNGを出力し、GPは待つ。
タ1〜8を光源テーブル(409)に設定するために、
光源テーブル設定コマンドLCOM(LtblW),共通デ
ータ,光源データ1〜8をLBuf(403)に設定し、
BufSWレジスタ(404)に転送データ数を設定す
る。もし、BufSWレジスタ(404)に転送データ数
を設定できない時は、BufSWレジスタ(404)がG
PにNGを出力し、GPは待つ。
【0139】GPIF(400)は、BufSWレジスタ
(404)に転送データ数の設定があると、前記転送デ
ータ数だけLBuf(403)を読み出し実行する。GP
IF(400)は、前記LCOM(LtblW),共通デー
タ,光源データ1〜8を読み出し、前記LCOM(Ltbl
W)に従って必要なら前記データをFI変換、パックし
光源テーブル(409)に設定する。もし、光源テーブ
ル(409)にデータを設定できない時は、GPIF
(400)は待つ。
(404)に転送データ数の設定があると、前記転送デ
ータ数だけLBuf(403)を読み出し実行する。GP
IF(400)は、前記LCOM(LtblW),共通デー
タ,光源データ1〜8を読み出し、前記LCOM(Ltbl
W)に従って必要なら前記データをFI変換、パックし
光源テーブル(409)に設定する。もし、光源テーブ
ル(409)にデータを設定できない時は、GPIF
(400)は待つ。
【0140】(ST2)GPは、まず、RPに対する連
続三角形(Triangle Strip)の描画コマンドRPCOM
(Strip),頂点座標(x,y,z)をCBuf(414)
に設定するために、CBuf設定コマンドLCOM(CB
ufW),RPCOM(Strip),頂点座標(x,y,z)
をLBuf(403)に設定する。次に、法線ベクトル
(Nx,Ny,Nz)を光源テーブル(409)に設定
するために、LCOM(LtblW),法線ベクトル(N
x,Ny,Nz)をLBuf(403)に設定する。そし
て、光源データ1〜8の光源計算を行うために、光源計
算コマンドLCOM(Lcalc)をLBuf(403)に設
定し、BufSWレジスタ(404)に転送データ数を設
定する。もし、BufSWレジスタ(404)に転送デー
タ数を設定できない時は、BufSWレジスタ(404)
がGPにNGを出力し、GPは待つ。GPIF(40
0)は、まず、前記LCOM(CBufW),RPCOM
(Strip),頂点座標(x,y,z)を読み出し、前記L
COM(CBufW)に従って必要なら前記データをFI
変換、パックしCBuf(414)に設定する。もし、CB
uf(414)にデータを設定できない時は、GPIF
(400)は待つ。次に、前記LCOM(LtblW),法
線ベクトル(Nx,Ny,Nz)を読み出し、前記LC
OM(LtblW)に従って必要なら前記データをFI変
換,パックし光源テーブル(409)に設定する。も
し、光源テーブル(409)にデータを設定できない時
は、GPIF(400)は待つ。そして、前記LCOM
(Lcalc)を読み出し、前記LCOM(Lcalc)に従っ
て、光源テーブル(409)の値を用いて、光源データ
1〜8の光源計算のみを行い、算出した色を途中結果の
色として保持する。ここで、光源計算部(410)は、
上述の実施例において説明した様に著しく高速に光源計
算を行う。
続三角形(Triangle Strip)の描画コマンドRPCOM
(Strip),頂点座標(x,y,z)をCBuf(414)
に設定するために、CBuf設定コマンドLCOM(CB
ufW),RPCOM(Strip),頂点座標(x,y,z)
をLBuf(403)に設定する。次に、法線ベクトル
(Nx,Ny,Nz)を光源テーブル(409)に設定
するために、LCOM(LtblW),法線ベクトル(N
x,Ny,Nz)をLBuf(403)に設定する。そし
て、光源データ1〜8の光源計算を行うために、光源計
算コマンドLCOM(Lcalc)をLBuf(403)に設
定し、BufSWレジスタ(404)に転送データ数を設
定する。もし、BufSWレジスタ(404)に転送デー
タ数を設定できない時は、BufSWレジスタ(404)
がGPにNGを出力し、GPは待つ。GPIF(40
0)は、まず、前記LCOM(CBufW),RPCOM
(Strip),頂点座標(x,y,z)を読み出し、前記L
COM(CBufW)に従って必要なら前記データをFI
変換、パックしCBuf(414)に設定する。もし、CB
uf(414)にデータを設定できない時は、GPIF
(400)は待つ。次に、前記LCOM(LtblW),法
線ベクトル(Nx,Ny,Nz)を読み出し、前記LC
OM(LtblW)に従って必要なら前記データをFI変
換,パックし光源テーブル(409)に設定する。も
し、光源テーブル(409)にデータを設定できない時
は、GPIF(400)は待つ。そして、前記LCOM
(Lcalc)を読み出し、前記LCOM(Lcalc)に従っ
て、光源テーブル(409)の値を用いて、光源データ
1〜8の光源計算のみを行い、算出した色を途中結果の
色として保持する。ここで、光源計算部(410)は、
上述の実施例において説明した様に著しく高速に光源計
算を行う。
【0141】(ST3)GPは、光源データ9を光源テ
ーブル(409)に設定するために、LCOM(Ltbl
W)、光源データ9をLBuf(403)に設定し、Buf
SWレジスタ(404)に転送データ数を設定する。
(光源データ9を、光源データ1の部分に上書きする。
光源データ1は破壊される。)もし、BufSWレジスタ
(404)に転送データ数を設定できない時は、BufS
Wレジスタ(404)がGPにNGを出力し、GPは待
つ。
ーブル(409)に設定するために、LCOM(Ltbl
W)、光源データ9をLBuf(403)に設定し、Buf
SWレジスタ(404)に転送データ数を設定する。
(光源データ9を、光源データ1の部分に上書きする。
光源データ1は破壊される。)もし、BufSWレジスタ
(404)に転送データ数を設定できない時は、BufS
Wレジスタ(404)がGPにNGを出力し、GPは待
つ。
【0142】GPIF(400)は、前記LCOM(L
tblW)、光源データ9を読み出し、前記LCOM(Ltb
lW)に従って必要なら前記データをFI変換,パック
し光源テーブル(409)に設定する。もし、光源テー
ブル(409)にデータを設定できない時は、GPIF
(400)は待つ。
tblW)、光源データ9を読み出し、前記LCOM(Ltb
lW)に従って必要なら前記データをFI変換,パック
し光源テーブル(409)に設定する。もし、光源テー
ブル(409)にデータを設定できない時は、GPIF
(400)は待つ。
【0143】(ST4)GPは、まず、光源データ9の
光源計算を行い色を出力するために、光源データ9の光
源計算&色コマンドLCOM(LcalcC)をLBuf(4
03)に設定する。次に、テクスチャ・データ(s,
t,w,rate)をCBuf(414)に設定するために、L
COM(CBufW),テクスチャ・データ(s,t,
w,rate)をLBuf(403)に設定する。そして、C
Buf(414)に保持しているデータをRPに出力する
ために、出力起動コマンドLCOM(Exec)をLBuf
(403)に設定し、BufSWレジスタ(404)に転
送データ数を設定する。もし、BufSWレジスタ(40
4)に転送データ数を設定できない時は、BufSWレジ
スタ(404)がGPにNGを出力し、GPは待つ。
光源計算を行い色を出力するために、光源データ9の光
源計算&色コマンドLCOM(LcalcC)をLBuf(4
03)に設定する。次に、テクスチャ・データ(s,
t,w,rate)をCBuf(414)に設定するために、L
COM(CBufW),テクスチャ・データ(s,t,
w,rate)をLBuf(403)に設定する。そして、C
Buf(414)に保持しているデータをRPに出力する
ために、出力起動コマンドLCOM(Exec)をLBuf
(403)に設定し、BufSWレジスタ(404)に転
送データ数を設定する。もし、BufSWレジスタ(40
4)に転送データ数を設定できない時は、BufSWレジ
スタ(404)がGPにNGを出力し、GPは待つ。
【0144】GPIF(400)は、まず、前記LCO
M(LcalcC)を読み出し、光源データ9の光源計算を
行い、(ST2)の途中結果の色に加算して色(I.r,
I.g,I.b,I.a)を算出しCBuf(414)に設定
する。もし、CBuf(414)にデータを設定できない時
は、GPIF(400)は待つ。次に、GPIF(400)
は、前記LCOM(CBufW),テクスチャ・データ
(s,t,w,rate)を読み出し、前記LCOM(CB
ufW)に従って必要なら前記データをFI変換,パック
しCBuf(414)に設定する。もし、CBuf(41
4)にデータを設定できない時は、GPIF(400)
は待つ。そして、GPIF(400)は、前記LCOM
(Exec)を読み出し、転送データ数L2をBufFLレ
ジスタ(415)に設定し、CBuf(414)のデータ
(16×L2バイト)をRPに出力できれば出力する。
もし、RPがデータを受け取れない時は、RPがGPI
F(400)にNGを出力し、GPIF(400)は待
つ。
M(LcalcC)を読み出し、光源データ9の光源計算を
行い、(ST2)の途中結果の色に加算して色(I.r,
I.g,I.b,I.a)を算出しCBuf(414)に設定
する。もし、CBuf(414)にデータを設定できない時
は、GPIF(400)は待つ。次に、GPIF(400)
は、前記LCOM(CBufW),テクスチャ・データ
(s,t,w,rate)を読み出し、前記LCOM(CB
ufW)に従って必要なら前記データをFI変換,パック
しCBuf(414)に設定する。もし、CBuf(41
4)にデータを設定できない時は、GPIF(400)
は待つ。そして、GPIF(400)は、前記LCOM
(Exec)を読み出し、転送データ数L2をBufFLレ
ジスタ(415)に設定し、CBuf(414)のデータ
(16×L2バイト)をRPに出力できれば出力する。
もし、RPがデータを受け取れない時は、RPがGPI
F(400)にNGを出力し、GPIF(400)は待
つ。
【0145】以上、詳細に説明した様に、本発明の図形
表示装置に適したプロセッサは、光源計算に必要なfl
oat 型のデータをFI変換部によりint 型のデータ
へ変換し、前記変換結果をパック処理部によりint 型の
データからshort int 型のデータへ変換し、前記変換結
果を上述の実施例において説明した光源テーブルに保持
し、光源計算部によりshort int 型で光源計算を行い頂
点の色を算出することができるので、著しく高速に光源
計算を行うことができる。
表示装置に適したプロセッサは、光源計算に必要なfl
oat 型のデータをFI変換部によりint 型のデータ
へ変換し、前記変換結果をパック処理部によりint 型の
データからshort int 型のデータへ変換し、前記変換結
果を上述の実施例において説明した光源テーブルに保持
し、光源計算部によりshort int 型で光源計算を行い頂
点の色を算出することができるので、著しく高速に光源
計算を行うことができる。
【0146】又、本発明のプロセッサは、光源計算ハー
ドウェアとGPから送られたデータの順序を制御する制
御部3、及び、それによるスルーモードにより、光源計
算ハードウェアを使用しない時でも、GPがRPへ著し
く高速にデータを出力することができる。
ドウェアとGPから送られたデータの順序を制御する制
御部3、及び、それによるスルーモードにより、光源計
算ハードウェアを使用しない時でも、GPがRPへ著し
く高速にデータを出力することができる。
【0147】そして、本発明のプロセッサを制御するた
めの、各種コマンド、及び、それを用いた制御方法によ
り、著しく高速にプロセッサを制御することができる。
めの、各種コマンド、及び、それを用いた制御方法によ
り、著しく高速にプロセッサを制御することができる。
【0148】以上の様に、本発明の図形表示装置に適し
たプロセッサは、光源計算を著しく高速化することがで
きる。
たプロセッサは、光源計算を著しく高速化することがで
きる。
【0149】以上により、図形の描画処理時間を著しく
短縮することができる。
短縮することができる。
【0150】図4は、本発明のグラフィックシステムの
全体構成図である。
全体構成図である。
【0151】本発明のグラフィックシステムは、アプリ
ケーションなどを実行するCPU(5010),主メモ
リMM(5030)等を制御するメモリ・コントローラM
C(5020),ジオメトリ・プロセッサ・エレメントG
PE−0〜n(5050〜505n)へのデータの分配
を行うコントローラであるシステム・バス・コントロー
ラSBC(5040)、座標変換などの幾何処理を行う
ジオメトリ・プロセッサGP−0〜n(5100〜51
0n)、GP−0〜n(5100〜510n)の専用メモ
リであるプライベート・メモリPM−0〜n(5110
〜511n)、GP−0〜n(5100〜510n)の
入出力やPM−0〜n(5110〜511n)を制御す
るプロセッサGPIF−0〜n(5060〜506
n)、図形を画素展開し描画するレンダリング・プロセ
ッサRP(5120),描画した画像を保持するフレー
ム・メモリFM(5130),画像を表示するディスプ
レイDISPLAY(5140)から構成される。
ケーションなどを実行するCPU(5010),主メモ
リMM(5030)等を制御するメモリ・コントローラM
C(5020),ジオメトリ・プロセッサ・エレメントG
PE−0〜n(5050〜505n)へのデータの分配
を行うコントローラであるシステム・バス・コントロー
ラSBC(5040)、座標変換などの幾何処理を行う
ジオメトリ・プロセッサGP−0〜n(5100〜51
0n)、GP−0〜n(5100〜510n)の専用メモ
リであるプライベート・メモリPM−0〜n(5110
〜511n)、GP−0〜n(5100〜510n)の
入出力やPM−0〜n(5110〜511n)を制御す
るプロセッサGPIF−0〜n(5060〜506
n)、図形を画素展開し描画するレンダリング・プロセ
ッサRP(5120),描画した画像を保持するフレー
ム・メモリFM(5130),画像を表示するディスプ
レイDISPLAY(5140)から構成される。
【0152】ここで、GPIF−0〜n(5060〜5
06n)は、図3を用いて説明した様に、SBC(50
40)から送られたデータを保持するGPIF入力部−
0〜n(5070〜507n),光源計算を行うハード
ウェアである光源計算ハードウェア−0〜n(5080
〜508n),RP(5120)へ出力するデータを保
持するGPIF出力部−0〜n(5090〜509n)
から構成される。
06n)は、図3を用いて説明した様に、SBC(50
40)から送られたデータを保持するGPIF入力部−
0〜n(5070〜507n),光源計算を行うハード
ウェアである光源計算ハードウェア−0〜n(5080
〜508n),RP(5120)へ出力するデータを保
持するGPIF出力部−0〜n(5090〜509n)
から構成される。
【0153】尚、図4に示した様にGPE−0〜n(5
050〜505n)は、n個を並列接続してもよいし、
1つでもよい。
050〜505n)は、n個を並列接続してもよいし、
1つでもよい。
【0154】次に、全体の動作について説明する。
【0155】CPU(5010)は、アプリケーション
を実行し、GP−0〜n(5100〜510n)に対す
るグラフィックス・コマンド(描画コマンド)と描画する
図形の頂点座標,法線ベクトル,テクスチャ・データ
や、材質の各反射係数,光源の各反射光用の色などのデ
ータを発行し、MC(5020)を介してSBC(5040)
に出力する。
を実行し、GP−0〜n(5100〜510n)に対す
るグラフィックス・コマンド(描画コマンド)と描画する
図形の頂点座標,法線ベクトル,テクスチャ・データ
や、材質の各反射係数,光源の各反射光用の色などのデ
ータを発行し、MC(5020)を介してSBC(5040)
に出力する。
【0156】SBC(5040)は、CPU(501
0)から送られた前記コマンドとデータをGPE−0〜
n(5050〜505n)に分配する。
0)から送られた前記コマンドとデータをGPE−0〜
n(5050〜505n)に分配する。
【0157】プロセッサGPIF−0〜n(5060〜
506n)は、SBC(5040)から送られた前記コマ
ンドとデータをGPIF入力部−0〜n(5070〜5
07n)に保持する。
506n)は、SBC(5040)から送られた前記コマ
ンドとデータをGPIF入力部−0〜n(5070〜5
07n)に保持する。
【0158】GP−0〜n(5100〜510n)は、G
PIF入力部−0〜n(5070〜507n)に保持し
ているコマンドとデータを読み、前記コマンドとデータ
に従い座標変換などの幾何処理を行い、頂点座標,法線
ベクトル,テクスチャ・データなどを算出し、コマンド
とデータを光源計算ハードウェア−0〜n(5080〜
508n)に設定する。
PIF入力部−0〜n(5070〜507n)に保持し
ているコマンドとデータを読み、前記コマンドとデータ
に従い座標変換などの幾何処理を行い、頂点座標,法線
ベクトル,テクスチャ・データなどを算出し、コマンド
とデータを光源計算ハードウェア−0〜n(5080〜
508n)に設定する。
【0159】光源計算ハードウェア−0〜n(5080
〜508n)は、上述のように、前記コマンドとデータ
に従って、光源計算を行い頂点の色を算出し、RP(5
120)に対する連続三角形描画コマンド,頂点座標,
色,テクスチャ・データをGPIF出力部−0〜n(509
0〜509n)に出力する。
〜508n)は、上述のように、前記コマンドとデータ
に従って、光源計算を行い頂点の色を算出し、RP(5
120)に対する連続三角形描画コマンド,頂点座標,
色,テクスチャ・データをGPIF出力部−0〜n(509
0〜509n)に出力する。
【0160】GPIF出力部−0〜n(5090〜50
9n)は、頂点座標,色,テクスチャ・データをRP
(5120)に出力する。
9n)は、頂点座標,色,テクスチャ・データをRP
(5120)に出力する。
【0161】RP(5120)は、前記コマンドとデータ
から図形の内部の画素を内挿補間により1画素ずつ展開
して描画するレンダリング処理を行い、DISPLAY(514
0)に表示する内容をビットマップ形式で保持するFM
(5130)に書き込み、画像をDISPLAY(5140)に
表示する。
から図形の内部の画素を内挿補間により1画素ずつ展開
して描画するレンダリング処理を行い、DISPLAY(514
0)に表示する内容をビットマップ形式で保持するFM
(5130)に書き込み、画像をDISPLAY(5140)に
表示する。
【0162】以上、詳細に説明した様に、本発明のグラ
フィックシステムは、図3を用いて説明したグラフィッ
クプロセッサを用いることにより、グラフィックシステ
ムのシェーディング処理における光源計算を著しく高速
化することができる。
フィックシステムは、図3を用いて説明したグラフィッ
クプロセッサを用いることにより、グラフィックシステ
ムのシェーディング処理における光源計算を著しく高速
化することができる。
【0163】以上により、図形の描画処理時間を著しく
短縮することができる。
短縮することができる。
【0164】
【発明の効果】以上、詳細に説明した様に、本発明の光
源計算手段、それを有する図形表示装置に適したプロセ
ッサ、及び、それを適用した図形表示装置は、図形表示
装置のシェーディング処理における光源計算を著しく高
速化している。これにより、図形の描画処理時間が著し
く短縮され、システムの操作性が向上するという特有の
効果が得られる。
源計算手段、それを有する図形表示装置に適したプロセ
ッサ、及び、それを適用した図形表示装置は、図形表示
装置のシェーディング処理における光源計算を著しく高
速化している。これにより、図形の描画処理時間が著し
く短縮され、システムの操作性が向上するという特有の
効果が得られる。
【図1】本発明の光源計算部の一実施例を示す構成図。
【図2】本発明の光源計算部の他の実施例を示す構成
図。
図。
【図3】本発明のグラフィックプロセッサの全体構成
図。
図。
【図4】図3に示すグラフィックプロセッサを用いたシ
ステの全体構成図。
ステの全体構成図。
【図5】本発明のプロセッサのコマンド・フォーマット
の一例を示す図。
の一例を示す図。
【図6】光源とベクトルの関係を示す図。
【図7】本発明の光源テーブルの一例を示す図。
【図8】本発明の光源テーブルの他の例を示す図。
【図9】本発明の光源テーブルの他の例を示す図。
【図10】本発明のプロセッサのコマンドの使い方の一
実施例を示す図。
実施例を示す図。
【図11】本発明のプロセッサのFI変換,パックの動
作の一実施例を示す図。
作の一実施例を示す図。
100…光源テーブル1、110…光源テーブル制御
部、120…内積算出部1−1、130…内積算出部1
−2、150…べき乗算出部、160…色算出部、17
0…クリア部、400…GPIF、401…GPIF入
力部、402…光源計算ハードウェア、403…LBu
f、404…BufSWレジスタ、405…制御部1、4
06…コマンド解釈部、407…FI変換部、408…
パック処理部、411…制御部2、412…GPIF出
力部、413…制御部3。
部、120…内積算出部1−1、130…内積算出部1
−2、150…べき乗算出部、160…色算出部、17
0…クリア部、400…GPIF、401…GPIF入
力部、402…光源計算ハードウェア、403…LBu
f、404…BufSWレジスタ、405…制御部1、4
06…コマンド解釈部、407…FI変換部、408…
パック処理部、411…制御部2、412…GPIF出
力部、413…制御部3。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 安部 雄一 茨城県日立市大みか町七丁目1番1号 株式会社 日立製作所 日立研究所内 (72)発明者 曽我 満 茨城県日立市大みか町七丁目1番1号 株式会社 日立製作所 日立研究所内 (72)発明者 高見 和久 茨城県日立市大みか町七丁目1番1号 株式会社 日立製作所 日立研究所内 (72)発明者 桂 晃洋 茨城県日立市大みか町七丁目1番1号 株式会社 日立製作所 日立研究所内 (72)発明者 藤井 秀樹 茨城県日立市大みか町五丁目2番1号 株式会社 日立製作所 大みか工場内 (72)発明者 鬼木 一徳 茨城県日立市大みか町五丁目2番1号 株式会社 日立製作所 大みか工場内 (56)参考文献 特開 平6−203175(JP,A) 特開 昭63−29891(JP,A) 特開 昭64−1082(JP,A) 特開 平6−176167(JP,A) 特開 昭61−272879(JP,A) 特開 昭61−220072(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06T 15/50 G06T 15/00 JICSTファイル(JOIS)
Claims (7)
- 【請求項1】少なくとも3次元図形の各頂点における法
線方向と光源方向及び視線方向の内積を算出し前記各頂
点の色を求めるグラフィックプロセッサにおいて、m個の 光源データと、当該各光源データ毎に光源計算中
か否かを表わす光源計算中フラグとを保持する光源テー
ブルと、 前記光源テーブルに設定する光源データをfloat型(単
精度浮動小数点実数型)からint型(整数型)へ変換する
変換部と、 前記光源データに基づいて前記各頂点における法線方向
と光源方向及び視線方向の内積を算出する内積算出部
と、 前記算出された内積に基づいて光源計算を行い前記各頂
点の色を算出する色算出部と、前記光源計算開始時、全ての光源データに対応する前記
フラグをロックし、光源計算される毎に順次対応する前
記フラグをアンロックする光源テーブル制御部 とを有す
ることを特徴とするグラフィックプロセッサ。 - 【請求項2】 請求項1において、前記光源テーブル制御
部は、前記フラグがアンロックされた光源テーブルの位
置に、新たな光源データを設定することにより、m+1
個以上の光源データを前記光源テーブルに設定すること
を特徴とするグラフィックプロセッサ。 - 【請求項3】 請求項1において、 前記光源テーブルに保持される光源データは、 各光源で共通なデータである法線ベクトルN,放射反射
光成分と全体の環境反射光成分K及び材質の鏡面指数S
Mと、光源i(i=1〜m)毎に固有のデータである光源
方向ベクトルL.i,ハーフウェイ・ベクトルH.i,減
衰係数At.iとスポット光源効果Sp.iの積AtS
p.i,環境反射光成分の係数Ca.i,拡散反射光成分
の係数Cd.i及び鏡面反射光成分の係数Cs.iからな
り、 前記内積算出部は、内積(N・H.i)及び内積(N・
L.i)を計算し、 前記色算出部は、以下の式 【数1】 但し、 (N・H.i)のSM乗(N・H.i)^SM, 光源数m, 光源i(i=1〜m), 光源計算で算出した色I=(I.r,I.g,I.b) を実行することにより前記各頂点の色を算出することを
特徴とするグラフィックプロセッサ。 - 【請求項4】 請求項1において、 前記光源テーブルに保持される光源データは、 各光源で共通なデータである法線ベクトルN,透明度
a,材質の環境反射係数Ka=(Ka.r,Ka.g,K
a.b),材質の拡散反射係数Kd=(Kd.r,Kd.
g,Kd.b),材質の鏡面反射係数Ks=(Ks.r,
Ks.g,Ks.b),放射反射光成分の色と全体の環境
反射光成分の色の和K=(K.r,K.g,K.b)及び材
質の鏡面指数SMと、光源i(i=1〜m)毎に固有の
データである光源方向ベクトルL.i=(Lx.i,Ly.
i,Lz.i),ハーフウェイ・ベクトルH.i=(Hx.
i,Hy.i,Hz.i),減衰係数At.iとスポット
光源効果Sp.iの積AtSp.i,光源の環境反射光用
の色Lca.i=(Lca.r.i,Lca.g.i,Lca.b.
i),光源の拡散反射光用の色Lcd.i=(Lcd.r.i,
Lcd.g.i,Lcd.b.i)及び光源の鏡面反射光用の色
Lcs.i=(Lcs.r.i,Lcs.g.i,Lcs.b.i)から
なり、 前記内積算出部は、前記法線ベクトルNとハーフウェイ
・ベクトルH.i の内積(N・H.i)及び前記法線ベク
トルNと光源方向ベクトルL.iの内積(N・L.i)を算
出し、 前記色算出部は、以下の式 【数2】 但し (N・H.i)のSM乗(N・H.i)^SM, 光源数m, 光源i(i=1〜m), 光源計算で算出した色I=(I.r,I.g,I.b,I.
a) を実行することにより前記各頂点の色を算出することを
特徴とするグラフィックプロセッサ。 - 【請求項5】 請求項1において、 前記光源テーブルに保持される光源データは、 各光源で共通なデータである法線ベクトルN,透明度
a,材質の環境反射係数Ka=(Ka.r,Ka.g,K
a.b),材質の拡散反射係数Kd=(Kd.r,Kd.
g,Kd.b),材質の鏡面反射係数Ks=(Ks.r,
Ks.g,Ks.b),材質の放射反射係数Ke=(Ke.
r,Ke.g,Ke.b),材質の鏡面指数SM及び全体
の環境光源の各反射光用の色Lcta=(Lcta.r,Lcta.
g,Lcta.b)と、光源i(i=1〜m)毎に固有のデ
ータである光源方向ベクトルL.i=(Lx.i,Ly.
i,Lz.i),ハーフウェイ・ベクトルH.i=(H
x.i,Hy.i,Hz.i),減衰係数At.i,スポッ
ト光源方向ベクトルSD.i=(SDx.i,SDy.
i,SDz.i),スポット光源指数SE.i,光源の環
境反射光用の色Lca.i=(Lca.r.i,Lca.g.i,L
ca.b.i),光源の拡散反射光用の色Lcd.i=(Lcd.
r.i,Lcd.g.i,Lcd.b.i)及び光源の鏡面反射
光用の色Lcs.i=(Lcs.r.i,Lcs.g.i,Lcs.b.
i)からなり、 前記内積算出部は、前記法線ベクトルNとハーフウェイ
・ベクトルH.i の内積(N・H.i)及び前記法線ベク
トルNと光源方向ベクトルL.iの内積(N・L.i) を
算出し、 前記色算出部は、以下の式 【数3】 但し (N・H.i)のSM乗(N・H.i)^SM, (−SD.i・L.i)のSE.i乗(−SD.i・L.
i)^SE.i, スポット光源のカットオフ指数SC.i, 光源数m, 光源i(i=1〜m), 光源計算で算出した色I=(I.r,I.g,I.b,I.
a) (−SD.i・L.i)^SE.i=1 :平行光源,点光源の時 =(−SD.i・L.i)^SE.i :スポット光源の照射範囲内 (−SD.i・L.i)≧cos(SC.i) =0 :スポット光源の照射範囲外 (−SD.i・L.i)<cos(SC.i) を実行することにより前記各頂点の色を算出することを
特徴とするグラフィックプロセッサ。 - 【請求項6】少なくとも3次元図形の各頂点における法
線方向と光源方向及び視線方向の内積を算出し前記各頂
点の色を求めるグラフィックプロセッサと、フレームメ
モリと、前記求められた各頂点の色に基づいて図形の内
部の画素を内挿補間し前記フレームメモリに書き込むレ
ンダリングプロセッサと表示装置を備えたグラフィック
システムにおいて、 前記グラフィックプロセッサは、m個の 光源データと、当該各光源データ毎に光源計算中
か否かを表わす光源計算中フラグとを保持する光源テー
ブルと、 前記光源テーブルに設定する光源データをfloat型(単
精度浮動小数点実数型)からint型(整数型)へ変換する
変換部と、 前記光源データに基づいて前記各頂点における法線方向
と光源方向及び視線方向の内積を算出する内積算出部
と、 前記算出された内積に基づいて光源計算を行い前記各頂
点の色を算出する色算出部と、前記光源計算開始時、全ての光源データに対応する前記
フラグをロックし、光源計算される毎に順次対応する前
記フラグをアンロックする光源テーブル制御部 とを有す
ることを特徴とするグラフィックシステム。 - 【請求項7】 請求項6において、前記光源テーブル制御
部は、前記フラグがアンロックされた光源テーブルの位
置に、新たな光源データを設定することにより、m+1
個以上の光源データを前記光源テーブルに設定すること
を特徴とするグラフィックシステム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08004517A JP3087640B2 (ja) | 1996-01-16 | 1996-01-16 | グラフィックプロセッサ及びシステム |
CA002193425A CA2193425C (en) | 1996-01-16 | 1996-12-19 | Graphics processor and a graphics system |
US08/769,356 US6118453A (en) | 1996-01-16 | 1996-12-19 | Graphics processor and system for determining colors of the vertices of a figure |
US10/223,600 US6756981B2 (en) | 1996-01-16 | 2002-08-20 | Graphics processor and system for determining colors of the vertices of a figure |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP08004517A JP3087640B2 (ja) | 1996-01-16 | 1996-01-16 | グラフィックプロセッサ及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09198525A JPH09198525A (ja) | 1997-07-31 |
JP3087640B2 true JP3087640B2 (ja) | 2000-09-11 |
Family
ID=11586255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP08004517A Expired - Fee Related JP3087640B2 (ja) | 1996-01-16 | 1996-01-16 | グラフィックプロセッサ及びシステム |
Country Status (3)
Country | Link |
---|---|
US (2) | US6118453A (ja) |
JP (1) | JP3087640B2 (ja) |
CA (1) | CA2193425C (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352400B2 (en) | 1991-12-23 | 2013-01-08 | Hoffberg Steven M | Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore |
US6049343A (en) * | 1997-01-20 | 2000-04-11 | Hitachi, Ltd. | Graphics processing unit and graphics processing system |
US7904187B2 (en) | 1999-02-01 | 2011-03-08 | Hoffberg Steven M | Internet appliance system and method |
US20020126127A1 (en) * | 2001-01-11 | 2002-09-12 | International Business Machines Corporation | Lighting processing circuitry for graphics adapter |
JP3580779B2 (ja) * | 2001-02-21 | 2004-10-27 | 株式会社コナミコンピュータエンタテインメントジャパン | 画像の表現方法及びそれに用いるプログラム |
GB0109720D0 (en) * | 2001-04-20 | 2001-06-13 | Koninkl Philips Electronics Nv | Display apparatus and image encoded for display by such an apparatus |
JP4052831B2 (ja) * | 2001-12-19 | 2008-02-27 | 株式会社ルネサステクノロジ | レンダリング処理装置およびレンダリング処理方法 |
KR20030083962A (ko) * | 2002-04-24 | 2003-11-01 | 주식회사 알오지 | 3차원 렌더링 이미지에 쉐이딩 효과를 적용하는 방법 및이를 구현한 프로그램을 저장한 정보저장매체 |
CN100589674C (zh) * | 2003-03-26 | 2010-02-10 | 松下电工株式会社 | 创建虚拟三维照明场景的模拟方法和系统 |
KR100834938B1 (ko) * | 2006-07-11 | 2008-06-03 | 엠텍비젼 주식회사 | 3차원 그래픽의 광원 파라미터 저장 회로 및 상기 광원파라미터를 이용한 조명 처리 연산 방법 |
KR100803220B1 (ko) * | 2006-11-20 | 2008-02-14 | 삼성전자주식회사 | 다중 파이프라인의 3차원 그래픽스 렌더링 방법 및 장치 |
JP5007633B2 (ja) * | 2007-09-04 | 2012-08-22 | 株式会社セガ | 画像処理用プログラム、当該プログラムを記録したコンピュータ読み取り可能な記録媒体、画像処理装置、画像処理方法 |
CN101918921B (zh) * | 2008-01-27 | 2013-12-04 | 思杰系统有限公司 | 用于远程提供三维图形的方法和系统 |
CN107766078A (zh) * | 2016-08-15 | 2018-03-06 | 法乐第(北京)网络科技有限公司 | 变量值存储方法、读取方法、操作执行方法及装置 |
CN109992459B (zh) * | 2019-03-29 | 2023-03-28 | 合芯科技(苏州)有限公司 | 数据转换方法、装置、设备及存储介质 |
CN115861520B (zh) * | 2023-02-02 | 2023-04-28 | 深圳思谋信息科技有限公司 | 高光检测方法、装置、计算机设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6329891A (ja) * | 1986-07-23 | 1988-02-08 | Hitachi Ltd | 多重光源シエ−デイング装置 |
GB2271257A (en) * | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
GB2271261A (en) * | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
-
1996
- 1996-01-16 JP JP08004517A patent/JP3087640B2/ja not_active Expired - Fee Related
- 1996-12-19 US US08/769,356 patent/US6118453A/en not_active Expired - Lifetime
- 1996-12-19 CA CA002193425A patent/CA2193425C/en not_active Expired - Fee Related
-
2002
- 2002-08-20 US US10/223,600 patent/US6756981B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20020196254A1 (en) | 2002-12-26 |
JPH09198525A (ja) | 1997-07-31 |
CA2193425A1 (en) | 1997-07-17 |
US6756981B2 (en) | 2004-06-29 |
CA2193425C (en) | 2002-03-19 |
US6118453A (en) | 2000-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3087640B2 (ja) | グラフィックプロセッサ及びシステム | |
US8098257B2 (en) | Filtering unit for floating-point texture data | |
US5745125A (en) | Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance | |
EP0933729A2 (en) | Three-dimensional graphics accelerator | |
EP2053560B1 (en) | Vertex blending in a graphics processor | |
US6115047A (en) | Method and apparatus for implementing efficient floating point Z-buffering | |
US7009607B2 (en) | Method, apparatus and article of manufacture for a transform module in a graphics processor | |
JP3860859B2 (ja) | 高性能プリミティブ・クリッピング・プリプロセシングを有するコンピュータ・グラフィックス・システム | |
US6954204B2 (en) | Programmable graphics system and method using flexible, high-precision data formats | |
US6169554B1 (en) | Clip testing unit for a three-dimensional graphics accelerator | |
US7986325B1 (en) | Loading integer-based data into a graphics processing system | |
US7659893B1 (en) | Method and apparatus to ensure consistency of depth values computed in different sections of a graphics processor | |
US6037947A (en) | Graphics accelerator with shift count generation for handling potential fixed-point numeric overflows | |
TW201618041A (zh) | 來自片段著色器程式之樣本遮罩的控制 | |
JP2006244426A (ja) | テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法 | |
EP0889441B1 (en) | Lighting unit and method for a three-dimensional graphics accelerator | |
US7593010B2 (en) | Software-implemented transform and lighting module and pipeline for graphics rendering on embedded platforms using a fixed-point normalized homogenous coordinate system | |
US5696944A (en) | Computer graphics system having double buffered vertex ram with granularity | |
US5724602A (en) | Multiprocessor apparatus | |
US5784075A (en) | Memory mapping techniques for enhancing performance of computer graphics system | |
US6016149A (en) | Lighting unit for a three-dimensional graphics accelerator with improved processing of multiple light sources | |
GB2536232A (en) | Graphics Processing Systems | |
JP2001202527A (ja) | 3次元図形表示方法および3次元描画装置 | |
JP2755289B2 (ja) | レンダリング方法 | |
JP3839870B2 (ja) | 四辺形を表わす画素データを生成する装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |