(57)【要約】      （修正有）【課題】グラフィックス処理パイプラインの複雑さを分散化し、設計をより簡単化し高速化する。【解決手段】分散クリッピング方式が、提供され、視錐台カリングが、グラフィックス処理パイプラインにおけるいくつかの箇所に分散され、ハードウェア実施形態を簡素化し、性能を改善する。一般的に、多くの３Ｄオブジェクトは、視錐台の外側に存在する。一実施形態においては、クリッピングは、近Ｚクリッピング、自明棄却、および、自明許容のようなＰＡモジュール内の簡単なアルゴリズムによって、これらのオブジェクトに対して実行される。一実施形態においては、ＳＥモジュールおよびＲＡモジュールが、Ｘ、Ｙ、および、遠Ｚクリッピングのような残りのクリッピングを実行する。【選択図】図１
2008181514.tif 000002
【特許請求の範囲】
【請求項１】
３Ｄコンピュータグラフィックス処理パイプラインが、視錐台、クリッピング窓、プリミティブ組み立て（ＰＡ）モジュール、セットアップ（ＳＥ）モジュール、および、ラスタライゼーション（ＲＡ）モジュールを備えた、前記３Ｄコンピュータグラフィックス処理パイプラインにおいてクリッピングするための方法であって、
前記ＰＡモジュールを用いて、プリミティブを得るステップと、
前記ＰＡモジュールを用いて、前記プリミティブの第１のクリッピングを実行するステップと、
前記ＳＥモジュールを用いて、前記プリミティブに対するラスタライゼーションの開始点を決定するステップと、
前記ＳＥモジュールを用いて、前記プリミティブの第２のクリッピングを実行するステップと、
前記ＲＡモジュールを用いて、前記プリミティブをレンダリングするステップと、
前記ＲＡモジュールを用いて、前記プリミティブの第３のクリッピングを実行するステップと、
を備えた方法。
【請求項２】
前記プリミティブが、１つかまたはそれ以上の頂点を備え、前記プリミティブが、前記視錐台の内側に１つも頂点を有していなければ、前記第１のクリッピングが、前記プリミティブを除去する請求項１に記載の方法。
【請求項３】
前記プリミティブが、１つかまたはそれ以上の頂点を備え、前記第１のクリッピングが、近Ｚクリッピングを備えた請求項１に記載の方法。
【請求項４】
前記プリミティブが、１つかまたはそれ以上の頂点を備え、前記プリミティブに対するラスタライゼーションの前記開始点を前記クリッピング窓の内側において決定することができなければ、前記第２のクリッピングが、前記プリミティブを除去することを備えた請求項１に記載の方法。
【請求項５】
前記第３のクリッピングが、
（ａ）前記プリミティブに対するラスタライゼーションの前記開始点を入力するステップと、
（ｂ）前記プリミティブが直線または三角形のどちらであるかを決定するステップと、
（ｃ）前記プリミティブが三角形であれば、前記三角形を階層的にラスタライズするステップと、を備え、
前記ラスタライズするステップ（ｃ）が、
（ｃ１）画素からなる複数のタイルを追跡し、それぞれのタイルが有効であるかどうかを決定するステップと、
（ｃ２）それぞれの有効なタイルを複数のサブタイルに分割し、それぞれのサブタイルが有効であるかどうかを決定するステップと、
（ｃ３）それぞれの有効なサブタイルを複数のクワッドに分割し、それぞれのクワッドが有効であるかどうかを決定するステップと、
（ｃ４）有効なクワッドごとに画素をレンダリングするステップと、を備え、ステップ（ｃ１）〜ステップ（ｃ４）が、並行して実行される、
請求項１に記載の方法。
【請求項６】
前記分割するステップ（ｃ２）が、
（ｃ２i）それぞれの有効なタイルを前記複数のサブタイルに分割するステップと、
（ｃ２ii）前記複数のサブタイルを追跡するステップと、
（ｃ２iii）それぞれのサブタイルが有効であるかどうかを決定するステップと、
を備えた請求項５に記載の方法。
【請求項７】
前記複数のサブタイルを追跡するステップが、前記複数のタイルを追跡するステップと同じようにして実行される請求項６に記載の方法。
【請求項８】
前記分割するステップ（ｃ３）が、
（ｃ３i）それぞれの有効なサブタイルを前記複数のクワッドに分割するステップと、
（ｃ３ii）前記複数のクワッドを追跡するステップと、
（ｃ３iii）それぞれのクワッドが有効であるかどうかを決定するステップと、
を備えた請求項５に記載の方法。
【請求項９】
前記複数のクワッドを追跡するステップが、前記複数のタイルを追跡するステップおよび前記複数のサブタイルを追跡するステップと同じようにして実行される請求項８に記載の方法。
【請求項１０】
ブロックが、タイル、サブタイル、または、クワッドからなり、前記ブロックの有効性の確認が、
エッジ方程式（ｅｄｇｅ  ｅｑｕａｔｉｏｎ）を用いて、前記ブロック内の画素が、三角形の直線の左側、右側、または、まさに前記直線上に存在するかどうかを検査するステップと、
前記三角形の３つの辺に接しているかどうかを、前記ブロックの４つの角について検査し、複合結果を戻すステップと、
前記複合結果に基づいて、前記ブロックが、前記三角形の内側に１つでも画素を含むかどうかを決定するステップと、
前記ブロックが、前記三角形の内側に少なくとも１つの有効な画素を含むならば、前記ブロックが有効であると決定するステップと、
を備えた請求項５に記載の方法。
【請求項１１】
前記ブロックが、前記三角形の内側に少なくとも１つの有効な画素を含まなければ、前記ブロックを放棄するステップ、
をさらに備えた請求項１０に記載の方法。
【請求項１２】
（ｄ）前記プリミティブが、直線であれば、前記直線のための画素からなるそれぞれのクワッドごとに画素を計算するステップと、
（ｅ）有効なクワッドごとに画素をレンダリングするステップと、
をさらに備えた請求項５に記載の方法。
【請求項１３】
前記プリミティブが、位置およびサイズを有し、前記位置が前記視錐台の外側に存在すれば、前記第１のクリッピングが、前記プリミティブを除去する請求項１に記載の方法。
【請求項１４】
前記プリミティブが、前記サイズに基づいて、ポリゴンに変換され、
前記ポリゴンが、前記ＳＥモジュールにおいて、複数の三角形に変換され、
三角形が、前記クリッピング窓の内側に存在する頂点を１つも有していなければ、前記第２のクリッピングが、前記三角形を除去する、
請求項１３に記載の方法。
【請求項１５】
前記第３のクリッピングが、
（ａ）前記三角形に対するラスタライゼーションの前記開始点を入力するステップと、
（ｂ）前記三角形を階層的にラスタライズするステップと、を備え、
前記ラスタライズするステップ（ｂ）が、
（ｂ１）画素からなる複数のタイルを追跡し、それぞれのタイルが有効であるかどうかを決定するステップと、
（ｂ２）それぞれの有効なタイルを複数のサブタイルに分割し、それぞれのサブタイルが有効であるかどうかを決定するステップと、
（ｂ３）それぞれの有効なサブタイルを複数のクワッドに分割し、それぞれのクワッドが有効であるかどうかを決定するステップと、
（ｂ４）有効なクワッドごとに画素をレンダリングするステップと、を備え、ステップ（ｂ１）〜ステップ（ｂ４）が、並行して実行される、
請求項１４に記載の方法。
【請求項１６】
前記分割するステップ（ｂ２）が、
（ｂ２i）それぞれの有効なタイルを前記複数のサブタイルに分割するステップと、
（ｂ２ii）前記複数のサブタイルを追跡するステップと、
（ｂ２iii）それぞれのサブタイルが有効であるかどうかを決定するステップと、
を備えた請求項１５に記載の方法。
【請求項１７】
前記複数のサブタイルを追跡するステップが、前記複数のタイルを追跡するステップと同じようにして実行される請求項１６に記載の方法。
【請求項１８】
前記分割するステップ（ｂ３）が、
（ｂ３i）それぞれの有効なサブタイルを前記複数のクワッドに分割するステップと、
（ｂ３ii）前記複数のクワッドを追跡するステップと、
（ｂ３iii）それぞれのクワッドが有効であるかどうかを決定するステップと、
を備えた請求項１５に記載の方法。
【請求項１９】
前記複数のクワッドを追跡するステップが、前記複数のタイルを追跡するステップおよび前記複数のサブタイルを追跡するステップと同じようにして実行される請求項１８に記載の方法。
【請求項２０】
ブロックが、タイル、サブタイル、または、クワッドからなり、前記ブロックの有効性の確認が、
エッジ方程式を用いて、前記ブロック内の画素が、三角形の直線の左側、右側、または、まさに前記直線上に存在するかどうかを検査するステップと、
前記三角形の３つの辺に接しているかどうかを、前記ブロックの４つの角について検査し、複合結果を戻すステップと、
前記複合結果に基づいて、前記ブロックが、前記三角形の内側に１つでも画素を含むかどうかを決定するステップと、
前記ブロックが、前記三角形の内側に少なくとも１つの有効な画素を含むならば、前記ブロックが有効であると決定するステップと、
を備えた請求項１５に記載の方法。
【請求項２１】
前記ブロックが、前記三角形の内側に少なくとも１つの有効な画素を含まなければ、前記ブロックを放棄するステップ、
をさらに備えた請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
〔技術分野〕
本発明は、一般的には、コンピュータシステムの分野に関し、より詳細には、３Ｄコンピュータグラフィックスプロセッサーに関する。
【０００２】
〔関連出願の相互参照〕
本出願は、発明の名称が“ＨＩＥＲＡＲＣＨＩＣＡＬ  ＴＩＬＥ−ＢＡＳＥＤ  ＲＡＳＴＥＲＩＺＡＴＩＯＮ  ＡＬＧＯＲＩＴＨＭ”である２００６年１１月３日に出願された米国特許出願第１１／５９２，７９９号（代理人整理番号第ＧＩＱＵＩＬＡ−Ｐ００１号）に関し、その明細書は、本明細書に組み込まれる。
【背景技術】
【０００３】
３Ｄコンピュータグラフィックスにおいては、視錐台は、２Ｄスクリーン空間（以下、スクリーン空間と呼ぶ）によって表現されるコンピュータ表示スクリーン上に表示できるモデル化された世界における３次元空間の領域である。視錐台の正確な形状は、様々であってもよく、例えば、その形状は、直方体、四角錐、または、その他の適切な幾何学的形状であってもよい。一例においては、視錐台は、６つの平面、すなわち、近平面、遠平面、＋Ｘ平面、−Ｘ平面、＋Ｙ平面、および、−Ｙ平面によって形成されてもよい。視線方向に垂直に視錐台を切り取る平面は、近平面および遠平面と呼ばれ、それらは、また、近Ｚ平面および遠Ｚ平面と呼ばれてもよい。
【０００４】
視錐台内の３Ｄオブジェクトは、ポリゴン、三角形、線分、点、または、その他の適切な幾何学的要素のような複数の幾何学的なプリミティブによって表現されてもよい。視錐台の外側に存在する幾何学的なプリミティブは、目に見えることはなく、グラフィックス処理パイプラインの視錐台クリッピング処理または視錐台カリング処理において、廃棄され、除去され、あるいは、放棄されてもよい。ここで、カリングは、視錐台の完全に外側に存在する幾何学的プリミティブを完全に除去することを意味し、そして、クリッピングは、視錐台の外側に一部分を有する幾何学的プリミティブを部分的に除去することを意味する。カリングは、除去される一部分がデフォルトで完全な幾何学的プリミティブであるクリッピングの特別な場合と考えることができる。視錐台の外側にある３Ｄオブジェクトのクリッピング／カリングは、正しい画像出力を達成するのに必要なものではなく、コンピュータ表示スクリーン上にはどっちみち現れることのないプリミティブに対する不必要なラスタライゼーションおよび後処理を省略することによって、レンダリング処理を高速化するものである。グラフィックス処理パイプラインは、典型的には、プリミティブ組み立てモジュール（以下、ＰＡモジュールと呼ぶ）を含み、このモジュールにおいて、頂点シェーダーモジュールによって計算された複数の頂点によって表現できる３Ｄオブジェクトは、三角形、直線、点、ポリゴン、または、その他の適切な幾何学的要素のような幾何学的プリミティブに変換される。例えば、直線は、適合性試験に合格させるために、始点（または、開始頂点）から終点（終了頂点）まで引かれてもよい。この理由は、終了頂点は、直線の一部であってもなくてもよいためである。さらに、ＰＡモジュールは、視錐台から２Ｄスクリーン空間への変換を実行してもよい。ある例においては、Ｘ座標およびＹ座標だけが、スクリーン空間内へ変換され、画素ごとのＺ値は、Ｚバッファーに記憶されてもよい。ＰＡモジュールによって処理された後、プリミティブは、スクリーン空間内に存在する。残りのパイプは、スクリーン空間にだけ処理を施す。ある例においては、クリッピングブロックが、プリミティブ組み立てブロックの後に、かつ、ＳＥモジュールの前に、付加されてもよい。この場合には、プリミティブ組み立てブロックは、プリミティブを組み立てるだけであり、クリッパーブロックは、プリミティブをクリッピングし、この
クリッピングに基づいて、より多くのプリミティブを生成し、そして、変換パイプへ転送し、その変換パイプは、それがＳＥモジュールに入力する前に、クリッピングされたプリミティブをスクリーン空間に変換する。プリミティブ組み立てブロック、クリッパーブロック、および、変換パイプを含むこのパイプ全体は、ＰＡモジュールと呼ばれる。さらに、グラフィックス処理パイプラインは、典型的には、ラスタライゼーションモジュール（以下、ＲＡモジュールと呼ぶ）を含み、このラスタライゼーションモジュールにおいて、２Ｄスクリーン空間内部に存在するクリッピング窓内のすべての画素が、レンダリングされる。ＲＡモジュールは、視錐台の一部分であってもよいクリッピング窓に処理を施す。また、クリッピング窓の外側のスクリーン空間内に存在する画素は、クリッピング／カリング、すなわち、廃棄、除去、または、放棄されなければならない。プリミティブ組み立てモジュールおよびラスタライゼーションモジュールに加えて、セットアップモジュール（以下、ＳＥモジュールと呼ぶ）において実行される付加的なセットアップ機能（例えば、プリミティブに対するラスタライゼーションの開始点を計算する）が、存在してもよい。従来技術においては、視錐台の外側に存在する３Ｄオブジェクトのクリッピング／カリングは、典型的には、グラフィックス処理パイプラインにおけるただ１つの箇所においてなされる。そのような実施形態は、クリッピング／カリングを実行するのに必要な大量の計算のために、パイプラインにボトルネックを発生させることがある。一例として、視錐台クリッピング／カリングは、スクリーン空間においてなされてもよい。この例においては、すべての３Ｄオブジェクトは、スクリーン空間に変換され、そして、クリッピング窓に基づいてクリッピングを実行するために、セットアップエンジンへ送信される。このアプローチの利点は、ＰＡモジュール内のハードウェアがきわめて単純であることである。欠点は、すべての３Ｄオブジェクトは、視錐台またはクリッピング窓の外側に存在するオブジェクトさえも、スクリーン空間に変換されなければならないことである。これは、グラフィックス処理パイプラインの実施形態の複雑さおよびコストを増大させるかもしれない。別の例においては、すべての６平面クリッピングは、２Ｄスクリーン空間に変換する前に、視錐台内においてなされてもよい。このアプローチの利点は、視錐台の外側に存在するすべてのポリゴンが、クリッピングされ、視錐台の内側に存在するポリゴンだけが、スクリーン空間に変換され、そして、セットアップエンジンへ送信されることである。このアプローチの欠点は、６平面クリッピングを実行するアルゴリズムが、ハードウェアで実施する場合、複雑であり、かつ、高価であることである。
【発明の開示】
【０００５】
一般的に、本発明は、一側面において、３Ｄコンピュータグラフィックス処理パイプラインにおいてクリッピングするための方法に関し、その３Ｄコンピュータグラフィックス処理パイプラインは、視錐台、クリッピング窓、プリミティブ組み立て（ＰＡ）モジュール、セットアップ（ＳＥ）モジュール、および、ラスタライゼーション（ＲＡ）モジュールを備え、この方法は、ＰＡモジュールを用いてプリミティブを得るステップと、ＰＡモジュールを用いてプリミティブの第１のクリッピングを実行するステップと、ＳＥモジュールを用いてプリミティブに対するラスタライゼーションの開始点を決定するステップと、ＳＥモジュールを用いてプリミティブの第２のクリッピングを実行するステップと、ＲＡモジュールを用いてプリミティブをレンダリングするステップと、ＲＡモジュールを用いてプリミティブの第３のクリッピングを実行するステップとを備える。
【０００６】
本発明のその他の特徴および利点が、以下の説明および添付の特許請求の範囲から明らかとなる。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明の一実施形態によるグラフィックス処理パイプラインの全体的なクリッピング／カリング手順を説明するフローチャートである。一例として、グラフィックス処理パイプラインは、ＰＡモジュール、ＳＥモジュール、および、ＲＡモジュールを含む。
ここで、ステップ１０２は、３Ｄオブジェクトを表現する複数の頂点を受信する。ある例においては、頂点は、３Ｄオブジェクトを表現するこれらの頂点を計算する頂点シェーダーモジュールから受信されてもよい。ステップ１０４は、これらの３Ｄオブジェクトを、頂点から、点、線分（以下、直線と呼ぶ）、三角形、または、その他の適切な幾何学的形状のような幾何学的プリミティブに変換する。一例においては、ＰＡモジュールは、三角形モードに設定される。三角形モードにおいては、頂点は、さらなる何らかの処理の前に、複数の三角形に変換される。別の例においては、ＰＡモジュールは、直線モードに設定され、さらなる何らかの処理の前に、頂点を複数の直線に変換する。さらに別の例においては、ＰＡモジュールは、点モードに設定され、さらなる何らかの処理の前に、頂点を複数の点に変換する。点は、その後に、グラフィックス処理パイプラインのレンダリングステップで使用されるかもしれない位置属性およびサイズ属性に関連するものであってもよい。ステップ１０４の説明に戻れば、視錐台の完全に外側に存在する三角形および直線は、除去され、これは、当業者には、自明棄却（ｔｒｉｖｉａｌ  ｒｅｊｅｃｔｉｏｎ）として知られている。１つでも三角形または直線が、部分的に視錐台の内側に存在し、かつ、部分的に視錐台の外側に存在する場合、そうした三角形または直線には、近平面クリッピングまたは近Ｚ平面クリッピングだけが適用される。
【０００８】
一例においては、ステップ１０４は、以下のアルゴリズムとして実施されてもよく、そのアルゴリズムにおいて、（Ｘｃ，Ｙｃ，Ｚｃ）は、視錐台内に存在する頂点の座標であり、その視錐台は、（ａ）＋Ｘ平面：Ｘｃ＝Ｗｃ、（ｂ）−Ｘ平面：Ｘｃ＝−Ｗｃ、（ｃ）＋Ｙ平面：Ｙｃ＝Ｗｃ、（ｄ）−Ｙ平面：Ｙｃ＝−Ｗｃ、（ｅ）近Ｚ平面：Ｚｃ＝０、および、（ｆ）遠Ｚ平面：Ｚｃ＝Ｗｃと定義される６つの平面によって境界を画定される。ここで、＋Ｘ平面、−Ｘ平面、＋Ｙ平面、および、−Ｙ平面は、視錐台のＸ，Ｙクリッピング長方形を構成する。アルゴリズムは、以下のことを含む。
（１）三角形モードおよび直線モードに対するクリッピングを実行し、点モードに対するクリッピングは実行しない。
（２）＋Ｘ平面および−Ｘ平面を検査し、三角形または直線のすべての頂点が、Ｘｃ＜−Ｗｃ、または、Ｘｃ＞Ｗｃであれば、その三角形または直線は、カリングされる。
（３）＋Ｙ平面および−Ｙ平面を検査し、三角形または直線のすべての頂点が、Ｙｃ＜−Ｗｃ、または、Ｙｃ＞Ｗｃであれば、その三角形または直線は、カリングされる。
（４）近Ｚ平面および遠Ｚ平面を検査し、三角形または直線のすべての頂点が、Ｚｃ＜０、または、Ｚｃ＞Ｗｃであれば、その三角形または直線は、カリングされる。
（５）再度、Ｚを検査し、ある頂点のＺｃが、Ｚｃ＜０であり、また、ある頂点のＺｃが、Ｚｃ＞＝０であれば、近Ｚクリッピングを実行する。
【０００９】
上述した例としてのアルゴリズムにおいては、近Ｚクリッピングは、３Ｄコンピュータグラフィックスの分野に精通する当業者に知られている様々な方法で実行されてもよい。本発明の重要な特徴は、視錐台クリッピング／カリングのすべてのステップがグラフィックス処理パイプラインにおいて、ただ１つの箇所で実行されるとは限らないことである。
【００１０】
視錐台内におけるクリッピングの後、ステップ１０６において、プリミティブの座標が、スクリーン空間に変換されてから、残りのクリッピングを実行するために、ＳＥモジュールおよびＲＡモジュールに送信されるようにしてもよい。
【００１１】
図１をステップ１０８まで引き続き説明すると、ＳＥモジュールは、クリッピング窓の内側に存在しなければならないラスタライゼーションの開始点を決定する。さらなるクリッピング／カリングが、この決定処理中に実行されてもよい。ここで、クリッピング窓が、スクリーン空間内に存在する。一例においては、ＳＥモジュールは、ラスタライゼーションの開始点として、クリッピング窓の内側に存在する三角形または直線の頂点から始める。頂点が、クリッピング窓内に１つも存在しなければ、ＳＥモジュールは、クリッピン
グ窓の内側に存在しかつ三角形の内側に存在する点または直線の一部である点としてラスタライゼーションの開始点を計算する。一例として、直線の頂点が、クリッピング窓の外側に存在すれば、ＳＥモジュールは、ラスタライゼーションの開始点として、直線とクリッピング窓の交点を計算してもよい。そのような交点を検出することができなければ、その直線は、カリングされる。別の例においては、ＰＡモジュールが、点モードに設定されている場合、幾何学的プリミティブとしてのそれぞれの点は、ＳＥモジュールにおける関連するサイズ属性に基づいた適切なサイズを備えたポリゴンに変換されてもよい。ポリゴンは、さらに、１つかまたはそれ以上の三角形に変換されてもよい。ステップ１１０において、ＳＥモジュールは、ポリゴン変換の後、点に対する自明棄却を実施する。一例においては、点は、ＰＡモジュール内において自明棄却され、そして、プリミティブ全体がクリッピング窓の外側にまたは遠Ｚ平面よりも遠方に存在すれば、ＳＥモジュールは、カリングするだけである。別の例においては、ＳＥモジュールが、クリッピング窓との交点を１つも検出できなければ、あるいは、プリミティブが、遠Ｚ平面よりも遠方に存在すれば、ＳＥモジュールは、自明棄却（カリング）を実行する。さらに別の例においては、ＳＥモジュールは、ＰＡモジュールが設定されたモードを区別しなくてもよいあるいは幾何学的プリミティブを区別しなくてもよい実施形態を容易に実現するために、三角形および直線を含むすべての幾何学的プリミティブに対して自明棄却を実行してもよい。一例においては、自明棄却は、クリッピング窓の内側に存在するラスタライゼーションの開始点を計算することによって実行される。当業者には、本発明が、その他の幾何学的プリミティブを含めるかまたは除外する自明棄却を実行するＳＥモジュールによって実施されてもよいことがわかるはずである。
【００１２】
図１のステップ１１２において、ＲＡモジュールは、タイルごと、サブタイルごと、クワッドごと、および、画素ごとのクリッピングを実行する。ＲＡモジュールにおけるラスタライゼーションは、３Ｄコンピュータグラフィックスの分野に精通する当業者に知られている様々な方法で実施されてもよい。一例においては、ラスタライゼーションは、発明の名称が“ＨＩＥＲＡＲＣＨＩＣＡＬ  ＴＩＬＥ−ＢＡＳＥＤ  ＲＡＳＴＥＲＩＺＡＴＩＯＮ  ＡＬＧＯＲＩＴＨＭ”である２００６年１１月３日に出願された米国特許出願第１１／５９２，７９９号（代理人整理番号第ＧＩＱＵＩＬＡ−Ｐ００１号）に説明されるような階層的アプローチによって実施されてもよく、その明細書は、本明細書に組み込まれる。この例としてのラスタライゼーション方法においては、タイルごと、サブタイルごと、クワッドごと、および、画素ごとのクリッピングが、そのラスタライゼーション方法のタイルごと、サブタイルごと、クワッドごと、および、画素ごとのレンダリングステップと同時に実行される。
【００１３】
図２は、本発明の一実施形態によるグラフィックス処理パイプラインに含まれるＰＡモジュールにおけるクリッピング／カリング手順を説明するフローチャートである。ここで、ステップ２０１において、点、直線、または、三角形のようなプリミティブが、ＰＡモジュールによって頂点から組み立てられる。ステップ２０２において、プリミティブのすべての頂点のＸ、Ｙ、または、Ｚは視錐台の外側に存在するかどうかの判定がなされる。判定が、「はい」であれば、ステップ２０３において、そのプリミティブは、カリングされる。判定が、「いいえ」であれば、ステップ２０４において、頂点のうちで最も近いＺが視錐台の外側に存在するかどうかのさらなる判定がなされる。判定が、「はい」であれば、近Ｚクリッピングが、実行される。一例においては、直線の場合、視錐台との交点が、計算され、そして、セットアップ（ＳＥ）モジュールに送信されてもよく、三角形の場合には、交叉点群（intersection verticies）が、計算され、これらの交叉点群に基づいて、１つかまたはそれ以上の新しい三角形が、組み立てられ、そして、ＳＥモジュールに送信されてもよい。ステップ２０４における判定が、「いいえ」であれば、そのプリミティブは、さらなる処理がなされることなく、ＳＥモジュールに送信される。
【００１４】
図３は、本発明の一実施形態によるグラフィックス処理パイプラインに含まれるＳＥモジュールにおけるクリッピング／カリング手順を説明するフローチャートである。ある例においては、ＳＥモジュールは、ラスタライゼーション処理においてプリミティブをレンダリングするためのＲＡモジュールによって使用されるラスタライゼーションの開始点を計算する。一例においては、クリッピング窓の内側に存在する頂点が、ラスタライゼーションの開始点として選択されてもよい。すべての頂点が、クリッピング窓の外側に存在するならば、ＳＥモジュールは、必要なクリッピングを実行し、ラスタライゼーションの別の開始点を計算する。ここで、ステップ３０１において、近Ｚクリッピングされたプリミティブが、これはＰＡモジュールにおいて自明棄却されたものではないが、ＳＥモジュールに入力される。ある例においては、Ｘ座標およびＹ座標だけが、スクリーン空間に変換され、画素ごとのＺ値は、Ｚバッファーに記憶される。そして、ステップ３０２において、１つでもプリミティブの頂点が視錐台の遠Ｚ平面の外側に存在するかどうかの判定がなされる。判定が、「はい」であれば、プリミティブ全体が、遠Ｚクリッピング／カリング（ステップ３０９）においてカリングされる。ステップ３０２の判定が、「いいえ」であれば、ステップ３０３において、プリミティブが直線であるかどうかのさらなる判定がなされる。ＰＡモジュールが直線モードに設定されており、かつ、プリミティブが直線である場合、方法は、ステップ３０４に進み、そのステップ３０４において、開始頂点はクリッピング窓の外側に存在するかどうかの判定がなされる。判定が、「いいえ」であれば、その直線は、ＲＡモジュールに送信される（ステップ３１０）。判定が、「はい」であれば、ステップ３０５において、クリッピング窓との直線の交点が、計算されて、交点がまだクリッピング窓の外側に存在するかどうかの判定がなされる。例えば、直線は、２次元であるので、１つの座標だけが、クリッピングされる。例えば、直線が、ｘ−ｍａｊｏｒであれば、クリッピングは、最近傍ｘクリッピング境界（左境界線または右境界線）におけるｙ値を計算することによってなされる。計算されたｙ座標は、まだ、それがクリッピング窓の外側に存在するかどうかを確認されなければならない。判定が、「はい」であれば、直線は、カリングされる（ステップ３０９）。判定が、「いいえ」であれば、直線は、計算された交点とともにＲＡモジュールに送信される（ステップ３１０）。ステップ３０３においてなされる判定に戻ると、プリミティブが直線ではない場合、ステップ３０６において、１つでもプリミティブの頂点がクリッピング長方形の内側に存在するかどうかのさらなる判定がなされる。頂点が、クリッピング窓の内側において１つも検出されなければ、方法は、ステップ３０８に進み、クリッピング窓とのプリミティブのそれぞれの辺の交点が、計算される。クリッピング窓の内側に存在する交点が、１つも検出されなければ、プリミティブ全体が、カリングされる（ステップ３０９）。１つでも交点が、存在すれば、プリミティブは、ラスタライゼーションの開始点としての第１の計算された交点とともに、ＲＡモジュールに送信される（ステップ３１０）。ステップ３０６においてなされる判定に戻ると、プリミティブのいずれかの頂点がクリッピング窓の内側に存在する場合、クリッピング窓の内側に存在するプリミティブの頂点が、ラスタライゼーションの開始点として選択され、そのプリミティブは、検出された頂点とともにＲＡモジュールに送信される（ステップ３０７）。
【００１５】
本発明の上述した実施形態は、例として説明されたものである。それらの実施形態は、本発明をまさに説明された形態に限定しようとするものではない。より具体的には、ここで説明された本発明の機能的な実施形態は、ハードウェア、ソフトウェア、ファームウェア、および／または、その他の利用可能な機能コンポーネントまたはビルディングブロックによって同等に実施されてもよいこと、および、ネットワークは、有線、無線、または、それらを組み合わせたものであってもよいことが考えられる。その他の変形および実施形態を上述した教示から考えることもでき、したがって、本発明の範囲は、「発明を実施するための最良の形態」によって限定されるのではなく、添付の特許請求の範囲によって規定される。
【図面の簡単な説明】
【００１６】
本発明の上述した特徴、利点、および、目的がどのようにして達成されるかを詳細に理解できるように、上で簡単に説明された本発明のより具体的な説明が、添付の図面に示されるそれの実施形態を参照してなされる。
【００１７】
しかしながら、添付の図面は、典型的な実施形態を説明するにすぎず、本発明の範囲を限定するものとみなされるべきではないことに注意されたい。なぜなら、本発明は、その他の同等の効果を有する実施形態を考えることもできるからである。
【図１】本発明の一実施形態によるグラフィックス処理パイプラインの全体的なクリッピング／カリング手順を説明するフローチャートである。
【図２】本発明の一実施形態によるグラフィックス処理パイプラインのＰＡモジュールにおけるクリッピング／カリング手順を説明するフローチャートである。
【図３】本発明の一実施形態によるグラフィックス処理パイプラインのＳＥモジュールにおけるクリッピング／カリング手順を説明するフローチャートである。
【図１】
2008181514.tif 000003
【図２】
2008181514.tif 000004
【図３】
2008181514.tif 000005
【外国語明細書】
2008181514.tif 000006
2008181514.tif 000007
2008181514.tif 000008
2008181514.tif 000009
2008181514.tif 000010
2008181514.tif 000011
2008181514.tif 000012
2008181514.tif 000013
2008181514.tif 000014
2008181514.tif 000015
2008181514.tif 000016
2008181514.tif 000017
2008181514.tif 000018
2008181514.tif 000019
2008181514.tif 000020
2008181514.tif 000021
2008181514.tif 000022
2008181514.tif 000023
【図１】
2008181514.tif 000024
【図２】
2008181514.tif 000025
【図３】
2008181514.tif 000026