(57)【要約】【課題】効率的な内挿を有するグラフィックスエンジン【解決手段】グラフィックスエンジンは、セットアップユニットと、レンダリングユニットと、を含む。前記セットアップユニットは、グラフィックス画像に関してレンダリングされる三角形の属性ｖを内挿するために用いられる係数Ａ、Ｂ、及びＣを計算する。次に、前記セットアップユニットは、前記係数Ａ、Ｂ、及びＣに基づいて圧縮された係数Ａ〜、〜Ｂ、及び〜Ｃを導き出す。前記圧縮された係数は、２進小数点の左側にＲの整数ビット及び前記２進小数点の右側にＴの小数ビットを有する固定小数点フォーマットを有し、ここで、Ｒ＞１及びＴ≧０である。Ｒは、属性ｖに関して用いられるビット数に基づいて選択され、Ｔは、画面寸法に基づいて選択され、Ｒ＋Ｔは、係数Ａ、Ｂ、及びＣを表すために用いられるビット数よりもはるかに少ない。前記レンダリングユニットは、前記圧縮された係数Ａ〜、〜Ｂ、及び〜Ｃを用いて前記属性ｖに関する内挿を行い、単純な（Ｒ＋Ｔ）ビットの非飽和アキュムレータとともに実装することができる。【選択図】図１
2009506437.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックスプロセッサであって、
多角形をレンダリングするための内挿を行うのに用いられる第１の組の係数を計算するため及び前記第１の組の係数に基づいて第２の組の係数を導き出すために動作可能なセットアップユニットであって、前記第２の組内の各係数は、前記第１の組内の対応する係数に基づいて導き出されて前記第１の組内の対応する係数よりも少ないビットを有し、前記第２の組内の各係数は、２進小数点の左側にＲの整数ビット及び前記２進小数点の右側にＴの小数ビットを有する固定小数点フォーマットを有し、Ｒは、１よりも大きく、Ｔは、ゼロ以上であるセットアップユニットと、
前記第２の組の係数を用いて内挿を行って前記多角形をレンダリングするために動作可能なレンダリングユニットと、を具備するグラフィックスプロセッサ。
【請求項２】
前記セットアップユニットは、
前記多角形の頂点に関する座標に基づいて行列ＭＣを形成するため、
前記多角形の面積の逆数を示す変数Ｄを導き出すため、及び
内挿される属性に関する前記行列ＭＣ、前記変数Ｄ、及び前記多角形の前記頂点の値に基づいて前記第１の組の係数を計算するために動作可能である請求項１に記載のグラフィックスプロセッサ。
【請求項３】
前記セットアップユニットは、固定小数点フォーマットを有する前記行列ＭＣの要素を表すため及び疑似浮動小数点フォーマットを有する前記変数Ｄを表すために動作可能である請求項２に記載のグラフィックスプロセッサ。
【請求項４】
前記セットアップユニットは、Ｍビットを有する前記変数Ｄに関する仮数を表すために動作可能であり、ここで、Ｍは、１よりも大きく、前記仮数に関する左端ビットは、１の値を有する請求項３に記載のグラフィックスプロセッサ。
【請求項５】
前記セットアップユニットは、内挿された結果に関する希望される精度に基づいてＭを選択するために動作可能である請求項４に記載のグラフィックスプロセッサ。
【請求項６】
Ｍは、１２以上である請求項４に記載のグラフィックスプロセッサ。
【請求項７】
前記セットアップユニットは、内挿される属性に関する前記第１の組の係数を計算するために動作可能である請求項１に記載のグラフィックスプロセッサ。
【請求項８】
前記セットアップユニットは、レンダリングされる前記多角形の寸法にさらに基づいて前記第２の組の係数を導き出すために動作可能である請求項１に記載のグラフィックスプロセッサ。
【請求項９】
前記セットアップユニットは、前記属性に関して用いられる整数ビット数に基づいてＲを決定するために動作可能である請求項７に記載のグラフィックスプロセッサ。
【請求項１０】
前記セットアップユニットは、前記多角形全体における前記属性に関する１つの範囲の値に基づいてＲを決定するために動作可能である請求項７に記載のグラフィックスプロセッサ。
【請求項１１】
前記グラフィックスプロセッサによってサポートされるが前記属性に関して用いられないより上位の２進ビットは、ゼロに設定される請求項１０に記載のグラフィックスプロセッサ。
【請求項１２】
前記セットアップユニットは、前記多角形がレンダリングされる表示画面の水平及び垂直の寸法に関して用いられるビット数に基づいてＴを決定するために動作可能である請求項１に記載のグラフィックスプロセッサ。
【請求項１３】
前記セットアップユニットは、前記多角形の大きさに基づいてＴを決定するために動作可能であり、ここで、Ｔは、前記多角形がレンダリングされる表示画面の水平及び垂直の寸法に関して用いられる前記ビット数よりも小さい請求項１に記載のグラフィックスプロセッサ。
【請求項１４】
前記グラフィックスプロセッサによってサポートされるが前記多角形に関して用いられないより下位の小数ビットは、ゼロに設定される請求項１３に記載のグラフィックスプロセッサ。
【請求項１５】
前記セットアップユニットは、２の補数加算を用いて線形内挿を行う前記レンダリングユニットにさらに基づいて前記第２の組の係数を導き出すために動作可能である請求項１に記載のグラフィックスプロセッサ。
【請求項１６】
前記レンダリングユニットは、以下の方程式に基づいて内挿を行うために動作可能である請求項１に記載のグラフィックスプロセッサ。
【数１】
2009506437.tif 000016
ここで、
【数２】
2009506437.tif 000017
は、前記第２の組内の前記係数である。
ｘ及びｙは、前記多角形内の位置に関する座標である。
Ｍａｓｋは、予め決められた数の１を有するマスクである。
ｖは、（ｘ，ｙ）座標における内挿値である。
【請求項１７】
前記レンダリングユニットは、水平方向にわたって内挿するために前記係数Ａ〜を累積するために及び垂直方向にわたって内挿するために前記係数Ｂ〜を累積するために動作可能な非飽和アキュムレータを具備する請求項１６に記載のグラフィックスプロセッサ。
【請求項１８】
多角形をレンダリングするための内挿を行う方法であって、
内挿を行うために用いられる第１の組の係数を計算することと、
前記第１の組の係数に基づいて第２の組の係数を導き出すことであって、前記第２の組内の各係数は、前記第１の組内の対応する係数に基づいて導き出されて前記第１の組内の対応する係数よりも少ないビットを有し、前記第２の組内の各係数は、２進小数点の左側にＲの整数ビット及び前記２進小数点の右側にＴの小数ビットを有する固定小数点フォーマットを有し、ここでＲは、１よりも大きく、Ｔは、ゼロ以上であることと、
前記第２の組の係数を用いて内挿を行って前記多角形をレンダリングすること、とを具備する、方法。
【請求項１９】
前記第１の組の係数は、内挿される属性に関して計算され、Ｒは、前記属性に関して用いられる整数ビット数に基づいて決定される請求項１８に記載の方法。
【請求項２０】
Ｔは、前記多角形がレンダリングされる表示画面の水平及び垂直の寸法に関して用いられるビット数に基づいて決定される請求項１８に記載の方法。
【請求項２１】
前記内挿は、以下の方程式に基づいて行われる請求項１８に記載の方法。
【数３】
2009506437.tif 000018
ここで、
Ａ〜、Ｂ〜、及びＣ〜は、前記第２の組内の前記係数である。
ｘ及びｙは、前記多角形内の位置に関する座標である。
Ｍａｓｋは、予め決められた数の１を有するマスクである。
ｖは、前記（ｘ，ｙ）座標における内挿値である。
【請求項２２】
内挿を前記行うことは、
前記係数Ａ〜の非飽和累積を行って水平方向全体に内挿することと、
前記係数Ｂ〜の非飽和累積を行って垂直方向全体に内挿すること、とを具備する請求項２１に記載の方法。
【請求項２３】
多角形をレンダリングするための内挿を行うために用いられる第１の組の係数を計算するための手段と、
前記第１の組の係数に基づいて第２の組の係数を導き出すための手段であって、前記第２の組内の各係数は、前記第１の組内の対応する係数に基づいて導き出されて前記第１の組内の対応する係数よりも少ないビットを有し、前記第２の組内の各係数は、２進小数点の左側にＲの整数ビット及び前記２進小数点の右側にＴの小数ビットを有する固定小数点フォーマットを有し、Ｒは、１よりも大きく、Ｔは、ゼロ以上である、手段と、
前記第２の組の係数を用いて内挿を行って前記多角形をレンダリングするための手段と、を具備する装置。
【請求項２４】
前記第１の組の係数は、内挿される属性に関して計算され、Ｒは、前記属性に関して用いられる整数ビット数に基づいて決定される請求項２３に記載の装置。
【請求項２５】
Ｔは、前記多角形がレンダリングされる表示画面の水平及び垂直の寸法に関して用いられるビット数に基づいて決定される請求項２３に記載の装置。
【請求項２６】
前記内挿は、以下の方程式に基づいて行われる請求項２３に記載の装置。
【数４】
2009506437.tif 000019
ここで、
Ａ〜、Ｂ〜、及びＣ〜は、前記第２の組内の前記係数である。
ｘ及びｙは、前記多角形内の位置に関する座標である。
Ｍａｓｋは、予め決められた数の１を有するマスクである。
ｖは、前記（ｘ，ｙ）座標における内挿値である。
【請求項２７】
内挿を行うための前記手段は、
前記係数Ａ〜の非飽和累積を行って水平方向全体に内挿するための手段と、
前記係数Ｂ〜の非飽和累積を行って垂直方向全体に内挿するための手段と、を具備する請求項２６に記載の装置。
【請求項２８】
グラフィックスプロセッサと、前記グラフィックスプロセッサの動作を指示するために動作可能なコントローラと、を具備するポータブルデバイスであって、
前記グラフィックスプロセッサは、
多角形をレンダリングするための内挿を行うのに用いられる第１の組の係数を計算するため及び前記第１の組の係数に基づいて第２の組の係数を導き出すために動作可能なセットアップユニットであって、前記第２の組内の各係数は、前記第１の組内の対応する係数に基づいて導き出されて前記第１の組内の対応する係数よりも少ないビットを有し、前記第２の組内の各係数は、２進小数点の左側にＲの整数ビット及び前記２進小数点の右側にＴの小数ビットを有する固定小数点フォーマットを有し、Ｒは、１よりも大きく、Ｔは、ゼロ以上であるセットアップユニットと、
前記第２の組の係数を用いて内挿を行って前記多角形をレンダリングするために動作可能なレンダリングユニットと、を具備するポータブルデバイス。
【請求項２９】
無線通信システムを介して通信を提供するために動作可能な請求項２８に記載のポータブルデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、エレクトロニクスに関するものである。本発明は、より具体的には、グラフィックスエンジンに関するものである。
【背景技術】
【０００２】
グラフィックスプロセッサは、電子ディスプレイ上において提示することを目的として２次元（２Ｄ）及び３次元（３Ｄ）画像をレンダリングするために幅広く用いられている。３Ｄ画像は、表面を用いてモデル化することができ、各表面は、三角形を用いて近似させることができる。３Ｄ画像を表すために必要な三角形の数は、画像に関する表面の複雑さ及び希望される解像度に依存する。３Ｄ画像に関する三角形の総数は、非常に多く、例えば百万単位になる可能性がある。
【０００３】
グラフィックスプロセッサは、３Ｄ画像に関する三角形を可能な限り素早くレンダリングすることを試みる。各三角形は、該三角形の３つの頂点に関する（ｘ，ｙ）座標によって定義される。各三角形の各頂点は、色、テクスチャ、深さ等の様々な属性と関連づけられる。グラフィックスプロセッサは、各三角形に関する属性の各々を内挿することによってその三角形をレンダリングする。各三角形の各属性に関して、グラフィックスプロセッサは、三角形内の各画素位置におけるその属性に関する適切な値を決定する。グラフィックスプロセッサは、典型的には、三角形の３つの頂点における属性に関して与えられた値を用いて線形内挿を行うことによってこの決定を達成させる。３Ｄ画像は、数多くの三角形を含むことができ、さらに各三角形は数多くの属性を有することができるため、レンダリングプロセスは、典型的には非常に計算集約的である。
【０００４】
従って、グラフィックスレンダリングに関する内挿を効率的に行うことができるグラフィックスエンジンが必要である。
【発明の開示】
【発明の概要】
【０００５】
本明細書においては、より少ないビットを用いて効率的に内挿を行いその一方で優れた精度を達成させることが可能なグラフィックスエンジンが説明される。前記グラフィックスエンジンは、セットアップユニットと、レンダリングユニットと、を含む。前記セットアップユニットは、３Ｄ画像に関してレンダリングされる三角形の属性ｖ（例えば、赤、緑、又は青の色成分）を内挿するために用いられる一組の係数Ａ、Ｂ、及びＣを計算する。係数Ａ、Ｂ、及びＣは、大きな動的範囲を有することができ、従って、内挿結果に関する希望される精度を達成させるために非常に多くの数のビットを用いて表すことができる。前記セットアップユニットは、係数Ａ、Ｂ、及びＣの組に基づいて一組の「圧縮された」係数Ａ〜、Ｂ〜、及びＣ〜を導き出す。前記圧縮された係数は、２進小数点の左側にＲの「整数」ビット、前記２進小数点の右側にＴの「小数」ビットを有する固定小数点フォーマットを有し、ここで、Ｒ＞１、Ｔ≧０、及びＲ＋Ｔは、前記係数Ａ、Ｂ、及びＣを表すために用いられるビット数よりもはるかに少なくなることができる。整数ビット数（Ｒ）は、内挿中の属性ｖに関して用いられるビット数に基づいて選択することができる。Ｒは、三角形全体にわたる前記属性に関する値の範囲に基づいてさらに選択することができる。さらに、Ｒは、典型的には三角形の大きさにも依存する。小数ビット数（Ｔ）は、三角形がレンダリングされる表示画面の寸法に基づいて選択することができる。Ｔは、三角形の大きさに基づいてさらに選択することができる。
【０００６】
内挿プロセス及び係数Ａ、Ｂ、及びＣ及び圧縮された係数Ａ〜、Ｂ〜、及びＣ〜の導出に関する詳細が以下において説明される。
【０００７】
前記レンダリングユニットは、前記圧縮された係数Ａ〜、Ｂ〜、及びＣ〜を用いて属性ｖに関する内挿を行う。前記レンダリングユニットは、前記圧縮された係数Ａ〜又はＢ〜をそれぞれ累積することによって表示画面上における水平又は垂直方向の走査に関する内挿を効率的に行うことができる非飽和アキュムレータとともに実装することができる。これによって、三角形のレンダリングが大幅に単純化される。
【０００８】
本発明の様々な側面及び実施形態が以下においてさらに詳細に説明される。
【０００９】
本発明の特長及び性質は、下記の発明を実施するための最良の形態と図面を併用することでさらに明確になるであろう。なお、同一のものについては図面全体に渡って同一の参照符号を付すこととする。
【発明を実施するための最良の形態】
【００１０】
本明細書において用いられている「典型的な」という表現は、「1つの例、事例、又は実例」を示すことを目的とするものである。このため、本明細書において「典型的な」実施形態又は「典型的な」設計として説明されているいずれの実施形態も及びいずれの設計も、その他の実施形態又は設計よりも好ましい又は有利であるとは必ずしも解釈すべきではない。
【００１１】
図１は、３Ｄ画像の表面をモデル化するために用いられる典型的三角形１１０を示す。三角形は、表示画面１００上においてレンダリングされる。三角形は、三角形の３つの頂点に関する座標｛ｘ０，ｙ０｝、｛ｘ１，ｙ１｝、及び｛ｘ２，ｙ２｝によって定義される。三角形は、１つ以上の属性とも関連づけられる。これらの属性は、散乱色に関する赤、緑、及び青の成分（３つの属性）、鏡面色に関する赤、緑、及び青の成分（他の３つの属性）、Ｚ深さ、テクスチャ座標（２つの属性）、逆Ｚ深さ等に関するものであることができる。説明を単純化するため、以下の説明は、三角形の１つの属性に関するものである。この属性は、ｖで表され、図１に示されるように、三角形の３つの頂点における３つの値ｖ０、ｖ１、及びｖ２を有する。以下の説明では、｛ｘｉ｝＝｛ｘ０，ｘ１，ｘ２｝、｛ｙｉ｝＝｛ｙ０，ｙ１，ｙ２｝、及び｛ｖ１｝＝｛ｖ０，ｖ１，ｖ２｝である。
【００１２】
図２は、三角形１１０をレンダリングすることができるグラフィックスエンジン２００のブロック図である。セットアップユニット２１０は、三角形に関する入力パラメータ｛ｘｉ｝、｛ｙｉ｝、及び｛ｖｉ｝を受け取り、属性ｖを内挿するために用いられる係数を生成する。レンダリングユニット２２０は、係数を受け取り、三角形内の様々な位置において属性ｖに関する内挿された値を生成する。セットアップユニット２１０は、１つの三角形ごとに実行し、レンダリングユニット２２０は、所定の三角形に関して１つの画素ごとに実行する。セットアップユニット２１０及びレンダリングユニット２２０に関する典型的デザインが以下において説明される。説明を単純化するため、グラフィックスエンジン２００は、典型的には、図２に示されないその他の処理ユニットを含む。
【００１３】
グラフィックスエンジン２００は、属性ｖに関する内挿された値を三角形１１０の内部に満たすことによって三角形１１０をレンダリングする。直接評価方法の場合は、三角形内のいずれかの｛ｘ，ｙ｝位置における属性値は、以下の内挿方程式に基づいて導き出すことができる。
【数５】
2009506437.tif 000003
【００１４】
ここで、Ａ、Ｂ、及びＣは、内挿係数であり、後述されるように生成することができる。グラフィックスエンジン２００は、方程式（１）を用いて、三角形内の全位置に関して内挿された値を計算する。以下の説明では、用語「変数」  は、入力パラメータ（例えば、｛ｘｉ｝，｛ｙｉ｝、及び｛ｖｉ｝）、座標（例えば、ｘ及びｙ）、係数（例えば、Ａ、Ｂ、及びＣ）、中間値、及び最終結果(例えば、ｖ)を一般的に指すことができる。
【００１５】
係数Ａ、Ｂ、及びＣは、属性ｖに関する以下の３つの方程式の組から得ることができる。
【数６】
2009506437.tif 000004
【００１６】
方程式の組（２）内の各方程式は、所定の頂点ｉに関する入力パラメータ値ｘｉ、ｙｉ、及びｖｉを方程式（１）に当てはめることによって得られ、ここで、ｉ＝０、１、２である。方程式の組（２）は、各属性が異なる一組の係数と関連づけられることを示す。
【００１７】
方程式の組（２）は、以下のように行列形式で表すことができる。
【数７】
2009506437.tif 000005
【００１８】
係数Ａ、Ｂ、及びＣは、以下のように計算することができる。
【数８】
2009506437.tif 000006
【００１９】
行列Ｍは、以下のように定義することができる。
【数９】
2009506437.tif 000007
【００２０】
行列Ｍの逆、すなわちＭ−１は、以下のように計算することができる。
【数１０】
2009506437.tif 000008
【００２１】
ここで、ｄｅｔ（Ｍ）は、行列Ｍの行列式（ｄｅｔｅｒｍｉｎａｎｔ）であり、ＭＣは、行列Ｍの随伴行列であり、Ｄは、１／行列式（すなわち、行列式の逆数）に等しく、“Ｔ”は、転置を表す。行列Ｍの行列式は、三角形の面積に等しく、以下のように計算することができる。
【数１１】
2009506437.tif 000009
【００２２】
随伴行列ＭＣは、以下のように表すことができる。
【数１２】
2009506437.tif 000010
【００２３】
係数Ａ、Ｂ、及びＣは、以下のように計算することができる。
【数１３】
2009506437.tif 000011
【００２４】
各変数は、固定小数点数又は疑似固定小数点数として表すことができる。固定小数点数は、以下のフォーマットを有する。
【数１４】
2009506437.tif 000012
【００２５】
ここで、各“ｐ”は、２進小数点“・”の左側の１つの２進「整数」ビットを表し、各“ｑ”は、２進小数点の右側の１つの２進「小数」ビットを表す。各整数ビットは、１以上の値を表し、正確な値は、固定小数点数内におけるその整数ビットの位置によって決定される。各小数ビットは、１未満の値を表し、正確な値は、固定小数点数内におけるその小数ビットの位置によって決定される。固定小数点数は、予め決められたビット数を有し、２進小数点は、特定のビット位置において固定される。
【００２６】
疑似浮動小数点数は、以下のフォーマットを有する。
【数１５】
2009506437.tif 000013
【００２７】
ここで、Ｍａｎｔは、仮数であり、Ｆは、前記数に関する浮動小数点の位置を示す指数値である。指数値Ｆの前の負の符号は、１（１．０）未満の小さい浮動小数点数の都合の良い表示を考慮したものである。浮動小数点数は、固定されたビット数を用いて優れた解像度（ｒｅｓｏｌｕｔｉｏｎ）を有する大きな範囲の値を表すことができる。しかしながら、浮動小数点数に関する算術演算は、一般的には、固定小数点数に関する算術演算よりもはるかに複雑である。
【００２８】
内挿方程式（１）の評価を単純化するために、係数Ａ、Ｂ、及びＣは、可能な限り少ないビット数で表してその一方で優れた精度を達成させるようにすることが望ましい。係数Ａ、Ｂ、及びＣに関して要求されるビット数は、内挿方程式内のその他の変数に関して用いられるビット数に依存する。
【００２９】
表１は、典型的デザインに関する内挿に関して用いられる様々な変数、その数値フォーマット、及び各変数に関する典型的ビット幅を示す。
【表１】
2009506437.tif 000014
【００３０】
係数Ａ〜、Ｂ〜、及びＣ〜は、係数Ａ、Ｂ、及びＣのそれぞれの圧縮表示であり、以下において詳細に説明される。
【００３１】
行列Ｍの行列式は、三角形の面積に等しく、２Ｐ．Ｑｕフォーマット（又は２Ｐ＋Ｑビット）を有する固定小数点数によって表すことができる。変数Ｄは、１／行列式に等しく、Ｑ．Ｋｕフォーマットを有する固定小数点数によって表すことができ、ここで、Ｋ≧２Ｐである。ｘｉ及びｙｉが１０．６ｕフォーマットを有する場合は、変数Ｄは、Ｋ≧２０の６．Ｋｕフォーマットで表すことができる。
【００３２】
変数Ｄは、疑似浮動小数点表示を用いることによってより効率的に表すことができる。変数Ｄは、導き出して最初はＫ＝２Ｐ＋Ｍの固定小数点フォーマット、例えば６．（２Ｐ＋Ｍ）ｕフォーマット、で表すことができる。変数Ｄに関する疑似浮動小数点表示は、変数Ｄに関する浮動小数点表示を選択し、第１の“１”ビットに出会うまで固定小数点数表示の左端のビットから走査し、この第１の出会った“１”ビット及び次のＭ−１ビットを保持し、その他のすべてのビットを捨てることによって決定することができる。仮数は、変数Ｄに関する固定小数点数表示から保持されたＭビットに等しい。疑似浮動小数点表示に関しては、仮数は、Ｍの整数ビットを含み、１ｍｍ・・・ｍｍのフォーマットを有し、ここで、各“ｍ”は、“０”又は“１”の値を持つことができる。浮動小数点Ｆは、ＬＳＢからＭＳＢに移動するこの第１の“１”の位置である。指数値Ｆは、変数Ｄが６．（２Ｐ＋Ｍ）ｕフォーマットを有する場合はＭ−６乃至Ｍ＋２Ｐ−１の範囲を有する。
【００３３】
図３は、変数Ｄに関する疑似浮動小数点表示を用いて係数Ａ、Ｂ、及びＣを導き出すためにセットアップユニット２１０ａによって行われる計算を示す。セットアップユニット２１０ａは、図２のグラフィックスエンジン２００内におけるセットアップユニット２１０の実施形態である。係数Ａを導き出すために、方程式（８）において示されるように、ブロック３１２ａ乃至３１２ｃ内の入力パラメータ値｛ｙｉ｝に基づいて随伴行列ＭＣ内の変数｛ａｉ｝＝｛ａ０，ａ１，ａ２｝が最初に計算される。次に、ブロック３１４ａ乃至３１４ｃにおいて変数｛ａｉ｝に属性値｛ｖｉ｝が乗じられる。ブロック３１６においてブロック３１４ａ乃至３１４ｃの出力が結合され、ブロック３１８において、方程式（９）において示されるように変数Ｄに関する仮数が乗じられて係数Ａが生成される。
【００３４】
係数Ｂは、入力パラメータ値｛ｘｉ｝及び属性値｛ｖｉ｝以外は係数Ａと同様の方法で導き出すことができる。方程式（８）において示されるように、ブロック３２２ａ乃至３２２ｃ内の入力パラメータ値｛ｘｉ｝に基づいて随伴行列ＭＣ内の変数｛ｂｉ｝＝｛ｂ０，ｂ１，ｂ２｝が最初に計算される。次に、ブロック３２４ａ乃至３２４ｃにおいて変数｛ｂｉ｝に属性値｛ｖｉ｝が乗じられる。ブロック３２６においてブロック３２４ａ乃至３２４ｃの出力が結合され、ブロック３２８において変数Ｄに関する仮数が乗じられて係数Ｂが生成される。
【００３５】
係数Ｃを導き出すために、方程式（８）において示されるように、ブロック３５２ａ乃至３５２ｆ、３５４ａ乃至３５４ｆ、及び３５６ａ乃至３５６ｃ内の入力パラメータ値｛ｘｉ｝及び｛ｙｉ｝に基づいて随伴行列ＭＣ内の変数｛ｃｉ｝＝｛ｃ０，ｃ１，ｃ２｝が最初に計算される。次に、ブロック３５８ａ乃至３５８ｃにおいて変数｛ｃｉ｝に属性値｛ｖｉ｝が乗じられる。ブロック３６０においてブロック３５８ａ乃至３５８ｃの出力が結合され、ブロック３６２において変数Ｄに関する仮数がさらに乗じられて係数Ｃが生成される。
【００３６】
図３は、表１に示される典型的デザインに関する様々な変数に関するビット幅も示す。このデザインに関しては、入力パラメータ｛ｘｉ｝及び｛ｙｉ｝は、１０．６ｕフォーマットを有し、入力パラメータ｛ｖｉ｝は、１６．０ｕフォーマットを有する。以下の基本ルールは、係数Ａ、Ｂ、及びＣに関する計算における中間及び最終結果に関するビット幅を決定するために用いられる。
【００３７】
１．   ２つの数の加算又は減算は、余分のビットを有する出力を生成する。
【００３８】
２．   ２つの数の乗算は、２つの入力数字内のビットの和に等しいビット数を有する出力を生成する。
【００３９】
３．   切り詰め演算（“＞＞”によって表される）は、一定数の最下位ビット（ＬＳＢ）を捨てる。
【００４０】
４．   飽和演算（“ＳＡＴ”で表される）は、最大（ＭＡＸ）及び／又は最小（ＭＩＮ）演算を行って最上位ビット（ＭＳＢ）数を制限する。
【００４１】
図３は、係数Ａ及びＢは３５＋Ｍビットで各々表すことができ、係数Ｃは４５＋Ｍビットで表すことができることを示す。一般的には、係数Ｃは、後述される理由により係数Ａ及びＢよりもＰだけ多いビットを要求する。係数Ａ、Ｂ、及びＣに関する最悪時（又は最大）のビット幅は、Ｍの最大値を用いて指定することができる。
【００４２】
図４は、属性ｖに関する内挿された値を生成するためにレンダリングユニット２２０ａによって行われる計算を示す。レンダリングユニット２２０ａは、図２のグラフィックスエンジン２００におけるレンダリングユニット２２０の実施形態である。レンダリングユニット２２０ａは、図３のセットアップユニット２１０ａから係数Ａ、Ｂ、及びＣを受け取る。ブロック４１２ａ及び４１２ｂにおいて、三角形内において内挿される位置に関する変数ｘ及びｙに係数Ａ及びＢがそれぞれ乗じられ、中間値Ａｘ及びＢｙがそれぞれ生成される。中間値Ａｘ及びＢｙは、ブロック４１４において係数Ｃと合計されて予備的結果ｖ’が生成される。予備的結果ｖ’は、変数Ｄの疑似浮動小数点表示を考慮するためにブロック４１６においてＦ＋６ビット位置だけ右シフトされる。次に、ブロック４１８において、シフトされた値は、属性ｖに関する整数ビット数であるＲビットに飽和される。
【００４３】
図４は、表１に示される典型的デザインに関する様々な変数に関するビット幅も示す。上記の基本ルールは、各演算に適用される。図４は、中間値Ａｘ及びＢｙは係数Ｃに関して用いられるビット数である４５＋Ｍビットで各々表示できることを示す。画面座標に関する変数ｘ及びｙは、１０の追加のビットを係数Ａ及びＢに供給し、このため、中間値Ａｘ及びＢｙは、係数Ｃのビット幅と一致する。予備的結果ｖ’は、４７＋Ｍビットを有し、属性ｖに関する最終結果は１６ビットを有する。
【００４４】
図４において、係数Ａ、Ｂ、及びＣのビット幅、中間値Ａｘ及びＢｙ、及び予備的結果ｖ’はすべて、変数Ｄの仮数に関するビット数であるＭの項で与えられる。より大きい仮数の大きさＭは、属性ｖに関する変数Ｄ及び内挿された値に関してより良い精度を提供するが、内挿のためのより多くのビットも要求する。仮数のビット幅と性能との間でいずれを犠牲にするかの取捨選択を行うことができる。（例えばコンピュータシミュレーションを用いて）異なる仮数の大きさを評価することで各々の異なる仮数の大きさを持って生成された誤差の程度を決定することができる。これで、希望される性能を有する最小の仮数の大きさを使用目的で選択することができる。典型的コンピュータシミュレーションは、仮数に関するＭ＝１２ビットが良い結果を生み出すことを示す。しかしながら、その他の仮数の大きさも使用可能である。
【００４５】
再度図４において、Ｍ＝１２に関して、係数Ａ及びＢは、（４１−Ｆ）．（Ｆ＋６）ｕフォーマットを用いて４７ビットでそれぞれ表すことができ、係数Ｃは、（５１−Ｆ）．（Ｆ＋６）ｕフォーマットを用いて５７ビットで表すことができる。中間値Ａｘ及びＢｙは、（５１−Ｆ）．（Ｆ＋６）ｕフォーマットを用いて５７ビットで表すことができる。予備的結果ｖ’は、（５３−Ｆ）．（Ｆ＋６）ｕフォーマットを用いて５９ビットで表すことができる。予備的結果ｖ’に関する５９ビットのうちで、Ｆ＋６のＬＳＢは、小数部分に関するものであって切り詰められ、５３−Ｆ−１６のＭＳＢは、整数部分に関するものであり、飽和されて属性ｖに関する最終的な１６ビットが得られる。表１に示される典型的デザインに関して、指数値Ｆは、６乃至３１の範囲、又はＦ＝［６  ３１］を有することができる。この場合は、１２乃至３７ビットが切り詰められ、３１乃至６ビットが飽和されて属性ｖに関する最終結果が得られる。切り詰められる特定のビット数及び飽和される特定のビット数は、行列Ｍの行列式、すなわち、レンダリングされる三角形の大きさ、に依存する。
【００４６】
実際の内挿は、典型的には、係数Ｃと同じ大きさのサイズを有するアキュムレータによって実装される。高速レンダリングに関しては、典型的には数多くの（例えば数十の）アキュムレータが、レンダリング中の多くの属性の各々に関して１つずつ実装され、このことはハードウェアを要求する。これらのアキュムレータは、しばしば並列で実行され、このことは電力を要求にする。本明細書において説明される革新的なグラフィックエンジンは、ハードウェア及び電力の両方の点で重要な節約を提供することができる。
【００４７】
以下の観察結果を利用することによって、内挿に関して用いられるビット数の大幅な削減、従ってそれによる劇的な複雑さの低減を達成させることができる。
【００４８】
１．   入力パラメータｘ及びｙは、固定された画面のサイズに起因して制約されるため、係数Ａ、Ｂ、及びＣに関して固定された数の小数ビットを用いることができる。
【００４９】
２．   内挿される属性ｖは、１つの範囲内の値であるように制約されるため、係数Ａ、Ｂ、及びＣに関して固定された数の整数ビットを用いることができる。
【００５０】
係数Ａ、Ｂ、及びＣに関する固定されたより小さいビット幅は、内挿プロセスにおける中間結果のビット幅を縮小し、計算をさらに単純化させる。
【００５１】
係数Ａ、Ｂ、及びＣに関する小数ビット数は、画面寸法に基づいて減らすことができ、レンダリング中の属性に関する内挿された値に関する希望される解像度／精度に基づいてさらに選択することができる。再度内挿方程式（１）において、係数Ａは、ｘ軸（例えば水平方向）に沿った属性ｖの増分的変化としてみることができ、係数Ｂは、ｙ軸（例えば垂直方向）に沿った属性ｖの増分的変化としてみることができる。水平方向におけるＰビットの画面サイズに関して、変数ｘは、０乃至２ｐ−１の値をとることができる。ｘ値の範囲全体における属性ｖの１つのＬＳＢの最小変化をキャプチャリングするために、係数Ａは、少なくともＰの小数ビットを有するべきである。同様に、垂直方向におけるＰビットの画面サイズに関して、ｙ値の範囲全体における属性ｖの１つのＬＳＢの最小変化をキャプチャリングするために、係数Ｂは、少なくともＰの小数ビットを有するべきである。さらに、中間値Ａｘ＝Ａ・ｘ及びＢｙ＝Ｂ・ｙは、Ｐの小数ビットで表すことができるため、係数Ｃも、Ｐの小数ビットで表すことができる。
【００５２】
一例として、１０２４×７６８の画面サイズに関しては、ｘ及びｙの両方に関してＰ＝１０ビットが用いられ、係数Ａ及びＢは、少なくとも１０の小数ビットを有するべきである。これで、３つの全係数Ａ、Ｂ、及びＣに関して１０の小数ビットを用いることができる。代替として、より高い精度を達成させるためにこれらの係数に関して１２の小数ビットを用いることができる。一般的には、属性ｖに関する最終的な内挿結果の希望される精度に依存して係数Ａ、Ｂ、及びＣに関してあらゆる数の小数ビットを用いることができる。誤差に対して異なるレベルの感度を有する異なる属性に関して異なる数の小数ビットを用いることも可能である。例えば、誤差がより多くの目視可能なアーティファクトを発生させる属性に関してはより多くの小数ビットを用いることができ、誤差が相対的に軽度である属性に関してはより少ない小数ビットを用いることができる。
【００５３】
係数Ａ、Ｂ、及びＣに関する整数ビット数は、属性に関する基本的な三角形レンダリング幾何学を利用することによって減らすことができる。属性に関する内挿値に関する最終結果は、属性に関して用いられるビット数（Ｒ）によって指定された範囲内であるように制約される。例えば、属性が１６．０ｕフォーマットを有する場合は、属性に関する各内挿値は正であり、１６の整数ビット内に制限される。このことは、方程式（１）の右辺の３つの項Ａｘ、Ｂｙ及びＣが負であることができさらに１６を超える整数ビットを有することさえできる場合でも、基礎となる幾何学は、これらの３つのすべての項をいっしょに加算後に左辺の最終結果が正になること及び１６の整数ビットのみを有することになることを保証する。
【００５４】
図５は、基本となる幾何学を用いて係数Ａ、Ｂ、及びＣに関する整数ビット数を減らすことを示す。説明を単純化するため、２進小数点の右側の小数ビットは、図５では示されない。この例に関しては、Ｍ＝１２、Ｆ＝１６、中間値Ａｘ及びＢｙは４５の整数ビットを各々有し、これらの２つの中間値の和は４６の整数ビットを有し、係数Ｃは、４５の整数ビットを有する。直線上における２点間を内挿時には、内挿された値は、内挿中の２つの端点における２つの値と同じビット幅を有することになる。従って、１６ビット属性に関する内挿は、中間値Ａｘ及びＢｙ及び係数Ｃがそれぞれ４５ビットを有する場合でも１６ビットの内挿された値を生成する。
【００５５】
（通常はハードウェア内の数字を表すために用いられる）２の補数の２進加算は、右から左に進む。属性ｖに関する内挿された値の下位の１６ビットを生成するために、量Ａｘ、Ｂｙ、及びＣの下位の１６ビットのみが要求される。量Ａｘ＋Ｂｙの上位３０ビット、及び係数Ｃの上位２９ビットは、要求されず捨てることができる。これらの上位ビットを捨てることによる最終結果の精度が失われることはない。
【００５６】
図６は、固定された数（Ｒ）の整数ビット及び固定された数（Ｔ）の小数ビットを有する圧縮された係数Ａ〜、Ｂ〜、及びＣ〜を導き出すためにセットアップユニット２１０ｂによって行われる計算を示す。セットアップユニット２１０ｂは、図２のグラフィックスエンジンにおけるセットアップユニット２１０の他の実施形態である。図３において上述されるブロック３１０、３２０、及び３５０において、中間係数Ａ’、Ｂ’、及びＣ’は、入力パラメータ｛ｘｉ｝及び｛ｙｉ｝にそれぞれ基づいて計算される。ブロック６１２ａ乃至６１２ｃにおいて、中間係数Ａ’、Ｂ’、及びＣ’に変数Ｄに関する仮数が乗じられて係数Ａ、Ｂ、及びＣがそれぞれ生成される。ブロック６１４ａ乃至６１４ｃにおいて係数Ａ、Ｂ、及びＣのＦ＋６−Ｔの右端ビットが切り詰められ、Ｔの小数ビットを有する係数Ａ”、Ｂ”、及びＣ”がそれぞれ生成される。切り詰めは、係数Ａ、Ｂ、及びＣの各々をＦ＋６−Ｔビットだけ右にシフトし、シフトアウトされたＦ＋６−Ｔの全２進ビットを捨てることによって行うことができる。係数Ａ”、Ｂ”、及びＣ”は、切り詰め後はＴの小数ビットをそれぞれ有する。
【００５７】
次に、ブロック６１６ａ乃至６１６ｃにおいて係数Ａ”、Ｂ”、及びＣ”がマスキングされ、Ｒの下位の整数ビット及びＴの小数ビットが保持される。マスキングは、Ｒ＋Ｔの右端ビット位置に関してはＲ＋Ｔの１及びその他の全ビット位置に関してはゼロから成るマスクを用いて係数Ａ”、Ｂ”、及びＣ”の各々に関して論理的ＡＮＤ演算を行うことによって達成することができる。マスク内の１に対応する係数ビットは保持され、マスク内のゼロに対応する係数ビットは捨てられる。係数Ａ”、Ｂ”、及びＣ”に関するマスク演算は、圧縮された係数Ａ〜、Ｂ〜、及びＣ〜をそれぞれ生成する。圧縮された係数の各々は、Ｒ．Ｔフォーマットを有する。
【００５８】
図６は、Ｒ＝１６及びＴ＝１２のときの表１に示される典型的デザインに関する様々な変数に関するビット幅も示す。係数Ａ及びＢは、合計４７ビットを各々有し、そのうちのＦ＋６は小数ビットであり、係数Ｃは合計５７ビットを有し、そのうちのＦ＋６は小数ビットである。Ｔ＝１２に関しては、係数Ａ、Ｂ、及びＣのＦ＋６−１２の右端のビットが切り詰められる。結果的に得られた係数Ａ”及びＢ”は合計５３−Ｆのビットを各々有し、そのうちの１２は小数ビットであり、係数Ｃ”は合計６３−Ｆのビットを各々有し、そのうちの１２は小数ビットである。マスク演算は、係数Ａ”、Ｂ”、及びＣ”に関する１６の下位の整数ビットを保持し、すべてのより高位の整数ビットを捨て、１６の整数ビット及び１２の小数ビットを有する圧縮された係数Ａ〜、Ｂ〜、及びＣ〜を提供する。
【００５９】
図７は、図６においてセットアップユニット２１０ｂによって導き出された圧縮された係数Ａ〜、Ｂ〜、及びＣ〜を用いて属性ｖに関する内挿された値を生成するためにレンダリングユニット２２０ｂによって行われる計算を示す。レンダリングユニット２２０ｂは、図２のグラフィックスエンジン２００内におけるレンダリングユニット２２０の他の実施形態である。ブロック７１２ａ及び７１２ｂにおいて、内挿される位置に関する変数ｘ及びｙに圧縮された係数Ａ〜及びＢ〜がそれぞれ乗じられる。ブロック７１４ａ及び７１４ｂにおいて中間値Ａ〜ｘ及びＢ〜ｙがマスキングされ、Ｒの下位の整数ビット及びＴの小数ビットのみが保持される。次に、ブロック７１６において、マスキングされた値が圧縮された係数Ｃ〜と合計され、Ｒ＋２の整数ビット及びＴの小数ビットを有しさらに３つの数の加算によって得られた２つの追加の整数ビットを有する予備的結果ｖ’が生成される。
【００６０】
ブロック７１８において予備的結果ｖ’がマスキングされてＲの下位の整数ビット及びＴの小数ビットのみが保持される。ブロック７２０においてＴの小数ビットが切り詰められて属性ｖに関する最終的な内挿された結果が得られる。図７は、Ｒ＝１６及びＴ＝１２のときにおける典型的デザインに関する様々な変数に関するビット幅も示す。
【００６１】
圧縮された係数を用いた内挿方程式は、以下のように表すことができる。
【数１６】
2009506437.tif 000015
【００６２】
ここで、Ｍａｓｋは、（Ｒ＋Ｔ）の１を有するマスクであり、方程式（１２）における３つのＡＮＤ演算は、非飽和加算器を反映する。内挿方程式内の全変数及び係数は、固定小数点フォーマットである。方程式（１２）は、各内挿された値を生成するために２つの乗算が要求されることを示す。乗算は加算よりも複雑であるため、可能な場合は乗算の使用を避けるか又は最小限にすることが望ましい。
【００６３】
図８は、乗算なしで内挿を行うことができるレンダリングユニット２２０ｃを示す。レンダリングユニット２２０ｃは、図２のグラフィックスエンジン２００内におけるレンダリンユニット２２０のさらに他の実施形態である。圧縮された係数Ａ〜、Ｂ〜、及びＣ〜が上述されるように生成されてマルチプレクサ８１２に提供され、マルチプレクサ８１２は、Ｍｕｘ＿Ｃｔｒｌ信号も受信する。レンダリングユニット２２０ｃは、三角形の底辺から三角形の頂点に向かいながら１度に１つのラインを走査することによって三角形をレンダリングすることができる。各ラインに関する走査開始時に、（Ｒ＋Ｔ）ビットの非飽和アキュムレータ８１４がリセット信号によってゼロにリセットされ、マルチプレクサ８１２は、圧縮された係数Ｃ〜を提供し、アキュムレータ８１４は、圧縮されたＣ〜を保存する。第１のラインの走査に関して、マルチプレクサ８１２は、係数Ａ〜を提供する。このライン上の各画素位置に関して、アキュムレータ８１４は、係数Ａ〜を累積し、Ｒの整数ビット及びＴの小数ビットを有する出力を提供する。ユニット８１６は、アキュムレータ出力内のＴの小数ビットを切り詰め、属性ｖに関する最終的な内挿された値を提供する。アキュムレータ８１４は、ライン上の各画素位置に関する出力を提供し、ユニット８１６は、各画素位置に関する最終的な内挿された値を提供する。
【００６４】
アキュムレータ８１４は、ｘ＝０及びｙ＝ライン番号であるときの方程式（１２）を評価することによって各ラインに関して初期設定することができる。マルチプレクサ８１２は、圧縮された係数Ｂ〜を提供し、アキュムレータ８１４は、垂直方向に累積してレンダリング中のラインに達する。次に、マルチプレクサ８１２は、圧縮された係数Ａ〜を提供する。レンダリング中のライン上における各画素位置に関して、アキュムレータ８１４は、圧縮された係数Ａ〜を累積し、その出力をユニット８１６に提供する。ユニット８１６は、アキュムレータ出力を切り詰め、最終的な内挿された値を提供する。
【００６５】
一般的には、マルチプレクサ８１２及びアキュムレータ８１４は、ｘ方向、ｙ方向、又は両方向を組み合わせた方向に走査するために動作させることができる。アキュムレータ８１４は、マルチプレクサ８１２からの出力を累積し、オーバーフローは無視される（従って「非飽和アキュムレータと呼ばれる」。図７のブロック７１８によるマスク演算は、非飽和アキュムレータによって行われる。
【００６６】
図９は、三角形をレンダリングするためのプロセス９００の流れ図を示す。最初に、三角形の頂点に関する｛ｘｉ，ｙｉ｝座標に基づいて随伴行列ＭＣが形成される（ブロック９１２）。三角形の面積の逆数に関する変数Ｄが計算される（ブロック９１４）。次に、変数Ｄは、左端ビットに関して“１”の値を有するＭビットの仮数を有する疑似浮動小数点フォーマットを用いて表される。次に、内挿方程式に関する係数Ａ、Ｂ、及びＣが、随伴行列ＭＣ、変数Ｄに関する仮数、及び内挿される属性ｖに関する三角形の頂点における値｛ｖｉ｝に基づいて計算される（ブロック９１８）。次に、圧縮された係数Ａ〜、Ｂ〜、及びＣ〜が係数Ａ、Ｂ、及びＣにそれぞれ基づいて導き出される（ブロック９２０）。圧縮された係数Ａ〜、Ｂ〜、及びＣ〜は、Ｒの整数ビット及びＴの小数ビットを有する固定小数点数フォーマットを有する。次に、圧縮された係数Ａ〜、Ｂ〜、及びＣ〜を用いて属性ｖに関する内挿が行われる（ブロック９２２）。ブロック９１２乃至９２０は、三角形に関するセットアップ段階を表し、ブロック９２２は、三角形に関するレンダリング段階を表す。
【００６７】
上記の説明において、圧縮された係数Ａ〜、Ｂ〜、及びＣ〜は、表示画面に関して可能な最大の三角形を処理するためのＴの小数ビット及び内挿中の属性の動的範囲全体を処理するためのＲの整数ビットを用いて計算される。ほとんどの場合は、レンダリングされる三角形は、相対的に小さく、内挿される属性は、その属性に関する動的範囲全体よりもはるかに小さい１つの範囲の値を有する。
【００６８】
さらに、レンダリング対象となっている三角形及び属性に関して必要ないときにはより少ない小数ビット及び／又はより少ない整数ビットを有する圧縮された係数Ａ〜、Ｂ〜、及びＣ〜を計算することによって重要な電力節約を実現させることができる。圧縮された係数に関する小数ビット数（Ｔｘ）は、レンダリングされる三角形の大きさに基づいて選択することができ、Ｐよりも少ないことができる。圧縮された係数に関する２進ビット数（Ｒｘ）は、内挿される属性に関する値の範囲に基づいて選択することができ、Ｒよりも少ないことができる。グラフィックスエンジンは、Ｒの２進ビット及びＴの小数ビットとともに実装することができ、ここで、Ｔは、画面のサイズに基づいて選択することができ、Ｒは、最大の動的範囲、すなわち最大のビット数、を有する属性の動的範囲全体に基づいて選択することができる。レンダリングされる三角形に関するＴｘがＴよりも小さいときは、（Ｔ−Ｔｘ）の右端の（より下位の）小数ビットをゼロに設定することができる。同様に、内挿される属性に関するＲｘがＲよりも小さいときは、（Ｒ−Ｒｘ）の左端の（より上位の）２進ビットをゼロに設定することができる。ハードウェア内においては、電力は、典型的にはビットがトグルされたときに消費される。必要ないビットをゼロに設定することによって、これらのビットに関しては電力が消費されない。三角形の大きさ及び属性範囲は両方とも典型的に小さいため、数多くの小数ビット及び２進ビットをゼロに設定することができ、重要な電力節約を達成することができる。さらに、異なる大きさの三角形及び異なる範囲の属性をレンダリングするために（異なる三角形の大きさ及び／又は属性範囲に関して最適化された複数のグラフィックスエンジンを有する代わりに）同じグラフィックスエンジンを用いることができる。
【００６９】
本明細書において説明されるグラフィックスエンジンは、高度に再コンフィギュレーション可能でもある。圧縮された係数は、単に（Ｒ＋Ｔ）の１のＭａｓｋを変更することによって各三角形の寸法に基づいて敏速に導き出すことができる。
【００７０】
本明細書において説明されるグラフィックスエンジン及び三角形レンダリング技術は、様々なデバイス、装置、及び電子ユニットに関して用いることができる。三角形レンダリング技術は、固定小数点フォーマットを用いて内挿を行い、複雑さ、電力、ダイ面積、及びコストの点で、浮動小数点フォーマットを用いた内挿よりもはるかに効率的である。従って、本明細書において説明されるグラフィックスエンジン及び三角形レンダリング技術は、無線及びモバイルプラットフォームに関して有利に用いることができる。該プラットフォームの例は、無線通信デバイス（例えば携帯電話）と、パーソナルデジタルアシスタント（ＰＤＡ）と、ポータブルビデオゲームユニットと、を含む。
【００７１】
図１０は、無線通信システムに関する無線デバイス１０００のブロック図である。無線デバイス１０００は、携帯電話、端末、ハンドセット、ＰＤＡ、又はその他のいくつかの装置であることができる。無線通信システムは、符号分割多重接続（ＣＤＭＡ）システム、グローバル移動通信システム（ＧＳＭ）システム等であることができる。無線デバイス１０００は、受信経路及び送信経路を介して双方向通信を提供することができる。
【００７２】
受信経路に関しては、システム内の基地局によって送信された信号がアンテナ１２によって受信され、デュプレクサ（Ｄ）１０１４を通じてルーティングされ、受信機ユニット（ＲＣＶＲ）１０１６に提供される。受信機ユニット１０１６は、受信された信号をコンディショニング及びデジタル化し、入力サンプルをさらなる処理のためにモデムプロセッサ１０２０に提供する。送信経路に関しては、送信機ユニット（ＴＭＴＲ）１０１８は、送信すべきデータをモデムプロセッサ１０２０から受信し、該データを処理及びコンディショニングし、変調された信号を生成し、変調された信号は、デュプレクサ１０１４を通じてルーティングされてアンテナ１０１２を介して基地局に送信される。
【００７３】
モデムプロセッサ１０２０は、データの送信及び受信に関する処理（例えば、符号化、変調、復調、復号等）を行う。グラフィックスプロセッサ１０２２は、ビデオゲーム、３Ｄアバター等のグラフィックスアプリケーションに関する処理を行う。グラフィックスプロセッサ１０２２は、上述されるグラフィックスエンジン及び三角形レンダリング技術を実装することができる。ディスプレイインタフェースユニット１０２４は、映像、グラフィックス、テキスト等の表示を容易にするための一定の処理後タスクを行い、表示ユニット１０４０とさらにインタフェースする。表示ユニット１０４０は、薄膜トランジスタ（ＴＦＴ）、有機発光ダイオード（ＯＬＥＤ）、陰極線管（ＣＲＴ）等のあらゆる型の電子ディスプレイであることができる。アプリケーションプロセッサ１０２６は、マルチウェイコール（ｍｕｌｔｉ−ｗａｙ  ｃａｌｌ）、ウェブブラウジング、電話ダイアラーアプリケーション、メディアプレーヤー、ゲーム、ユーザーインタフェース等の様々なアプリケーションに関する処理を行う。コントローラ１０３０は、無線デバイス１０００内の様々な処理ユニットの動作を指示する。メモリユニット１０３２は、コントローラ１０３０及びその他の処理ユニットによって用いられるプログラムコード及びデータを格納する。様々な処理ユニットは、１つ以上のバス１０３４を介して通信することができる。
【００７４】
無線デバイス１０００は、異なる及び／又は追加のプロセッサを含むことも可能である。例えば、無線デバイス１０００は、カムコーダー、ビデオ再生、テレビ会議等のビデオアプリケーションに関する映像コンテンツ（例えば、静止画像、動画、動くテキスト等）を処理するための映像プロセッサを含むことができる。
【００７５】
本明細書において説明されるグラフィックスエンジン及び三角形レンダリング技術は、複雑さが低減された良い内挿結果を提供することができる。内挿係数は、（基礎となる幾何学に起因する）固定数の整数ビット及び（固定されたサイズの画面全体における内挿に起因する）固定数の小数ビットを有する圧縮されたＲ．Ｔ．固定小数点フォーマットを用いて表すことができる。この圧縮されたフォーマットは、特にレンダリング段階に関して、グラフィックスエンジン内で用いられるハードウェア素子（例えば、加算器、アキュムレータ、マルチプレクサ等）のサイズを小さくする。固定数の小数ビットは、変数切り詰め演算をレンダリング段階（例えば、図４のブロック４１６）からセットアップ段階（例えば、図６のブロック６１４）に有効に移動させる。変数切り詰めは、一度にＮｏ．１ビットをシフトさせる「バレルシフター」としてしばしば実装される。従って、変数切り詰めは、（１つの画素ごとに実行する）レンダリング段階の代わりに（１つの三角形ごとに実行する）セットアップ段階において実装時に大幅に少ない電力を消費することができる。レンダリング段階に関する固定された切り詰めは、ハードウェア内に効率的に実装することができる。図８に示されるように、固定された整数ビット数は、計算の複雑さも低減させ、単純な非飽和アキュムレータによるレンダリング段階の実装をさらに考慮する。
【００７６】
本明細書において説明される技術は、三角形以外のその他の多角形をレンダリングするために用いることもできる。一般的には、係数及び内挿された値は、上述されるように計算することができる。グラフィックスエンジン内の検査ユニットは、各画素がレンダリングされる三角形又は多角形内にあるかどうかを決定する。グラフィックスエンジンは、三角形又は多角形内にある画素に関する最終的内挿値を提供する。
【００７７】
本明細書において説明される三角形レンダリング技術は、様々な手段で実装することができる。例えば、これらの技術は、ハードウェア内において、ソフトウェア内において、又はその組合せ内において実装することができる。ハードウェア内に実装する場合は、三角形をレンダリングするために用いられる処理ユニットは、本明細書において説明されている機能を果たすように設計された１つ以上の特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブル論理デバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、その他の電子ユニット、又はその組合せ内に実装することができる。ソフトウェア内に実装する場合は、三角形レンダリングは、本明細書において説明されている機能を実行するモジュール（例えば、手順、関数等）とともに実装することができる。ソフトウェアコードは、メモリユニット（例えば、図１０のメモリユニット１０３２）に格納してプロセッサ（例えば、コントローラ１０３０）によって実行することができる。メモリユニットは、プロセッサ内に実装すること又はプロセッサの外部において実装することができ、プロセッサの外部において実装する場合は、当業において知られる様々な手段を介して通信可能な形でプロセッサに結合することが可能である。ハードウェア及びソフトウェア実装に関して、セットアップ段階は、ソフトウェア内において行うことができ、レンダリング段階は、ハードウェア内において行うことができる。
【００７８】
開示された実施形態に関する上記の説明は、当業者が本発明を製造又は使用できるようにすることを目的とするものである。これらの実施形態に対する様々な修正は、当業者にとっては容易に明確になるであろう。さらに、本明細書において定められている一般原理は、本発明の精神及び適用範囲を逸脱しない形でその他の実施形態に対しても適用することができる。以上のように、本発明は、本明細書において示されている実施形態に限定されることが意図されるものではなく、本明細書において開示されている原理及び斬新な特長に一致する限りにおいて最も広範な適用範囲が認められるべきである。
【図面の簡単な説明】
【００７９】
【図１】３Ｄ画像の表面をモデル化するために用いられる三角形を示した図である。
【図２】三角形をレンダリングすることができるグラフィックスエンジンを示した図である。
【図３】グラフィックスエンジン内のセットアップユニットを示した図である。
【図３Ａ】グラフィックスエンジン内のセットアップユニットを示した図である。
【図４】グラフィックスエンジン内のレンダリングユニットを示した図である。
【図５】係数に関するビット数を減少させるための基礎となる幾何学の使用を示した図である。
【図６】圧縮された係数を内挿に関して生成するセットアップユニットを示した図である。
【図７】圧縮された係数を内挿に関して用いるレンダリングユニットを示した図である。
【図８】非飽和累積を有し乗算を有さない内挿を行うレンダリングユニットを示した図である。
【図９】三角形をレンダリングするためのプロセスの流れ図である。
【図１０】無線デバイスのブロック図である。
【図１】
2009506437.tif 000020
【図２】
2009506437.tif 000021
【図３】
2009506437.tif 000022
【図３Ａ】
2009506437.tif 000023
【図４】
2009506437.tif 000024
【図５】
2009506437.tif 000025
【図６】
2009506437.tif 000026
【図７】
2009506437.tif 000027
【図８】
2009506437.tif 000028
【図９】
2009506437.tif 000029
【図１０】
2009506437.tif 000030
【国際調査報告】
2009506437.tif 000031
2009506437.tif 000032