JPH11272880A - 固定小数点ライティング・ユニットを用いたロ―カル・アイ・ベクトルの高速計算方法 - Google Patents
固定小数点ライティング・ユニットを用いたロ―カル・アイ・ベクトルの高速計算方法Info
- Publication number
- JPH11272880A JPH11272880A JP11026162A JP2616299A JPH11272880A JP H11272880 A JPH11272880 A JP H11272880A JP 11026162 A JP11026162 A JP 11026162A JP 2616299 A JP2616299 A JP 2616299A JP H11272880 A JPH11272880 A JP H11272880A
- Authority
- JP
- Japan
- Prior art keywords
- coordinates
- given
- vector
- eye
- graphics subsystem
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three-dimensional [3D] modelling for computer graphics
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
(57)【要約】
【課題】 固定小数点ライティング・ユニットにおいて
ローカルなアイ・ベクトルを高速計算する方法を提供す
ること。 【解決手段】 与えられたアイ・ポジションと第1の幾
何学的プリミティブの第1の頂点とに対応するローカル
・アイ・ベクトルを計算する。この方法(600)は、
第1の頂点に対応する第1の座標空間で表現されている
第1の組の座標を受け取るステップと、第2の座標空間
内にある第2の座標によって表現されている与えられた
アイ・ポジションに対応する逆変換行列を生成するステ
ップと、逆変換行列を用いて第1の組の座標を変換し予
備的なローカル・アイ・ベクトルを生成するステップ
と、を含む。予備的なローカル・アイ・ベクトルは、第
1の頂点に対しライティング計算を実行するのに用い
る。
ローカルなアイ・ベクトルを高速計算する方法を提供す
ること。 【解決手段】 与えられたアイ・ポジションと第1の幾
何学的プリミティブの第1の頂点とに対応するローカル
・アイ・ベクトルを計算する。この方法(600)は、
第1の頂点に対応する第1の座標空間で表現されている
第1の組の座標を受け取るステップと、第2の座標空間
内にある第2の座標によって表現されている与えられた
アイ・ポジションに対応する逆変換行列を生成するステ
ップと、逆変換行列を用いて第1の組の座標を変換し予
備的なローカル・アイ・ベクトルを生成するステップ
と、を含む。予備的なローカル・アイ・ベクトルは、第
1の頂点に対しライティング計算を実行するのに用い
る。
Description
【0001】
【発明の属する技術分野】本発明は、3Dグラフィクス
・アクセラレータに関する。更に詳しくは、ローカル・
アイ・ベクトルの高速計算を実行する3Dグラフィクス
・アクセラレータ内部の固定小数点ライティング・ユニ
ットに関する。
・アクセラレータに関する。更に詳しくは、ローカル・
アイ・ベクトルの高速計算を実行する3Dグラフィクス
・アクセラレータ内部の固定小数点ライティング・ユニ
ットに関する。
【0002】
【従来の技術】3D(三次元)グラフィクス・アクセラ
レータは、ホスト・プロセッサからの3Dレンダリング
機能をオフロードしてシステムのパフォーマンスを向上
させるように設計された、コンピュータ・システムのた
めの特別のグラフィクス・レンダリング・サブシステム
である。3Dグラフィクス・アクセラレータを備えたシ
ステムでは、コンピュータ・システムのホスト・プロセ
ッサ上で動作しているアプリケーション・プログラム
は、ディスプレイ装置上に出力するための三次元グラフ
ィクス要素を定義する三次元の幾何学的データを生成す
る。アプリケーション・プログラムは、ホスト・プロセ
ッサに、幾何学的データをグラフィクス・アクセラレー
タまで転送させる。グラフィクス・アクセラレータは、
この幾何学的データを受け取り、対応するグラフィクス
要素を、ディスプレイ装置上にレンダリングする。
レータは、ホスト・プロセッサからの3Dレンダリング
機能をオフロードしてシステムのパフォーマンスを向上
させるように設計された、コンピュータ・システムのた
めの特別のグラフィクス・レンダリング・サブシステム
である。3Dグラフィクス・アクセラレータを備えたシ
ステムでは、コンピュータ・システムのホスト・プロセ
ッサ上で動作しているアプリケーション・プログラム
は、ディスプレイ装置上に出力するための三次元グラフ
ィクス要素を定義する三次元の幾何学的データを生成す
る。アプリケーション・プログラムは、ホスト・プロセ
ッサに、幾何学的データをグラフィクス・アクセラレー
タまで転送させる。グラフィクス・アクセラレータは、
この幾何学的データを受け取り、対応するグラフィクス
要素を、ディスプレイ装置上にレンダリングする。
【0003】多くのコンピュータ・グラフィクス・シス
テムの目的の1つとして、ユーザに対して現実的である
対象物をレンダリングできることがある。しかし、視覚
的な現実性の問題は、極めて複雑である。「現実の世
界」における対象物は、色や反射や表面の不規則性など
が些細に変化する、非常に大量の詳細な内容を含んでい
る。
テムの目的の1つとして、ユーザに対して現実的である
対象物をレンダリングできることがある。しかし、視覚
的な現実性の問題は、極めて複雑である。「現実の世
界」における対象物は、色や反射や表面の不規則性など
が些細に変化する、非常に大量の詳細な内容を含んでい
る。
【0004】グラフィクス・システムが視覚的現実性を
向上させようとする際の最も重要な方法の1つとして、
光が物理的な対象物と相互作用する複雑な態様を捕捉す
ることを試みることによるものがある。このための専用
ユニットが、ライティング(lighting)パフォーマンス
を向上させるのに用いられている。これらのライティン
グ・ユニットの設計によって、現実感の向上と、パフォ
ーマンスの維持と、コストの最小化との間のバランスが
実現される。
向上させようとする際の最も重要な方法の1つとして、
光が物理的な対象物と相互作用する複雑な態様を捕捉す
ることを試みることによるものがある。このための専用
ユニットが、ライティング(lighting)パフォーマンス
を向上させるのに用いられている。これらのライティン
グ・ユニットの設計によって、現実感の向上と、パフォ
ーマンスの維持と、コストの最小化との間のバランスが
実現される。
【0005】三次元のグラフィクスを表示するアプリケ
ーションは、非常に大きな処理能力を必要とする。例え
ば、あるコンピュータ・システムが滑らかな3D動画を
生成するには、このコンピュータ・システムは、毎秒2
0から30フレームのフレーム・レートすなわち更新レ
ートを維持することが要求される。このためには、3D
コンピュータ・グラフィクス・アクセラレータが、毎秒
100万個を超える三角形を処理する能力を有している
ことが必要となる。これには、(単なるただ1つの散乱
光ではなく)鏡面(specular)ハイライトを備えた複数
の光源に関係するライティング計算が含まれる。
ーションは、非常に大きな処理能力を必要とする。例え
ば、あるコンピュータ・システムが滑らかな3D動画を
生成するには、このコンピュータ・システムは、毎秒2
0から30フレームのフレーム・レートすなわち更新レ
ートを維持することが要求される。このためには、3D
コンピュータ・グラフィクス・アクセラレータが、毎秒
100万個を超える三角形を処理する能力を有している
ことが必要となる。これには、(単なるただ1つの散乱
光ではなく)鏡面(specular)ハイライトを備えた複数
の光源に関係するライティング計算が含まれる。
【0006】
【発明が解決しようとする課題】従来のライティング・
ユニットに対する制約条件の1つに、浮動小数点演算の
使用がある。浮動小数点算術がライティング・ユニット
において用いられる理由は、ライティング計算に含まれ
るいくつかのパラメータ(例えば、減衰ファクタ)に
は、フルレンジのIEEE浮動小数点数が必要となるか
らである。しかし、浮動小数点演算の主な短所として、
必要となるハードウェアが、サイズを考慮すると比較的
高価であることがあげられる。特に、大部分のライティ
ング演算ではフルレンジの浮動小数点演算は必要ないと
いう事実を考えると、これは、パフォーマンスの最大化
を目指す低コストのグラフィクス・システムのライティ
ング・ユニットにとって、問題である。
ユニットに対する制約条件の1つに、浮動小数点演算の
使用がある。浮動小数点算術がライティング・ユニット
において用いられる理由は、ライティング計算に含まれ
るいくつかのパラメータ(例えば、減衰ファクタ)に
は、フルレンジのIEEE浮動小数点数が必要となるか
らである。しかし、浮動小数点演算の主な短所として、
必要となるハードウェアが、サイズを考慮すると比較的
高価であることがあげられる。特に、大部分のライティ
ング演算ではフルレンジの浮動小数点演算は必要ないと
いう事実を考えると、これは、パフォーマンスの最大化
を目指す低コストのグラフィクス・システムのライティ
ング・ユニットにとって、問題である。
【0007】ライティング・ユニットにおいてなされる
別のトレードオフは、無限遠点における(infinite)光
源に対する鏡面ハイライト計算を実行する際に、無限遠
点におけるアイ・ポジションを用いることと関係する。
鏡面反射では(拡散反射とは異なり)、対象物の表面
は、入射光の色に見える。これが、明るい光に照射され
たリンゴの一部が白く見え、他方で、リンゴの残りの部
分が赤く見えることの理由である。鏡面反射を正確にモ
デル化するためには、理想的には、ライティング効果を
計算するには、「ローカル」(局所的)なアイ・ポジシ
ョンが用いられるべきである。アイ・ポジションとは、
レンダリングされている3Dシーンまでの見ている者の
距離と方向とを表す世界空間内での位置である。ローカ
ルなアイ・ポジションを用いることにより、鏡面反射の
位置を、与えられた対象物に対して、現実感を維持しな
がらレンダリングすることができる。
別のトレードオフは、無限遠点における(infinite)光
源に対する鏡面ハイライト計算を実行する際に、無限遠
点におけるアイ・ポジションを用いることと関係する。
鏡面反射では(拡散反射とは異なり)、対象物の表面
は、入射光の色に見える。これが、明るい光に照射され
たリンゴの一部が白く見え、他方で、リンゴの残りの部
分が赤く見えることの理由である。鏡面反射を正確にモ
デル化するためには、理想的には、ライティング効果を
計算するには、「ローカル」(局所的)なアイ・ポジシ
ョンが用いられるべきである。アイ・ポジションとは、
レンダリングされている3Dシーンまでの見ている者の
距離と方向とを表す世界空間内での位置である。ローカ
ルなアイ・ポジションを用いることにより、鏡面反射の
位置を、与えられた対象物に対して、現実感を維持しな
がらレンダリングすることができる。
【0008】しかし、鏡面反射値を計算する際には、従
来のグラフィクス・システムでは、無限遠点におけるア
イ・ポジションが用いられる。これが行われる理由は、
ローカルなアイ・ベクトル(ローカルなアイ・ポジショ
ンからライティングされている三角形プリミティブの頂
点までのベクトル)の計算には時間がかかりすぎ、ライ
ティングのパフォーマンスが制限されるからである。無
限遠点における光源に対する鏡面反射を計算する際に無
限遠点におけるアイ・ポジションを用いると良好なライ
ティング効果が生じるのではあるが、理想的なものでは
ない。
来のグラフィクス・システムでは、無限遠点におけるア
イ・ポジションが用いられる。これが行われる理由は、
ローカルなアイ・ベクトル(ローカルなアイ・ポジショ
ンからライティングされている三角形プリミティブの頂
点までのベクトル)の計算には時間がかかりすぎ、ライ
ティングのパフォーマンスが制限されるからである。無
限遠点における光源に対する鏡面反射を計算する際に無
限遠点におけるアイ・ポジションを用いると良好なライ
ティング効果が生じるのではあるが、理想的なものでは
ない。
【0009】従って、無限遠点における光源に関する鏡
面ハイライトに対し、ローカルなアイ・ベクトルを高速
に計算することができるライティング・ユニットを有す
ることが望まれる。また、このライティング・ユニット
が、パフォーマンスの低下とコストの上昇とを犠牲にし
て、浮動小数点演算を用いるような制限を受けないこと
が望ましい。
面ハイライトに対し、ローカルなアイ・ベクトルを高速
に計算することができるライティング・ユニットを有す
ることが望まれる。また、このライティング・ユニット
が、パフォーマンスの低下とコストの上昇とを犠牲にし
て、浮動小数点演算を用いるような制限を受けないこと
が望ましい。
【0010】
【課題を解決するための手段】本発明は、固定小数点ラ
イティング・ユニットにおいてローカルなアイ・ベクト
ルを計算する高速な方法を提供する。スクリーン空間座
標における与えられたビューポートに射影されるべき与
えられた三角形プリミティブに対しては、ローカルなア
イ・ベクトルは、与えられたアイ・ポジションとこの与
えられた三角形プリミティブの第1の頂点とに対応す
る。異なるローカルなアイ・ベクトルが、与えられた三
角形プリミティブのそれぞれの頂点に対して計算され
る。
イティング・ユニットにおいてローカルなアイ・ベクト
ルを計算する高速な方法を提供する。スクリーン空間座
標における与えられたビューポートに射影されるべき与
えられた三角形プリミティブに対しては、ローカルなア
イ・ベクトルは、与えられたアイ・ポジションとこの与
えられた三角形プリミティブの第1の頂点とに対応す
る。異なるローカルなアイ・ベクトルが、与えられた三
角形プリミティブのそれぞれの頂点に対して計算され
る。
【0011】本発明による方法は、最初に、与えられた
ビューポートの与えられたアイ・ポジションとコーナー
の座標とに対応するビュー・ベクトル行列(view vecto
r matrix)を生成するステップを含む。ビュー・ベクト
ル行列は、スクリーン空間座標を、与えられたビューポ
ートに対応するアイ・ベクトル空間にマップ(写像)す
るのに用いることができる。本発明による方法は、次
に、第1の頂点に対応する(スクリーン空間内の)第1
の組の座標を受け取るステップを含む。この第1の組の
座標は、次に、固定小数点ライティング・ユニットによ
って表現可能である数値範囲にスケーリングされる。次
に、第1の組の座標は、ビュー・ベクトル行列を用いて
変換され、与えられたビューポートに対するアイ・ベク
トル空間内の正規化されていないローカルなアイ・ベク
トルを生じる。この正規化されていないローカルなアイ
・ベクトルは、正規化され、正規化されたローカルなア
イ・ベクトルを形成する。そして、この正規化されたロ
ーカルなアイ・ベクトルは、無限遠点における光源に対
する鏡面反射値の計算など、それ以降のライティング計
算を実行するのに用いられ、無限遠点における光源が用
いられる場合よりも優れた現実性を与えるライティング
効果を生じる。しかし、これらのより現実的なライティ
ング効果は、パフォーマンスの低下をもたらすことはな
い。これは、ローカルなアイ・ベクトルを、この方法を
用いて高速に計算することができるからである。
ビューポートの与えられたアイ・ポジションとコーナー
の座標とに対応するビュー・ベクトル行列(view vecto
r matrix)を生成するステップを含む。ビュー・ベクト
ル行列は、スクリーン空間座標を、与えられたビューポ
ートに対応するアイ・ベクトル空間にマップ(写像)す
るのに用いることができる。本発明による方法は、次
に、第1の頂点に対応する(スクリーン空間内の)第1
の組の座標を受け取るステップを含む。この第1の組の
座標は、次に、固定小数点ライティング・ユニットによ
って表現可能である数値範囲にスケーリングされる。次
に、第1の組の座標は、ビュー・ベクトル行列を用いて
変換され、与えられたビューポートに対するアイ・ベク
トル空間内の正規化されていないローカルなアイ・ベク
トルを生じる。この正規化されていないローカルなアイ
・ベクトルは、正規化され、正規化されたローカルなア
イ・ベクトルを形成する。そして、この正規化されたロ
ーカルなアイ・ベクトルは、無限遠点における光源に対
する鏡面反射値の計算など、それ以降のライティング計
算を実行するのに用いられ、無限遠点における光源が用
いられる場合よりも優れた現実性を与えるライティング
効果を生じる。しかし、これらのより現実的なライティ
ング効果は、パフォーマンスの低下をもたらすことはな
い。これは、ローカルなアイ・ベクトルを、この方法を
用いて高速に計算することができるからである。
【0012】ビュー・ベクトル行列の計算には、現在の
ビューイング(viewing)行列から逆行列を生成するこ
とを含む。現在のビューイング行列は、頂点を、グラフ
ィクス・パイプラインのより初期の段階で、世界空間の
座標からスクリーン空間の座標に変換するのに用いられ
る。次に、世界座標が、逆行列を用いて、与えられたア
イ・ポジションに対して計算される。そして、与えられ
たビューポートのコーナー座標に対する世界空間座標
が、与えられたビューポートの逆行列とクリップ空間座
標とを用いて決定される。次に、与えられたビューポー
トのコーナー座標に対する世界座標が、与えられたアイ
・ポジションに対する世界空間座標と同様に、正規化さ
れる。本発明による方法は、更に、正規化された世界空
間アイ座標から正規化された世界空間コーナー座標への
世界空間座標での複数のベクトルを生成するステップを
含み、それによって、ビュー・ボリュームのコーナーが
形成される。この複数のベクトルは、次に、与えられた
ビューポートの前方クリッピング平面(Z=1)に正規
化される。次に、複数のベクトルの与えられたビューポ
ートへの射影のサイズが、射影の中心オフセットと共に
決定される。与えられたビューポートのサイズと中心オ
フセットとは、スクリーン空間座標において計算され、
ライティング・ユニットの数値範囲に調整される。
ビューイング(viewing)行列から逆行列を生成するこ
とを含む。現在のビューイング行列は、頂点を、グラフ
ィクス・パイプラインのより初期の段階で、世界空間の
座標からスクリーン空間の座標に変換するのに用いられ
る。次に、世界座標が、逆行列を用いて、与えられたア
イ・ポジションに対して計算される。そして、与えられ
たビューポートのコーナー座標に対する世界空間座標
が、与えられたビューポートの逆行列とクリップ空間座
標とを用いて決定される。次に、与えられたビューポー
トのコーナー座標に対する世界座標が、与えられたアイ
・ポジションに対する世界空間座標と同様に、正規化さ
れる。本発明による方法は、更に、正規化された世界空
間アイ座標から正規化された世界空間コーナー座標への
世界空間座標での複数のベクトルを生成するステップを
含み、それによって、ビュー・ボリュームのコーナーが
形成される。この複数のベクトルは、次に、与えられた
ビューポートの前方クリッピング平面(Z=1)に正規
化される。次に、複数のベクトルの与えられたビューポ
ートへの射影のサイズが、射影の中心オフセットと共に
決定される。与えられたビューポートのサイズと中心オ
フセットとは、スクリーン空間座標において計算され、
ライティング・ユニットの数値範囲に調整される。
【0013】射影のサイズと中心オフセットとは、与え
られたビューポートの中心オフセットと共に、正規化さ
れていないビュー・ベクトル行列成分を計算するのに用
いられる。次に、ビュー・ベクトル行列への最大入力値
が計算され、それによって、最大ビュー・ベクトル長の
決定が可能になる。正規化されていないビュー・ベクト
ル行列の成分は、次に、与えられたビューポートに対す
る最大のベクトル長が所定の範囲内に維持されるように
スケーリングされ、よって、最終的なビュー・ベクトル
行列の成分の値が得られる。最後に、この最終的なビュ
ー・ベクトル行列の成分が有効な行列を形成するかどう
かの判断がなされる。
られたビューポートの中心オフセットと共に、正規化さ
れていないビュー・ベクトル行列成分を計算するのに用
いられる。次に、ビュー・ベクトル行列への最大入力値
が計算され、それによって、最大ビュー・ベクトル長の
決定が可能になる。正規化されていないビュー・ベクト
ル行列の成分は、次に、与えられたビューポートに対す
る最大のベクトル長が所定の範囲内に維持されるように
スケーリングされ、よって、最終的なビュー・ベクトル
行列の成分の値が得られる。最後に、この最終的なビュ
ー・ベクトル行列の成分が有効な行列を形成するかどう
かの判断がなされる。
【0014】
【発明の実施の態様】本発明のよりよい理解は、好適実
施例に関する以下の詳細な説明と添付の図面とを共に考
慮することによって、得られるはずである。図1−コンピュータ・システム 図1を参照すると、本発明による三次元(3D)グラフ
ィクス・アクセラレータを含むコンピュータ・システム
80が、示されている。示されているように、コンピュ
ータ・システム80は、システム・ユニット82と、シ
ステム・ユニット82に結合されたビデオ・モニタすな
わちディスプレイ装置84とを備えている。ディスプレ
イ装置84は、種々のタイプのディスプレイ・モニタま
たは装置の中の任意のものでよい。コンピュータ・シス
テムには、キーボード86および/またはマウス88
や、それ以外の入力など、様々な入力装置を接続するこ
とができる。アプリケーション・ソフトウェアがコンピ
ュータ・システム80によって実行され、ビデオ・モニ
タ84上に三次元のグラフィクスな対象物(object)を
表示することができる。以下において更に説明するよう
に、コンピュータ・システム80における3Dグラフィ
クス・アクセラレータは、無限遠点における光源に対応
する鏡面ハイライトの計算のために正規化されたローカ
ルなアイ・ベクトルを高速計算するように構成された固
定小数点ユニットを含む。これたのローカルなアイ・ベ
クトルを用いることの結果として、ディスプレイ装置8
4上でレンダリングされるグラフィカルな対象物のより
現実的なライティング効果が得られる。図2−コンピュータ・システムのブロック図 次に、図2を参照すると、図1のコンピュータ・システ
ムを図解する簡略化されたブロック図が示されている。
本発明の理解に必要ではないコンピュータ・システムの
構成要素は、便宜上、示されていない。示されているよ
うに、コンピュータ・システム80は、高速バスすなわ
ちシステム・バス104に結合された中央処理装置(C
PU)102を含む。システム・メモリ106もまた、
好ましくは、高速バス104に結合されている。
施例に関する以下の詳細な説明と添付の図面とを共に考
慮することによって、得られるはずである。図1−コンピュータ・システム 図1を参照すると、本発明による三次元(3D)グラフ
ィクス・アクセラレータを含むコンピュータ・システム
80が、示されている。示されているように、コンピュ
ータ・システム80は、システム・ユニット82と、シ
ステム・ユニット82に結合されたビデオ・モニタすな
わちディスプレイ装置84とを備えている。ディスプレ
イ装置84は、種々のタイプのディスプレイ・モニタま
たは装置の中の任意のものでよい。コンピュータ・シス
テムには、キーボード86および/またはマウス88
や、それ以外の入力など、様々な入力装置を接続するこ
とができる。アプリケーション・ソフトウェアがコンピ
ュータ・システム80によって実行され、ビデオ・モニ
タ84上に三次元のグラフィクスな対象物(object)を
表示することができる。以下において更に説明するよう
に、コンピュータ・システム80における3Dグラフィ
クス・アクセラレータは、無限遠点における光源に対応
する鏡面ハイライトの計算のために正規化されたローカ
ルなアイ・ベクトルを高速計算するように構成された固
定小数点ユニットを含む。これたのローカルなアイ・ベ
クトルを用いることの結果として、ディスプレイ装置8
4上でレンダリングされるグラフィカルな対象物のより
現実的なライティング効果が得られる。図2−コンピュータ・システムのブロック図 次に、図2を参照すると、図1のコンピュータ・システ
ムを図解する簡略化されたブロック図が示されている。
本発明の理解に必要ではないコンピュータ・システムの
構成要素は、便宜上、示されていない。示されているよ
うに、コンピュータ・システム80は、高速バスすなわ
ちシステム・バス104に結合された中央処理装置(C
PU)102を含む。システム・メモリ106もまた、
好ましくは、高速バス104に結合されている。
【0015】ホスト・プロセッサ102は、様々なタイ
プのコンピュータ・プロセッサ、マルチプロセッサおよ
びCPUの中の任意のものでよい。システム・メモリ1
06は、ランダム・アクセス・メモリや大容量記憶装置
を含む様々なタイプのメモリ・サブシステムの中の任意
のものでよい。システム・バスすなわちホスト・バス1
04は、ホスト・プロセッサ、CPUおよびメモリ・サ
ブシステム、更には、特別のサブシステムの間の通信の
ための様々なタイプの通信またはホスト・コンピュータ
・バスの中の任意のものでよい。好適実施例では、ホス
ト・バス104は、UPAバスであって、これは、83
MHzで動作する64ビットのバスである。
プのコンピュータ・プロセッサ、マルチプロセッサおよ
びCPUの中の任意のものでよい。システム・メモリ1
06は、ランダム・アクセス・メモリや大容量記憶装置
を含む様々なタイプのメモリ・サブシステムの中の任意
のものでよい。システム・バスすなわちホスト・バス1
04は、ホスト・プロセッサ、CPUおよびメモリ・サ
ブシステム、更には、特別のサブシステムの間の通信の
ための様々なタイプの通信またはホスト・コンピュータ
・バスの中の任意のものでよい。好適実施例では、ホス
ト・バス104は、UPAバスであって、これは、83
MHzで動作する64ビットのバスである。
【0016】本発明による3Dグラフィクス・アクセラ
レータ112は、高速メモリ・バス104に結合されて
いる。3Dグラフィクス・アクセラレータ112は、バ
ス104に、例えば、クロス・バー・スイッチまたはそ
れ以外のバス接続ロジックによって接続され得る。様々
なそれ以外の周辺装置やそれ以外のバスも、この技術分
野において周知であるように、高速メモリ・バス104
に接続することができる。3Dグラフィクス・アクセラ
レータは、望むのであれば、様々なバスの任意のものに
接続することが可能である。示されているように、ビデ
オ・モニタすなわちディスプレイ装置84が、3Dグラ
フィクス・アクセラレータ112に接続されている。
レータ112は、高速メモリ・バス104に結合されて
いる。3Dグラフィクス・アクセラレータ112は、バ
ス104に、例えば、クロス・バー・スイッチまたはそ
れ以外のバス接続ロジックによって接続され得る。様々
なそれ以外の周辺装置やそれ以外のバスも、この技術分
野において周知であるように、高速メモリ・バス104
に接続することができる。3Dグラフィクス・アクセラ
レータは、望むのであれば、様々なバスの任意のものに
接続することが可能である。示されているように、ビデ
オ・モニタすなわちディスプレイ装置84が、3Dグラ
フィクス・アクセラレータ112に接続されている。
【0017】ホスト・プロセッサ102は、プログラム
された入出力(I/O)プロトコルに従って、ホスト・
バス104上を、グラフィクス・アクセラレータ112
に対して、そして、グラフィクス・アクセラレータ11
2から情報を転送する。また、グラフィクス・アクセラ
レータ112は、ダイレクト・メモリ・アクセス(DM
A)プロトコルに従って、または、インテリジェント・
バス・マスタリングを介して、メモリ・サブシステム1
06にアクセスする。
された入出力(I/O)プロトコルに従って、ホスト・
バス104上を、グラフィクス・アクセラレータ112
に対して、そして、グラフィクス・アクセラレータ11
2から情報を転送する。また、グラフィクス・アクセラ
レータ112は、ダイレクト・メモリ・アクセス(DM
A)プロトコルに従って、または、インテリジェント・
バス・マスタリングを介して、メモリ・サブシステム1
06にアクセスする。
【0018】OpenGLまたはXGLなどのアプリケ
ーション・プログラマ・インターフェース(API)に
従うグラフィクス・アプリケーション・プログラムは、
コマンドと、ディスプレイ装置84上に出力するための
多角形などの幾何学的なプリミティブ(geometrical pr
imitive)を定義するデータとを生成する。これらのプ
リミティブは、やはりアプリケーション・プログラムに
よって定義された属性を有する光源によって照射されて
いるものとして、モデル化される。ホスト・プロセッサ
102は、これらのコマンドと属性データとをメモリ・
サブシステム106に転送する。その後で、ホスト・プ
ロセッサ102は、ホスト・バス104上を、データを
グラフィクス・アクセラレータ112まで転送するよう
に動作する。また、グラフィクス・アクセラレータ11
2は、ホスト・バス104上のDMAアクセス・サイク
ルを用いて、幾何学的図形の中のデータ・アレイを読み
出す。別の実施例では、グラフィクス・アクセラレータ
112は、インテル社によって提唱されているアドバン
スト・グラフィクス・ポート(AGP)などの直接ポー
トを介して、システム・メモリ106に結合されてい
る。グラフィクス・アクセラレータ112は、次に、好
適実施例では、転送されたプリミティブ(変換後のも
の)に対してライティング演算(ローカルなアイ・ベク
トルの計算を含む)を実行し、頂点(vertex)ベースで
カラー値を生成する。それに続くレンダリング演算が、
ライティングされたプリミティブに対して、次に実行さ
れる。図3−グラフィクス・アクセラレータ 次に図3を参照すると、本発明の好適実施例によるグラ
フィクス・アクセラレータ112を図解しているブロッ
ク図が示されている。示されているように、グラフィク
ス・アクセラレータ112は、基本的には、コマンド・
ブロック142と、浮動小数点プロセッサ152A−1
52Fの組と、ドロー(描画)プロセッサ172Aおよ
び172Bの組と、3DRAMから構成されたフレーム
・バッファ100と、ランダム・アクセス・メモリ/デ
ジタル・アナログ・コンバータ(RAMDAC)196
と、から構成されている。
ーション・プログラマ・インターフェース(API)に
従うグラフィクス・アプリケーション・プログラムは、
コマンドと、ディスプレイ装置84上に出力するための
多角形などの幾何学的なプリミティブ(geometrical pr
imitive)を定義するデータとを生成する。これらのプ
リミティブは、やはりアプリケーション・プログラムに
よって定義された属性を有する光源によって照射されて
いるものとして、モデル化される。ホスト・プロセッサ
102は、これらのコマンドと属性データとをメモリ・
サブシステム106に転送する。その後で、ホスト・プ
ロセッサ102は、ホスト・バス104上を、データを
グラフィクス・アクセラレータ112まで転送するよう
に動作する。また、グラフィクス・アクセラレータ11
2は、ホスト・バス104上のDMAアクセス・サイク
ルを用いて、幾何学的図形の中のデータ・アレイを読み
出す。別の実施例では、グラフィクス・アクセラレータ
112は、インテル社によって提唱されているアドバン
スト・グラフィクス・ポート(AGP)などの直接ポー
トを介して、システム・メモリ106に結合されてい
る。グラフィクス・アクセラレータ112は、次に、好
適実施例では、転送されたプリミティブ(変換後のも
の)に対してライティング演算(ローカルなアイ・ベク
トルの計算を含む)を実行し、頂点(vertex)ベースで
カラー値を生成する。それに続くレンダリング演算が、
ライティングされたプリミティブに対して、次に実行さ
れる。図3−グラフィクス・アクセラレータ 次に図3を参照すると、本発明の好適実施例によるグラ
フィクス・アクセラレータ112を図解しているブロッ
ク図が示されている。示されているように、グラフィク
ス・アクセラレータ112は、基本的には、コマンド・
ブロック142と、浮動小数点プロセッサ152A−1
52Fの組と、ドロー(描画)プロセッサ172Aおよ
び172Bの組と、3DRAMから構成されたフレーム
・バッファ100と、ランダム・アクセス・メモリ/デ
ジタル・アナログ・コンバータ(RAMDAC)196
と、から構成されている。
【0019】示されているように、グラフィクス・アク
セラレータ112は、メモリ・バス104へのインター
フェースを与えるコマンド・ブロック142を含む。コ
マンド・ブロック142は、グラフィクス・アクセラレ
ータ112からホスト・バス104へのインターフェー
スを与え、グラフィクス・アクセラレータ112におけ
る他のブロックまたはチップの間のデータ転送を制御す
る。コマンド・ブロック142はまた、三角形およびベ
クトル・データを前処理し、幾何データの解凍(decomp
ression)を実行する。
セラレータ112は、メモリ・バス104へのインター
フェースを与えるコマンド・ブロック142を含む。コ
マンド・ブロック142は、グラフィクス・アクセラレ
ータ112からホスト・バス104へのインターフェー
スを与え、グラフィクス・アクセラレータ112におけ
る他のブロックまたはチップの間のデータ転送を制御す
る。コマンド・ブロック142はまた、三角形およびベ
クトル・データを前処理し、幾何データの解凍(decomp
ression)を実行する。
【0020】コマンド・ブロック142は、複数の浮動
小数点ブロック152へのインターフェースを与える。
グラフィクス・アクセラレータ112は、好ましくは、
示されているように、6つまでの浮動小数点プロセッサ
152A−152Fを含む。浮動小数点プロセッサ15
2A−152Fは、ハイ・レベルの描画コマンドを受け
取って、三角形や線などのグラフィクス・プリミティブ
を生成し、スクリーン上に三次元の対象物をレンダリン
グする。浮動小数点プロセッサ152A−152Fは、
受け取った幾何データに対して、変換、クリッピング、
フェース(face)決定、ライティングおよびセットアッ
プ演算を実行する。浮動小数点プロセッサ152A−1
52Fは、それぞれが、メモリ153A−153Fに接
続されている。メモリ153A−153Fは、好ましく
は、32k×36ビットのSRAMであり、マイクロコ
ードおよびデータ記憶のために用いられる。
小数点ブロック152へのインターフェースを与える。
グラフィクス・アクセラレータ112は、好ましくは、
示されているように、6つまでの浮動小数点プロセッサ
152A−152Fを含む。浮動小数点プロセッサ15
2A−152Fは、ハイ・レベルの描画コマンドを受け
取って、三角形や線などのグラフィクス・プリミティブ
を生成し、スクリーン上に三次元の対象物をレンダリン
グする。浮動小数点プロセッサ152A−152Fは、
受け取った幾何データに対して、変換、クリッピング、
フェース(face)決定、ライティングおよびセットアッ
プ演算を実行する。浮動小数点プロセッサ152A−1
52Fは、それぞれが、メモリ153A−153Fに接
続されている。メモリ153A−153Fは、好ましく
は、32k×36ビットのSRAMであり、マイクロコ
ードおよびデータ記憶のために用いられる。
【0021】浮動小数点ブロック152A−152F
は、2つの描画プロセッサ172Aおよび172Bのそ
れぞれに接続されている。グラフィクス・アクセラレー
タ112は、好ましくは、2つの描画プロセッサ172
Aおよび172Bを含む。ただし、これよりも多くのま
たは少ない数の描画プロセッサを用いてもよい。描画プ
ロセッサ172Aおよび172Bは、様々なグラフィク
ス・プリミティブのスクリーン・スペース・レンダリン
グを実行し、完成したピクセルを3DRAMアレイの中
にシーケンスまたは充填するように動作する。描画プロ
セッサ172Aおよび172Bはまた、フレーム・バッ
ファ100に対する3DRAM制御チップとしても機能
する。描画プロセッサ172Aおよび172Bは、浮動
小数点プロセッサ152A−152Fの中の1つから受
け取った描画パケットに従って、まwたは、コマンド・
プロセッサ142から受け取ったダイレクト・ポート・
パケットに従って、画像(イメージ)をフレーム・バッ
ファ100の中に同時にレンダリングする。
は、2つの描画プロセッサ172Aおよび172Bのそ
れぞれに接続されている。グラフィクス・アクセラレー
タ112は、好ましくは、2つの描画プロセッサ172
Aおよび172Bを含む。ただし、これよりも多くのま
たは少ない数の描画プロセッサを用いてもよい。描画プ
ロセッサ172Aおよび172Bは、様々なグラフィク
ス・プリミティブのスクリーン・スペース・レンダリン
グを実行し、完成したピクセルを3DRAMアレイの中
にシーケンスまたは充填するように動作する。描画プロ
セッサ172Aおよび172Bはまた、フレーム・バッ
ファ100に対する3DRAM制御チップとしても機能
する。描画プロセッサ172Aおよび172Bは、浮動
小数点プロセッサ152A−152Fの中の1つから受
け取った描画パケットに従って、まwたは、コマンド・
プロセッサ142から受け取ったダイレクト・ポート・
パケットに従って、画像(イメージ)をフレーム・バッ
ファ100の中に同時にレンダリングする。
【0022】浮動小数点ブロック152A−Fのそれぞ
れは、好ましくは、同じデータを2つの描画ブロック1
72Aおよび172Bにブロードキャストするように動
作する。換言すると、同じデータが、常に、それぞれの
浮動小数点ブロック152からのデータ・ラインの両方
の組の上にある。従って、浮動小数点ブロック152A
がデータを転送するときには、浮動小数点ブロック15
2Aは、同じデータを、FDバスの両方の部分の上を、
描画プロセッサ172Aおよび172Bに転送する。
れは、好ましくは、同じデータを2つの描画ブロック1
72Aおよび172Bにブロードキャストするように動
作する。換言すると、同じデータが、常に、それぞれの
浮動小数点ブロック152からのデータ・ラインの両方
の組の上にある。従って、浮動小数点ブロック152A
がデータを転送するときには、浮動小数点ブロック15
2Aは、同じデータを、FDバスの両方の部分の上を、
描画プロセッサ172Aおよび172Bに転送する。
【0023】描画ブロック172Aおよび172Bのそ
れぞれは、フレーム・バッファ100に結合している。
フレーム・バッファ100は、3DRAMメモリ192
A−Bおよび194A−Bの4つのバンクから構成され
ている。描画プロセッサ172Aは、2つの3DRAM
バンク192Aおよび192Bに結合し、描画プロセッ
サ172Bは、2つの3DRAMバンク194Aおよび
194Bに結合している。それぞれのバンクは、示され
ているように、3つの3DRAMを備えている。3DR
AMメモリまたはバンク192A−Bおよび194A−
Bは、集合的に、フレーム・バッファ100を形成して
いる。フレーム・バッファ100は、1280×102
4であり、96ビットの深度を有する。フレーム・バッ
ファ100は、描画プロセッサ172Aおよび172B
によってレンダリングされた3D対象物に対応するピク
セルを記憶する。
れぞれは、フレーム・バッファ100に結合している。
フレーム・バッファ100は、3DRAMメモリ192
A−Bおよび194A−Bの4つのバンクから構成され
ている。描画プロセッサ172Aは、2つの3DRAM
バンク192Aおよび192Bに結合し、描画プロセッ
サ172Bは、2つの3DRAMバンク194Aおよび
194Bに結合している。それぞれのバンクは、示され
ているように、3つの3DRAMを備えている。3DR
AMメモリまたはバンク192A−Bおよび194A−
Bは、集合的に、フレーム・バッファ100を形成して
いる。フレーム・バッファ100は、1280×102
4であり、96ビットの深度を有する。フレーム・バッ
ファ100は、描画プロセッサ172Aおよび172B
によってレンダリングされた3D対象物に対応するピク
セルを記憶する。
【0024】3DRAMメモリ192A−Bおよび19
4A−Bのそれぞれは、RAMDAC(ランダム・アク
セス・メモリ・デジタル・アナログ・コンバータ)19
6に結合している。RAMDAC196は、クロス・バ
ー機能と共に、プログラマブルなビデオ・タイミング発
生器とプログラマブルなピクセル・クロック・シンセサ
イザとを備えており、また、伝統的なカラー・ルックア
ップ・テーブルと、トリプル・ビデオDAC回路とを備
えている。RAMDACは、ビデオ・モニタ84に結合
されている。
4A−Bのそれぞれは、RAMDAC(ランダム・アク
セス・メモリ・デジタル・アナログ・コンバータ)19
6に結合している。RAMDAC196は、クロス・バ
ー機能と共に、プログラマブルなビデオ・タイミング発
生器とプログラマブルなピクセル・クロック・シンセサ
イザとを備えており、また、伝統的なカラー・ルックア
ップ・テーブルと、トリプル・ビデオDAC回路とを備
えている。RAMDACは、ビデオ・モニタ84に結合
されている。
【0025】コマンド・ブロックは、好ましくは、1つ
のチップとして実現される。浮動小数点プロセッサ15
2のそれぞれは、好ましくは、別個のチップとして実現
される。好適実施例では、6つまでの浮動小数点ブロッ
クまたはチップ152A−Fを含めることができる。描
画ブロックまたはプロセッサ172Aおよび172Bの
それぞれは、また、好ましくは、別個のチップを備えて
いる。好適実施例のグラフィクス・アクセラレータ・ア
ーキテクチャの異なる側面に関するこれ以上の情報につ
いては、関連の同時出願中である"Three-Dimensional G
raphics Accelerator With Direct Data Channels for
Improved Performance"と題する米国特許出願第08/
673492号と、" Three-Dimensional Graphics Acc
eleratorWhich Implements Multiple Logical Buses Us
ing Common Data Lines for Improved Bus Communicati
on"と題する米国特許出願第08/673491号とを
参照のこと。これらの米国出願は、共に、1996年6
月1日に出願されたものである。
のチップとして実現される。浮動小数点プロセッサ15
2のそれぞれは、好ましくは、別個のチップとして実現
される。好適実施例では、6つまでの浮動小数点ブロッ
クまたはチップ152A−Fを含めることができる。描
画ブロックまたはプロセッサ172Aおよび172Bの
それぞれは、また、好ましくは、別個のチップを備えて
いる。好適実施例のグラフィクス・アクセラレータ・ア
ーキテクチャの異なる側面に関するこれ以上の情報につ
いては、関連の同時出願中である"Three-Dimensional G
raphics Accelerator With Direct Data Channels for
Improved Performance"と題する米国特許出願第08/
673492号と、" Three-Dimensional Graphics Acc
eleratorWhich Implements Multiple Logical Buses Us
ing Common Data Lines for Improved Bus Communicati
on"と題する米国特許出願第08/673491号とを
参照のこと。これらの米国出願は、共に、1996年6
月1日に出願されたものである。
【0026】上述のように、コマンド・ブロック142
は、ホスト・バス104とのインターフェースを与え、
ホストCPU102からのグラフィクス・コマンドおよ
びデータを受け取る。これらのコマンドおよびデータ
(三角形プリミティブと対応するライト・パラメータ・
データとを含む)は、浮動小数点プロセッサ152に送
られ、変換、ライティングおよびセットアップ計算が行
われる。ライティング・パフォーマンスが向上するよう
に効果的に構成されているこれらの浮動小数点プロセッ
サ152の全体的な動作は、図4を参照して説明され
る。浮動小数点プロセッサ152のそれぞれの内部のL
コア・ブロックは、この改善されたライティング能力を
提供するのであるが、図5を参照してより詳細に説明さ
れる。図6A、図6B、図7および図8では、この固定
小数点ライティング・ユニットを用いたローカルなアイ
・ベクトルの計算について記載されている。図4−浮動小数点プロセッサのブロック図 次に図4を参照すると、本発明の好適実施例による浮動
小数点プロセッサ152の1つを図解しているブロック
図が示されている。浮動小数点プロセッサ152A−1
52Fのそれぞれは同一であるから、便宜上、ここで
は、ただ1つだけについて説明する。示されているよう
に、浮動小数点ブロック152は、3つの主たる機能ユ
ニットまたはコア・プロセッサを含む。これらは、Fコ
ア352、Lコア354、Sコア356である。Fコア
・ブロック352は、CFバスを介して、コマンド・ブ
ロック142から転送されたデータを受信するように結
合されている。Fコア・ブロック352は、Lコア・ブ
ロック354とSコア・ブロック356とのそれぞれに
出力データを提供する。Lコア・ブロック354は、ま
た、データをSコア・ブロック356に提供する。Sコ
ア・ブロック356は、FDバスに出力データを提供す
る。
は、ホスト・バス104とのインターフェースを与え、
ホストCPU102からのグラフィクス・コマンドおよ
びデータを受け取る。これらのコマンドおよびデータ
(三角形プリミティブと対応するライト・パラメータ・
データとを含む)は、浮動小数点プロセッサ152に送
られ、変換、ライティングおよびセットアップ計算が行
われる。ライティング・パフォーマンスが向上するよう
に効果的に構成されているこれらの浮動小数点プロセッ
サ152の全体的な動作は、図4を参照して説明され
る。浮動小数点プロセッサ152のそれぞれの内部のL
コア・ブロックは、この改善されたライティング能力を
提供するのであるが、図5を参照してより詳細に説明さ
れる。図6A、図6B、図7および図8では、この固定
小数点ライティング・ユニットを用いたローカルなアイ
・ベクトルの計算について記載されている。図4−浮動小数点プロセッサのブロック図 次に図4を参照すると、本発明の好適実施例による浮動
小数点プロセッサ152の1つを図解しているブロック
図が示されている。浮動小数点プロセッサ152A−1
52Fのそれぞれは同一であるから、便宜上、ここで
は、ただ1つだけについて説明する。示されているよう
に、浮動小数点ブロック152は、3つの主たる機能ユ
ニットまたはコア・プロセッサを含む。これらは、Fコ
ア352、Lコア354、Sコア356である。Fコア
・ブロック352は、CFバスを介して、コマンド・ブ
ロック142から転送されたデータを受信するように結
合されている。Fコア・ブロック352は、Lコア・ブ
ロック354とSコア・ブロック356とのそれぞれに
出力データを提供する。Lコア・ブロック354は、ま
た、データをSコア・ブロック356に提供する。Sコ
ア・ブロック356は、FDバスに出力データを提供す
る。
【0027】Fコア・ブロック352は、幾何変換、ク
リップ・テスティング、面(face)決定、パースペクテ
ィブ分割およびスクリーン・スペース変換を含む、すべ
ての浮動小数点集中的(intensive)な演算を実行す
る。Fコア・ブロック352はまた、要求されるときに
は、クリッピングも実行する。好適実施例では、Fコア
・ブロック352は、32kワードのSRAMに記憶さ
れた36ビットのマイクロ命令ワードを用いて、完全に
プログラム可能である。
リップ・テスティング、面(face)決定、パースペクテ
ィブ分割およびスクリーン・スペース変換を含む、すべ
ての浮動小数点集中的(intensive)な演算を実行す
る。Fコア・ブロック352はまた、要求されるときに
は、クリッピングも実行する。好適実施例では、Fコア
・ブロック352は、32kワードのSRAMに記憶さ
れた36ビットのマイクロ命令ワードを用いて、完全に
プログラム可能である。
【0028】Lコア・ブロック354は、オンチップの
RAMベースのマイクロコードを用いて、ほとんどのラ
イティング計算を実行する。従来技術によるライティン
グ・ユニットとは異なり、Lコア・ブロック354は、
これらの計算を実現するのに、固定小数点演算を用い
る。好適実施例では、Lコア・ブロック354の数字範
囲は、s1.14(1サイン・ビット、1整数ビット、
14小数(fractional)ビット)フォーマットを用い
て、−2.0から+2.0までである。ライティング計
算の大部分は、これらのタイプの16ビットのオペラン
ドを用いて、この範囲内で実行される。しかし、ライテ
ィング計算に必要ないくつかのパラメータ(減衰ファク
タなど)はこの範囲を超え、Fコア・ブロック352で
処理される。
RAMベースのマイクロコードを用いて、ほとんどのラ
イティング計算を実行する。従来技術によるライティン
グ・ユニットとは異なり、Lコア・ブロック354は、
これらの計算を実現するのに、固定小数点演算を用い
る。好適実施例では、Lコア・ブロック354の数字範
囲は、s1.14(1サイン・ビット、1整数ビット、
14小数(fractional)ビット)フォーマットを用い
て、−2.0から+2.0までである。ライティング計
算の大部分は、これらのタイプの16ビットのオペラン
ドを用いて、この範囲内で実行される。しかし、ライテ
ィング計算に必要ないくつかのパラメータ(減衰ファク
タなど)はこの範囲を超え、Fコア・ブロック352で
処理される。
【0029】Lコア・ブロック354はまた、より効率
的なライティング計算のための効率的なトリプル・ワー
ド設計を含む。このトリプル・ワードの設計は、16ビ
ットの固定小数点値を有する48ビットのデータ・ワー
ドを用いて演算する。従って、1つの命令が、すべての
3つのカラー成分(RGB)またはノーマルの(Nx,
Ny,Nz)のすべての3つの成分に対して、同じ機能を
1サイクルで実行することができる。Lコア・ブロック
354に含まれている数学ユニットは、自動的に、値
を、許容される数字範囲までクランプし、それによっ
て、追加的なブランチを必要としないことになる。
的なライティング計算のための効率的なトリプル・ワー
ド設計を含む。このトリプル・ワードの設計は、16ビ
ットの固定小数点値を有する48ビットのデータ・ワー
ドを用いて演算する。従って、1つの命令が、すべての
3つのカラー成分(RGB)またはノーマルの(Nx,
Ny,Nz)のすべての3つの成分に対して、同じ機能を
1サイクルで実行することができる。Lコア・ブロック
354に含まれている数学ユニットは、自動的に、値
を、許容される数字範囲までクランプし、それによっ
て、追加的なブランチを必要としないことになる。
【0030】Sコア・ブロックは、すべてのプリミティ
ブ(primitives)に対するセットアップ計算を実行す
る。これらのセットアップ計算には、ある頂点から別の
頂点までの多次元における距離を計算し、そのエッジに
沿った勾配を計算することが含まれる。三角形では、Z
深度の勾配、カラー、(繊維に対する)UVもまた、走
査線の方向に計算される。
ブ(primitives)に対するセットアップ計算を実行す
る。これらのセットアップ計算には、ある頂点から別の
頂点までの多次元における距離を計算し、そのエッジに
沿った勾配を計算することが含まれる。三角形では、Z
深度の勾配、カラー、(繊維に対する)UVもまた、走
査線の方向に計算される。
【0031】示されているように、浮動小数点ブロック
152のそれぞれは、CFバスに結合するCFバス・イ
ンターフェース・ロジック362を含む。浮動小数点ブ
ロック152のそれぞれは、FDバスに結合するFDバ
ス・インターフェース・ロジック366を含む。それぞ
れの浮動小数点ブロック152は、CDバスに対する浮
動小数点ブロック152を介してのデータ転送経路とし
て機能するバイパス・バスまたはデータ経路364を含
む。CDバス上を送られる、すなわち、直接にFDバス
に送られるデータは、データ転送バス364上を移動
し、従って、浮動小数点ブロック152に含まれる浮動
小数点ロジックをバイパスする。
152のそれぞれは、CFバスに結合するCFバス・イ
ンターフェース・ロジック362を含む。浮動小数点ブ
ロック152のそれぞれは、FDバスに結合するFDバ
ス・インターフェース・ロジック366を含む。それぞ
れの浮動小数点ブロック152は、CDバスに対する浮
動小数点ブロック152を介してのデータ転送経路とし
て機能するバイパス・バスまたはデータ経路364を含
む。CDバス上を送られる、すなわち、直接にFDバス
に送られるデータは、データ転送バス364上を移動
し、従って、浮動小数点ブロック152に含まれる浮動
小数点ロジックをバイパスする。
【0032】一般的に、浮動小数点ブロック152に提
供されるデータは、3つの目的地の中の1つを有する。
ただし、3つの目的地とは、Fコア・ブロック352、
Lコア・ブロック354、そして、直接にFDバスに向
かう場合、すなわち、CDバス転送である。好適実施例
では、Fコア・ブロック352に向かうデータは、32
ビットのIEEE浮動小数点数とそれ以外の32ビット
・データとを含む32ビット・ワードを有する。Lコア
・ブロック354に向かうデータは、3つの16ビット
の固定小数点数を含む48ビット・ワードを有する。
供されるデータは、3つの目的地の中の1つを有する。
ただし、3つの目的地とは、Fコア・ブロック352、
Lコア・ブロック354、そして、直接にFDバスに向
かう場合、すなわち、CDバス転送である。好適実施例
では、Fコア・ブロック352に向かうデータは、32
ビットのIEEE浮動小数点数とそれ以外の32ビット
・データとを含む32ビット・ワードを有する。Lコア
・ブロック354に向かうデータは、3つの16ビット
の固定小数点数を含む48ビット・ワードを有する。
【0033】示されているように、浮動小数点ブロック
152は、コマンド・ブロック142によって提供され
たCFバスからのデータを受け取る浮動入力バッファ
(FIバッファ)372を含む。FIバッファ372
は、ダブル・バッファされ、それぞれのバッファにおい
て、32の32ビット・エントリを保持する。FIバッ
ファ372に記憶された第1のワードであるワード・ゼ
ロは、受け取られた幾何学的プリミティブに対してどの
マイクロコード・ルーチンを与えるべきかをFコア・ブ
ロック352に告知する演算コード(opcode)を有す
る。ヘッダとX、YおよびZ座標とだけが、幾何学的プ
リミティブを変換しライティングする際に、このバッフ
ァに提供される。
152は、コマンド・ブロック142によって提供され
たCFバスからのデータを受け取る浮動入力バッファ
(FIバッファ)372を含む。FIバッファ372
は、ダブル・バッファされ、それぞれのバッファにおい
て、32の32ビット・エントリを保持する。FIバッ
ファ372に記憶された第1のワードであるワード・ゼ
ロは、受け取られた幾何学的プリミティブに対してどの
マイクロコード・ルーチンを与えるべきかをFコア・ブ
ロック352に告知する演算コード(opcode)を有す
る。ヘッダとX、YおよびZ座標とだけが、幾何学的プ
リミティブを変換しライティングする際に、このバッフ
ァに提供される。
【0034】浮動小数点ブロック152はまた、Fコア
からLコアへのバッファ(FLバッファ)374を含
む。FLバッファ374は、ダブル・バッファされ、そ
れぞれのバッファに16の16ビット・エントリを保持
する。Fコア・ブロック352は、3つのFコア・ワー
ドを、FLバッファ374に提供される1つのLコア・
ワードに書き込む、すなわち、合成する。Lコアのパー
スペクティブからは、FLバッファ374の中のそれぞ
れのバッファは、5つの48ビット・エントリとして見
える。ライティング演算の間に、3つのX、Y、Z座標
は、Fコア・ブロック352からFLバッファ374を
介して、Lコア・ブロック354に送られる。これらの
3つのX、Y、Z座標は、目の方向(eye direction)
を計算するのに用いられる。
からLコアへのバッファ(FLバッファ)374を含
む。FLバッファ374は、ダブル・バッファされ、そ
れぞれのバッファに16の16ビット・エントリを保持
する。Fコア・ブロック352は、3つのFコア・ワー
ドを、FLバッファ374に提供される1つのLコア・
ワードに書き込む、すなわち、合成する。Lコアのパー
スペクティブからは、FLバッファ374の中のそれぞ
れのバッファは、5つの48ビット・エントリとして見
える。ライティング演算の間に、3つのX、Y、Z座標
は、Fコア・ブロック352からFLバッファ374を
介して、Lコア・ブロック354に送られる。これらの
3つのX、Y、Z座標は、目の方向(eye direction)
を計算するのに用いられる。
【0035】浮動小数点ブロック152は、コマンド・
ブロック142から提供されCFバスを介して送られた
データを受け取りこのデータをLコア・ブロック354
に提供するLコア入力バッファ(LIバッファ)376
を含む。LIバッファ376は、5つのバッファを備え
ており、そのそれぞれが、7つの48ビット・エントリ
を保持する。これらの7つの48ビット・エントリは、
3つの頂点法線(vertex normal)と、3つの頂点カラ
ーと、3つのアルファ値を有する1ワードとを有してい
る。FIバッファ372とLIバッファ376とは、集
合的に、浮動小数点ブロック入力バッファを備えてい
る。
ブロック142から提供されCFバスを介して送られた
データを受け取りこのデータをLコア・ブロック354
に提供するLコア入力バッファ(LIバッファ)376
を含む。LIバッファ376は、5つのバッファを備え
ており、そのそれぞれが、7つの48ビット・エントリ
を保持する。これらの7つの48ビット・エントリは、
3つの頂点法線(vertex normal)と、3つの頂点カラ
ーと、3つのアルファ値を有する1ワードとを有してい
る。FIバッファ372とLIバッファ376とは、集
合的に、浮動小数点ブロック入力バッファを備えてい
る。
【0036】浮動小数点ブロック152はまた、FLL
バッファ378を含み、このFLLバッファ378が、
Fコア・ブロック352とLコア・ブロック354との
間を接続する。FLLバッファ378は、ライティング
および減衰ファクタを、Fコア・ブロック352からL
コア・ブロック354に送るのに用いられるFIFOで
ある。これらの減衰ファクタは、3つのX、Y、Z位置
値、3つの減衰値、3つの周囲のライト値、3つのパッ
クされた値を含む1つの減衰シフト・ワードを含む。ま
た、FLFバッファ380が、Fコア・ブロック352
とLコア・ブロック354との間に提供される。FLF
バッファは、Fコアの制御の下に、Fコア・ブロック3
52とLコア・ブロック354との間でデータを通信す
るのに用いられる双方向バッファである。
バッファ378を含み、このFLLバッファ378が、
Fコア・ブロック352とLコア・ブロック354との
間を接続する。FLLバッファ378は、ライティング
および減衰ファクタを、Fコア・ブロック352からL
コア・ブロック354に送るのに用いられるFIFOで
ある。これらの減衰ファクタは、3つのX、Y、Z位置
値、3つの減衰値、3つの周囲のライト値、3つのパッ
クされた値を含む1つの減衰シフト・ワードを含む。ま
た、FLFバッファ380が、Fコア・ブロック352
とLコア・ブロック354との間に提供される。FLF
バッファは、Fコアの制御の下に、Fコア・ブロック3
52とLコア・ブロック354との間でデータを通信す
るのに用いられる双方向バッファである。
【0037】LコアからSコアのバッファ(LSバッフ
ァ)386は、Lコア・ブロック354とSコア・ブロ
ック356との間に結合されている。LSバッファ38
6は、ダブル・バッファされており、それぞれのバッフ
ァは、4つの48ビット・ワードを保持している。
ァ)386は、Lコア・ブロック354とSコア・ブロ
ック356との間に結合されている。LSバッファ38
6は、ダブル・バッファされており、それぞれのバッフ
ァは、4つの48ビット・ワードを保持している。
【0038】浮動小数点ブロック152はまた、データ
をFコア・ブロック352からSコア・ブロック356
に転送するのに用いられるFコアからSコアのバッファ
(FSバッファ)384を含む。FSバッファは、5つ
のバッファを備えており、それぞれが、32の32ビッ
ト値を保持している。これらの5つのバッファは、Lコ
ア・ブロック354のパイプライン段を整合させるよう
に設計されているが、これらは、2つのFLバッファ、
2つのLSバッファ、そして、Lコア・ブロック354
に記憶され得る1つのプリミティブである。Fコア・ブ
ロック352からこのバッファを介してSコア・ブロッ
ク356まで転送されたデータは、Sコア・ブロック3
56内でどのマイクロコード手順をランさせるべきかを
指示するディスパッチ・コードを含む。
をFコア・ブロック352からSコア・ブロック356
に転送するのに用いられるFコアからSコアのバッファ
(FSバッファ)384を含む。FSバッファは、5つ
のバッファを備えており、それぞれが、32の32ビッ
ト値を保持している。これらの5つのバッファは、Lコ
ア・ブロック354のパイプライン段を整合させるよう
に設計されているが、これらは、2つのFLバッファ、
2つのLSバッファ、そして、Lコア・ブロック354
に記憶され得る1つのプリミティブである。Fコア・ブ
ロック352からこのバッファを介してSコア・ブロッ
ク356まで転送されたデータは、Sコア・ブロック3
56内でどのマイクロコード手順をランさせるべきかを
指示するディスパッチ・コードを含む。
【0039】最後に、浮動小数点ブロック152は、S
コア・ブロック356とFDバス・インターフェース3
66との間に結合されたSコア出力バッファ(SOバッ
ファ)158を含む。SOバッファ158は、FDバス
を介して描画プロセッサ172A−172Bまで送られ
るべきデータを収集する。SOバッファ158は、ダブ
ル・バッファされ、それぞれのバッファには32の32
ビット・ワードを保持する。SOバッファ158は、そ
れぞれの描画プロセッサ172A−172Bが必要とす
る順序で、固定小数点データを有する2つまでのプリミ
ティブを保持する。Sコア・ブロック356は、固定小
数点データと共に、追加的なステータス情報を、描画プ
ロセッサ172に運ぶ。例えば、1ステータス・ビット
が、与えられたプリミティブが関連するプリミティブの
グループの中の最後のものであるかどうかを指示するそ
れぞれのエントリと共に運ばれる。SOバッファ158
は、最小数のサイクルを用いてデータをバスを介して転
送するのにいくつのワードが有効であるのかを示す別個
のステータス・レジスタを含む。SOバッファ158
は、浮動小数点ブロック出力バッファ158を有する。図5−Lコア・ブロック図 次に図5を参照すると、浮動小数点プロセッサ152の
それぞれにおけるLコア・ブロック354を図解するブ
ロック図が示されている。Lコア・ブロック354は、
ライティング計算を実行する固定小数点計算ユニットを
備えている。示されているように、Lコア・ブロック3
54は、データを、LIバッファ376、FLバッファ
374、FLLバッファ378、双方向FLFバッファ
380から受け取る。情報は、Lコア・ブロック354
内部では、LL(ライト)レジスタ・ファイル410、
LCC(カラー)レジスタ・ファイル420、LR(汎
用)レジスタ・ファイル430に記憶される。オペラン
ドは、レジスタ・ファイル410、420、430から
LAバス、LBバス、LCバスに、そして、ライティン
グ計算のために、乗算・集積(multiply-accumulate)
ブロック450に運ばれる。これらの計算は、SRAM
472に記憶されているマイクロコードを実行して、命
令制御ロジック・ブロック470の制御の下に実行され
る。追加的なライティング計算は、逆平方根(inverse
square root = ISQRT)ブロック462とベキ(power)
関数ユニット464とにおいて実行される。ライティン
グの結果は、LDバスに、そして、LSバッファ386
を介して、Sコア・ブロック356に送られる。
コア・ブロック356とFDバス・インターフェース3
66との間に結合されたSコア出力バッファ(SOバッ
ファ)158を含む。SOバッファ158は、FDバス
を介して描画プロセッサ172A−172Bまで送られ
るべきデータを収集する。SOバッファ158は、ダブ
ル・バッファされ、それぞれのバッファには32の32
ビット・ワードを保持する。SOバッファ158は、そ
れぞれの描画プロセッサ172A−172Bが必要とす
る順序で、固定小数点データを有する2つまでのプリミ
ティブを保持する。Sコア・ブロック356は、固定小
数点データと共に、追加的なステータス情報を、描画プ
ロセッサ172に運ぶ。例えば、1ステータス・ビット
が、与えられたプリミティブが関連するプリミティブの
グループの中の最後のものであるかどうかを指示するそ
れぞれのエントリと共に運ばれる。SOバッファ158
は、最小数のサイクルを用いてデータをバスを介して転
送するのにいくつのワードが有効であるのかを示す別個
のステータス・レジスタを含む。SOバッファ158
は、浮動小数点ブロック出力バッファ158を有する。図5−Lコア・ブロック図 次に図5を参照すると、浮動小数点プロセッサ152の
それぞれにおけるLコア・ブロック354を図解するブ
ロック図が示されている。Lコア・ブロック354は、
ライティング計算を実行する固定小数点計算ユニットを
備えている。示されているように、Lコア・ブロック3
54は、データを、LIバッファ376、FLバッファ
374、FLLバッファ378、双方向FLFバッファ
380から受け取る。情報は、Lコア・ブロック354
内部では、LL(ライト)レジスタ・ファイル410、
LCC(カラー)レジスタ・ファイル420、LR(汎
用)レジスタ・ファイル430に記憶される。オペラン
ドは、レジスタ・ファイル410、420、430から
LAバス、LBバス、LCバスに、そして、ライティン
グ計算のために、乗算・集積(multiply-accumulate)
ブロック450に運ばれる。これらの計算は、SRAM
472に記憶されているマイクロコードを実行して、命
令制御ロジック・ブロック470の制御の下に実行され
る。追加的なライティング計算は、逆平方根(inverse
square root = ISQRT)ブロック462とベキ(power)
関数ユニット464とにおいて実行される。ライティン
グの結果は、LDバスに、そして、LSバッファ386
を介して、Sコア・ブロック356に送られる。
【0040】Lコア・プロセッサ354は、特に、ライ
ティング計算を実行するように設計されている。好適実
施例では、Lコア・ブロック354は、大部分のライテ
ィング演算(特に、オペランドが、−2.0から+2.
0までの固定小数点範囲にある場合)を実行する。Fコ
ア・ブロック352は、ポイントおよびスポット光源な
どの、汎用浮動小数点プロセッサを用いることが必要で
あるようなより複雑な光源に対するライティング計算を
実行する。
ティング計算を実行するように設計されている。好適実
施例では、Lコア・ブロック354は、大部分のライテ
ィング演算(特に、オペランドが、−2.0から+2.
0までの固定小数点範囲にある場合)を実行する。Fコ
ア・ブロック352は、ポイントおよびスポット光源な
どの、汎用浮動小数点プロセッサを用いることが必要で
あるようなより複雑な光源に対するライティング計算を
実行する。
【0041】好適実施例では、Lコア・ブロック354
でのすべての計算は、一度に3回の、16ビットの固定
小数点数学を用いて実行される。48ビット・ワードの
3つの値は、XYZ、ノーマル、RGBなどの1つのト
リプルを表すか、または、1つの三角形のそれぞれの3
つの異なる頂点に対する値を表す。Lコア354によっ
て実行されたライティング計算は、他のライティング属
性のキャッシュされた値を伴う予め乗算されたマテリア
ル・カラーを用いない。これによって、グラフィクス・
アクセラレータが、RGB頂点当たり(per-vertex)の
カラー三角形のメッシュを、テクスチャおよびバンプ・
マッピングへの高品質の代替物としてサポートすること
が可能になる。一般に、ほとんどのライティング演算
は、頂点当たりのカラー変更を含むことが予想される。
これには、Lコア・ブロック354における計算が幾分
向上することが要求されるが、それは、他のユニットに
よって完全にオーバラップされる(すなわち、Lコア
は、依然として、FコアおよびSコアのどちらよりも高
速である)。この変更によって、また、OpenGLの
セマンティクスをサポートするのが更に容易になる。そ
こでは、カラーは、警告なしに、そして、有効なキャッ
シュ方法なしに、任意の頂点で変化する。
でのすべての計算は、一度に3回の、16ビットの固定
小数点数学を用いて実行される。48ビット・ワードの
3つの値は、XYZ、ノーマル、RGBなどの1つのト
リプルを表すか、または、1つの三角形のそれぞれの3
つの異なる頂点に対する値を表す。Lコア354によっ
て実行されたライティング計算は、他のライティング属
性のキャッシュされた値を伴う予め乗算されたマテリア
ル・カラーを用いない。これによって、グラフィクス・
アクセラレータが、RGB頂点当たり(per-vertex)の
カラー三角形のメッシュを、テクスチャおよびバンプ・
マッピングへの高品質の代替物としてサポートすること
が可能になる。一般に、ほとんどのライティング演算
は、頂点当たりのカラー変更を含むことが予想される。
これには、Lコア・ブロック354における計算が幾分
向上することが要求されるが、それは、他のユニットに
よって完全にオーバラップされる(すなわち、Lコア
は、依然として、FコアおよびSコアのどちらよりも高
速である)。この変更によって、また、OpenGLの
セマンティクスをサポートするのが更に容易になる。そ
こでは、カラーは、警告なしに、そして、有効なキャッ
シュ方法なしに、任意の頂点で変化する。
【0042】Lコア354は、効率的な16ビットの関
数ユニットを有し、頂点法線(vertex normal)におい
て、モデル・スペースからワールド・スペースへの変換
を実行する。コマンド・ブロック142は、ノーマル・
データを浮動小数点プロセッサ152まで、既に正規化
(ノーマライズ)された48ビットの値(3つの16ビ
ットの成分)として、送る。Lコア・レジスタは、それ
ぞれが3つの48ビット値として記憶されている、2つ
の3X3正規変換(normal transformation)行列を含
む。この2つの変換行列は、ステレオ・モードにおける
左右の目の変換を実行するのに用いられる。
数ユニットを有し、頂点法線(vertex normal)におい
て、モデル・スペースからワールド・スペースへの変換
を実行する。コマンド・ブロック142は、ノーマル・
データを浮動小数点プロセッサ152まで、既に正規化
(ノーマライズ)された48ビットの値(3つの16ビ
ットの成分)として、送る。Lコア・レジスタは、それ
ぞれが3つの48ビット値として記憶されている、2つ
の3X3正規変換(normal transformation)行列を含
む。この2つの変換行列は、ステレオ・モードにおける
左右の目の変換を実行するのに用いられる。
【0043】カラーおよびノーマルは、LIバッファ3
76によってコマンド・ブロック142からLコア35
4に変換される。ライティング計算は、マイクロコード
命令がSRAM472に存在し命令制御ロジック470
とFコア・ブロック352から送られたディスパッチ・
ワードとの制御の下でこの命令が実行されることに応答
して、実行される。Lコア命令セットは、条件的なブラ
ンチ命令を含まないので、ライティング計算のそれぞれ
のステップは、完了まで動作され、そして、次のステッ
プが次のディスパッチ・ワードの内容に基づいて開始さ
れる。
76によってコマンド・ブロック142からLコア35
4に変換される。ライティング計算は、マイクロコード
命令がSRAM472に存在し命令制御ロジック470
とFコア・ブロック352から送られたディスパッチ・
ワードとの制御の下でこの命令が実行されることに応答
して、実行される。Lコア命令セットは、条件的なブラ
ンチ命令を含まないので、ライティング計算のそれぞれ
のステップは、完了まで動作され、そして、次のステッ
プが次のディスパッチ・ワードの内容に基づいて開始さ
れる。
【0044】Lコア354は、入力および出力バッファ
に加えて、3つの異なるレジスタ・ファイルを含む。L
Lレジスタ410は、32までのライトのそれぞれに対
する値を含む。LTレジスタ440は、どのライトにア
クセスすべきかを特定するが、この理由は、一度には、
ただ1つのライトにしかアクセスできないからである。
ライト値は、Fコア352によってロードされ、Lコア
354によっては修正されない。LRレジスタ430
は、ライティング計算からの中間的な値を記憶する汎用
レジスタとして用いられる。LCCレジスタ420は、
プリミティブの頂点に対するマテリアル特性すなわち
「現在のカラー」値を保持する。
に加えて、3つの異なるレジスタ・ファイルを含む。L
Lレジスタ410は、32までのライトのそれぞれに対
する値を含む。LTレジスタ440は、どのライトにア
クセスすべきかを特定するが、この理由は、一度には、
ただ1つのライトにしかアクセスできないからである。
ライト値は、Fコア352によってロードされ、Lコア
354によっては修正されない。LRレジスタ430
は、ライティング計算からの中間的な値を記憶する汎用
レジスタとして用いられる。LCCレジスタ420は、
プリミティブの頂点に対するマテリアル特性すなわち
「現在のカラー」値を保持する。
【0045】Lコア・ブロック354は、48ビット・
ワードの中の3つの16ビット値のそれぞれに対する1
つのユニットを含む、乗算・集積ブロック450を含ん
でいる。乗算・集積ユニットのそれぞれの標準的な動作
は、48ビット・イン、48ビット・アウトである。ド
ット・プロダクト(内積)の計算のためには、僅かに1
6ビットの結果しか存在せず、従って、この結果は、3
つの16ビットのフィールドのそれぞれの中に複製(re
plicate)される。
ワードの中の3つの16ビット値のそれぞれに対する1
つのユニットを含む、乗算・集積ブロック450を含ん
でいる。乗算・集積ユニットのそれぞれの標準的な動作
は、48ビット・イン、48ビット・アウトである。ド
ット・プロダクト(内積)の計算のためには、僅かに1
6ビットの結果しか存在せず、従って、この結果は、3
つの16ビットのフィールドのそれぞれの中に複製(re
plicate)される。
【0046】逆平方根(ISQRT)ブロック462
は、視点(ビューポイント)ベクトルを正規化するのに
用いられる。ISQRTブロック462は、内積計算か
ら16ビットを受け取り、16ビットの結果を生じさ
せ、48ビット・ワードにおける3つの値に複製させ
る。更に、Lコア354はまた、鏡面(スペキュラー)
ハイライトを計算するのに用いられるベキ関数ユニット
464を含む。ベキ関数ユニット464は、内積計算か
ら16ビットを取り、16ビットの結果を生じ、48ビ
ットのビット・ワードにおける3つの値に複製させる。
ベキ関数ユニット464は、2つのテーブル・ルックア
ップを実行し、正確な値を生じさせるためのそれ以外の
計算も実行する。この結果は、0.5パーセントの正確
さを有し、すなわち、8ビット・カラーの最下位ビット
の程度までの正確さを有する。Lコア通信バッファ Lコア354は、チップの他の部分と通信するための5
つの異なるバッファを含む。LIバッファ376は、F
コア・ブロック352におけるFIバッファ372に対
応する。LIバッファ376は、CFバスを介してコマ
ンド・ブロック142から送られてくる入来データにア
クセスするのに用いられる。LIバッファ376は、4
8ビット・レジスタとして見ることができ、3つのカラ
ーと、3つのノーマルと、3つのアルファ値を含む1ワ
ードとを含む。Fコア352におけるFSレジスタ38
4のように、LIバッファ376は、2つのFIバッフ
ァ372と、2つのFLバッファ374と、Fコア35
2において処理されている1つのプリミティブとに対応
する5つのバッファを備えている。
は、視点(ビューポイント)ベクトルを正規化するのに
用いられる。ISQRTブロック462は、内積計算か
ら16ビットを受け取り、16ビットの結果を生じさ
せ、48ビット・ワードにおける3つの値に複製させ
る。更に、Lコア354はまた、鏡面(スペキュラー)
ハイライトを計算するのに用いられるベキ関数ユニット
464を含む。ベキ関数ユニット464は、内積計算か
ら16ビットを取り、16ビットの結果を生じ、48ビ
ットのビット・ワードにおける3つの値に複製させる。
ベキ関数ユニット464は、2つのテーブル・ルックア
ップを実行し、正確な値を生じさせるためのそれ以外の
計算も実行する。この結果は、0.5パーセントの正確
さを有し、すなわち、8ビット・カラーの最下位ビット
の程度までの正確さを有する。Lコア通信バッファ Lコア354は、チップの他の部分と通信するための5
つの異なるバッファを含む。LIバッファ376は、F
コア・ブロック352におけるFIバッファ372に対
応する。LIバッファ376は、CFバスを介してコマ
ンド・ブロック142から送られてくる入来データにア
クセスするのに用いられる。LIバッファ376は、4
8ビット・レジスタとして見ることができ、3つのカラ
ーと、3つのノーマルと、3つのアルファ値を含む1ワ
ードとを含む。Fコア352におけるFSレジスタ38
4のように、LIバッファ376は、2つのFIバッフ
ァ372と、2つのFLバッファ374と、Fコア35
2において処理されている1つのプリミティブとに対応
する5つのバッファを備えている。
【0047】FLバッファ374は、Fコア352から
XYZ視点ベクトルを受け取るのに用いられる。FLバ
ッファ374は、必要であれば、クリップされたRGB
カラーとアルファ値とを記憶するのにも用いられる。F
LLFIFO378は、ローカルなライトに対する減衰
値を送るのに用いられる。これらの値は、Fコア352
においてのみ実行される浮動小数点計算を必要とする。
ライティング計算が減衰ファクタがライトのために必要
とされるポイントに至るときには、Lコア354は、デ
ータがFLLFIFO378において使用可能になるま
で停止する。
XYZ視点ベクトルを受け取るのに用いられる。FLバ
ッファ374は、必要であれば、クリップされたRGB
カラーとアルファ値とを記憶するのにも用いられる。F
LLFIFO378は、ローカルなライトに対する減衰
値を送るのに用いられる。これらの値は、Fコア352
においてのみ実行される浮動小数点計算を必要とする。
ライティング計算が減衰ファクタがライトのために必要
とされるポイントに至るときには、Lコア354は、デ
ータがFLLFIFO378において使用可能になるま
で停止する。
【0048】FLFバッファ380は、LコアとFコア
との間の通信のためのものであり、通常の動作のための
ものではない。FLFバッファ380の1回のランタイ
ム使用は、クリッピングの間に、ライティング値をLコ
ア354に送り、Fコアがスポットライトに用いるため
にLコア354からベキ関数ロジックを借用することで
ある。これをするためには、Fコアは、2つのベキ関数
パラメータをFLFバッファ380に書き込み、次に、
Lコアに割り込みを行って、計算が実行されることを要
求する。計算が完了すると、結果は、FLFバッファ3
80に戻され、Lコア354の動作継続が許可される。
Fコア352は、次に、FLFバッファ380のその側
面からの結果を読み出す。FLFバッファ380はま
た、診断目的にも用いられる。
との間の通信のためのものであり、通常の動作のための
ものではない。FLFバッファ380の1回のランタイ
ム使用は、クリッピングの間に、ライティング値をLコ
ア354に送り、Fコアがスポットライトに用いるため
にLコア354からベキ関数ロジックを借用することで
ある。これをするためには、Fコアは、2つのベキ関数
パラメータをFLFバッファ380に書き込み、次に、
Lコアに割り込みを行って、計算が実行されることを要
求する。計算が完了すると、結果は、FLFバッファ3
80に戻され、Lコア354の動作継続が許可される。
Fコア352は、次に、FLFバッファ380のその側
面からの結果を読み出す。FLFバッファ380はま
た、診断目的にも用いられる。
【0049】LSバッファ386は、セットアップ計算
のためにデータをSコア356に送るために用いられる
書き込みだけ(ライト・オンリ)の出力レジスタを備え
ている。カラーおよびアルファ値だけが、このインター
フェースを介して送られる。標準的な三角形の場合に
は、3つのカラーと1つのアルファ値(3つの値を含
む)とがSコア356に送られる。好適実施例では、L
Sバッファ386は、4つのダブル・バッファ型のエン
トリを備えている。グラフィクス座標システム ホストCPU102が幾何学的プリミティブをグラフィ
クス・アクセラレータ112に転送するときには、これ
らのプリミティブの頂点は、典型的には、三次元モデル
空間の座標(世界空間座標と称される)によって表現さ
れる。世界空間座標は、表現に適した任意の単位で表す
ことができる(例えば、フィート、マイル、メートル
等)。後続のパイプライン段による処理がなされる前
に、これらの座標には、Fコア・ブロック352によっ
て実行されるビュー変換が施され、それによって、これ
らの頂点は、スクリーン空間座標に変換される。スクリ
ーン空間は、ピクセル(または、その一部)を用いて測
定され、スクリーンの最大ピクセル座標によって境界が
画定される。
のためにデータをSコア356に送るために用いられる
書き込みだけ(ライト・オンリ)の出力レジスタを備え
ている。カラーおよびアルファ値だけが、このインター
フェースを介して送られる。標準的な三角形の場合に
は、3つのカラーと1つのアルファ値(3つの値を含
む)とがSコア356に送られる。好適実施例では、L
Sバッファ386は、4つのダブル・バッファ型のエン
トリを備えている。グラフィクス座標システム ホストCPU102が幾何学的プリミティブをグラフィ
クス・アクセラレータ112に転送するときには、これ
らのプリミティブの頂点は、典型的には、三次元モデル
空間の座標(世界空間座標と称される)によって表現さ
れる。世界空間座標は、表現に適した任意の単位で表す
ことができる(例えば、フィート、マイル、メートル
等)。後続のパイプライン段による処理がなされる前
に、これらの座標には、Fコア・ブロック352によっ
て実行されるビュー変換が施され、それによって、これ
らの頂点は、スクリーン空間座標に変換される。スクリ
ーン空間は、ピクセル(または、その一部)を用いて測
定され、スクリーンの最大ピクセル座標によって境界が
画定される。
【0050】Fコア・ブロック352において実行され
るビュー変換動作は、変換行列(「現在のビューイング
行列」と称される)と入力座標値を表すベクトルとを乗
算することを含む。入力座標ベクトルと変換行列との乗
算は、頂点座標を予め定義されたアイ・ポジション(世
界空間座標における見ている者の位置を示す)にマップ
することを含む様々な効果を有する。変換では、また、
第4の頂点座標Wを用いて、プリミティブの全体的な射
影を提供する。
るビュー変換動作は、変換行列(「現在のビューイング
行列」と称される)と入力座標値を表すベクトルとを乗
算することを含む。入力座標ベクトルと変換行列との乗
算は、頂点座標を予め定義されたアイ・ポジション(世
界空間座標における見ている者の位置を示す)にマップ
することを含む様々な効果を有する。変換では、また、
第4の頂点座標Wを用いて、プリミティブの全体的な射
影を提供する。
【0051】Fコア・ブロック352における変換動作
の別の効果は、ウィンドウからビューポートへの変換で
ある。「ウィンドウ」とは、世界座標の中の領域(典型
的には、矩形)であり、その中に、プリミティブが存在
する位置が定義されている。「ビューポート」とは、ス
クリーン空間座標における対応する領域であり、その中
で、プリミティブが実際にレンダリングされる。ウィン
ドウからビューポートへの変換の結果として、与えられ
たプリミティブに、Fコア・ブロック352によって、
スケーリングやクリッピング等を行うことができる。既
に説明したように、頂点(スクリーン空間座標におけ
る)は、次に、FLバッファ374を介して、ライティ
ング計算のために、Lコア・ブロック354に送られ
る。
の別の効果は、ウィンドウからビューポートへの変換で
ある。「ウィンドウ」とは、世界座標の中の領域(典型
的には、矩形)であり、その中に、プリミティブが存在
する位置が定義されている。「ビューポート」とは、ス
クリーン空間座標における対応する領域であり、その中
で、プリミティブが実際にレンダリングされる。ウィン
ドウからビューポートへの変換の結果として、与えられ
たプリミティブに、Fコア・ブロック352によって、
スケーリングやクリッピング等を行うことができる。既
に説明したように、頂点(スクリーン空間座標におけ
る)は、次に、FLバッファ374を介して、ライティ
ング計算のために、Lコア・ブロック354に送られ
る。
【0052】ローカルなアイ・ベクトルを計算するため
に、アイ・ポジション(世界空間座標の中にある)と頂
点位置(スクリーン空間座標)との両方を考えられなけ
ればならない。以下で説明するように、ローカルなアイ
・ベクトルは、スクリーン空間における頂点を(世界座
標の中にある)アイ・ベクトル空間に変換するビュー・
ベクトル行列を用いて、計算される。ビュー・ベクトル
行列は、部分的には、頂点座標の世界空間への逆変換を
与える現在のビューイング行列の逆行列から計算され
る。
に、アイ・ポジション(世界空間座標の中にある)と頂
点位置(スクリーン空間座標)との両方を考えられなけ
ればならない。以下で説明するように、ローカルなアイ
・ベクトルは、スクリーン空間における頂点を(世界座
標の中にある)アイ・ベクトル空間に変換するビュー・
ベクトル行列を用いて、計算される。ビュー・ベクトル
行列は、部分的には、頂点座標の世界空間への逆変換を
与える現在のビューイング行列の逆行列から計算され
る。
【0053】次に図6Aを参照すると、面512上の頂
点(V)502が示されている。アイ・ベクトル516
は、頂点502からアイ・ポジション508まで延長し
ている。ベクトル516は、点(S)510において
(世界空間座標における)z=0を通過する。ディスプ
レイ装置84のスクリーン514は、図6Aの側面図に
図解されているように、平面z=0内に存在すると考え
られる。XGLやOpenGLなどのグラフィクス標準
では、鏡面反射値などの計算は、アイ・ベクトル516
だけでなく、表面法線(surface normal)504と、頂
点502から光源506まで延長するライト方向ベクト
ル518とを含む。従来技術によるシステム(浮動小数
点ライティング・ユニットを伴うもの)では、ローカル
なアイ・ベクトルは、頂点502の位置をアイ・ポジシ
ョン508から減算することによって計算されていた。
しかし、これらの距離は、かなり大きいので、Lコア・
ブロック354の数値範囲を超えてしまう可能性があ
る。図7−ローカルなアイ・ベクトルの計算 次に図7を参照すると、与えられたアイ・ポジション
(例えば、アイ・ポジション508)と与えられた頂点
(例えば、頂点502)とに対応するローカルなアイ・
ベクトルの高速計算のための方法600が、示されてい
る。ステップ610では、ビュー・ベクトル行列が生成
される。以下で更に詳細に説明されるように、ビュー・
ベクトル行列は、現在のビューイング行列の逆行列と、
頂点502がマップされる与えられたビューポートのコ
ーナーのスクリーン空間座標とから生成される。ある実
施例では、ビュー・ベクトル行列は、3行3列の疎(sp
arse)行列である。
点(V)502が示されている。アイ・ベクトル516
は、頂点502からアイ・ポジション508まで延長し
ている。ベクトル516は、点(S)510において
(世界空間座標における)z=0を通過する。ディスプ
レイ装置84のスクリーン514は、図6Aの側面図に
図解されているように、平面z=0内に存在すると考え
られる。XGLやOpenGLなどのグラフィクス標準
では、鏡面反射値などの計算は、アイ・ベクトル516
だけでなく、表面法線(surface normal)504と、頂
点502から光源506まで延長するライト方向ベクト
ル518とを含む。従来技術によるシステム(浮動小数
点ライティング・ユニットを伴うもの)では、ローカル
なアイ・ベクトルは、頂点502の位置をアイ・ポジシ
ョン508から減算することによって計算されていた。
しかし、これらの距離は、かなり大きいので、Lコア・
ブロック354の数値範囲を超えてしまう可能性があ
る。図7−ローカルなアイ・ベクトルの計算 次に図7を参照すると、与えられたアイ・ポジション
(例えば、アイ・ポジション508)と与えられた頂点
(例えば、頂点502)とに対応するローカルなアイ・
ベクトルの高速計算のための方法600が、示されてい
る。ステップ610では、ビュー・ベクトル行列が生成
される。以下で更に詳細に説明されるように、ビュー・
ベクトル行列は、現在のビューイング行列の逆行列と、
頂点502がマップされる与えられたビューポートのコ
ーナーのスクリーン空間座標とから生成される。ある実
施例では、ビュー・ベクトル行列は、3行3列の疎(sp
arse)行列である。
【0054】ステップ620では、Lコア・ブロック3
54は、頂点502に対するスクリーン空間座標を受け
取る。これらの座標は、FLバッファ374を介して転
送されるが、FLバッファ374は、また、頂点502
がその一部である三角形プリミティブの残りの頂点に対
する座標も含む。好適実施例では、これらの転送された
頂点は、Fコア・ブロック352からセットアップ動作
のためにSコア・ブロック356に同時に送られ、従っ
て、頂点の座標は、Lコア・ブロック354に対して排
他的に生成される必要はない。
54は、頂点502に対するスクリーン空間座標を受け
取る。これらの座標は、FLバッファ374を介して転
送されるが、FLバッファ374は、また、頂点502
がその一部である三角形プリミティブの残りの頂点に対
する座標も含む。好適実施例では、これらの転送された
頂点は、Fコア・ブロック352からセットアップ動作
のためにSコア・ブロック356に同時に送られ、従っ
て、頂点の座標は、Lコア・ブロック354に対して排
他的に生成される必要はない。
【0055】ステップ630では、Lコア・ブロック3
54は、頂点502に対するスクリーン空間座標を表現
可能な数値範囲にスケーリングする。ある実施例では、
Fコア・ブロック352は、s11.20フォーマット
(1符号ビット、11整数ビット、20小数ビット)を
用いてスクリーン空間座標を表す。最大のスクリーン空
間値(Xが1280.0であり、Yが1024.0)
は、このようにして表すことができる(保護帯域空間を
考慮するときには、最大範囲は、−40から1320.
0である)。しかし、Lコア・ブロック354は、−
2.0から+2.0の数値範囲を有するだけである。こ
のようにして、多くの最下位小数ビットが廃棄され、入
力される頂点座標は、Lコア354のs1.14フォー
マットで表現されるようにスケーリングされる。Fコア
352からLコア354への座標の転送の結果は、従っ
て、自動的な1024による除算である。そして、座標
の最大数値範囲は、ほぼ、0.039から1.289に
なる。
54は、頂点502に対するスクリーン空間座標を表現
可能な数値範囲にスケーリングする。ある実施例では、
Fコア・ブロック352は、s11.20フォーマット
(1符号ビット、11整数ビット、20小数ビット)を
用いてスクリーン空間座標を表す。最大のスクリーン空
間値(Xが1280.0であり、Yが1024.0)
は、このようにして表すことができる(保護帯域空間を
考慮するときには、最大範囲は、−40から1320.
0である)。しかし、Lコア・ブロック354は、−
2.0から+2.0の数値範囲を有するだけである。こ
のようにして、多くの最下位小数ビットが廃棄され、入
力される頂点座標は、Lコア354のs1.14フォー
マットで表現されるようにスケーリングされる。Fコア
352からLコア354への座標の転送の結果は、従っ
て、自動的な1024による除算である。そして、座標
の最大数値範囲は、ほぼ、0.039から1.289に
なる。
【0056】ステップ640においては、正規化されて
いないアイ・ベクトルが、ステップ610において生成
されたビュー・ベクトル行列と頂点502のスケーリン
グされたスクリーン空間座標を表すベクトルとの行列乗
算を実行することによって、計算される。この動作によ
って、(正規化されていない)アイ・ベクトル516の
成分が得られる。この動作が可能であるのは、アイ・ポ
ジションからスクリーン上の点までの角度がその点にマ
ップされるすべての深さに対して一定であるからであ
る。
いないアイ・ベクトルが、ステップ610において生成
されたビュー・ベクトル行列と頂点502のスケーリン
グされたスクリーン空間座標を表すベクトルとの行列乗
算を実行することによって、計算される。この動作によ
って、(正規化されていない)アイ・ベクトル516の
成分が得られる。この動作が可能であるのは、アイ・ポ
ジションからスクリーン上の点までの角度がその点にマ
ップされるすべての深さに対して一定であるからであ
る。
【0057】後で説明するように、ビュー・ベクトル行
列はまた、アイ・ベクトル516のスケーリングを実行
して、後続の計算を容易にする。状況によっては、アイ
・ポジション508は、有効なアイ・ベクトル(Lコア
・ブロック354の数値範囲をオーバフローしないも
の)の計算ができない。ある実施例では、これらの状況
に対するローカルなアイ・ベクトルの計算は、Fコア・
ブロック352などの浮動小数点ユニットによって処理
される。好適実施例では、ステップ640の変換プロセ
スは、1つのLコア354のマイクロコード乗算・集積
命令によって実行される。
列はまた、アイ・ベクトル516のスケーリングを実行
して、後続の計算を容易にする。状況によっては、アイ
・ポジション508は、有効なアイ・ベクトル(Lコア
・ブロック354の数値範囲をオーバフローしないも
の)の計算ができない。ある実施例では、これらの状況
に対するローカルなアイ・ベクトルの計算は、Fコア・
ブロック352などの浮動小数点ユニットによって処理
される。好適実施例では、ステップ640の変換プロセ
スは、1つのLコア354のマイクロコード乗算・集積
命令によって実行される。
【0058】ステップ350では、ステップ640にお
いて計算された正規化されていないアイ・ベクトル51
6が正規化される(同じ方向の単位長さに変換され
る)。好適実施例では、このプロセスは、3つのLコア
354のマイクロコード命令から構成される。第1に、
正規化されていないアイ・ベクトルが平方される(内積
命令)。次に、内積の結果の逆数をとる(逆平方根命
令)。最後に、逆平方根の結果に、元のビュー・ベクト
ル行列が乗算され(乗算命令)、正しい正規化されたロ
ーカルなアイ・ベクトルが得られる。
いて計算された正規化されていないアイ・ベクトル51
6が正規化される(同じ方向の単位長さに変換され
る)。好適実施例では、このプロセスは、3つのLコア
354のマイクロコード命令から構成される。第1に、
正規化されていないアイ・ベクトルが平方される(内積
命令)。次に、内積の結果の逆数をとる(逆平方根命
令)。最後に、逆平方根の結果に、元のビュー・ベクト
ル行列が乗算され(乗算命令)、正しい正規化されたロ
ーカルなアイ・ベクトルが得られる。
【0059】ステップ660では、ステップ650で計
算された正規化されたローカルなアイ・ベクトルを用い
て、鏡面反射値などの後続のライティング計算を実行す
る。次に図8A−図8Dを参照すると、鏡面計算のいく
つかの例が示される。図8Aでは、XGLに対する鏡面
反射計算が示される。XGLでは、鏡面ハイライトの量
が、ライト・ベクトル672Aと法線ベクトル672A
とから反射ベクトル676Aを計算することによって計
算される。そして、反射ベクトル676Aとアイ・ベク
トル678Aとの内積によって、鏡面反射の量が決定さ
れる。図8Bでは、OpenGLに対する鏡面反射の計
算が示されている。OpenGLでは、反射ベクトル6
76Bが、アイ・ベクトル678Bとライト・ベクトル
672Bとの中間に計算される。鏡面値は、反射ベクト
ル676Bと法線ベクトル674Bとの内積から決定さ
れる。両方の方法共に、長所と短所とを有している。
算された正規化されたローカルなアイ・ベクトルを用い
て、鏡面反射値などの後続のライティング計算を実行す
る。次に図8A−図8Dを参照すると、鏡面計算のいく
つかの例が示される。図8Aでは、XGLに対する鏡面
反射計算が示される。XGLでは、鏡面ハイライトの量
が、ライト・ベクトル672Aと法線ベクトル672A
とから反射ベクトル676Aを計算することによって計
算される。そして、反射ベクトル676Aとアイ・ベク
トル678Aとの内積によって、鏡面反射の量が決定さ
れる。図8Bでは、OpenGLに対する鏡面反射の計
算が示されている。OpenGLでは、反射ベクトル6
76Bが、アイ・ベクトル678Bとライト・ベクトル
672Bとの中間に計算される。鏡面値は、反射ベクト
ル676Bと法線ベクトル674Bとの内積から決定さ
れる。両方の方法共に、長所と短所とを有している。
【0060】OpenGL方法は、無限遠点におけるア
イ・ポジションと共に用いる際には、1ライト当たりに
1回、反射ベクトルを計算することを可能にし、1頂点
当たり、ただ1回の内積演算を必要とするだけである。
しかし、ローカルなアイ・ポイントでは、反射ベクトル
が、すべての頂点に対して、1ライト当たり1回計算さ
れなければならず、これは、正規化演算が必要になるた
めに、かなりの費用である。
イ・ポジションと共に用いる際には、1ライト当たりに
1回、反射ベクトルを計算することを可能にし、1頂点
当たり、ただ1回の内積演算を必要とするだけである。
しかし、ローカルなアイ・ポイントでは、反射ベクトル
が、すべての頂点に対して、1ライト当たり1回計算さ
れなければならず、これは、正規化演算が必要になるた
めに、かなりの費用である。
【0061】XGL方法は、僅かに再構成することがで
き、それによって、反射ベクトルを頂点ごとに計算さ
れ、同じ反射ベクトルがそれぞれのライトに対して用い
られる。図8Dに示されているように、反射ベクトル6
76Cは、法線ベクトル674Cとアイ・ベクトル67
8Cとから計算される。法線ベクトル674Cとアイ・
ベクトル678Cとの内積によって、法線ベクトル67
4Cへのアイ・ベクトル678Cの射影の高さが生じ
る。この高さに2を乗算し、結果を法線ベクトル674
Cと乗算すると、アイ・ベクトル678Cに加算された
反射ベクトルに等しい法線ベクトル674C上の点が得
られる。平行四辺形を用い、この点からアイ・ベクトル
678Cを減算すると、実際の反射ベクトル676Cが
得られる。両方のベクトル共にこの演算前の単位長さに
対して正規化されていたので、結果もまた正規化されて
いる。反射ベクトル676Cと与えられた頂点に対する
それぞれのライト(例えば、ライト672C)との内積
により、図8Cに示されているように、鏡面反射の量が
得られる。図9−ビュー・ベクトル行列の生成 次に図9を参照すると、既に説明されたように用いられ
たビュー・ベクトル行列を生成する方法700が、示さ
れている。ステップ710では、現在のビューイング行
列から、逆行列が生成される。現在のビューイング行列
は、グラフィクス・パイプラインのより早い段階におい
て、頂点を、世界空間座標からスクリーン空間座標に変
換するのに用いられる。ステップ712では、世界座標
が、逆行列を用いて、与えられたアイ・ポジションに対
して計算される。好適実施例では、与えられたアイ・ポ
ジションに対する世界座標は、単純に、逆行列の第2の
ローの成分である(以下に掲げるリストを参照のこ
と)。ステップ714では、与えられたビューポートの
コーナー座標に対する世界空間座標は、ステップ710
において計算された逆行列を用いて与えられたビューポ
ートのコーナーのクリップ空間座標を変換することによ
って、決定される。クリップ空間座標では、ビューポー
トの左エッジは、x=−1.0であり、右エッジは、x
=+1.0である。同様にして、ビューポートのトップ
・エッジは、y=+1.0であり、ボトム・エッジは、
y=−1.0である。(x,y)クリップ座標での与え
られたビューポートに対する4つのコーナーは、従っ
て、左上のコーナーに対しては、(−1.0,+1.
0)であり、右上のコーナーに対しては、(+1.0,
+1.0)であり、左下のコーナーに対しては、(−
1.0,−1.0)であり、右下のコーナーに対して
は、(+1.0,−1.0)である。zおよびw座標
は、それぞれのコーナーに対して、1.0である。
き、それによって、反射ベクトルを頂点ごとに計算さ
れ、同じ反射ベクトルがそれぞれのライトに対して用い
られる。図8Dに示されているように、反射ベクトル6
76Cは、法線ベクトル674Cとアイ・ベクトル67
8Cとから計算される。法線ベクトル674Cとアイ・
ベクトル678Cとの内積によって、法線ベクトル67
4Cへのアイ・ベクトル678Cの射影の高さが生じ
る。この高さに2を乗算し、結果を法線ベクトル674
Cと乗算すると、アイ・ベクトル678Cに加算された
反射ベクトルに等しい法線ベクトル674C上の点が得
られる。平行四辺形を用い、この点からアイ・ベクトル
678Cを減算すると、実際の反射ベクトル676Cが
得られる。両方のベクトル共にこの演算前の単位長さに
対して正規化されていたので、結果もまた正規化されて
いる。反射ベクトル676Cと与えられた頂点に対する
それぞれのライト(例えば、ライト672C)との内積
により、図8Cに示されているように、鏡面反射の量が
得られる。図9−ビュー・ベクトル行列の生成 次に図9を参照すると、既に説明されたように用いられ
たビュー・ベクトル行列を生成する方法700が、示さ
れている。ステップ710では、現在のビューイング行
列から、逆行列が生成される。現在のビューイング行列
は、グラフィクス・パイプラインのより早い段階におい
て、頂点を、世界空間座標からスクリーン空間座標に変
換するのに用いられる。ステップ712では、世界座標
が、逆行列を用いて、与えられたアイ・ポジションに対
して計算される。好適実施例では、与えられたアイ・ポ
ジションに対する世界座標は、単純に、逆行列の第2の
ローの成分である(以下に掲げるリストを参照のこ
と)。ステップ714では、与えられたビューポートの
コーナー座標に対する世界空間座標は、ステップ710
において計算された逆行列を用いて与えられたビューポ
ートのコーナーのクリップ空間座標を変換することによ
って、決定される。クリップ空間座標では、ビューポー
トの左エッジは、x=−1.0であり、右エッジは、x
=+1.0である。同様にして、ビューポートのトップ
・エッジは、y=+1.0であり、ボトム・エッジは、
y=−1.0である。(x,y)クリップ座標での与え
られたビューポートに対する4つのコーナーは、従っ
て、左上のコーナーに対しては、(−1.0,+1.
0)であり、右上のコーナーに対しては、(+1.0,
+1.0)であり、左下のコーナーに対しては、(−
1.0,−1.0)であり、右下のコーナーに対して
は、(+1.0,−1.0)である。zおよびw座標
は、それぞれのコーナーに対して、1.0である。
【0062】次に、ステップ716において、与えられ
たビューポートのコーナー座標に対する世界空間座標
が、与えられたアイ・ポジションに対する世界空間座標
と同様に、正規化される。ステップ718では、ステッ
プ716から得られた結果的な世界座標を用いて、正規
化されたアイ・ポジションからビューポートのコーナー
までの世界空間における複数のベクトルが生成される。
次に、ステップ720では、この複数のベクトルが、平
面Z=1に正規化される。正規化の後で、サイズと中心
オフセットとが(xおよびy座標の両方で)、与えられ
たビューポートに対して、ステップ722で、決定され
る。同様にして、ステップ724において、複数のベク
トルの与えられたビューポート上への射影のサイズが、
射影の中心オフセットと同様に、決定される。与えられ
たビューポートのサイズと中心オフセットとが、スクリ
ーン空間座標において計算され、Lコア354の数値範
囲に調整される。
たビューポートのコーナー座標に対する世界空間座標
が、与えられたアイ・ポジションに対する世界空間座標
と同様に、正規化される。ステップ718では、ステッ
プ716から得られた結果的な世界座標を用いて、正規
化されたアイ・ポジションからビューポートのコーナー
までの世界空間における複数のベクトルが生成される。
次に、ステップ720では、この複数のベクトルが、平
面Z=1に正規化される。正規化の後で、サイズと中心
オフセットとが(xおよびy座標の両方で)、与えられ
たビューポートに対して、ステップ722で、決定され
る。同様にして、ステップ724において、複数のベク
トルの与えられたビューポート上への射影のサイズが、
射影の中心オフセットと同様に、決定される。与えられ
たビューポートのサイズと中心オフセットとが、スクリ
ーン空間座標において計算され、Lコア354の数値範
囲に調整される。
【0063】射影のサイズと中心オフセットとは、ステ
ップ726において、与えられたビューポートのサイズ
と中心オフセットと共に用いられ、正規化されていない
ビュー・ベクトル行列成分を計算する。次に、ステップ
728において、ビュー・ベクトル行列への最大入力値
が計算され、それによって、ステップ730における最
大ビュー・ベクトルの長さの決定が可能になる。ステッ
プ732において、正規化されていないビュー・ベクト
ル行列の成分が、最大のベクトルの長さを、与えられた
ビューポートに対する所定の範囲内に維持するようにス
ケーリングされ、最終的なビュー・ベクトル行列の成分
の値が得られる。
ップ726において、与えられたビューポートのサイズ
と中心オフセットと共に用いられ、正規化されていない
ビュー・ベクトル行列成分を計算する。次に、ステップ
728において、ビュー・ベクトル行列への最大入力値
が計算され、それによって、ステップ730における最
大ビュー・ベクトルの長さの決定が可能になる。ステッ
プ732において、正規化されていないビュー・ベクト
ル行列の成分が、最大のベクトルの長さを、与えられた
ビューポートに対する所定の範囲内に維持するようにス
ケーリングされ、最終的なビュー・ベクトル行列の成分
の値が得られる。
【0064】好適実施例では、与えられたビューポート
に対する所定の範囲は、図6Bを参照して説明される。
図6Bは、スクリーン514内のビューポートを示して
いる。ビュー・ベクトル(アイ・ベクトルの別名)53
0は、方法600に関して上述したように計算される。
ビュー・ベクトル530は、2つの規準に基づいて、有
効であることが決定される。第1に、アイ・ポジション
508からビューポート520までの距離は、アイ・ベ
クトル空間(これは、世界座標で表される)において、
少なくとも0.5でなければならない。この距離は、図
6Bのライン・セグメント522によって示されてい
る。この最小の長さによって、逆平方根演算の間に、正
規化演算がオーバフローすることが防止される。第2
に、アイ・ポジション508からビューポート520の
最も遠い規定内の点(legal point)マスタ・デバイス
の距離は、演算のそれ以外の部分を範囲内に維持するた
めに、1.0よりも小さくなければならない。これらの
距離は、ライン・セグメント524および526によっ
て表される。他の実施例では、これらの所定の範囲は、
変動することもある。状況によっては、有効なローカル
なアイ・ベクトルは、計算できない場合もある。ある実
施例では、これらのローカルなアイ・ベクトルは、Fコ
ア・ブロック352などの浮動小数点ユニットにおいて
計算される。ビュー・ベクトル行列の生成のためのコード・リスティ
ング 次に、本発明の好適実施例において実行されるビュー・
ベクトル行列の計算のためのソース・コードを示す。
に対する所定の範囲は、図6Bを参照して説明される。
図6Bは、スクリーン514内のビューポートを示して
いる。ビュー・ベクトル(アイ・ベクトルの別名)53
0は、方法600に関して上述したように計算される。
ビュー・ベクトル530は、2つの規準に基づいて、有
効であることが決定される。第1に、アイ・ポジション
508からビューポート520までの距離は、アイ・ベ
クトル空間(これは、世界座標で表される)において、
少なくとも0.5でなければならない。この距離は、図
6Bのライン・セグメント522によって示されてい
る。この最小の長さによって、逆平方根演算の間に、正
規化演算がオーバフローすることが防止される。第2
に、アイ・ポジション508からビューポート520の
最も遠い規定内の点(legal point)マスタ・デバイス
の距離は、演算のそれ以外の部分を範囲内に維持するた
めに、1.0よりも小さくなければならない。これらの
距離は、ライン・セグメント524および526によっ
て表される。他の実施例では、これらの所定の範囲は、
変動することもある。状況によっては、有効なローカル
なアイ・ベクトルは、計算できない場合もある。ある実
施例では、これらのローカルなアイ・ベクトルは、Fコ
ア・ブロック352などの浮動小数点ユニットにおいて
計算される。ビュー・ベクトル行列の生成のためのコード・リスティ
ング 次に、本発明の好適実施例において実行されるビュー・
ベクトル行列の計算のためのソース・コードを示す。
【0065】
【表1】
【図1】本発明による三次元(3D)グラフィクス・ア
クセラレータを含むコンピュータ・システムを図解して
いる。
クセラレータを含むコンピュータ・システムを図解して
いる。
【図2】図1のコンピュータ・システムの簡略化された
ブロック図である。
ブロック図である。
【図3】本発明の好適実施例による3Dグラフィクス・
アクセラレータを図解するブロック図である。
アクセラレータを図解するブロック図である。
【図4】本発明の好適実施例の3Dグラフィクス・アク
セラレータにおける浮動小数点プロセッサの1つを図解
するブロック図である。
セラレータにおける浮動小数点プロセッサの1つを図解
するブロック図である。
【図5】本発明の好適実施例における固定小数点ライテ
ィング・ユニットを図解するブロック図である。
ィング・ユニットを図解するブロック図である。
【図6】図6Aおよび図6Bから構成される。図6A
は、アイ・ベクトルのディスプレイ・スクリーン上の点
Sへの頂点に対する関係を図解している。図6Bは、ビ
ュー・ベクトルがどのようにディスプレイ・スクリーン
上の与えられたビューポートにマップされるかを示して
いる。
は、アイ・ベクトルのディスプレイ・スクリーン上の点
Sへの頂点に対する関係を図解している。図6Bは、ビ
ュー・ベクトルがどのようにディスプレイ・スクリーン
上の与えられたビューポートにマップされるかを示して
いる。
【図7】本発明の好適実施例による、正規化されたロー
カルなアイ・ベクトルを計算する方法を示す流れ図であ
る。
カルなアイ・ベクトルを計算する方法を示す流れ図であ
る。
【図8】図8A−図8Dから構成され、鏡面反射値を計
算する際のローカルなアイ・ベクトルの使用を示してい
る。
算する際のローカルなアイ・ベクトルの使用を示してい
る。
【図9】本発明の好適実施例におけるビュー・ベクトル
行列を計算する方法を示す流れ図である。
行列を計算する方法を示す流れ図である。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成11年4月5日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0065
【補正方法】変更
【補正内容】
【0065】
【表1】
─────────────────────────────────────────────────────
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成11年4月16日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】図6
【補正方法】変更
【補正内容】
【図6】
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】図7
【補正方法】変更
【補正内容】
【図7】
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図8
【補正方法】変更
【補正内容】
【図8】
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】図9
【補正方法】変更
【補正内容】
【図9】
───────────────────────────────────────────────────── フロントページの続き (71)出願人 597004720 2550 Garcia Avenue,MS PAL1−521,Mountain V iew,California 94043− 1100,United States of America (72)発明者 マイケル・エフ・ディアリング アメリカ合衆国カリフォルニア州94024, ロス・アルトス,クウェスタ・ドライブ 657
Claims (26)
- 【請求項1】 グラフィクス・サブシステムにおいてロ
ーカル・アイ・ベクトルを計算する方法であって、前記
ローカル・アイ・ベクトルは、与えられたアイ・ポジシ
ョンと第1の幾何学的プリミティブの第1の頂点とに対
応する方法において、 前記第1の頂点に対応する第1の組の座標を受け取るス
テップであって、前記第1の組の座標は、第1の座標空
間において表現されているステップと、 前記与えられたアイ・ポジションに対応する逆変換行列
を生成するステップであって、前記与えられたアイ・ポ
ジションは、第2の座標空間に位置する第2の組の座標
によって表現されているステップと、 前記逆変換行列を用いて、前記第1の組の座標を変換す
るステップであって、前記変換は、予備的なローカル・
アイ・ベクトルを生成するステップと、 を含んでおり、前記予備的なローカル・アイ・ベクトル
は、前記第1の頂点に対しライティング計算を実行する
のに用いることができることを特徴とする方法。 - 【請求項2】 請求項1記載の方法において、前記第1
の座標空間はスクリーン空間であり、前記第2の座標空
間は世界空間であることを特徴とする方法。 - 【請求項3】 請求項1記載の方法において、第1の組
の座標を与えられた数値範囲にスケーリングするステッ
プを更に含み、前記スケーリングは、前記変換の前に実
行されることを特徴とする方法。 - 【請求項4】 請求項1記載の方法において、前記予備
的ローカル・アイ・ベクトルを正規化することにより、
正規化されたローカル・アイ・ベクトルを作成するステ
ップを更に含み、前記正規化差あれたローカル・アイ・
ベクトルは、前記第1の頂点に対し前記ライティング計
算を実行するのに用いることができることを特徴とする
方法。 - 【請求項5】 請求項2記載の方法において、前記逆変
換行列は、前記第1の座標空間内の与えられたビューポ
ートに対応することを特徴とする方法。 - 【請求項6】 請求項5記載の方法において、 前記逆変換行列を、前記与えられたビューポートの座標
と、現在のビューイング行列の逆行列と、前記与えられ
たアイ・ポジションとから計算するステップを更に含ん
でおり、前記現在のビューイング行列は、前記第2の座
標空間からの座標を前記第1の座標空間に変換するのに
用いることができることを特徴とする方法。 - 【請求項7】 請求項6記載の方法において、前記第2
の座標空間は世界空間であり、前記第1の座標空間はス
クリーン空間であることを特徴とする方法。 - 【請求項8】 請求項1記載の方法において、前記変換
は、所定の数値範囲を有する固定小数点演算を用いて実
行されることを特徴とする方法。 - 【請求項9】 請求項8記載の方法において、 前記逆変換行列は、前記所定の数値範囲に対して有効で
あるかどうかを判断するステップと、 前記逆変換行列が前記所定の数値範囲に対して無効であ
ると判断される場合には、浮動小数点演算を用いて前記
ローカル・アイ・ベクトルの計算を実行するステップ
と、 を更に含むことを特徴とする方法。 - 【請求項10】 請求項4記載の方法において、 前記正規化されたローカル・アイ・ベクトルを用いて、
前記第1の頂点に対するライティング計算を実行するス
テップを更に含むことを特徴とする方法。 - 【請求項11】 請求項10記載の方法において、前記
ライティング計算を実行するステップは、無限遠点にお
ける光源に対して鏡面ハイライト値を計算するステップ
を含むことを特徴とする方法。 - 【請求項12】 ローカル・アイ・ベクトルを計算する
グラフィクス・サブシステムであって、前記ローカル・
アイ・ベクトルは、与えられたアイ・ポジションと与え
られたポジション値とに対応するグラフィクス・サブシ
ステムにおいて、 前記与えられたポジション値に対応する第1の組の座標
を受け取るように結合されており、前記第1の組の座標
から第2の組の座標を生成するように構成された座標変
換ユニットであって、前記第1の組の座標は第1の座標
空間内に位置しており、前記第2の組の座標は第2の座
標空間内に位置している、座標変換ユニットと、 前記第2の組の座標と前記与えられたアイ・ポジション
に対応する逆変換行列とを受け取るように結合されてお
り、前記逆変換行列を用いて前記第2の組の座標を変換
することによって、予備的なローカル・アイ・ベクトル
を生成するように構成され、更に、前記与えられたポジ
ション値に対してライティング計算を実行する際には前
記予備的なローカル・アイ・ベクトルを用いるように構
成されているライティング・ユニットと、 を備えていることを特徴とするグラフィクス・サブシス
テム。 - 【請求項13】 請求項12記載のグラフィクス・サブ
システムにおいて、前記第1の座標空間は世界空間であ
り、前記第2の座標空間はスクリーン空間であることを
特徴とするグラフィクス・サブシステム。 - 【請求項14】 請求項12記載のグラフィクス・サブ
システムにおいて、前記座標変換ユニットは、浮動小数
点演算を用いて前記第2の組の座標を生成するように構
成されており、前記ライティング・ユニットは、固定小
数点演算を用いて前記予備的ローカル・アイ・ベクトル
を生成するように構成されていることを特徴とするグラ
フィクス・サブシステム。 - 【請求項15】 請求項14記載のグラフィクス・サブ
システムにおいて、前記ライティング・ユニットは、前
記予備的ローカル・アイ・ベクトルの生成の前に、前記
第2の組の座標を所定の固定小数点数値範囲にスケーリ
ングするように構成されていることを特徴とするグラフ
ィクス・サブシステム。 - 【請求項16】 請求項12記載のグラフィクス・サブ
システムにおいて、前記予備的ローカル・アイ・ベクト
ルは正規化されておらず、前記ライティング・ユニット
は、前記予備的ローカル・アイ・ベクトルを正規化する
ように構成されており、前記正規化されたローカル・ア
イ・ベクトルは、前記与えられたポジション値に対して
ライティング計算を実行するのに用いることができるこ
とを特徴とするグラフィクス・サブシステム。 - 【請求項17】 請求項13記載のグラフィクス・サブ
システムにおいて、前記逆変換行列は、スクリーン空間
内の与えられたビューポートに対応することを特徴とす
るグラフィクス・サブシステム。 - 【請求項18】 請求項17記載のグラフィクス・サブ
システムにおいて、前記逆変換行列は、前記与えられた
アイ・ポジションと、前記与えられたビューポートの座
標と、現在のビューイング行列の逆行列とを用いて計算
され、前記現在のビューイング行列は、前記第1の座標
空間を前記第2の座標空間に変換するために、前記座標
変換ユニットによって用いることができることを特徴と
するグラフィクス・サブシステム。 - 【請求項19】 請求項12記載のグラフィクス・サブ
システムにおいて、前記ライティング・ユニットは、前
記与えられたポジション値に対して鏡面ハイライト値を
計算するように構成され、前記鏡面ハイライト値は、無
限遠点における光源から生じているものとしてモデル化
されることを特徴とするグラフィクス・サブシステム。 - 【請求項20】 請求項12記載のグラフィクス・サブ
システムにおいて、前記座標変換ユニットに結合されて
おり、前記ライティング・ユニットと同時に前記第2の
組の座標を受け取るように構成され、更に、前記与えら
れたポジション値を含む幾何学的プリミティブに対する
セットアップ動作を実行するように構成されているセッ
トアップ・ユニットを更に含んでいることを特徴とする
グラフィクス・サブシステム。 - 【請求項21】 ローカル・アイ・ベクトルを計算する
コンピュータ・システムであって、前記ローカル・アイ
・ベクトルは、与えられたアイ・ポジションと与えられ
たポジション値とに対応するコンピュータ・システムに
おいて、 前記与えられたアイ・ポジションに対応する逆変換行列
を生成するように構成されたホストCPUであって、前
記与えられたアイ・ポジションは、第1の座標空間に位
置する座標によって表現されているホストCPUと、 前記ホストCPUに結合されたグラフィクス・サブシス
テムであって、 前記与えられたポジション値に対応する第1の組の座標
を受け取るように結合されており、前記第1の組の座標
から第2の組の座標を生成するように構成された座標変
換ユニットであって、前記第1の組の座標は第1の座標
空間内に位置しており、前記第2の組の座標は第2の座
標空間内に位置している、座標変換ユニットと、 前記第2の組の座標と前記逆変換行列とを受け取るよう
に結合されており、前記逆変換行列を用いて前記第2の
組の座標を変換することによって、予備的なローカル・
アイ・ベクトルを生成するように構成され、更に、前記
与えられたポジション値に対してライティング計算を実
行する際には前記予備的なローカル・アイ・ベクトルを
用いるように構成されているライティング・ユニット
と、 を備えているグラフィクス・サブシステムと、 を備えていることを特徴とするコンピュータ・システ
ム。 - 【請求項22】 請求項21記載のコンピュータ・シス
テムにおいて、前記第1の座標空間は世界空間であり、
前記第2の座標空間はスクリーン空間であることを特徴
とするコンピュータ・システム。 - 【請求項23】 請求項22記載のコンピュータ・シス
テムにおいて、前記座標変換ユニットは、浮動小数点演
算を用いて前記第2の組の座標を生成するように構成さ
れており、前記ライティング・ユニットは、固定小数点
演算を用いて前記予備的なローカル・アイ・ベクトルを
生成するように構成されていることを特徴とするコンピ
ュータ・システム。 - 【請求項24】 請求項22記載のコンピュータ・シス
テムにおいて、前記逆変換行列はスクリーン空間内の与
えられたビューポートに対応することを特徴とするコン
ピュータ・システム。 - 【請求項25】 請求項24記載のコンピュータ・シス
テムにおいて、前記逆変換は、前記与えられたアイ・ポ
ジションと前記与えられたビューポートの座標と、現在
のビューイング行列の逆行列とを用いて計算され、前記
現在のビューイング行列は、座標を前記第1の組の座標
空間から前記第2の座標空間に変換するために前記座標
変換ユニットによって用いることができることを特徴と
するコンピュータ・システム。 - 【請求項26】 与えられたアイ・ポジションと第1の
幾何学的プリミティブの第1の頂点とに対応するローカ
ル・アイ・ベクトルを計算するシステムでああって、 前記第1の頂点に対応する第1の組の座標を受け取る受
け取り手段であって、前記第1の組の座標は、第1の座
標空間において表現されている受け取り手段と、 前記与えられたアイ・ポジションに対応する逆変換行列
を生成する生成手段であって、前記与えられたアイ・ポ
ジションは、第2の座標空間に位置する第2の組の座標
によって表現されている生成手段と、 前記逆変換行列を用いて、前記第1の組の座標を変換す
る変換手段であって、前記変換は、予備的なローカル・
アイ・ベクトルを生成する変換手段と、 を備えており、前記予備的なローカル・アイ・ベクトル
は、前記第1の頂点に対しライティング計算を実行する
のに用いることができることを特徴とするシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/017,973 US6014144A (en) | 1998-02-03 | 1998-02-03 | Rapid computation of local eye vectors in a fixed point lighting unit |
| US017973 | 1998-02-03 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH11272880A true JPH11272880A (ja) | 1999-10-08 |
Family
ID=21785575
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11026162A Pending JPH11272880A (ja) | 1998-02-03 | 1999-02-03 | 固定小数点ライティング・ユニットを用いたロ―カル・アイ・ベクトルの高速計算方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US6014144A (ja) |
| EP (1) | EP0933729A3 (ja) |
| JP (1) | JPH11272880A (ja) |
| KR (1) | KR19990072375A (ja) |
Families Citing this family (59)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9098297B2 (en) * | 1997-05-08 | 2015-08-04 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
| US6480205B1 (en) | 1998-07-22 | 2002-11-12 | Nvidia Corporation | Method and apparatus for occlusion culling in graphics systems |
| US6646639B1 (en) | 1998-07-22 | 2003-11-11 | Nvidia Corporation | Modified method and apparatus for improved occlusion culling in graphics systems |
| US6389485B1 (en) * | 1998-10-02 | 2002-05-14 | International Business Machines Corporation | Graphics adapter capable of supporting lighting models from multiple application programming interfaces within a graphics system |
| US6304275B1 (en) * | 1998-10-31 | 2001-10-16 | Hewlett-Packard Company | Memory efficient surface normal decompression |
| US6525740B1 (en) * | 1999-03-18 | 2003-02-25 | Evans & Sutherland Computer Corporation | System and method for antialiasing bump texture and bump mapping |
| US6504538B1 (en) * | 1999-07-01 | 2003-01-07 | Microsoft Corporation | Method and system for generating light values for a set of vertices |
| US6559856B1 (en) * | 1999-09-09 | 2003-05-06 | International Business Machines Corporation | Apparatus for fixed-point graphics and method therefor |
| WO2001029768A2 (en) * | 1999-10-18 | 2001-04-26 | S3 Incorporated | Multi-stage fixed cycle pipe-lined lighting equation evaluator |
| US6618048B1 (en) | 1999-10-28 | 2003-09-09 | Nintendo Co., Ltd. | 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components |
| US6717577B1 (en) | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
| US6844880B1 (en) | 1999-12-06 | 2005-01-18 | Nvidia Corporation | System, method and computer program product for an improved programmable vertex processing model with instruction set |
| US6198488B1 (en) * | 1999-12-06 | 2001-03-06 | Nvidia | Transform, lighting and rasterization system embodied on a single semiconductor platform |
| US6353439B1 (en) | 1999-12-06 | 2002-03-05 | Nvidia Corporation | System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline |
| US7209140B1 (en) | 1999-12-06 | 2007-04-24 | Nvidia Corporation | System, method and article of manufacture for a programmable vertex processing model with instruction set |
| US6452595B1 (en) * | 1999-12-06 | 2002-09-17 | Nvidia Corporation | Integrated graphics processing unit with antialiasing |
| GB0010685D0 (en) * | 2000-05-03 | 2000-06-28 | Koninkl Philips Electronics Nv | Autostereoscopic display driver |
| US6670958B1 (en) * | 2000-05-26 | 2003-12-30 | Ati International, Srl | Method and apparatus for routing data to multiple graphics devices |
| US7119813B1 (en) | 2000-06-02 | 2006-10-10 | Nintendo Co., Ltd. | Variable bit field encoding |
| US6811489B1 (en) | 2000-08-23 | 2004-11-02 | Nintendo Co., Ltd. | Controller interface for a graphics system |
| US6825851B1 (en) | 2000-08-23 | 2004-11-30 | Nintendo Co., Ltd. | Method and apparatus for environment-mapped bump-mapping in a graphics system |
| US7196710B1 (en) | 2000-08-23 | 2007-03-27 | Nintendo Co., Ltd. | Method and apparatus for buffering graphics data in a graphics system |
| US6867781B1 (en) | 2000-08-23 | 2005-03-15 | Nintendo Co., Ltd. | Graphics pipeline token synchronization |
| US6980218B1 (en) | 2000-08-23 | 2005-12-27 | Nintendo Co., Ltd. | Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system |
| US6707458B1 (en) | 2000-08-23 | 2004-03-16 | Nintendo Co., Ltd. | Method and apparatus for texture tiling in a graphics system |
| US6937245B1 (en) * | 2000-08-23 | 2005-08-30 | Nintendo Co., Ltd. | Graphics system with embedded frame buffer having reconfigurable pixel formats |
| US6636214B1 (en) | 2000-08-23 | 2003-10-21 | Nintendo Co., Ltd. | Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode |
| US6700586B1 (en) | 2000-08-23 | 2004-03-02 | Nintendo Co., Ltd. | Low cost graphics with stitching processing hardware support for skeletal animation |
| US7184059B1 (en) | 2000-08-23 | 2007-02-27 | Nintendo Co., Ltd. | Graphics system with copy out conversions between embedded frame buffer and main memory |
| US7538772B1 (en) | 2000-08-23 | 2009-05-26 | Nintendo Co., Ltd. | Graphics processing system with enhanced memory controller |
| US7034828B1 (en) | 2000-08-23 | 2006-04-25 | Nintendo Co., Ltd. | Recirculating shade tree blender for a graphics system |
| US7002591B1 (en) | 2000-08-23 | 2006-02-21 | Nintendo Co., Ltd. | Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system |
| US7576748B2 (en) * | 2000-11-28 | 2009-08-18 | Nintendo Co. Ltd. | Graphics system with embedded frame butter having reconfigurable pixel formats |
| US7061502B1 (en) | 2000-08-23 | 2006-06-13 | Nintendo Co., Ltd. | Method and apparatus for providing logical combination of N alpha operations within a graphics system |
| US6788303B2 (en) * | 2001-02-27 | 2004-09-07 | 3Dlabs Inc., Ltd | Vector instruction set |
| US7006101B1 (en) | 2001-06-08 | 2006-02-28 | Nvidia Corporation | Graphics API with branching capabilities |
| US6781594B2 (en) * | 2001-08-21 | 2004-08-24 | Sony Computer Entertainment America Inc. | Method for computing the intensity of specularly reflected light |
| EP1442390B1 (en) * | 2001-10-10 | 2017-09-13 | Sony Computer Entertainment America LLC | System and method for environment mapping |
| US6677953B1 (en) * | 2001-11-08 | 2004-01-13 | Nvidia Corporation | Hardware viewport system and method for use in a graphics pipeline |
| US6836247B2 (en) | 2002-09-19 | 2004-12-28 | Topcon Gps Llc | Antenna structures for reducing the effects of multipath radio signals |
| US7006090B2 (en) * | 2003-02-07 | 2006-02-28 | Crytek Gmbh | Method and computer program product for lighting a computer graphics image and a computer |
| US8133115B2 (en) | 2003-10-22 | 2012-03-13 | Sony Computer Entertainment America Llc | System and method for recording and displaying a graphical path in a video game |
| US20060071933A1 (en) | 2004-10-06 | 2006-04-06 | Sony Computer Entertainment Inc. | Application binary interface for multi-pass shaders |
| US7636126B2 (en) | 2005-06-22 | 2009-12-22 | Sony Computer Entertainment Inc. | Delay matching in audio/video systems |
| US7649534B2 (en) * | 2006-02-01 | 2010-01-19 | Microsoft Corporation | Design of arbitrary linear and non-linear maps |
| US7965859B2 (en) | 2006-05-04 | 2011-06-21 | Sony Computer Entertainment Inc. | Lighting control of a user environment via a display device |
| US7880746B2 (en) | 2006-05-04 | 2011-02-01 | Sony Computer Entertainment Inc. | Bandwidth management through lighting control of a user environment via a display device |
| US7891818B2 (en) | 2006-12-12 | 2011-02-22 | Evans & Sutherland Computer Corporation | System and method for aligning RGB light in a single modulator projector |
| US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
| US8358317B2 (en) | 2008-05-23 | 2013-01-22 | Evans & Sutherland Computer Corporation | System and method for displaying a planar image on a curved surface |
| US8702248B1 (en) | 2008-06-11 | 2014-04-22 | Evans & Sutherland Computer Corporation | Projection method for reducing interpixel gaps on a viewing surface |
| US8077378B1 (en) | 2008-11-12 | 2011-12-13 | Evans & Sutherland Computer Corporation | Calibration system and method for light modulation device |
| US10786736B2 (en) | 2010-05-11 | 2020-09-29 | Sony Interactive Entertainment LLC | Placement of user information in a game space |
| US9342817B2 (en) | 2011-07-07 | 2016-05-17 | Sony Interactive Entertainment LLC | Auto-creating groups for sharing photos |
| US9641826B1 (en) | 2011-10-06 | 2017-05-02 | Evans & Sutherland Computer Corporation | System and method for displaying distant 3-D stereo on a dome surface |
| CN103035031B (zh) * | 2012-11-15 | 2016-03-02 | 北京科东电力控制系统有限责任公司 | 面向电网运行监控的三维人机交互显示控制方法 |
| US9911395B1 (en) * | 2014-12-23 | 2018-03-06 | Amazon Technologies, Inc. | Glare correction via pixel processing |
| US10417813B2 (en) * | 2016-12-05 | 2019-09-17 | Nvidia Corporation | System and method for generating temporally stable hashed values |
| CN110689606B (zh) * | 2019-08-26 | 2023-06-30 | 福建数博讯信息科技有限公司 | 一种虚拟场景中雨滴下落位置的计算方法及终端 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4866637A (en) * | 1987-10-30 | 1989-09-12 | International Business Machines Corporation | Pipelined lighting model processing system for a graphics workstation's shading function |
| US5307452A (en) * | 1990-09-21 | 1994-04-26 | Pixar | Method and apparatus for creating, manipulating and displaying images |
| US5644689A (en) * | 1992-01-13 | 1997-07-01 | Hitachi, Ltd. | Arbitrary viewpoint three-dimensional imaging method using compressed voxel data constructed by a directed search of voxel data representing an image of an object and an arbitrary viewpoint |
| JP3107452B2 (ja) * | 1992-04-28 | 2000-11-06 | 株式会社日立製作所 | テクスチャマッピング方法およびその装置 |
| JPH0757117A (ja) * | 1993-07-09 | 1995-03-03 | Silicon Graphics Inc | テクスチャマップへの索引を生成する方法及びコンピュータ制御表示システム |
| GB9424273D0 (en) * | 1994-12-01 | 1995-01-18 | Wrigley Adrian M T | Improvements in and relating to image constrcution |
| KR100261076B1 (ko) * | 1995-11-09 | 2000-07-01 | 윤종용 | 범프 맵핑과 퐁 쉐이딩을 동시에 수행하는 렌더링방법 및 장치 |
| US5977978A (en) * | 1996-11-13 | 1999-11-02 | Platinum Technology Ip, Inc. | Interactive authoring of 3D scenes and movies |
-
1998
- 1998-02-03 US US09/017,973 patent/US6014144A/en not_active Expired - Lifetime
-
1999
- 1999-02-02 KR KR1019990003389A patent/KR19990072375A/ko not_active Withdrawn
- 1999-02-02 EP EP99300759A patent/EP0933729A3/en not_active Withdrawn
- 1999-02-03 JP JP11026162A patent/JPH11272880A/ja active Pending
- 1999-11-12 US US09/439,034 patent/US6141013A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US6014144A (en) | 2000-01-11 |
| US6141013A (en) | 2000-10-31 |
| EP0933729A2 (en) | 1999-08-04 |
| EP0933729A3 (en) | 2002-05-08 |
| KR19990072375A (ko) | 1999-09-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH11272880A (ja) | 固定小数点ライティング・ユニットを用いたロ―カル・アイ・ベクトルの高速計算方法 | |
| CN100442353C (zh) | 用于浮点纹理数据的过滤单元 | |
| US6115047A (en) | Method and apparatus for implementing efficient floating point Z-buffering | |
| EP0817010B1 (en) | Floating point processor for a three-dimensional graphics accelerator | |
| US6807620B1 (en) | Game system with graphics processor | |
| US10489876B2 (en) | Graphics processing architecture employing a unified shader | |
| US5268995A (en) | Method for executing graphics Z-compare and pixel merge instructions in a data processor | |
| US5896136A (en) | Computer graphics system with improved blending | |
| US6417858B1 (en) | Processor for geometry transformations and lighting calculations | |
| US7015914B1 (en) | Multiple data buffers for processing graphics data | |
| EP1399892B1 (en) | Programmable pixel shading architecture | |
| US6037947A (en) | Graphics accelerator with shift count generation for handling potential fixed-point numeric overflows | |
| US20100238172A1 (en) | Cone-culled soft shadows | |
| JPH0935075A (ja) | 高性能プリミティブ・クリッピング・プリプロセシングを有するコンピュータ・グラフィックス・システム | |
| US7400325B1 (en) | Culling before setup in viewport and culling unit | |
| US5912830A (en) | System and method for conditionally calculating exponential values in a geometry accelerator | |
| US11763513B2 (en) | DGPU assist using DSP pre-processor system and method | |
| US6870540B1 (en) | System, method and computer program product for a programmable pixel processing model with instruction set | |
| US7593010B2 (en) | Software-implemented transform and lighting module and pipeline for graphics rendering on embedded platforms using a fixed-point normalized homogenous coordinate system | |
| EP0889441B1 (en) | Lighting unit and method for a three-dimensional graphics accelerator | |
| JP3839871B2 (ja) | 三角形を表わす画素データを生成する装置 | |
| US7292239B1 (en) | Cull before attribute read | |
| US20030169277A1 (en) | Pipelined 2D viewport clip circuit | |
| US6778188B2 (en) | Reconfigurable hardware filter for texture mapping and image processing | |
| US6885375B2 (en) | Stalling pipelines in large designs |