(57)【特許請求の範囲】
【請求項１】
図形要素を、図形要素のラスタ化された形のフラグメントに変換するように、図形要素のエッジ部分およびスパン部分を走査する走査変換器であって、
少なくとも１つのインターポレータであって、各々が、図形要素のエッジ部分またはスパン部分の各フラグメントにおいて、拡散反射および鏡面反射照明成分の両方の値を計算するように構成され、鏡面反射照明成分を有する、図形要素のエッジ部分またはスパン部分の各フラグメントに対して、当該エッジ部分またはスパン部分のフラグメントを補間する各インターポレータは、当該図形要素の当該エッジ部分またはスパン部分の各フラグメントにおいて、拡散反射および鏡面反射照明成分の両方の値を計算するインターポレータを含む走査変換器。
【請求項２】
少なくとも１つのインターポレータは、各々が図形要素の各エッジ部分の拡散反射および鏡面反射照明成分の両方の値を計算するように構成された、少なくとも１つの第１のインターポレータと、各々が図形要素の各スパン部分の拡散反射および鏡面反射照明成分の両方の値を計算するように構成された、少なくとも１つの第２のインターポレータと、を含む請求項１に記載の走査変換器。
【請求項３】
走査変換器は、ラスタライザのエレメントであり、当該ラスタライザは、図形要素の各エッジ部分および各スパン部分において、鏡面反射照明成分の値を定め、鏡面反射照明成分を有する、図形要素のエッジ部分またはスパン部分を補間する、少なくとも１つのインターポレータの各々に、当該図形要素の当該部分の各フラグメントに対して、拡散反射および鏡面反射照明成分の値を計算するように命令する、別個の鏡面反射アクセラレータを含む、請求項１に記載の走査変換器。
【請求項４】
当該ラスタライザは、グラフィックス・システムのエレメントであり、当該グラフィックス・システムは、フレーム・バッファと、表示装置上へのその後のレンダリングのために、フレーム・バッファに書き込まれるべきピクセル・データを生成するように構成されたフラグメント・プロセッサであって、各々が、対応するフラグメント・データ・ワードが鏡面反射照明成分を含むか否かを示す、ラスタライザによって生成されたコマンドに応じるフラグメント・プロセッサとを含む、請求項３に記載の走査変換器。
【請求項５】
当該フラグメント・プロセッサによって生成されるピクセル・データは、各フラグメントに対してカラー値を含み、当該フラグメントが鏡面反射照明成分を含まないときに、当該カラー値は、当該フラグメントの拡散反射照明成分の値とテクスチャ成分の値との積に等しく設定され、当該フラグメントが鏡面反射照明成分を含むときに、当該カラー値は、当該フラグメントの、当該鏡面反射照明成分の値と拡散反射照明成分の値とテクスチャ成分の値との積との和に等しく設定される、請求項４に記載の走査変換器。
【請求項６】
図形要素のエッジ部分またはスパン部分が鏡面反射照明成分を含まないときに、当該少なくとも１つのインターポレータは、当該図形要素の当該エッジ部分またはスパン部分の各フラグメントに対して、拡散反射照明成分だけを計算する、請求項１に記載の走査変換器。
【請求項７】
少なくとも１つのフラグメントは、各々が、図形要素のラスタ化された形の対応するピクセルを定義するデータを含む複数のフラグメント・データ・ワードによって表される、請求項１に記載の走査変換器。
【請求項８】
複数のフラグメント・データ・ワードは、当該表されるフラグメントの拡散反射照明成分の値を含む第１のデータ・ワードと、当該表されるフラグメントの鏡面反射照明成分の値を含む第２のデータ・ワードと、を含む請求項７に記載の走査変換器。
【請求項９】
少なくとも１つのインターポレータの各々は、
図形要素のエッジ部分またはスパン部分の各フラグメントにおいて、それぞれの鏡面反射および拡散反射照明成分に対する増分値を記憶するように構成された、デルタ鏡面反射レジスタおよびデルタ拡散反射レジスタと、
図形要素のエッジ部分またはスパン部分の各フラグメントに対する、それぞれの鏡面反射および拡散反射照明成分の現在値を記憶するように構成された、現在鏡面反射レジスタおよび現在拡散反射レジスタと、
第１のマルチプレクサを介してデルタ鏡面反射レジスタおよびデルタ拡散反射レジスタに接続された第１の入力部と、第２のマルチプレクサを介して現在鏡面反射レジスタおよび現在拡散反射レジスタに接続された第２の入力部と、を含む加算器回路であって、鏡面反射または拡散反射照明成分に対して、増分値と現在値とを加算して新しい現在の鏡面反射または拡散反射照明成分を生成する加算器回路と、
当該加算器の出力部に接続された第１の入力部と、鏡面反射および拡散反射照明成分の初期値を受け取る第２の入力部と、現在鏡面反射レジスタおよび現在拡散反射レジスタの入力部に接続された出力部とを含み、初期値または新しい現在の鏡面反射または拡散反射照明成分の値を、それぞれの現在鏡面反射レジスタおよび現在拡散反射レジスタに記憶するために送る第３のマルチプレクサと、を含む回路である請求項１に記載の走査変換器。
【請求項１０】
鏡面反射照明成分が、赤、緑および青の鏡面反射照明成分を含み、拡散反射照明成分が、赤、緑および青の拡散反射照明成分を含み、少なくとも１つのインターポレータは、各々が、図形要素の各エッジ部分の各フラグメントに対して、赤の鏡面反射および拡散反射照明成分の値、緑の鏡面反射および拡散反射照明成分の値ならびに青の鏡面反射および拡散反射照明成分の値の１つを計算するように構成された３個のインターポレータと、各々が、図形要素の各スパン部分の各フラグメントに対して、赤の鏡面反射および拡散反射照明成分の値、緑の鏡面反射および拡散反射照明成分の値ならびに青の鏡面反射および拡散反射照明成分の値の１つを計算するように構成された３個のインターポレータと、を含む請求項１に記載の走査変換器。
【請求項１１】
グラフィックス画像の図形要素をラスタ化するための方法であって、
図形要素の各エッジ部分およびスパン部分が、鏡面反射照明成分を含むかどうかを判定することと、
鏡面反射照明成分を有しないと判定された各フラグメントに対して、エッジ部分およびスパン部分の各フラグメントの拡散反射照明成分だけを、インターポレータによって処理することと、
鏡面反射照明成分を有すると判定された各フラグメントに対して、エッジ部分およびスパン部分の各フラグメントの鏡面反射および拡散反射照明成分の両方の値を、インターポレータによって処理することとを含む方法。
【請求項１２】
鏡面反射照明成分の値を有すると判定されたエッジ部分およびスパン部分の各フラグメントの鏡面反射および拡散反射照明成分の値を処理することが、第１の処理状態において、当該フラグメントに対して鏡面反射照明成分を処理することと、第２の処理状態において、当該フラグメントに対して拡散反射照明成分を処理することと、を含む請求項１１に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、グラフィックス・システムに関し、より詳細には、コンピュータ・グラフィックス・システムにおける図形要素のラスタ化に関する。
【０００２】
【従来の技術】
コンピュータ・グラフィックス・システムは、一般に、２次元ビデオ表示画面上にオブジェクトの２次元図形表現および３次元図形表現を表示するために使用される。現在のコンピュータ・グラフィックス・システムは、非常に微細な表現を提供しており、様々な適用例で使用されている。
【０００３】
代表的なコンピュータ・グラフィックス・システムでは、表示画面上に提示されるべきオブジェクトまたはモデルは図形要素に分解される。要素とはグラフィックス表示の基本的な成分であり、点、線、三角形、四角形およびポリゴン等が含まれる。通常、表示画面上に提示されている１つまたは複数のオブジェクトのビューを表わす図形要素をレンダリングまたは描画するためにはハードウェア／ソフトウェア方式が実施される。
【０００４】
一般に、ホスト・コンピュータは、要素データに関して３次元モデルの要素を定義する。通常、要素データには、限定的ではないが、その要素の頂点のＸ、Ｙ、ＺおよびＷ座標、ならびに要素の各頂点の赤色値、緑色値、青色値およびアルファ色値（Ｒ、Ｇ、Ｂ、Ａ）が含まれる。レンダリング・ハードウェアは、各要素を表わす表示画面ピクセルと、各ピクセルに対する色値を計算するように要素データを処理する。
【０００５】
コンピュータ・グラフィックス・システムの基本的な構成要素には、通常、ホスト・コンピュータとグラフィックス・ハードウェアとが含まれる。このホスト・コンピュータは、グラフィックス・ハードウェアを制御するグラフィックス・アプリケーション・プログラムを、通常、アプリケーション・プログラム・インターフェース（ＡＰＩ）を介して実行する。ＡＰＩはこのグラフィックス・アプリケーション・プログラムからコマンドを受け取り、要素データをグラフィックス・ハードウェアに提供する。グラフィックス・ハードウェアには、通常、１つまたは複数の幾何学アクセラレータ、ラスタライザ、フレーム・バッファ、また時にはテクスチャ・マッパが含まれる。幾何学アクセラレータはホスト・コンピュータから要素データを受け取り、各要素に関する座標変換および照明、クリッピング、ならびに平面方程式の計算等の演算を実行する。幾何学アクセラレータは、ラスタライザとテクスチャ・マッパによって使用されるレンダリング・データを生成し、各要素のピクセルごとに最終的な画面座標と色データを生成する。
【０００６】
テクスチャ・マッピングにより、表面細部が改善されたオブジェクトを表示することが可能になる。テクスチャ・マッピングは、テクスチャと呼ばれるソース画像を３次元オブジェクトの表面上にマッピングし、その後、テクスチャ加工した３次元オブジェクトを２次元グラフィックス表示画面に投影する。テクスチャ・マッピングは、テクスチャがマッピングされているオブジェクトの表示部分の各画素（ピクセル）にテクスチャの１つまたは複数のテクスチャ要素（テクセル：ｔｅｘｅｌｓ）を適用することを必要とする。テクスチャ・マッパには、通常、レンダリングされているオブジェクトの部分に関連付けられたテクスチャ・マッピング・データを記憶するローカル・メモリ・キャッシュが含まれる。ラスタライザからのピクセル・データとテクスチャ・マッパからのテクセル・データは、表示画面に表示するために、ラスタライザによって結合され、フレーム・バッファ・コントローラによってフレーム・バッファに記憶される。
【０００７】
グラフィックス・システムは、通常、３次元オブジェクトがレンダリングされている時にその３次元オブジェクト上に１つまたは複数の光源の効果をモデル化する。３次元オブジェクトの最終的な色は、そのオブジェクト上で輝く光の量と特性に依存する。通常、光源の色は、それが発する赤の光、緑の光、および青の光の量によって特徴付けられる。レンダリングされる画像に正確な照明効果を提供するには、追加の要件が必要になる場合がしばしばある。例えばＯｐｅｎＧＬでは、光源が発する光を表面が反射するときだけ光源は効果を有する。オブジェクトの各表面は、様々なプロパティを有する材料によって構成される。材料のプロパティは、受け取られる赤、緑、および青の成分の、その表面によって様々な方向に反射されるパーセンテージを規定する。表面の材料のプロパティは、表面に衝突する光が有するであろう効果に影響を与え、したがってオブジェクトの表面を表わすピクセルをレンダリングするために使用される色に影響を与える。
【０００８】
一般に、従来のグラフィックス・システムでは４つの独立した照明のタイプが提供される。これらは、一般に、拡散反射光、鏡面反射光、放射光および環境光と呼ばれる。拡散反射光は１つの方向からくる光である。拡散反射光は、表面から僅かにそれる時よりも表面に直交して当たる時はより明るくなる。しかし、一旦、拡散反射光が表面に当たると、それは全方向に均等に分散され、見ている人の視点がどこにあっても均等に明るく見える。特定の位置や方向からくる照明はどのような光でも、通常は拡散反射成分を有する。鏡面反射光は特定の方向からきて、好適な方向に表面から反射する傾向がある。例えば高品質の鏡によって反射された視準のよく合ったレーザ・ビームは、特定の方向にほぼ１００パーセントの鏡面反射を生成する。チョークやカーペットがほとんど鏡面反射成分を有しないのに対して、光沢のある金属やプラスチックは強度の鏡面反射成分を有する。放射光は自動車のヘッドライトのような材料によって発せられる。環境光はその方向を判定することができないほどに、環境によって多くが分散されている光であり、したがって、これは全方向からくるように見える。従来は、照明効果の各タイプに対する赤の値、緑の値、および青の値はグラフィックス・アプリケーションによって個別に判定、管理される。
【０００９】
グラフィックス・システムの設計において一般に重要視されているのは、ラスタライザで実施される回路構成のサイズとその費用である。一般に、ラスタライザは、要素成分の頂点定義を、要素をレンダリングする各ピクセルの対応する値に走査変換することによって、各要素をフラグメントに変換する。各フラグメントは、レンダリングされた画像のピクセルを定義する関連データの量を含む。従来型グラフィック・システムは、ラスタ化の前に特定の成分を結合することによって回路構成とメモリの節約を試みている。一般に、その２つの成分とは拡散反射照明成分と鏡面反射照明成分である。これらの２つの成分は、その後にラスタ化される単一の結合された拡散反射／鏡面反射照明値に結合される。フラグメントの最終色値は、テクスチャ・マッピング成分とこの結合された照明成分の積に基づく。
【００１０】
【発明が解決しようとする課題】
本願の発明者はこの手法の欠点を確認した。その欠点の１つは、表面の反射性が表面テクスチャの強度によって拡大縮小されるということである。すなわち、テクスチャの強度は、ピクセルの最終色値を決定するだけでなく、その表面上の鏡面反射照明成分の効果も決定する。この手法は、非常に低い強度値を有するピクセルに対しては正確な結果を生成しない。具体的には、従来型ラスタライザが最小値を有するピクセルを生成するか、または強度値を有しないピクセルを生成するとき（例えば黒のテクスチャを有するピクセル）、そのピクセルは、元の鏡面反射照明成分の値に関わらず黒にレンダリングされる。すなわちこの手法は、その表面にあたる光が有意な鏡面反射照明成分を有するときでさえ、暗い表面を光っているもの、または反射するものとして表示することはできない。このように表面のレンダリングが不可能であるということは、ある種の画像の現実性を低下させるものである。
【００１１】
【課題を解決するための手段】
本発明は、従来型ラスタ化手法びグラフィックス処理手法の前記および／または他の欠点を克服するラスタライザおよび関連する方法を対象とする。本発明は、単一エッジ・ステッピング・インターポレータを実施して、要素のエッジ全体の拡散反射照明成分と鏡面反射照明成分の両方を補間し、かつ／または単一スパン・ステッピング・インターポレータを実施して、要素のスパン全体の拡散反射照明成分と鏡面反射照明成分の両方を補間する。補間されるエッジまたはスパンが無視できない鏡面反射照明成分を含むとき、拡散反射照明成分と鏡面反射照明成分は別個に連続してラスタ化される。そうでない場合、エッジまたはスパン全体の拡散反射照明成分だけが補間される。これにより、本発明は、ラスタライザ回路構成のサイズおよび費用と、要素がラスタ化される効率との間に最適なバランスを実現する。
【００１２】
本発明者は、３次元画像を形成しうる多数の図形要素の中で、通常は少数の要素しか鏡面反射照明成分を有しないことを既に確認した。すなわち、シーンを構成する大多数のポリゴンは、鏡面反射照明効果を生じさせるための、レンダリングされる光源に対する適切な方向および向きに欠けるので、鏡面反射照明は、ほとんどのシーンにおいて重要な部分ではない。このことから、本発明者は、大部分の図形要素のピクセルに関してピクセルの色値を計算するためには鏡面反射照明成分の転送、記憶および処理は不必要であり、またこれらは資源の非効率的な使用につながるとの結論に達した。鏡面反射照明がめったに出現しないという利点を利用しつつ、確認された従来型ラスタ化手法の欠点を克服するために、本発明は、無視できない鏡面反射照明成分を有するそれら少数の図形要素だけの鏡面反射照明成分を個別にラスタ化する。これ以外の大多数の要素に対する鏡面反射照明成分はゼロであり、したがって処理されない。
【００１３】
具体的には、本発明のラスタライザは、単一インターポレータ回路を実施して、要素の、エッジまたはスパンなどの走査される部分全体の拡散反射照明成分と鏡面反射照明成分の両方を別個に走査変換する。すなわち、ラスタライザで実施されるインターポレータのタイプごとに、拡散反射照明成分と鏡面反射照明成分の両方を補間するために本発明の単一インターポレータが使用される。これは、単一インターポレータを使用して要素の部分前後にわたる要素の各成分を補間する従来型ラスタライザとは対照的である。例えば代表的な従来型ラスタライザは、要素のエッジおよびスパンにそれぞれ沿って要素の座標を補間するために３つのエッジ・ステッパと３つのスパン・ステッパとを含む。
【００１４】
要素の補間される部分がゼロでない鏡面反射照明成分を含むとき、単一インターポレータ回路は拡散反射照明成分と鏡面反射照明成分を別個に連続して補間する。そうでない場合は拡散反射照明成分だけが補間される。したがって、要素をその成分のピクセルにラスタ化することは、拡散反射照明成分と鏡面反射照明成分とを別個に連続して処理する状態で補間することを必要とし、また要素が、ゼロより大きいかまたは他の無視できる何らかの値の鏡面反射照明成分を含むときだけそのようにすることを必要とする。この結果、補間される要素の両方の照明成分を有する部分の各フラグメントを補間するには１つの処理状態ではなく２つの処理状態が必要となる。これにより、それらの比較的少ない要素がラスタ化される効率が低下する。しかし本発明は、拡散反射照明成分と鏡面反射照明成分の両方を補間するために同じ補間回路を繰り返し使用することによって、従来型システムと比較して最低量の回路を使用して正確にシーンをラスタ化し、したがって、ラスタライザの相対サイズおよび費用を低減する。したがって、本発明は、低い色強度を有するオブジェクト表面を含めたすべてのオブジェクト表面が、鏡面反射照明成分がある場合はそれを適切に表示することを保証しながら、ラスタライザ回路に大幅な節約を提供する。これらの重要な利点は、グラフィックス・システムを実施する上での応答性の最低限の低下と引き換えに提供される。
【００１５】
本発明のいくつかの態様を、各態様に実施可能な様々な実施形態と共に以下に要約する。実施形態は相互に包含的である必要もまた排他的である必要もなく、また競合しない任意の方法、およびその他の可能な方法で実施形態を組み合わせることができることを理解されたい。また、要約した本発明のこれらの態様は、例示しているだけであって限定的なものでないことを理解されたい。
【００１６】
本発明の一態様ではラスタライザが開示されている。このラスタライザは、図形要素の各色成分（例えば赤、緑、青）の拡散反射照明成分と鏡面反射照明成分の両方を補間するインターポレータを含み、要素がラスタ化される形式でフラグメントごとに拡散反射照明成分と鏡面反射照明成分に対する値を生成する。重要なのは、このインターポレータが、補間関数を実施するために１つの加算回路要素だけで構成されていることである。ラスタ化を受けている要素の一部が無視できない鏡面反射照明成分を含むとき、要素の補間される部分の各フラグメントに対して拡散反射照明成分と鏡面反射照明成分は別個に補間される。その要素が無視できる鏡面反射照明成分を含むときは、拡散反射照明成分だけが補間される。鏡面反射照明成分の色成分値がゼロのときはその鏡面反射照明成分を無視できるものとみなすことが好ましい。
【００１７】
本発明の別の態様では、図形要素をその成分ピクセルにラスタ化するラスタライザが開示されている。このラスタライザは、各ピクセルの拡散反射照明成分と鏡面反射照明成分を別個の連続した処理状態で処理するように構築、構成されており、ピクセルを含む要素の補間される部分がほぼゼロよりも大きな鏡面反射照明成分を含むときだけこれを行う。通常、この照明成分は、それ自体が赤色成分、緑色成分および青色成分などの色成分から構成されている。一実施形態では、ラスタライザは１つの走査変換器と１つの制御装置を含む。この走査変換器には複数のインターポレータが含まれる。インターポレータは、色成分ごとに、要素の拡散反射照明成分と鏡面反射照明成分の両方の色成分を補間するインターポレータを１つ含む。制御装置は、要素が鏡面反射照明成分を含むとき、各フラグメントに対して走査変換器が要素の拡散反射照明成分と鏡面反射照明成分を別個に連続して走査変換するように走査変換器を制御する。要素が鏡面反射照明成分を含まないとき、走査変換器は拡散反射照明成分だけを走査変換する。ラスタ化された形式の要素のエッジに沿ってフラグメントを判定するインターポレータと、ラスタ化された形式の要素の内部でフラグメントを判定するインターポレータとを含むラスタライザにおいて、単一のインターポレータはどちらのタイプのインターポレータであってもよい。
【００１８】
本発明の別の態様では、要素データによって表わされる図形要素を１つまたは複数のフラグメント・データ・ワードによって表わされるフラグメントに変換するためのラスタライザが開示されている。各フラグメントは、レンダリングされる画像のピクセルに対応しており、そのピクセルに対するＲＧＢ値とテクスチャ値を含む。このラスタライザは、要素データによって定義される各要素を走査する走査変換器を含み、各要素の頂点定義を、１つまたは２つのフラグメント・データ・ワードによってそれぞれが表わされるフラグメントに変換する。このラスタライザには、この走査変換器を制御するように構成された制御回路も含まれる。この制御回路によって、ラスタライザは、そのフラグメントが無視できない鏡面反射照明成分を有することを要素データが示す任意のフラグメントに対して、連続する２つの処理状態で要素データを補間させられる。この連続する２つの処理状態は、そのフラグメントに対して制御回路が鏡面反射照明成分値を決定する第１の処理状態と、そのフラグメントに対して制御回路が拡散反射照明成分値を決定する第２の処理状態とを含むことが好ましい。一実施形態において、制御回路は、フラグメントに対する要素データを単一の処理状態で補間するように走査変換器を制御する。その際、走査変換器は、要素が鏡面反射照明成分を有しないことを要素データが示したときに要素の鏡面反射照明成分を考慮せずにその要素に対する色値を生成する。
【００１９】
本発明のさらに別の態様では、少なくとも１つの幾何学アクセラレータを含むグラフィックス・システムのラスタライザが開示されている。このラスタライザは、ラスタ化されるべき図形要素を示す図形要素信号を受け取り、その図形要素信号から図形フラグメント信号を生成するため走査変換器を含む。この図形要素信号は照明成分信号を含み、この照明成分信号は、その図形要素の拡散反射照明成分を示す拡散反射照明成分信号とその図形要素の鏡面反射照明成分を示す鏡面反射照明成分信号とを含む。コントローラはこの鏡面反射照明成分信号を受け取り、鏡面反射照明成分信号によって示される鏡面反射照明成分が無視できるときはその照明成分信号を１つの状態モードで処理し、鏡面反射照明成分信号によって示される鏡面反射照明成分が無視できないときはその照明成分信号を２つの状態モードで処理するよう命令するコマンド信号を走査変換器に伝送する。フラグメント・プロセッサは、図形フラグメント信号に基づいてレンダリングされるべき図形要素のフラグメントに対する色値を生成し、フラグメント・プロセッサは、鏡面反射照明成分信号によって示される鏡面反射照明成分が無視できるときは１つの状態モードでコントローラの命令下で色値を生成し、鏡面反射照明成分信号によって示される鏡面反射照明成分が無視できないときは２つの状態モードで色値を生成する。
【００２０】
本発明のさらに別の態様では、グラフィクッス・システムで使用するためのラスタライザが開示されている。このラスタライザには、図形要素が鏡面反射照明成分と拡散反射照明成分とを含む条件下でだけ、連続する処理状態で図形要素の拡散反射照明成分と鏡面反射照明成分をラスタ化するように構成されている単一の処理チャネルが含まれる。
【００２１】
本発明の別の態様では、図形画像の要素をラスタ化するための方法が開示される。この方法は、１）要素の各ピクセルに対して、ゼロより大きな値を有する鏡面反射照明成分をそのピクセルが含むかどうかを判定するステップ、２）その鏡面反射照明成分がゼロより大きな値を有するときに拡散反射照明成分および鏡面反射照明成分を別個の連続した処理状態で処理するステップ、および３）その鏡面反射照明成分がゼロの値を有するときに、そのピクセルの拡散反射照明成分だけを処理するステップを含む。
【００２２】
本発明の様々な態様およびその実施形態は、いくつかの利点を提供し、従来技法のいくつかの欠点を克服する。すべての態様と実施形態が同じ利点を共有するわけではなく、また同じ利点を共有する態様と実施形態がすべての状況下でそれらの利点を共有するわけではない。一部を以下で要約する開示された態様は、いかなる点でも限定的とみなされるべきではない。すなわち、それらは例示としてのみ提供されており、本発明の範囲を限定するものでは決してない。
【００２３】
本発明の別の特徴および利点ならびに本発明の様々な実施形態の構造および動作を、添付の図面を参照しながら以下で詳述する。図面では、同一または機能的に類似の要素を同様の参照番号で示す。さらに、参照番号の左から１つ目と２つ目の数字は、その参照番号が最初に現れた図面を示す。
【００２４】
【発明の実施の形態】
本発明の前述および他の特徴および利点は、以下の詳細な説明と添付の図面からより明らかに理解されよう。この説明は例示のためにのみ与えられたものであって、本発明の範囲を限定するものではない。
【００２５】
Ｉ．概要
以下で開示する本発明の態様は、ラスタライザおよび関連するラスタ化演算の様々な実施形態を対象としたものである。簡単には、本発明のラスタライザは単一インターポレータ回路を実施して、要素のエッジまたはスパンなど、要素の走査される部分全体の拡散反射照明成分と鏡面反射照明成分の両方を個別に走査変換する。要素の補間される部分がゼロでない鏡面反射照明成分を含むとき、拡散反射照明成分と鏡面反射照明成分は別個に連続して単一インターポレータ回路によってラスタ化される。そうでない場合は、拡散反射照明成分だけが補間される。要素のエッジまたはスパンが鏡面反射照明成分を含むかどうかを判定するためには、要素を規定するオリジナルの平面方程式が使用されることが好ましい。本発明は、鏡面反射照明成分を正確に表わす画像を生成しながら、ラスタライザ回路構成のサイズおよび費用と、要素がラスタ化される効率との最適化されたバランスを有利に提供する。
【００２６】
本発明を実施するグラフィックス・システムには、最低限の効率の低下が生じる。これは、通常、３次元画像を形成する多数の図形要素の数個だけが鏡面反射照明成分を有するという事実によるものである。すなわち、シーンを構成する大多数のポリゴンは、レンダリングされる光源に対する鏡面反射照明効果を生じさせるための適切な方向および向きに欠けるので、鏡面反射照明は大部分のレンダリングされるシーンにおいて重要な部分ではない。したがって、大部分の図形要素のピクセルに関してピクセル色値を計算するために鏡面反射照明成分を転送し、記憶し、かつ処理することは必要なく、またこれらは資源の非効率的な使用になる。鏡面反射照明がめったに出現しないという利点を利用しながら画像を正確にレンダリングするために、本発明は、無視できない鏡面反射照明成分を有する少数の図形要素だけの鏡面反射照明成分を別個にラスタ化する。これ以外の大多数の要素に対する鏡面反射照明成分は無視できるものであり、したがって処理されない。本明細書で開示する実施形態では、鏡面反射照明成分が無視できるとみなされる場合、その鏡面反射照明成分はゼロの値を有する。
【００２７】
具体的には、本発明のラスタライザは、要素のエッジ全体の拡散反射照明成分と鏡面反射照明成分の両方をラスタ化する共通のエッジ・ステッパまたはインターポレータおよび／または要素のスパン全体の拡散反射照明成分と鏡面反射照明成分の両方をラスタ化する単一のスパン・ステッパまたはインターポレータを含む。各統合インターポレータは、拡散反射照明成分と鏡面反射照明成分を別個に補間し、要素がある名目閾値よりも大きな鏡面反射照明成分を含むときだけこれを行う。これは、ラスタ化された要素の部分を補間するのに、１つの処理状態ではなく２つの、好適には連続した処理状態を必要とする。これにより、要素をラスタ化する効率が低下する。しかし、拡散反射照明成分と鏡面反射照明成分の両方を走査変換するために同じインターポレータを使用することによって、本発明は従来型システムよりも遥かに小さなサイズと少ない費用を有するラスタライザを提供する。本発明は、低い色強度を有するオブジェクト表面を含むすべてのオブジェクト表面が鏡面反射照明の寄与を適切に反映することを保証しながら、ラスタライザ回路構成における大幅な節約を提供する。これらの重要な利点は、グラフィックス・システムを実施する上での応答性の最低限の低下と引き換えに提供される。
【００２８】
ＩＩ．例示的グラフィックス・システム環境
Ａ．システム・アーキテクチャ
図１Ａは、本発明の加速されたラスタライザおよび関連する方法の組み込みに適した１例示的コンピュータ・グラフィックス環境１００のアーキテクチャのブロック図である。グラフィックス・システム１０２は、グラフィックス・アプリケーション１０６などのソフトウェア・アプリケーションをその上で実行するコンピュータ・プラットフォームを提供する。グラフィックス・システム１０２は、グラフィックス・アプリケーション１０６と通信し、またそれに応答する。コンピュータ・グラフィックス・システム１０２には、グラフィックス・ライブラリ１０４と、グラフィックス・アプリケーション１０６がそれを介してグラフィックス・ハードウェア１１６を制御するデバイス特定モジュール１１０とが含まれる。
【００２９】
この例示的適用例では、グラフィックス・ライブラリ１０４は、グラフィックス・アプリケーション１０６がそれを介してグラフィックス・システム１０２と通信し、かつこれを効率的に制御するファンクション・コールのアプリケーション・プログラム・インターフェース（ＡＰＩ）１０８を提供する。グラフィックス・ライブラリＡＰＩ１０８は、好適には多くの異なるコンピュータ・プラットフォームで実施されるように設計された、効率化されたハードウェア独立型インターフェースであり、このグラフィックス・システム１０２はそれらコンピュータ・プラットフォームの一例である。グラフィックス環境１００において、グラフィックス・ライブラリ１０４は、対話型３次元アプリケーションを生成するためのオブジェクトと演算を指定するために使用されるファンクション・コールを提供する。したがってグラフィックス・アプリケーション１０６は、基礎をなすグラフィックス・ハードウェア１１６の構成に関する情報なしにＡＰＩ１０８によって規定された仕様に従ってコンピュータ・グラフィックス・システム１０２にファンクション・コールを発行することができる。
【００３０】
一実施形態において、グラフィックス・ライブラリＡＰＩ１０８はＯｐｅｎＧＬ（登録商標）ＡＰＩであり、これは低レベル・グラフィックス操作コマンドのグラフィックス・ライブラリを３次元オブジェクトの記述モデルに提供する。ＯｐｅｎＧＬ規格は「ＯｐｅｎＧＬ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ」ｖｅｒｓｉｏｎ１．１（１９９７）、「ＯｐｅｎＧＬ  Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ」ｖｅｒｓｉｏｎ１．１（１９９７）、および「ＯｐｅｎＧＬ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」ｖｅｒｓｉｏｎ１．１（１９９７）で説明されており、これらすべては、参照により本明細書に完全に組み込まれる。しかし、関連する技術分野の技術者に明らかなように、グラフィックス・ライブラリＡＰＩ１０８は、自社開発の、または、例えばＸ−Ｃｏｎｓｏｒｔｉｕｍから入手可能な一般に入手可能なＰＥＸ（ＰＨＩＧＳ  Ｅｘｔｅｎｓｉｏｎ  ｔｏ  Ｘ）ライブラリなどの、公的に入手可能な他のいかなるグラフィックス・ライブラリであってもよい。グラフィックス・アプリケーション１０６は、実施されているグラフィックス・ライブラリＡＰＩ１０８を介してグラフィックス・システム１０２と通信することができる、現在または今後開発されるいかなるグラフィックス・ソフトウェア・アプリケーションであってもよい。そのようなグラフィックス・アプリケーションは、例えばデータベース、ＣＡＤ／ＣＡＭアプリケーション、アーキテクチャ設計アプリケーション、土木工学アプリケーション、ワード・プロセッシング・パッケージなどであってよい。
【００３１】
グラフィックス・ライブラリ１０４は、グラフィックス・ライブラリ制御モジュール１１２と複数のパイプライン制御モジュール１１４を含む。グラフィックス・ライブラリ制御モジュール１１２は、グラフィックス・ライブラリ状態情報の管理、およびグラフィックス・ライブラリ１０４の他の構成要素への状態変更の通知などのよく知られた機能を実施する。グラフィックス・ライブラリ制御モジュール１１２は、一般に、ＡＰＩ１０８によって規定されるグラフィックス・ライブラリ機能を実行し、通知された状態情報を記憶する対応するデータ構造を維持する。グラフィックス・ライブラリ１０４は、例えばＣプログラミング言語を使用して実施することができる。
【００３２】
パイプライン制御モジュール１１４は、グラフィックス・パイプラインの制御に関連するよく知られた演算を実行する。パイプライン制御モジュール１１４は、導出された内部グラフィックス状態情報を維持し、そのような状態情報をデバイス特定モジュール１１０およびグラフィックス・ハードウェア１１６に提供する。演算には、例えばグラフィックス・ハードウェア１１６に配置されるラスタライザに関するデータを生成するための、演算子のスケジューリング、頂点ＡＰＩデータのバッファリングおよび要素上での演算子の実行が含まれる。そのような関数および演算を、図１Ｂを参照しながら以下で説明する。
【００３３】
デバイス特定モジュール１１０は、頂点状態（座標）データおよびプロパティ状態（色、照明等）データを含む要素データをグラフィックス・ハードウェア１１６に提供する。グラフィックス・ハードウェア１１６は、Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｃｏｍｐａｎｙ，Ｐａｌｏ  Ａｌｔｏ，Ｃａｌｉｆｏｒｎｉａから入手可能なＶｉｓｕａｌｉｚｅ  ＦＸ４  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍなどのいかなるよく知られたグラフィックス・ハードウェアであってもよい。コンピュータ・グラフィックス・システム１０２は、通常、やはりＨｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｃｏｍｐａｎｙによって製造され販売されているＨＰ  Ｖｉｓｕａｌｉｚｅ  Ｗｏｒｋｓｔａｔｉｏｎなどの高性能ワークステーションである。このコンピュータ・グラフィックス・システムは、ＵＮＩＸ（登録商標）ベースのオペレーティング・システムであるＨＰ−ＵＸオペレーティング・システムを実施することが好ましい。本発明の範囲内で類似の機能を有するいかなるワークステーションまたは他のコンピュータを使用することができることが理解されよう。
【００３４】
Ｂ．レンダリング・パイプライン
例示的グラフィックス環境１００において、グラフィックス・ハードウェア１１６、デバイス特定モジュール１１０およびパイプライン制御モジュール１１４は、パイプライン処理されたグラフィックス・アーキテクチャを規定する。図１Ｂは、ＯｐｅｎＧＬグラフィックス・ライブラリ仕様に従って実施される例示的レンダリング・パイプライン１５０の機能ブロック図である。レンダリング・パイプライン１５０は、一般にＯｐｅｎＧＬグラフィックス・パイプラインと呼ばれる。本発明を、そのようなレンダリング・パイプラインの実施に関して説明する。しかし、本発明が、現在または今後開発されるいかなるグラフィックス・レンダリング・パイプラインならびに他のパイプラインでないアーキテクチャで実施できることを、当業者には理解されたい。
【００３５】
レンダリング・パイプライン１５０には２つの経路、すなわち幾何学または３次元（３Ｄ）パイプライン１８２と画像形成または２次元（２Ｄ）パイプライン１８４がある。幾何学パイプライン１８２は頂点データ１５２によって規定される幾何学要素から構築される１つまたは複数のモデル・ビューから２次元画像を作成する。頂点１５２は、２次元表示画面上に表示するための２次元画像を形成するように処理される。
【００３６】
一方、画像形成または２次元パイプライン１８４は、２次元画像を表わすピクセル・データ１５４を操作する。ピクセル・データ１５４は線１７２で示すようにフレーム・バッファ・コントローラ１７０によってフレーム・バッファ１８０から読み込まれるか、または線１７４で示すようにシステム・メモリから読み込まれる。ピクセル・データ１５４（ピクセル、画像およびビット・マップ）はまずピクセル転送演算処理段１６２によって処理される。システム・メモリまたはフレーム・バッファ１８０からのピクセルはまず、様々な形式のうちの１形式から適正な数の成分にアンパックされる。このピクセル・データは次いで、ピクセル・マップによって拡大縮小され、バイアスをかけられ、処理される。この結果は、クランプされ、次いでテクスチャ・マッパ１６６のテクスチャ・メモリに書き込まれるか、または最適化されたラスタライザ１６４に送られる。あるいは、これらの結果は適切な形式にパックされ、線１７４を介してシステム・メモリのアレイに戻される。
【００３７】
すべてのデータは、それが要素（頂点データ１５２）を表わしているかピクセル（ピクセル・データ１５４）を表わしているかに関わらず、パイプライン１５０で直ちに処理することができる。あるいは、データ１５２、１５４は、現在または後の使用のために表示リスト１５６に保管することができる。表示リスト１５６が実行されるとき、保存されたデータは、グラフィックス・アプリケーション１０６によって送られたかのように、表示リスト１５６から送られ、直ちに処理される。
【００３８】
すべての幾何学要素は最初、頂点によって記述される。パラメトリック曲線およびパラメトリック曲面は最初、制御ポイントおよび多項式関数によって記述される。エバリュエータ１５８は、制御ポイントから表面を表わすために使用される頂点を導出するための演算を実行する。多項式マッピングとして知られる１つの共通の方法は、表面法線、テクスチャ座標、色および空間座標値をその制御ポイントから生成することができる。
【００３９】
頂点データ１５２は、次いで、頂点を要素に変換する要素アセンブラ処理段１６０に入る。ここで、空間座標は、３次元世界の位置から２次元表示画面上の位置に投影される。テクスチャ加工が使用される図示した実施形態では、テクスチャ・マッピング処理段１６６によってテクスチャ座標が生成、変換される。照明がイネーブルされると、本発明による最適化されたラスタライザ１６４によって次に処理される要素に対する色値を生成するために、変換された頂点、表面法線、光源位置、材料のプロパティ、および他の照明情報を使用して照明計算が実行される。
【００４０】
要素アセンブリに関して、処理段１６０は、他の関数の中でクリッピング演算も実行する。クリッピングとは、平面によって画定された半空間からはみ出した要素の部分を排除することである。場合によっては、この後に、離れた幾何学的オブジェクトを近いオブジェクトより小さく見せる遠近除算が続く。この場合、視点と深度の演算が適用される。カリングがイネーブルされ、この要素がポリゴンである場合、これはカリング・テストによって拒絶される場合がある。要素アセンブラ１６０によって実行されるピクセル演算の結果は完全な幾何学的要素であり、これは関係する色値、深度値および場合によってはテクスチャ座標値によって変換されクリッピングされた頂点であり、ラスタ化処理段１６４のための指針である。図１Ｂに示す例示的実施形態では、テクスチャ・アセンブリ処理段１６６は、任意のよく知られた方法で幾何学的オブジェクト上にテクスチャ画像を適用する。
【００４１】
最適化されたラスタ化処理段１６４は、幾何学的パイプライン１８２と画像形成パイプライン１８４によって共用される。ラスタ化処理段１６４では、要素はフラグメントに変換される。各フラグメント区画はフレーム・バッファ１８０のピクセルに対応する。ピクセル・データ１５４は、関連付けられた深度成分、テクスチャ成分またはフォグ成分のない特別なタイプのフラグメントである。頂点が線に接続されるようにエイリアス除去をサポートするために線およびポリゴンの点描、線の幅、点の大きさ、ならびに陰影モデルおよびカバレッジの計算が考慮されるか、または充填されるポリゴンに対して内部ピクセルが計算される。色値、テクスチャ値、フォグ値および深度値が、ラスタ化処理段１６４の各フラグメント区画に割り当てられる。
【００４２】
本発明に従い、ラスタライザ１６４は、要素の走査される部分全体の拡散反射照明成分と鏡面反射照明成分の両方を走査変換するために単一で共通のインターポレータを実施する。要素のエッジ全体の鏡面反射照明成分と拡散反射照明成分を走査変換するために、第１のインターポレータ回路が実施される。要素のスパン全体の鏡面反射照明成分と拡散反射照明成分を走査変換するために第２のインターポレータ回路が実施される。ラスタライザ１６４は、１つは拡散反射照明成分であり、１つは鏡面反射照明成分である２つの別個の連続した処理ステップで、ゼロでない鏡面反射照明成分を有する要素のピクセルを処理するために制御される。そうでない場合、鏡面反射照明成分は無視され、拡散反射照明成分だけが補間される。拡散反射照明成分と鏡面反射照明成分の両方をラスタ化するために同じインターポレータ回路を使用することによってラスタライザ１６４は最小の回路構成を使用してシーンをラスタ化し、その結果、ラスタライザのサイズと費用の両方は低減される。拡散反射照明成分と鏡面反射照明成分の両方を別個に補間することによって、ラスタライザ１６４は、低い色強度を有するすべてのオブジェクト表面が、鏡面反射照明がある場合にはその寄与を適切に反射することを保証する。最適化されたラスタライザ１６４の実施形態の構造と演算を以下に示す。
【００４３】
フラグメント・プロセッサ１６８は、その後の２次元表示画面上へのレンダリングのために、フレーム・バッファ・コントローラ１７０によってフレーム・バッファ１８０に書き込まれるべきピクセル・データを生成する。フラグメント処理段１６８では、フラグメントを変更または排除することができる一連の任意選択の演算が実施される。これらの演算は個々にイネーブルまたはディセーブルすることができ、テクスチャリング、フォグの計算、シザリング・テスト、アルファ・テスト、ステンシル・テストおよび深度テストが含まれる。これらのテストの後にブレンディング、ディザリング、およびマスキングの演算が続く。これらすべての演算は当技術分野ではよく知られているものとみられる。さらに、フラグメント・プロセッサ１６８は、本発明の様々な態様に従って、フラグメントを処理するために制御または変更される。
【００４４】
この開示から、本発明は、効率的なラスタ化から利益を得ることができるいかなるコンピュータ・ベースのシステムでも実施することができることを理解されたい。グラフィックス・システムが特に本発明で利益を得ることができるので、ここではグラフィックス・システム１００がそのような唯一の実施例として使用されているが、本明細書のグラフィックス・システム１００の提示はいかなる点においても限定的なものとみなされるべきではない。
【００４５】
ＩＩＩ．最適化されたラスタライザ１６４
図２に、本発明の一実施形態による別個の鏡面反射アクセラレータ２０２を含む最適化されたラスタライザ１６４を示す機能ブロック図を示す。前述のように、最適化されたラスタライザ１６４は、要素データ１２０によって表わされる要素を要素アセンブラ１６０から受け取り、その定義された要素をフラグメント・データ１２２によって表わされるフラグメントに変換する。前述のように、各フラグメントには、レンダリングされた画像の対応するピクセルを定義するデータ量が含まれる。最適化されたラスタライザ１６４は、前述され以下で詳述されるように、フラグメント・データ１２２をフラグメント・プロセッサ１６８に転送する。本明細書で使用されるように、フラグメント・データとそのフラグメント・データによって定義されたフラグメントには同じ参照番号が振られており、共通のものとして使用される。各フラグメント１２２には、対応するピクセルに対する色（ＲＧＢ）値２１８、（オプションの）アルファ（Ａ）値２２０、座標（Ｘ、Ｙ、Ｚ）値２２２、およびテクスチャ（ＲＴ、ＧＴ、ＢＴ）値２２４が含まれる。フラグメント・データ１２２の他に、ラスタライザ１６４は、また、対応するフラグメント１２２をどのように処理するべきかをフラグメント・プロセッサ１６８に命令するコマンド２１６を各フラグメント１２２に対して生成する。
【００４６】
グラフィックス・システム１０２（図１Ａ）は、レンダリングされるべき３次元オブジェクト上に１つまたは複数の光源の効果をモデル化する。グラフィックス・システム１０２が３次元オブジェクトのレンダリングに使用する色は、そのオブジェクト上で輝く光の量と質に依存し、またそのオブジェクト表面のプロパティに依存するものである。ＡＰＩ１０８（図１Ａ）がＯｐｅｎＧＬ（登録商標）ＡＰＩの例示的実施形態では、前述の照明の有名な４つのタイプはそれぞれその赤の成分、緑の成分、および青の成分の点で定義されている。したがって、光源の色は、それが発する赤の光、緑の光、および青の光によって特徴付けられる。前述のように、拡散反射照明成分と鏡面反射照明成分は本発明に対する特別の関係を有する。前述のように、拡散反射照明は１方向から来る光であり、表面から反射されると全方向に均等に分散される。鏡面反射照明は特定の方向から来て、表面から好ましい方向へ反射される。
【００４７】
ラスタライザ１６４は、要素データ１２０によって定義された各要素を走査し、各要素を１つまたは複数のフラグメント１２２に変換する統合走査変換器２０４を含む。前述のように、各フラグメント１２２は、最終的にフレーム・バッファ１８０（図１Ｂ）に記憶されるピクセルに対応する。走査変換器２０４は、図形要素の成分ごとに図形要素のラスタ化された形式における各フラグメントの値を計算するインターポレータを含む。すなわち走査変換器２０４は、図形要素のベクトル・レベルの記述を図形要素のフラグメントごとの値に変換する。ラスタライザ１６４は、テクスチャ・マッパ１６６の待ち時間を補償するための段階ＦＩＦＯ２０６をも含む。フラグメント・データ１２０は、テクスチャ・マッパ１６６によって生成されたテクスチャ・パラメータ２２４に対する適切なデータ転送タイミングを保証するために、ＦＩＦＯ２０６を介して転送される。
【００４８】
当技術分野でよく知られているように、ラスタライザは、要素のエッジを走査変換する、一般にエッジ・ステッパと呼ばれるインターポレータと、要素の内部スパンを走査変換する、一般にスパン・ステッパと呼ばれるインターポレータとを一般に含む。以下で詳述するように、インターポレータの各タイプ（エッジ・ステッパとスパン・ステッパ）に対して、走査変換器２０４は、鏡面反射照明成分と拡散反射照明成分を別個に連続して走査変換するよう構築され、配置された単一のインターポレータ回路を含む。そのうようなわけで、走査変換器２０４は本明細書では統合走査変換器２０４と呼ばれる。統合走査変換器２０４は、テクスチャ・マッパ１６６に結果として生じるテクスチャ・データ２３０を提供し、フラグメント・プロセッサ１６８にフラグメント・データ１２２を提供する。別個の鏡面反射アクセラレータ２０２は、走査変換回路構成を大幅に低減しながら、鏡面反射照明成分を拡散反射照明成分と別個に最適に補間し、レンダリングされた画像に鏡面反射照明寄与が正確に描写されている要素を結果として生じさせるように、走査変換器２０４を制御する。これを以下で詳述する。
【００４９】
別個の鏡面反射アクセラレータ２０２あるいは単にアクセラレータ２０２は、要素データ１２０によって定義された図形要素の各走査された部分（エッジまたはスパン）が鏡面反射照明成分を有するかどうかを判定する。例示的実施形態では、アクセラレータ２０２は、現在補間されている要素の部分が鏡面反射照明成分を含むかどうかを示す鏡面反射パラメータ信号２０８を統合走査変換器２０４から受け取る。本発明によると、アクセラレータ２０２は、要素の頂点定義が鏡面反射照明成分を含むかどうかに基づいて、拡散反射照明成分と鏡面反射照明成分との走査変換を制御する。アクセラレータ２０２は、走査変換器２０４を制御するための走査変換器制御信号２１０を生成して、鏡面反射パラメータ２０８に応じて１つまたは複数の後続の処理状態で要素データ１２０を処理する。
【００５０】
具体的には、アクセラレータ２０２は、要素の鏡面反射照明成分が無視できる（開示された実施形態ではゼロ）かどうかを判定する。アクセラレータ２０２が、鏡面反射照明成分が無視できると判定すると、アクセラレータ２０２は、走査変換器２０４を制御して、本明細書で１つの状態モードと呼ぶ単一の処理状態で図形要素に対する色値を生成する。以下で詳述するように、この単一状態モードで、ラスタライザ１６４は、図形要素の鏡面反射照明成分を使用せずに図形要素に関する色値を生成し、さもなければ要素の鏡面反射照明成分を処理または記憶しない。無視できる鏡面反射照明成分は、要素をレンダリングするピクセルの結果的に生じる色値があるとしてもその色値に対して著しく寄与することがないので、このような鏡面反射照明成分の処理および記憶を省略してもレンダリングされた図形要素の品質を損なうものではない。
【００５１】
アクセラレータ２０２が、鏡面反射照明成分を無視できない（開示された実施形態ではゼロでない）と判定する場合、アクセラレータ２０２は、走査変換器２０４が拡散反射照明成分と鏡面反射照明成分の両方を使用して図形要素に対する色値を生成する２つの状態モードで図形要素に対する色値を生成するように、走査変換器２０４を制御する。走査変換器２０４は、２つの照明成分を別個に処理するように、すなわち連続した処理状態で処理するように単一のインターポレータ回路を使用する。これにより、走査変換器２０４は、要素アセンブラ段１６０中に照明パラメータ値を結合する従来の手法に関連する問題点を克服することができる。さらに、鏡面反射照明パラメータと拡散反射照明パラメータとを処理するために単一のインターポレータを使用すると、実施された統合走査変換器２０４とＦＩＦＯ２０６に必要とされる回路構成の量は大幅に低減される。
【００５２】
ＦＩＦＯ２０６は、それぞれが１つのフラグメントに対するデータを定義する一連のフラグメント・データ・ワード１２２を含む。以下で詳述する一実施形態では、拡散反射照明と鏡面反射照明の両方を連続する処理状態で補間するときに、走査変換器２０４はフラグメント・データ・ワードをＦＩＦＯ２０６に二重に書き込む。そのような実施形態において、走査変換器２０４は、鏡面反射照明成分を有する要素の部分を定義する２つのフラグメント・データ・ワード１２２をフラグメントに対して生成する。このような実施形態は、開示する実施形態で使用されており、それを以下で詳述する。しかし、別の実施形態では、走査変換器２０４が、鏡面反射照明成分値が書き込まれているメモリ領域とは別のメモリ領域に拡散反射照明成分値を書き込んで、拡散反射照明成分と鏡面反射照明成分の両方を含む単一のフラグメント・データ・ワード１２２を生成することが企図される。
【００５３】
別個の鏡面反射アクセラレータ２０２は、フラグメント・プロセッサ１６８によって実施される処理も制御する。フラグメント・データ１２２において定義されたフラグメントごとに、フラグメント・プロセッサ１６８に補完的情報を提供する関連するコマンド２１６がある。両方の照明成分を有する各フラグメントに対して２つのフラグメント・データ・ワードが生成される以下で詳述する実施形態では、アクセラレータ２０２は、また、関連するフラグメントが拡散反射照明成分値または鏡面反射照明成分値を含むかどうかに基づいて、結果的に生じるフラグメント・データ１２２を処理するようにフラグメント・プロセッサ１６８を制御する。鏡面反射照明成分と拡散反射照明成分の両方を処理するために、走査変換器２０４の同じインターポレータ回路が使用され、また、それらが別個に処理されるので、結果的に生じる各フラグメント・データ・ワード１２２は拡散反射照明成分値と鏡面反射照明成分値のいずれかを含むことになり、両方の照明成分はＦＩＦＯ２０６の同じ領域に書き込まれることになる。フラグメント・プロセッサ１６８による適切な処理を保証するために、アクセラレータ２０２は、コマンド２１６の値に基づいてフラグメント・プロセッサ処理コマンド２１４を生成することによって、各フラグメント・データ・ワード１２２がフラグメント・プロセッサ１６８のどの入力バッファに書き込まれるかを制御する。
【００５４】
図３は、本発明の一実施形態による別個の鏡面反射アクセラレータ２０２と統合走査変換器２０４の詳細なブロック図である。前述のように、各要素は要素データ１２０によって定義されている。要素データ１２０は、通常、一般に平面方程式と呼ばれる形式で実施される。平面方程式は、要素内における特定の成分の値（たとえば赤、緑、および青の鏡面反射照明成分）の分配を定義する。一実施形態では、平面方程式は１つの頂点の成分に対する初期値と、その頂点のエッジおよびスパンに沿った隣接ピクセルでの成分値間の差を定義する成分に対するデルタ値とを含む。別の実施形態では、成分に対する最終値は要素データ１２０にも含まれる。
【００５５】
統合走査変換器２０４は、レンダリングされる図形要素内の各フラグメントで要素の各成分の値に対応する信号を生成するために平面方程式を使用するインターポレータを含む。図３に示す実施形態では、統合走査変換器２０４は、要素の特定の部分にわたって要素の成分をそれぞれが補間する２つのタイプのインターポレータ、すなわちエッジ・ステッパとスパン・ステッパとを含む。各エッジ・ステッパすなわちインターポレータ３２８〜３３４は、要素の１つまたは複数のエッジに沿った各ピクセルで特定の成分の値を決定する。各スパン・ステッパすなわちインターポレータ３１０〜３１４は、要素の各スパンに沿った各ピクセルでの成分の値を決定する。各スパンは一般に、エッジ・ピクセルによって境界が示される内部ピクセルの行である。
【００５６】
前述のように、鏡面反射照明成分と拡散反射照明成分とを補間するための統合インターポレータは、走査変換器２０４内のインターポレータのタイプごとに実施することができる。図３に示す実施形態では、ラスタライザ１６４の統合走査変換器２０４で統合鏡面反射／拡散反射エッジ・ステッパ３２８と統合鏡面反射／拡散反射スパン・ステッパ３１０とが実施される。統合走査変換器２０４は、従来の鏡面反射および拡散反射エッジ・ステッパを本発明の統合スパン・ステッパと共に、または従来の鏡面反射および拡散反射スパン・ステッパを本発明の統合エッジ・ステッパと共に実施することができることが理解されよう。前述のように、各照明成分には赤、緑および青の成分がある。単一の関数ブロック３２８は３つの統合鏡面反射／拡散反射エッジ・ステッパを表わし、単一の関数ブロック３１０は３つの統合鏡面反射／拡散反射スパン・ステッパを表わす。
【００５７】
図３に示す例示的実施形態では、鏡面反射／拡散反射エッジ・ステッパ３２８は、要素データ１２０の鏡面反射照明および拡散反射照明の平面方程式を受け取り、要素の１つまたは複数のエッジに沿ったフラグメントに対する成分エッジ値３２２を生成する。成分エッジ値３２２は、レンダリングされる要素の各エッジに沿った各ピクセルに対する赤、緑および青の鏡面反射照明成分値と拡散反射照明成分値を含む。一実施形態では、成分エッジ値３２２を搬送するデータ経路は、赤、緑および青の信号ごとに８ビットの情報を搬送するための２４回線を含む。
【００５８】
統合鏡面反射／拡散反射スパン・ステッパ３１０は、要素の各スパン全体の鏡面反射照明成分と拡散反射照明成分の両方を補間する。鏡面反射／拡散反射スパン・ステッパ３１０は、統合鏡面反射／拡散反射エッジ・ステッパ３２８によって生成されたエッジ値３２２を入力成分として受け取る。本発明のコントローラ３３６とアクセラレータ２０２の制御下で、鏡面反射／拡散反射スパン・ステッパ３１０はエッジ成分値と要素データ１２０とを使用して最終ＲＧＢ色値２１８を生成する。さらに、鏡面反射／拡散反射エッジ・ステッパと鏡面反射／拡散反射スパン・ステッパ３２８と３１０に関する詳細を、例示的実施形態を参照しながら以下で提供する。
【００５９】
要素データ１２０は、要素の境界を規定する平面方程式も含む。座標／アルファ・エッジ・ステッパ３３２は、要素の各エッジのエンドポイントの座標（Ｘ、Ｙ、Ｚ）を識別するＸＹＺＡスパン指定３２４を生成する。要素の１つまたは複数のエッジに沿ったピクセルごとのアルファ値もまた指定３２４に含まれる。一実施形態では、ＸＹＺＡスパン指定３２４を搬送するデータ経路は、Ｘ、ＹおよびＺの座標ごとに１６ビットの情報を搬送するための４８データ回線と、アルファ値に対して８ビットの情報を搬送するための８データ回線の合計５６回線を含む。図示した実施形態では、要素データ１２０は、図形要素上にマッピングされるべきテクスチャも指定する。テクスチャ・エッジ・ステッパ３３４は、平面方程式をテクスチャのＵ座標およびＶ座標と、Ｘ勾配（ＧＸ）とＹ勾配（ＧＹ）情報とに対応する、テクスチャ・スパン指定３２６と総称される信号に変換する。
【００６０】
同様に、レンダリングされる要素の各スパン全体の成分値を補間するスパン・ステッパ３１０〜３１４がある。これらのスパン・ステッパには、鏡面反射／拡散反射スパン・ステッパ３１０、座標、アルファ・スパン・ステッパ３１２およびテクスチャ・スパン・ステッパ３１４が含まれる。スパン・ステッパ３１２はフラグメントに対する座標値２２２とアルファ値２２０とを生成する。テクスチャ・スパン・ステッパ３１４は、テクスチャ・マッパ１６６による処理のためのテクスチャ値および勾配値２３０を生成する。その後、テクスチャ・マッパ１６６はフラグメントに対するテクスチャ値２２４を生成する。テクスチャ値２２４は、走査変換器２０４によって生成される対応するＲＧＢ値、Ａ値およびＸＹＺ値と共にＦＩＦＯ２０６に記憶される。前述のように、統合走査変換器２０４は、図形要素の鏡面反射照明成分がゼロかどうかによって、拡散反射照明成分と鏡面反射照明成分のラスタ化を制御する。本発明の一実施形態によると、アクセラレータ２０２は、補間を受けている要素の各部分（エッジおよびスパン）に対してそのような判定を行うための鏡面反射検出回路３０２を含む。この図示した実施形態では、鏡面反射検出回路３０２は、補間されるエッジまたはスパンがゼロでない照明成分を有するかどうかを判定するために使用される１つまたは複数の鏡面反射寄与信号２０８（図２）を受け取る。図３を参照すると、鏡面反射寄与信号２０８には、エッジ鏡面反射寄与信号２０８Ｅとスパン鏡面反射寄与信号２０８Ｓとが含まれる。以下で詳述するように、鏡面反射寄与信号２０８は、１つまたは複数のエッジ（２０８Ｅ）と１つまたは複数のスパン（２０８Ｓ）に対する初期鏡面反射照明値およびデルタ鏡面反射照明値を含み、すなわちこれらを表わす。エッジまたはスパンへの成分の分配を定義する平面方程式が鏡面反射照明成分を有しない場合、すなわち値がゼロの場合、そのエッジまたはスパンを含む個々のフラグメントもまた鏡面反射照明成分を有しない。この判定の結果は、鏡面反射検出回路３０２によって生成される鏡面反射寄与信号３３８に提示される。
【００６１】
前述のように、統合走査変換器２０４は、レンダリングされるべき図形要素の拡散反射照明成分と鏡面反射照明成分の赤、緑および青の成分のそれぞれを補間するために単一のエッジ・ステッパ３２８と単一のスパン・ステッパ３１０とを実施する。別個の鏡面反射アクセラレータ２０２は、鏡面反射／拡散反射エッジおよびスパン・ステッパ３２８、３１０が鏡面反射照明成分または拡散反射照明成分を処理するかどうかを制御するゼロ鏡面反射コントローラ３０４を含む。コントローラ３０４は、鏡面反射検出回路３０２によって生成された鏡面反射寄与信号３３８を受け取り、走査変換器制御信号２１０を生成することによって走査変換器２０４を制御する。走査変換器制御信号２１０は、鏡面反射照明成分と拡散反射照明成分のどちらが鏡面／拡散反射エッジおよびスパン・ステッパ３２８、３１０によって処理されるべきかを制御する。
【００６２】
鏡面反射検出回路３０２が、要素のエッジまたはスパンを構成する任意のフラグメントの鏡面反射照明成分がゼロより大きいと判定すると、コントローラ３０４は、そのエッジまたはスパン全体の平面方程式の拡散反射照明成分と鏡面反射照明成分を、フラグメントあたり２つの連続した処理状態で走査変換するよう走査変換器２０４に命令する。具体的には、コントローラ３０４は、最初のクロック周期中に、拡散反射照明成分と鏡面反射照明成分のどちらかを指定の鏡面／拡散反射インターポレータ３２８、３１０で走査変換する値を有する走査変換器制御信号２１０を生成する。これにより、指定の鏡面／拡散反射インターポレータ３２８、３１０は、エッジまたはスパンを含む特定フラグメントで図形要素の選択された照明成分に対応するエッジまたはスパン・フラグメントＲＧＢ値を最終的に生成する。次のクロック周期中、ゼロ鏡面反射コントローラ３０４は、指定の鏡面／拡散反射インターポレータ３２８、３１０に他方の照明成分を走査変換させる値を有する走査変換器制御信号２１０を生成する。これにより、指定の鏡面／拡散反射インターポレータ３２８、３１０は、同じフラグメントに対して、図形要素の選択された照明成分に対応するエッジまたはスパン・フラグメントＲＧＢ値を最終的に生成する。したがって、スパン・ステッパ３１０〜３１４は、鏡面反射照明成分と拡散反射照明成分とを含むフラグメント１２２を生成する。結果的に生じるフラグメント・データ・ワード１２２は、後述するように、１つまたは２つのＦＩＦＯデータ・ワードに記憶される。
【００６３】
一方、図形要素の鏡面反射照明成分がゼロのとき、コントローラ３０４は走査ステッパ３１０に単一処理状態にある図形要素の拡散反射照明成分だけを走査変換させる値を有する走査変換器制御信号２１０を生成する。この方法で、コントローラ３０４は、鏡面反射照明成分が無視できるとき、走査変換器２０４に鏡面反射照明成分と拡散反射照明成分を１状態モードでラスタ化するように、また、鏡面反射照明成分が無視できないときには２状態モードでラスタ化するように命令する。図３に示すように、ＲＧＢ２１８は２４ビットのデータ経路である。
【００６４】
前述のように、アクセラレータ２０２は、ＦＩＦＯ２０６に記憶されているフラグメントのフラグメント処理も制御する。ゼロ鏡面反射コントローラ３０４によって生成されたコマンドは、フラグメント・プロセッサ１６８をどのように管理するかを決定するためにフラグメント・プロセッサ・コントローラ３０６によって使用される。具体的には、後述する実施形態において、ゼロ鏡面走査コントローラ３０４は走査変換器コントローラ３３６に鏡面反射ＩＤ２１２を提供する。それに応答して、走査変換器コントローラ３３６は、対応するフラグメント・データ・ワード１２２が鏡面反射照明成分を含んでいるかどうかを指定するように、各フラグメント・データ・ワード１２２と共に生成されたコマンド２１６に１つまたは複数のビットをセットする。コマンド２１６は、対応するＲＧＢ色値２１８が鏡面反射照明寄与または拡散反射照明寄与を表わすかどうかを示しながら、各フラグメント・データ・ワード１２２と共にＦＩＦＯ２０６に記憶される。コマンド２１６は、ＦＩＦＯ２０６の出力の処理方法をフラグメント１２２が鏡面反射照明成分を含むかどうか、またはフラグメント１２２が鏡面反射照明成分と拡散反射照明成分の両方を含むかどうかによって決定するために、フラグメント・プロセッサ・コントローラ３０６によって後で使用される。
【００６５】
本発明の一実施形態では、鏡面反射／拡散反射インターポレータ３１０およびＸＹＺＡインターポレータ３１２の出力は先入れ先出し（ＦＩＦＯ）バッファ２０６に記憶される。ＦＩＦＯバッファ２０６は、フラグメント・プロセッサ１６８によるその後の処理のためにそれらの値を記憶する。さらに、８ビットのコマンド２１６はフラグメントごとに生成される。それらの図示した実施形態において、ＦＩＦＯ２０６は１２８ワードの深さであり、各フラグメント・データ・ワードは、３ビットのコマンド２１６、２４ビットの鏡面反射／拡散反射ＲＧＢ値２１８、８ビットのアルファ値および４８ビットの座標値２２２を含む、８３ビットを含む。したがって走査変換器２０４は、各フラグメントをＦＩＦＯ２０６に二重に書き込む。すなわち１ワードがＲＧＢ拡散反射値２１８を含み、もう１ワードが鏡面反射ＲＧＢ値２１８を含む。あるいは、各フラグメント・データ・ワード１２２は、１０７ビットのフラグメント・データ・ワードの場合、２４ビットの拡散反射ＲＧＢ値と２４ビットの鏡面反射ＲＧＢ値を含むことができる。
【００６６】
別個の鏡面反射アクセラレータ２０２の成分それぞれの例示的実施形態を次に説明する。前述のように、鏡面反射照明成分と拡散反射照明成分は赤、青および緑の成分から構成されており、それぞれが別個に補間される。簡約化のために、赤の拡散反射照明成分と赤の鏡面反射照明成分とを補間するエッジ・ステッパ３２８とスパン・ステッパ３１０の部分だけを示す。このようなわけで、図４には赤の鏡面反射エッジ・ステッパ３２８Ｒだけを詳細に示し、図５には赤の鏡面反射／拡散反射スパン・ステッパ３１０Ｒだけを示し、図６には赤の決定回路６２２Ｒだけを示す。
【００６７】
Ａ．鏡面反射／拡散反射エッジ・ステッパ
図４に、鏡面反射／拡散反射エッジ・ステッパ３２８の一実施形態の回路ブロック図を示す。図４には、本発明の一実施形態に従って例示的鏡面反射エッジ・ステッパ３２８とインターフェースをとる鏡面反射パラメータ検出回路３０２とゼロ鏡面反射コントローラ３０４の一部も示す。一般に、検出回路３０２は、エッジ・ステッパ３２８から、平面方程式が鏡面反射照明成分によって頂点を定義するかどうかを示す鏡面反射パラメータ２０８を受け取る。鏡面反射パラメータ２０８の値に基づいて、検出回路３０２は鏡面反射寄与信号３３８を生成し、これは次いで後述のようにゼロ鏡面反射コントローラ３０４によって使用される。次に、鏡面反射パラメータ検出回路３０２とゼロ鏡面反射コントローラ３０４の一実施形態を、図４を参照しながら説明する。鏡面反射／拡散反射エッジ・ステッパ３２８は、赤の鏡面反射エッジ・ステッパ３２８Ｒと、青の鏡面反射エッジ・ステッパと、緑の鏡面反射エッジ・ステッパとを含むことを理解されたい。これらのエッジ・ステッパ３２８は共に、個別のＲＧＢ色成分を含む赤の鏡面反射照明スパン指定３２２Ｓを生成する。この説明では、赤の鏡面反射エッジ・ステッパ３２８Ｒに関する本発明のそれらの態様だけを説明する。この説明は、他の統合エッジ・ステッパにも適用可能であることが理解されよう。
【００６８】
次に図４を参照すると、統合鏡面反射／拡散反射インターポレータ３２８Ｒはデルタ赤鏡面反射（ＲＳ）レジスタ４０８とデルタ赤拡散反射（ＲＤ）レジスタ４２０とを含む。これらのレジスタは、インターポレータ３２８Ｒによって使用されるべきそれぞれの照明成分に関する増分値を受け取り、記憶する。スパン・ステッパ３２８Ｒには、現在のＲＳレジスタ４０６と現在のＲＤレジスタ４２２も含まれている。それらレジスタのそれぞれは、指定のエッジ全体のピクセルごとに、それぞれの赤の色成分の現在の値を記憶する。
【００６９】
現在どの赤の照明成分がインターポレータ３２８Ｒによって補間されていても、それに対するデルタ値と現在の値とを加算するために単一の加算器４１６がインターポレータ３２８Ｒに含まれる。加算器４１６は、マルチプレクサ４１８を介してデルタ・レジスタ４０８および４２０に接続されている第１の入力部を有する。この入力部で、加算器４１６は、デルタ赤鏡面反射レジスタ４０８に記憶されているデルタ赤鏡面反射値４２８またはデルタ赤拡散反射レジスタ４２０に記憶されているデルタ赤拡散反射値４３８を受け取る。加算器４１６は、マルチプレクサ４２４を介して現在のレジスタ４０６および４２２に接続されている第２の入力部を有する。この入力部で、加算器４１６は現在の赤の鏡面反射レジスタ４０６に記憶されている現在の赤鏡面反射値４３０または現在の赤の拡散反射レジスタ４２２に記憶されている現在の赤の拡散反射値４４４を受け取る。マルチプレクサ４１８および４２４は、後述するようにゼロ鏡面反射コントローラ３０４によって制御される。
【００７０】
現在のＲＳレジスタおよび現在のＲＤレジスタ４０６および４２２に入力される値は、マルチプレクサ４３０によって制御される。加算器４１６の出力部は、データ経路４３２を介してマルチプレクサ４３０のゼロの入力部に提供される。この入力部で、加算器４１６はデルタまたは現在の赤の鏡面反射（４２８，４３０）値または赤の拡散反射（４３８、４４４）値を提供することになる。マルチプレクサ４３０の「１」の入力部はエッジ・ステッパ３２８Ｒの入力部に接続されている。この入力部で、マルチプレクサ４３０は初期の赤鏡面反射値４４０または初期の赤の拡散反射値４４２を受け取る。したがって、マルチプレクサ４３０は、初期値４４０、４４２または、現在の赤の鏡面反射レジスタおよび赤の拡散反射レジスタ４０６、４２２で現在計算されている値のどちらかを記憶するために使用される。マルチプレクサ４３０は、後述のように、ゼロ鏡面反射コントローラ３０４によって制御される。
【００７１】
マルチプレクサ４２４の出力部は、赤の鏡面反射／拡散反射スパン・ステッパ３１０Ｒにも提供される。したがって、現在の赤の鏡面反射値４３０または現在の赤の拡散反射値４４４は、出力値として赤の鏡面反射／拡散反射スパン・ステッパ３２８Ｒによって生成される。図４に示すように、この値は、図３を参照しながら前記で紹介した赤の成分エッジ値３２２Ｒと呼ばれる。
【００７２】
図２を参照しながら前述したように、別個の鏡面反射アクセラレータ２０２は、統合走査変換器２０４の演算を制御するために１つまたは複数の走査変換器制御信号２１０を生成する。図４に示す実施形態では、走査変換器制御信号２１０は、赤の鏡面反射／拡散反射エッジ・ステッパ３２８Ｒを制御するための個別の２つの信号を含む。選択信号４５０は、マルチプレクサ選択信号として実施され、マルチプレクサ４１８と４２４とを制御する。ゼロの鏡面反射コントローラ３０４は、スパン・ステッパ３２８Ｒが赤の拡散反射照明成分と赤の鏡面反射照明成分のどちらを補間するかを制御するために選択信号４５０の値をセットする。具体的には、エッジ・ステッパ３２８Ｒは論理的１によって赤の鏡面反射照明成分を補間し、論理的０によって赤の拡散反射照明成分を補間する。この第２の信号、レジスタ制御４５２は、また、マルチプレクサ選択信号として実施され、マルチプレクサ４３０を制御する。ゼロ鏡面反射コントローラ３０４は、現在の赤の拡散反射レジスタと現在の赤の鏡面反射レジスタ４０６、４２２への、初期値４４０、４４２の初期記憶を制御するために選択信号４５２の値をセットする。
【００７３】
一般に、動作中、ゼロ鏡面反射コントローラ３０４は、要素データ１２０が赤の鏡面反射寄与を含むかどうかを示す赤の鏡面反射寄与３３８Ｒを受け取る。含まない場合、コントローラ３０４は、赤の拡散反射照明成分だけを補間するようにエッジ・ステッパ３２８Ｒを制御する。コントローラ３０４は、それぞれのゼロの入力部で提示される信号を選択するようにマルチプレクサ４１８と４２４へのデータ選択信号４５０をリセットする。インターポレータ３２８Ｒは、初期の赤の拡散反射値４４２を取り出す。ゼロ鏡面反射コントローラ３０４は、エッジ・ステッパ・レジスタ制御４５２をセットし、この結果、マルチプレクサ４３０は論理１の入力部で提示される信号を進める。したがって、初期の赤の拡散反射値４４２は、現在の赤の拡散反射レジスタ４２２に記憶される。レジスタにおける値の記憶は、ゼロ鏡面反射コントローラ３０４によって同様に制御されている書込みイネーブル信号（図示せず）によっても制御される。
【００７４】
インターポレータ３２８Ｒは次いで、デルタ赤拡散反射パラメータ４３８を受け取る。デルタ赤拡散反射パラメータ４３８は、デルタ赤拡散反射レジスタ４２０に直接的に記憶されている。ゼロ鏡面反射コントローラ３０４は、その同じ値が現在の赤拡散反射レジスタ４２２に記憶されることを防止するためにエッジ・ステッパ・レジスタ制御信号４５２をリセットする。次いで、スパン・ステッパ３１０は、通常の走査変換器３３６の制御下において、現在の赤拡散反射値４４４とデルタ赤拡散反射値４３８を反復的に加算して、新しい現在の赤拡散反射値４４４を生成する。現在の赤の拡散反射値は、現在の赤拡散反射レジスタ４２２に記憶される。マルチプレクサ４１８はデータ選択信号４５０によって制御されるので、エッジ・ステッパ３２８Ｒによって行われるエッジ全体の各ステップで、マルチプレクサ４２４は現在の赤拡散反射値４４４を赤成分エッジ値３２２ＲとしてＦＩＦＯ２０６に提供する。
【００７５】
要素データ１２０に赤鏡面反射寄与が含まれることを示す値を赤鏡面反射寄与信号３３８が有するとき、コントローラ３０４は、赤拡散反射成分と赤鏡面反射成分とを別個に処理するようにエッジ・ステッパ３２８Ｒを制御する。この図示した実施形態では、赤拡散反射成分は赤鏡面反射成分の前に処理されているが、これは任意であり、拡散反射成分と鏡面反射成分はいかなる順序でも処理することができる。
【００７６】
コントローラ３０４は、赤の拡散反射成分を処理するようにデータ選択４５０とスパン・ステッパ・レジスタ制御４５２とを前述のようにセットする。次いで、コントローラ３０４は、マルチプレクサ４１８と４２４にそれぞれの１の入力部で提示される信号を選択させるようにデータ選択信号４５０をセットする。インターポレータ３２８Ｒは次いで、初期赤鏡面反射照明パラメータ４４０を取り出す。ゼロ鏡面反射コントローラ３０４は、スパン・ステッパ・レジスタ制御４５２をセットし、その結果、マルチプレクサ４３０はその論理的１の入力部で提示された信号を進める。したがって、赤鏡面反射初期値４４０は、現在の赤鏡面反射レジスタ４０６に記憶される。
【００７７】
次いで、デルタ赤鏡面反射成分値４２８が取り出され、デルタ赤鏡面反射レジスタ４０８に直接的に記憶される。ゼロ鏡面反射コントローラ３０４は、その同じ値が現在の赤鏡面反射レジスタ４０６に記憶されるのを防止するためにスパン・ステッパ・レジスタ制御信号４５２をリセットする。次いで、走査変換器コントローラ３３６の通常の制御下で、スパン・ステッパ３２８Ｒは、新しい現在の赤鏡面反射値４３４を生成するために、現在の赤鏡面反射値４３４とデルタ赤鏡面反射値４２８とを反復的に加算する。現在の赤鏡面反射値４３４は、現在の赤鏡面反射レジスタ４０６に記憶されている。マルチプレクサ４２４はデータ選択信号４５０によって制御されるので、エッジ・ステッパ３２８Ｒによって取られる各ステップでは、マルチプレクサ４２４は、赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒに現在の赤鏡面反射値４３４を赤成分エッジ値３２２Ｒとして提供する。
【００７８】
デルタ値４２８、４３８を現在の値４３４、４４４に加算し、その合計をエッジ値３２２Ｒとして提示するこのプロセスは、エッジの補間が完了するまで、各フラグメントに対して交互に継続される。次いで、このプロセス全体が、次のエッジがある場合はそのエッジのために繰り返される。このプロセスは、図形要素の全エッジの補間が完了するまで繰り返される。
【００７９】
鏡面反射／拡散反射エッジ・ステッパ３２８Ｒが単一の加算器４１６を含むことを理解されたい。これは、同じ補間演算を実施するために２つのインターポレータを実施する従来の手法に比べ、大幅な空間の節約を提供する。このような従来型のインターポレータは、それぞれに単一の加算器を含む。したがって、本発明は、エッジ・ステッパ３２８Ｒを介して拡散反射照明成分値と鏡面反射照明成分値を送るためにいくつかのマルチプレクサを加算しながらも、１つの加算器分実施される回路構成を縮小する。加算器は比較的大きな回路の構成要素なので、加算器を排除することは大幅な空間の節約になる。この節約は、本発明の３つのインターポレータ（赤、緑、青のインターポレータ３２８）のそれぞれにおいて達成され、したがって節約される空間はさらに倍化される。
【００８０】
Ｂ．鏡面反射／拡散反射スパン・ステッパ３１０
図５に、例示的回路実施例を示す鏡面反射／拡散反射スパン・ステッパ３１０の一部および、スパン・ステッパ３１０とゼロ鏡面反射コントローラ３０４と赤鏡面反射検出回路３０２との間のインターフェースの一実施形態の回路ブロック図を示す。前述のように、ゼロ鏡面反射コントローラ３０４は、本発明の機能を実施するためにスパン・ステッパ３１０のいくつかの態様を制御する。前記の説明と同様に、以下の説明は、鏡面反射照明および拡散反射照明の赤色成分を補間する鏡面反射／拡散反射スパン・ステッパ３１０の特徴に限定される。したがって、赤拡散反射色成分と赤鏡面反射色成分をスパンに沿って補間するスパン・ステッパ３１０の部分だけを説明する。そのようなわけで、本明細書では、図５に示すスパン・ステッパを赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒ、またはより単純にスパン・ステッパまたはインターポレータ３１０Ｒと呼ぶ。鏡面反射／拡散反射スパン・ステッパ３１０は、要素の指定したスパン全体の拡散反射照明成分と鏡面反射照明成分の両方を補間する単一の統合インターポレータである。
【００８１】
図５に示すように、赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒは入力として赤成分エッジ値３２２Ｒと要素データ１２０とを受け取る。赤成分エッジ値３２２Ｒは、そのスパンに対する初期のフラグメント値である。要素データ１２０は、赤鏡面反射成分値と赤拡散反射成分値に対するデルタ値を含む。したがって、赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒは初期値およびデルタ値を受け取り、それらの値を使用して各指定の要素スパン全体の赤鏡面反射成分を補間する。この、赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒの関数および演算は、前述した赤鏡面反射／拡散反射エッジ・ステッパ３２８Ｒに類似している。
【００８２】
スパン・ステッパ３１０Ｒが両方の照明成分を補間するそれらの状況において、初期値と現在値は、内部レジスタに記憶され、両方の照明成分をスパン全体のフラグメントごとに補間するために使用される。図示した実施形態では両方の値がフラグメントごとに連続して補間される。したがって、各フラグメントが処理されるべき２つの処理状態を必要とすると、スパン・ステッパ３１０はスパンを一度横切る。スパン・ステッパ３１０Ｒによる赤鏡面反射照明成分と赤拡散反射照明成分の転送および記憶を制御するために、スパン・ステッパ３１０Ｒにはいくつかのマルチプレクサが含まれる。これらのマルチプレクサは、ゼロ鏡面反射コントローラ３０４によって制御される。前述のように、ゼロ鏡面反射コントローラ３０４は、走査変換器２０４を制御するために走査変換器制御信号２１０を生成する。図５に示すように、走査変換器制御信号２１０は、スパン・ステッパ３１０Ｒを制御するための２つの信号、すなわち拡散反射／鏡面反射選択信号５５０と、スパン・ステッパ・レジスタ５５２とを含む。これらは両方とも、後述のようにスパン・ステッパ３１０Ｒのマルチプレクサを制御する。
【００８３】
図５に示すように、統合された鏡面反射／拡散反射インターポレータ３１０Ｒは、デルタ赤拡散反射（ＲＤ）レジスタ５０２とデルタ赤鏡面反射（ＲＳ）レジスタ５０４とを含む。これらのレジスタは、インターポレータ３１０Ｒによって使用されるべきそれぞれの照明成分に対する増分値を受け取り、記憶する。スパン・ステッパ３１０Ｒには、現在のＲＤレジスタ５０６と現在のＲＳレジスタ５０８も含まれる。これらレジスタのそれぞれは、指定のスパン全体のピクセルごとにそれぞれの色成分の現在値を記憶する。
【００８４】
現在どの照明成分がインターポレータ３１０Ｒによって補間されていようとも、それに対するデルタ値と現在値を加算するために、単一の加算器５２４がインターポレータ３１０Ｒに含まれる。加算器５２４は、マルチプレクサ５１８を介してデルタ・レジスタ５０２、５０４に接続されている第１の入力部を有する。この入力部で、加算器５２４は、デルタ赤拡散反射レジスタ５０２に記憶されているデルタ赤拡散反射値５２８またはデルタ赤鏡面反射レジスタ５０４に記憶されているデルタ赤鏡面反射値５３８を受け取る。加算器５２４は、マルチプレクサ５３４を介して現在のレジスタ５０６、５０８に接続されている第２の入力部を有する。この入力部で、加算器５２４は現在の赤拡散反射レジスタ５０６に記憶されている現在の赤拡散反射値５３０または現在の赤鏡面反射レジスタ５０８に記憶されている現在の赤鏡面反射値５４４を受け取る。マルチプレクサ５３４は、後述のようにゼロ鏡面反射コントローラ３０４によって制御される。
【００８５】
現在のＲＤレジスタと現在のＲＳレジスタ５０６、５０８に入力される値は、マルチプレクサ５１４によって制御される。加算器５２４の出力部は、データ経路５３２を介してマルチプレクサ５１４のゼロの入力部に提供される。この入力部で、加算器５２４はデルタ赤拡散反射値または現在の赤拡散反射（５２８、５３０）値あるいはデルタ赤鏡面反射値または現在の赤鏡面反射（５３８、５４４）値を提供することになる。マルチプレクサ５１４の「１」の入力部は、赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒの入力部に接続されている。この入力部で、マルチプレクサ５１４は、初期赤拡散反射値５４０または初期赤鏡面反射値５４２を受け取る。したがって、マルチプレクサ５１４は、その初期値５４０、５４２または現在の計算されている値を現在の赤拡散反射および赤鏡面反射レジスタ５０６、５０８に記憶するために使用される。マルチプレクサ５１４は、前述のようにゼロ鏡面反射コントローラ３０４によって制御される。
【００８６】
レジスタ５０６、５０８の出力部は、マルチプレクサ５３４にも結合されている。ここで、現在の赤拡散反射（ＲＤ）値５３０および現在の赤鏡面反射（ＲＳ）値５４４は、マルチプレクサ５３４の「ゼロ」または「１」の入力部にそれぞれ提供される。したがって、現在の赤鏡面反射値または現在の赤拡散反射値は、赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒによって出力値として生成される。図５に示すように、この値は、図２を参照しながら前記で紹介した赤照明成分２１８Ｒと呼ばれる。マルチプレクサ５３４は、後述のようにゼロ鏡面反射コントローラ３０４によって制御される。
【００８７】
前述のように、１つまたは複数の走査変換器制御信号２１０は、赤鏡面反射／拡散反射スパン・ステッパ３１０Ｒを制御するための個別の２つの信号を含む。データ選択信号５５０は、マルチプレクサ選択信号として実施され、マルチプレクサ５１８と５３４を制御する。ゼロ鏡面反射コントローラ３０４は、スパン・ステッパ３１０Ｒが赤拡散反射照明成分と赤鏡面反射照明成分のどちらを補間するかを制御するために選択信号５５０の値をセットする。具体的には、論理的１はスパン・ステッパ３１０Ｒに赤鏡面反射照明成分を補間させ、論理的ゼロは赤拡散反射照明成分を補間させる。第２の信号、スパン・ステッパ・レジスタ５５２は、マルチプレクサ５１４を制御するためにマルチプレクサ選択信号においても実施される。ゼロ鏡面反射コントローラ３０４は、初期値５４０、５４２の現在の赤拡散反射レジスタおよび赤鏡面反射レジスタ５０６、５０８への初期記憶を制御するために選択信号５５２の値をセットする。その後、マルチプレクサ５１４は、レジスタ５０６、５０８が鏡面反射／拡散反射スパン・ステッパ３１０Ｒの入力部に接続されるように制御される。
【００８８】
一般に、動作中、ゼロ鏡面反射コントローラ３０４は、補間されるスパンを定義する平面方程式が赤鏡面反射寄与を含むかどうかを示す鏡面反射寄与信号３３８を受け取る。含まない場合、コントローラ３０４は、赤拡散反射照明成分だけを補間するためにスパン・ステッパ３１０Ｒを制御する。コントローラ３０４は、データ選択信号５５０をリセットし、マルチプレクサ５１８および５３４にそれぞれのゼロ入力部で提示された信号を選択させる。インターポレータ３１０Ｒは、初期赤拡散反射パラメータ５４０を取り出す。ゼロ鏡面反射コントローラ３０４は、スパン・ステッパ・レジスタ制御５５２をセットし、その結果、マルチプレクサ５１４はその論理的１の入力部で提示される信号を進める。したがって、初期赤拡散反射値５４０は現在の赤拡散反射レジスタ５０６に記憶される。このレジスタにおける値の記憶は、これもまたゼロ鏡面反射コントローラ３０４によって制御される書込みイネーブル信号（図示せず）によって同様に制御される。
【００８９】
次いでインターポレータ３１０Ｒは、デルタ赤拡散反射照明パラメータ５２８を取り出す。デルタ赤拡散反射照明パラメータ５２８は、デルタ赤拡散反射レジスタ５０２に直接記憶されている。ゼロ鏡面反射コントローラ３０４は、その同じ値が現在の赤拡散反射レジスタ５０６に記憶されることを防止するためにスパン・ステッパ・レジスタ制御信号５５２をリセットする。次いで、走査変換器コントローラ３３６の通常の制御下で、スパン・ステッパ３１０は、新しい現在の赤拡散反射値５３０を生成するために現在の赤拡散反射値５３０とデルタ赤拡散反射値５２８を反復的に加算する。現在の赤拡散反射値は、現在の赤拡散反射レジスタ５０６に記憶される。マルチプレクサ５３４はデータ選択信号５５０によって制御されるので、スパン・ステッパ３１０Ｒによって取られるスパン全体の各ステップでは、マルチプレクサ５３４は、現在の赤拡散反射値５３０を赤色パラメータ２１８ＲとしてＦＩＦＯ２０６に提供する。
【００９０】
鏡面反射寄与３３８が、要素データ１２０が赤鏡面反射寄与を含むことを示したときに、コントローラ３０４は、赤拡散反射照明成分と赤鏡面反射照明成分とを別個に処理するためにスパン・ステッパ３１０Ｒを制御する。この図示する実施形態では、赤拡散反射照明成分は赤鏡面反射照明成分の前に処理されるが、これは任意であり、拡散反射照明成分と鏡面反射照明成分とはいかなる順序でも処理することができる。
【００９１】
コントローラ３０４は、前述のように、赤拡散反射照明パラメータを処理するためにデータ選択信号５５０とスパン・ステッパ・レジスタ制御５５２とをセットする。次いでコントローラ３０４は、マルチプレクサ５１８および５３４にそれぞれの論理的１の入力部で提示される信号を選択させるようにデータ選択信号５５０をセットする。インターポレータ３１０Ｒは、初期赤鏡面反射照明パラメータ５４２を取り出す。ゼロ鏡面反射コントローラ３０４は、スパン・ステッパ・レジスタ制御５５２をセットし、その結果、マルチプレクサ５１４はその論理的１の入力部で提示された信号を進める。したがって、赤鏡面反射初期値５４２は現在の赤鏡面反射レジスタ５０８に記憶される。
【００９２】
次いでデルタ赤鏡面反射照明パラメータ５３８が取り出され、デルタ赤鏡面反射レジスタ５０４に直接的に記憶される。ゼロ鏡面反射コントローラ３０４は、その同じ値が現在の赤鏡面反射レジスタ５０８に記憶されるのを防止するためにスパン・ステッパ・レジスタ制御信号５５２をリセットする。次いで、走査変換器コントローラ３３６の通常の制御下で、スパン・ステッパ３１０Ｒは、新しい現在の赤鏡面反射値５３８を生成するために現在の赤鏡面反射値５４４とデルタ赤鏡面反射値５３８を反復的に加算する。現在の赤鏡面反射値は現在の赤鏡面反射レジスタ５０８に記憶されている。マルチプレクサ５３４はデータ選択信号５５０によって制御されるので、マルチプレクサ５３４は、スパン・ステッパ３１０Ｒが取る各ステップで現在の赤鏡面反射値５３０を赤の色パラメータ２１８ＲとしてＦＩＦＯ２０６に提供する。
【００９３】
デルタ値５２８、５３８を現在値５３０、５４４に加算し、その合計を赤の出力信号２１８Ｒとして提示するこのプロセスは、スパンの末端に到達するまでフラグメントごとに交互に続行する。次いでエッジ・ステッパ３２８〜３３４は、要素の次のスパンに進み、そのスパンに対してプロセス全体が反復される。図形要素の全スパンの補間が完了するまでこのプロセスは反復される。結果的に生じるＦＩＦＯ２０６に記憶されているフラグメント・データについて後述する。
【００９４】
鏡面反射／拡散反射スパン・ステッパ３１０Ｒが単一の加算器５２４を含むことを理解されたい。これは、同じ補間演算を実施するために２つのインターポレータを実施する従来の手法と比較して大幅な空間の節約を提供する。このような従来型インターポレータはそれぞれに単一の加算器を含む。したがって本発明は、スパン・ステッパ３１０Ｒを介して拡散反射照明成分値と鏡面反射照明成分値を送るためにいくつかのマルチプレクサを加算しながらも、１つの加算器分回路構成を縮小する。加算器は比較的大きな回路の構成要素なので、加算器を排除することは大幅な空間の節約になる。この節約は、本発明の３つのインターポレータ（赤、緑、青のインターポレータ３１０）のそれぞれにおいて達成され、節約される空間はさらに倍化される。
【００９５】
鏡面反射照明スパン指定データ３２０と拡散反射照明スパン指定データ３２２は、前記で提示した以外の形式をいくつでも採用できることも理解されたい。例えば、別の実施形態では、指定のスパンにおける開始するピクセル位置とピクセル数とを伴う初期値とデルタ値が含まれる。別の実施形態では、指定のスパンの開始点および終了点が提供される。当業者に明らかになるように、スパン・ステッパ３１０の構造および演算を変更して、ラスタ化される要素のスパン全体のフラグメントごとに各照明成分を別個に連続して補間するように、そのような異なる形式とデータ内容を適応させることができる。
【００９６】
前述の回路構成で本発明の実施形態を実施するために前記回路の説明を使用することができるということも当業者には理解されたい。ゼロ鏡面反射コントローラ３０４は、鏡面反射寄与信号３３８の状態に基づいてデータ選択信号５５０とスパン・ステッパ・レジスタ・コントローラ信号５５２を生成するために、現在または今後開発されるいかなる知られている方法でも実施することができる。例えばコントローラ３０４は、ＡＳＩＣ、ファームウェア等、またはハードウェアとファームウェアの何らかの組合わせによっても実施することができる。
【００９７】
Ｃ．フラグメント・プロセッサ１６８およびフラグメント・プロセッサ・コントローラ３０６
前述のように、ラスタライザ・アクセラレータ２０２のいくつかの実施形態にはフラグメント・プロセッサ・コントローラ３０６が含まれる。コントローラ３０６は、フラグメントの拡散反射照明成分と鏡面反射照明成分が２つの別個のフラグメント・データ・ワード１２２に含まれるとき、そのような成分を処理するためにフラグメント・プロセッサ１６８を制御する。図６に、プロセッサ１６８とフラグメント・プロセッサ・コントローラ３０６の間のインターフェースを示す、フラグメント・プロセッサ１６８の一実施形態の概略ブロック図を示す。
【００９８】
フラグメント・プロセッサ１６８は、フラグメント・プロセッサ１６８で処理される各フラグメントの最終色値を決定する色決定回路構成６２２を含む。色決定回路構成６２２は、赤の色決定回路構成６２２Ｒ、緑の色決定回路構成６２２Ｇおよび青の色決定回路構成６２２Ｂを含む。他の図面と同様に、赤の色成分に関係するフラグメント・プロセッサ１６８の部分を細部に亘って図示し、以下で説明する。したがって、図６では、赤の決定回路構成６２２Ｒだけを詳細に示す。フラグメント・プロセッサ１６８の様々な部分で本発明を実施するためにこの開示を拡張することは、当業者の認識の範囲内であるとみなされる。
【００９９】
前述のように、フラグメント・プロセッサ１６８は、ＲＧＢ色成分２１８をＦＩＦＯ２０６から受け取る。図６において、赤の色成分ＲＤ２１８Ｒは赤の色成分回路構成６２２Ｒによって受け取られる。同じく前述のように、ＦＩＦＯ２０６は、各フラグメント・データ・ワード１２０に関連付けられたコマンド２１６を記憶する。コマンド２１６は、フラグメント・プロセッサ１６８によって処理されるべき各フラグメント・データ・ワード１２０の内容に関してコントローラ３０６に通知する伝達手段である。フラグメントは、拡散反射照明成分を含む単一のフラグメント・データ・ワード１２０、または１つのフラグメント・データ・ワードが拡散反射照明成分値を含みもう１つが鏡面反射照明成分値を含む２つのフラグメント・データ・ワード１２２によって表わすことができる。色決定回路６２２は、前者を処理するためには単一の処理状態を、また後者を処理するためには２つの処理状態を必要とする。
【０１００】
赤の決定回路構成６２２Ｒを詳述する前に、フラグメント・データ・ワード１２０およびコマンド２１６の形式について説明する。図７に、コマンド２１６の一実施形態を示す。図８に、関連するフラグメント・データが拡散反射照明成分または鏡面反射照明成分を含むかどうかを示すコマンド２１６を記憶しているＦＩＦＯ２０６の図を示す。
【０１０１】
コマンドにはどのような形式でも使用可能ではあるが、図７に示される実施形態を参照すると、コマンド２１６はバイナリ・コードの３ビットのコマンドになっている。この３ビットの内容７０２とその内容の説明７０４を図示する。示したコマンドの中で、３つは図８に示す本発明の実施形態に特別な関連性を持つものである。この実施形態では、走査変換器２０４は、フラグメントが鏡面反射照明成分を有するとき、フラグメント・データ・ワード１２２をＦＩＦＯ２０６に二重に書き込む。すなわち、フラグメントごとに２つのデータ・ワード１２２がＦＩＦＯ２０６に連続して書き込まれる。
【０１０２】
バイナリ値００１を有するコマンド７０８は、関連するフラグメント・データ・ワード１２０が拡散反射照明成分しか有しないことを示す（「Ｄｉｆｆｕｓｅｏｎｌｙ  ３Ｄ  ｐｉｘｅｌ」）。フラグメントが拡散反射照明成分と鏡面反射照明成分の両方を含むとき、バイナリ値１１０を有する関連するコマンド７１８と共にフラグメント・データ・ワード１２０がフラグメント・プロセッサ１６８に提供される。このコマンドは、表わされたフラグメントが拡散反射照明成分と鏡面反射照明成分の両方を有し、また、その拡散反射照明成分が関連するフラグメント・データ・ワード１２０に含まれることを示す（「３Ｄ  Ｐｉｘｅｌ  ｄｉｆｆｕｓｅ  ｃｏｍｐｏｎｅｎｔ」）。したがって、前または後の連続するデータ・ワードは対応する鏡面反射照明成分を含む。同様に、フラグメント・プロセッサ１６８に提供された、その前やその後のフラグメント・データ・ワード１２０は、関連するフラグメント・データ・ワード１２０が赤の鏡面反射照明成分を含み、またこのフラグメントが、フラグメントの内容を定義する１つまたは２つのフラグメント・データ・ワードであることを示す関連するコマンド７２０を有する（「３Ｄ  ｐｉｘｅｌ  ｓｐｅｃｕｌａｒ  ｃｏｍｐｏｎｅｎｔ」）。図３に戻って、走査変換器コントローラ３３６は、当技術分野でよく知られている方法でコマンド２１６を生成する。本発明に従い、コントローラ３３６は、従来から考慮されている他の値および状況に加え、ゼロ鏡面反射面コントローラ３０４によって生成される鏡面反射識別子２１２を考慮する。コントローラ３３６は、走査変換器２０４によって生成された、ＲＧＢ値２１８、アルファ値２２０、および座標値２２２を含む他の値と共にコマンド２１６を生成する。図８を参照すると、ＦＩＦＯ２０６は、５つのフラグメントを表わすフラグメント・データ・ワード１２２をその中に記憶している。最初の３つのフラグメント・データ・ワード１２２Ａ―１２２Ｃは、拡散反射照明成分だけを有するフラグメントを表わす。したがって、各フラグメント・データ・ワード１２０はフラグメントを表わす。最後の４つのフラグメント・データ・ワード１２２ＮＳ〜１２２ＮＤは、拡散反射照明成分と鏡面反射照明成分を有するフラグメントを表わす。したがって、２つのフラグメント・データ・ワードは各フラグメントを表わす。具体的には、フラグメント・データ・ワード１２２ＮＳと１２２ＮＤは１つのフラグメントを表わしており、データ・ワード１２２ＮＳはそのフラグメントに対する鏡面反射照明成分値を含み、データ・ワード１２２ＮＤは拡散反射照明成分値を含む。同様に、フラグメント・データ・ワード１２２ＭＳと１２２ＭＤは１つのフラグメントを表わしており、データ・ワード１２２ＭＳはそのフラグメントに対する鏡面反射照明成分値を含み、データ・ワード１２２ＭＤは拡散反射照明成分値を含む。他の適用例では、ＦＩＦＯ２０６の他の実施形態が好ましいことを理解されたい。例えば、本発明の一実施形態では、走査変換器２０４は、鏡面反射照明成分を有するＲＧＢ値２１８をＦＩＦＯ２０６の１つの２４ビット領域に書き込み、拡散反射照明成分を有するＲＧＢ値２１８をＦＩＦＯ２０６の別の２４ビ��ト領域に書き込む。そのような実施形態では、各フラグメント・データ・ワード１２２は、１０７ビットのフラグメント・データ・ワードでは、２４ビットの拡散反射ＲＧＢ値と２４ビットの鏡面反射ＲＧＢ値とを含む。そのような実施形態では、図７に示すコマンド２１６は、異なるタイプのフラグメント・データ・ワードを識別するために変更されることになる。
【０１０３】
図６を参照すると、回路構成６２２Ｒは３つの入力レジスタを含む。赤の鏡面反射入力レジスタ６０２は赤の鏡面反射色成分６１２を受け取る。赤の拡散反射レジスタ６０４は赤の拡散反射照明成分６１８を受け取る。それらの両方の値はＦＩＦＯ２０６から取り出される。さらに、赤のテクスチャ・レジスタ６０６は、テクスチャ・マッパ１６６から取り出された赤のテクスチャ成分６１６を受け取る。コントローラ３０６は、レジスタ６０２、６０４、および６０６へのデータの書込みを制御するための書込みイネーブル信号６５４を生成する。
【０１０４】
マルチプレクサ６１４は、赤の色成分２１８Ｒを受け取るためにＦＩＦＯ２０６に接続されている入力部を有する。前述のように、これは赤の鏡面反射照明成分であっても赤拡散反射照明成分であってもよい。マルチプレクサ６１４の２つ目の入力部が、空白のデータ・ワードをマルチプレクサ６１４のこの入力部に供給するために接地される。マルチプレクサ６１４の出力部は、赤の鏡面反射入力レジスタ６０２に提供される。マルチプレクサ６１４は、後述するようにコントローラ３０６によって制御される。赤拡散反射レジスタ６０４は、直接的に赤色成分２１８Ｒを受け取るためにＦＩＦＯ２０６にも接続されている。したがって、ＦＩＦＯ２０６によって供給される赤色成分２１８Ｒだけが、赤拡散反射レジスタ６０４に記憶される。一方、同じ赤色成分２１８Ｒまたはゼロのデータ・ワードが、赤の鏡面反射レジスタ６０２に記憶される。
【０１０５】
マルチプレクサ６０８は、赤拡散反射レジスタ６０４から赤の拡散反射色成分６１８を受け取り、赤のテクスチャ・レジスタ６０６から赤のテクスチャ成分６１６を受け取る。マルチプレクサ６０８はそれら２つの値の積６２０を生成し（ＲＴ＊ＲＤ）、それは加算器６１０の１つの入力部に供給される。加算器６１０の第２の入力部は、赤の鏡面反射レジスタ６０２に記憶されている赤の鏡面反射色成分６１２を受け取るためにその赤の鏡面反射レジスタ６０２に接続されている。この場合、加算器６１０の出力は、最終的な赤の色値、すなわちＲＳ＋（ＲＴ＊ＲＤ）である。
【０１０６】
この図示する実施形態では、コントローラ３０６は、赤鏡面反射成分６１２と赤拡散反射成分６１８が赤決定回路構成６２２Ｒの入力レジスタ６０２、６０４に書き込まれる方法を制御する。前述のように、フラグメント演算コントローラ３０６は、フラグメント・データ１２０の一部として、フラグメント・プロセッサ１６８によって処理されるべきそのフラグメント・データ１２０に対応するコマンド２１６を受け取る。コマンド２１６は、よく知られた方法でフラグメント・プロセッサ１６８によって使用される情報を含む。さらにコマンド２１６は、関連するフラグメント・データ・ワード１２０が鏡面反射照明成分と拡散反射照明成分のどちらを含むかを示し、また、フラグメントが２つの連続するデータ・ワード１２０に配置されている両方の照明成分を含むかどうかを示す情報を含む。この情報に基づいて、フラグメント演算コントローラ３０６は色決定回路構成６２２を制御する。前述のように、赤の拡散反射照明成分しかない場合、関連するフラグメントは単一の処理状態で処理されることになり、赤の拡散反射照明成分と鏡面反射照明成分とがある場合、関連するフラグメントは２つの連続する処理状態で処理される。
【０１０７】
動作中、フラグメント・データ・ワード１２０が拡散反射照明しか含まないとき、赤の色成分２１８Ｒは赤の拡散反射色値６１８であり、コマンド２１６はバイナリ値００１を有する。それに応答して、コントローラ３０６は、マルチプレクサ６１４に赤の鏡面反射レジスタ６０２に対してゼロのデータを提示させるために選択信号６５４をリセットする。コントローラ３０６は、また、すべての３つのレジスタにそれらそれぞれの入力部に提示されたデータを記憶させるために書込みイネーブル信号６５６をアサートする。赤の鏡面反射レジスタ６０２はゼロのデータを記憶し、赤の拡散反射レジスタ６０４は赤色成分２１８Ｒを記憶し、赤テクスチャ・レジスタ６０６は赤テクスチャ成分６１６を記憶する。マルチプレクサ６０８は、赤拡散反射レジスタ６０４に記憶されているＲＤ６１８と赤のテクスチャ・レジスタ６０６に記憶されているＲＴを乗じて積の項６２０を生成する（ＲＴ＊ＲＤ）。この値は、前述のようにゼロである赤の鏡面反射レジスタ６０２に記憶されている値に加算される。したがって、加算器６１０の出力はＲＴ＊ＲＤである。
【０１０８】
フラグメントが拡散反射照明成分と鏡面反射照明成分とを含むとき、第１のフラグメント・データ・ワードの赤色成分２１８Ｒは例えば赤拡散反射色値６１８であり、コマンド２１６はバイナリ値１１０を有する。これに応答して、コントローラ３０６は、赤拡散反射レジスタ６０４と赤テクスチャ・レジスタ６０６にそれらのそれぞれの入力部に提示されたデータを記憶させるように、書込みイネーブル信号６５６をアサートする。赤拡散反射レジスタ６０４は赤色成分２１８Ｒを記憶し、赤テクスチャ・レジスタ６０６は赤テクスチャ成分６１６を記憶する。
【０１０９】
第２のフラグメント・データ・ワード１２０を受け取る際、赤色成分２１８Ｒは赤鏡面反射色値６１２であり、コマンド２１６はバイナリ値１１１を有する。これに応答して、コントローラ３０６は、マルチプレクサ６１４に、赤鏡面反射レジスタ６０２に赤色成分２１８Ｒを提示させる値に選択信号６５４をセットする。コントローラ３０６は、また、赤鏡面反射レジスタ６０２に赤色成分２１８Ｒを記憶させるために書込みイネーブル信号６５６をアサートする。
【０１１０】
マルチプレクサ６０８は、赤拡散反射レジスタ６０４に記憶されているＲＤ６１８と赤テクスチャ・レジスタ６０６に記憶されているＲＴを乗じて積の項６２０を生成する（ＲＴ＊ＲＤ）。この値は加算器６１０に供給される。加算器６１０には、赤鏡面反射レジスタ６０２に記憶されているＲＳ６１２も共に提示される。この値は、積の項（ＲＴ＊ＲＤ）６２０に加算され、その結果最終的な赤色値はＲＳ＋（ＲＴ＊ＲＤ）になる。
【０１１１】
したがって、最後の色値は、拡散反射照明成分と鏡面反射照明成分とを別個に連続して処理することによって、それらを正確に考慮する。鏡面反射照明成分があるとき、最後の色値は値ＲＳ＋（ＲＴ＊ＲＤ）におけるその寄与を個別に含み、より一般的な状況では、鏡面反射照明成分がないとき、最後の色値はＲＴ＊ＲＤにおけるその寄与を含まない。したがって、結果的に生じるレンダリングされた画像は、前述の暗い表面または陰影のある表面の状況下で、鏡面反射照明成分を正確に表わす。そのような状況において項ＲＴはゼロである。鏡面反射照明成分がないとき、最後の色値の値ＲＴ＊ＲＤもゼロである。一方、鏡面反射照明成分がある場合、最後の色値ＲＳ＋（ＲＴ＊ＲＤ）はＲＳ＋０すなわちＲＳになる。したがって、鏡面反射照明成分は、本発明に従ってレンダリングされる画像内で適切に考慮される。
【０１１２】
フラグメント・プロセッサ・コントローラ３０６の前記の回路に関する説明は、ＡＳＩＣ、ファームウェア、またはこれらのあらゆる組合わせによるよく知られた回路の構成要素を使用して本発明の実施形態を実施するために使用することができることも当業者には明らかになろう。さらに、説明したフラグメント・プロセッサ１６８は例示的なものにすぎず他の複合的なモデルを実施することができることが理解されよう。
【０１１３】
フラグメントが拡散反射照明成分と鏡面反射照明成分のどちらを含むかに基づいてフラグメント・プロセッサ１６８の演算を制御するには、無数の手法が実施可能であることが理解されよう。例えば、別の一実施形態では、赤色成分２１９Ｒは常に両方のレジスタ６０２、６０４に書き込まれ、ゼロのデータ・ワードはコマンド２１６の内容に基づいて適切なレジスタに書き込まれる。効果的には、拡散反射照明成分を表わす赤鏡面反射照明成分２１８Ｒを識別し、鏡面反射照明成分を表わす値から分離するためには技術をいくつ使用してもよい。フラグメント・プロセッサ・コントローラ３０６は、最低量の回路構成またはＡＳＩＣで実施することができ、また、当業者にはそのような実施形態が明らかであると考えられていることも理解されたい。
【０１１４】
前述のように、本発明の利点は、本発明が、低い色強度を有するオブジェクト表面を含めてすべてのオブジェクト表面が、鏡面反射照明の寄与がある場合はそれを適切に反映することを保証しつつ、ラスタライザ回路構成において大幅な節約を提供するということである。これらの重要な利点は、グラフィックス・システムを実施する上での応答性の最低限の低下と引き換えに提供される。例えば、前述の例示的実施形態では、本発明はラスタライザ１６４で使用されるＦＩＦＯ２０６の必要なサイズを、約１２８ワード（深さ）×２４ビット（鏡面反射照明では赤、緑、青それぞれ８ずつ）に低減する。これは、従来型グラフィックス・システムのラスタライザ全体に対してＦＩＦＯサイズを約２０％低減することになる。当業者にはよく知られているように、グラフィックス・システムのラスタライザで通常実施される多くの回路構成要素の中で、ＦＩＦＯは多量かつ比較的大きな表面領域を消費する。したがって、前述した程度のＦＩＦＯのサイズの低減は、本発明の重要な利点である。
【０１１５】
本発明の様々な実施形態を説明してきたが、これらは例示の方法としてのみ提示されたものであり、限定ではないということを理解されたい。例えば、前記の例において無視できるとみなされる鏡面反射照明成分値はゼロであった。他の鏡面反射照明成分閾値を使用することができることが当業者には明らかとなろう。要素の補間される部分に沿ってゼロ以外の閾値を行うかどうかを決定するためには検出回路３０２において対応する変更が必要になることも理解されたい。したがって、本発明の領域および範囲はいかなる前述の例示的実施形態によっても限定されるべきではなく、首記の特許請求の範囲とそれらの均等物によってのみ定義されるべきである。
【０１１６】
本発明の態様を以下に例示する。
１．要素データ（１２０）によって表わされる図形要素を１つまたは複数のフラグメント・データ・ワード（１２２）によって表わされるフラグメントに変換するためのラスタライザ（１６４）であって、各フラグメントが、レンダリングされる画像のピクセルに対応し、かつ該ピクセルの赤、緑、および青の色値とテクスチャ値とを含み、要素データ（１２０）によって定義される各要素を走査し、各要素を、それぞれ１つまたは２つのフラグメント・データ・ワード（１２２）によって表わされる複数のフラグメントに変換する走査変換器（２０４）と、無視できない鏡面反射成分をフラグメントが有することを該要素データ（１２０）が示す任意のフラグメントに対して、２つの連続する処理状態で該要素データ（１２０）を補間するように、前記走査変換器（２０４）を制御するように構成された制御回路（２０２）とを含むラスタライザ。
【０１１７】
２．前記２つの連続した処理状態が、前記制御回路（２０２）が該フラグメントに対する該鏡面反射成分値を判定する第１の処理状態と、前記制御回路（２０２）が該フラグメントに対する該拡散反射成分値を判定する第２の処理状態とを含むことを特徴とする上記１に記載のラスタライザ（１６４）。
【０１１８】
３．前記制御回路（２０２）が、フラグメントに対する要素データ（１２０）を単一の処理状態で補間するように前記走査変換器（２０４）を制御し、前記走査変換器（２０４）は、前記要素が鏡面反射照明成分を有しないことを前記要素データ（１２０）が示したときに該要素の鏡面反射照明成分を考慮せずに該要素に対する色値を生成することを特徴とする上記２に記載のラスタライザ（１６４）。
【０１１９】
４．前記鏡面反射照明成分の値がゼロのときに前記鏡面反射照明成分が無視できることを特徴とする上記２に記載のラスタライザ（１６４）。
【０１２０】
５．前記制御回路（２０２）が、該要素の頂点を定義する要素データ（１２０）が鏡面反射照明成分を含むかどうかを判定することによって、各フラグメントが鏡面反射照明成分を含むかどうかを判定することを特徴とする上記２に記載のラスタライザ（１６４）。
【０１２１】
６．ラスタライザ（１６４）が、前記フラグメント・データを受け取るように該ラスタライザに動作可能に結合されているフラグメント・プロセッサも含むグラフィックス・システムの構成要素であり、前記走査変換器（２０４）が、各フラグメント・データ・ワードと共に対応するコマンドを生成し、前記コマンドが前記対応するフラグメント・データ・ワードが拡散反射照明成分と鏡面反射照明成分のどちらを含むか、およびフラグメントを表わすフラグメント・データ・ワード（１２２）は１つか２つかを識別し、前記制御回路（２０２）が、前記コマンド（２１６）を受け取り、関連するフラグメント・データ（１２２）が鏡面反射照明成分と拡散反射照明成分のどちらを含むかを判定し、前記コマンド（２１６）に基づいて、前記フラグメント・データ（１２２）が、前記フラグメント・プロセッサ（１６８）のどの入力バッファ（６０２、６０４、６０６）に書き込まれるかを制御するように構成されている経路指定回路（３０６）をさらに含むことを特徴とする上記１に記載のラスタライザ（１６４）。
【０１２２】
７．該制御回路が、前記要素データが無視できない鏡面反射照明成分を含むかどうかを検出するように構成された鏡面反射検出回路（３０２）を含み、前記制御回路（２０２）が２つの連続する処理状態で要素中の全フラグメントに関する要素データ（１２０）を補間するように前記走査変換器（２０４）を制御することを特徴とする上記１に記載のラスタライザ（１６４）。
【０１２３】
８．前記ラスタライザ（１６４）が、要素の１つまたは複数のエッジ全体の図形要素の拡散反射照明成分と鏡面反射照明成分の両方を補間するように構成されたエッジ・ステッパ・インターポレータを含み、前記エッジ・ステッパ・インターポレータが補間関数を実施するように１つの加算器回路要素を含むことを特徴とする上記１に記載のラスタライザ（１６４）。
【０１２４】
９．前記ラスタライザ（１６４）が図形要素の１つまたは複数のスパン全体の該図形要素の拡散反射照明成分と鏡面反射照明成分を補間するように構成されたスパン・ステッパ・インターポレータを含み、前記スパン・ステッパ・インターポレータが、補間関数を実施するための１つの加算器回路要素を含むことを特徴とする上記８に記載のラスタライザ（１６４）。
【０１２５】
１０．グラフィックス画像の要素をラスタ化するための方法であって、１）ピクセルがゼロより大きな値を有する鏡面反射照明成分（２０８）を含むかどうかを、要素のピクセルごとに判定すること、２）鏡面反射照明成分（２０８）がゼロの値を有するときに、拡散反射照明成分と鏡面反射照明成分を別個の連続した処理状態で処理すること、３）鏡面反射照明成分（２０８）がゼロより大きな値を有するときに、該ピクセルの拡散反射照明成分だけを処理することを含む方法。
【図面の簡単な説明】
【図１Ａ】本発明を実施することができる例示的コンピュータ・グラフィックス・システムの階層化アーキテクチャのブロック図である。
【図１Ｂ】本発明を実施するのに適した例示的レンダリング・パイプラインの機能ブロック図である。
【図２】図１Ｂに示した最適化されたラスタライザの一実施形態のブロック図である。
【図３】図１Ｂに示した最適化されたラスタライザの一実施形態の詳細なブロック図である。
【図４】本発明の一実施形態による図３に示した赤の鏡面反射検出器とのインターフェースを示す赤の鏡面反射エッジ・ステッパの回路ブロック図である。
【図５】本発明の一実施形態による図３に示したゼロ鏡面反射コントローラとのインターフェースを示す鏡面反射／拡散反射スパン・ステッパの回路ブロック図である。
【図６】本発明の一実施形態による図３に示したフラグメント演算コントローラとのインターフェースを示すフラグメント・プロセッサの回路ブロック図である。
【図７】本発明の一実施形態による最適化されたラスタライザによって生成されたコマンドの図である。
【図８】図３に示したＦＩＦＯに記憶されているフラグメント・データの図である。
【符号の説明】
１００  コンピュータ・グラフィックス環境
１０２  コンピュータ・グラフィックス・システム
１０４  グラフィックス・ライブラリ
１０６  グラフィックス・アプリケーション
１１０  デバイス特定モジュール
１１２  グラフィックス・ライブラリ制御モジュール
１１４  パイプライン制御モジュール
１１６  グラフィックス・ハードウェア
１５０  レンダリング・パイプライン
１６６  テクスチャ・マッパ
１６８  フラグメント・プロセッサ
１７０  フレーム・バッファ・コントローラ
２０２  別個の鏡面反射アクセラレータ
２０４  統合走査変換器
【図１Ａ】
0004071955.tif 000002
【図１Ｂ】
0004071955.tif 000003
【図２】
0004071955.tif 000004
【図３】
0004071955.tif 000005
【図４】
0004071955.tif 000006
【図５】
0004071955.tif 000007
【図６】
0004071955.tif 000008
【図７】
0004071955.tif 000009
【図８】
0004071955.tif 000010