(57)【特許請求の範囲】
【請求項１】
領域をモザイク化するためのモザイク化ユニットであって、
前記モザイク化ユニットは、回路を備え、
前記モザイク化ユニットは、
前記領域を、第１の部分を含む複数の部分に分割することと、
前記第１の部分における形状の数と再使用バッファのサイズに基づいて、少なくとも前記第１の部分を、複数の細部分に分割し、これによって、前記細部分の第１の細部分内の複数の形状の座標の格納が、前記再使用バッファをオーバフローさせないようにすることと、
前記第１の細部分内に存在する第１の形状のセットの頂点の座標を決定することであって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含み、前記第１の形状のセットのうちの少なくとも１つの形状は、前記領域の境界に少なくとも１つの頂点を含み、前記第１の部分の第１の縁は、前記領域の境界のうちの１つではない、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する第２の形状のセットの頂点の座標を決定することと、
前記モザイク化ユニットが座標を最後に決定する前記第１の形状のセットの形状は、前記モザイク化ユニットが座標を最初に決定する前記第２の形状のセットの形状と頂点を共有せず、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、前記第２の形状のセットのうちの少なくとも１つの形状は、前記第１の形状のセットのうちの少なくとも１つの形状と同じ、前記領域の境界に、少なくとも１つの頂点を含み、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含まず、
前記第１の細部分の形状の頂点の座標を決定した後、前記第１の部分の第２の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第２の細部分の第１の形状のセットの各形状は、前記第２の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第２の細部分の第１の形状のセットの頂点の座標を決定した後、前記第２の細部分の第２の形状のセットの頂点の座標を決定することと、
前記第２の細部分の第２の形状のセットのうちの何れの形状も、前記第２の細部分の第１の縁に頂点を含んでおらず、
前記第１の細部分の第１の形状のセットに対して決定した座標、前記第１の細部分の第２の形状のセットに対して決定した座標、前記第２の細部分の第１の形状のセットに対して決定した座標、および、グラフィック処理のために前記第２の細部分の第２の形状のセットに対して決定した座標を出力することと、を実行するように構成されているモザイク化ユニット。
【請求項２】
前記領域は三角形領域であり、前記領域は３つの部分に分割される、請求項１に記載のモザイク化ユニット。
【請求項３】
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、請求項１に記載のモザイク化ユニット。
【請求項４】
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在し、前記２つの境界のうちの１つは、前記領域の境界に前記少なくとも１つの頂点を含む、前記第１の細部分の第１の形状のセットのうちの少なくとも１つの形状の境界を含む、請求項１に記載のモザイク化ユニット。
【請求項５】
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、請求項１に記載のモザイク化ユニット。
【請求項６】
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、請求項１に記載のモザイク化ユニット。
【請求項７】
前記領域を分割するために、前記モザイク化ユニットは、前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割するように構成され、
前記モザイク化ユニットはさらに、前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定するように構成された、請求項１に記載のモザイク化ユニット。
【請求項８】
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、請求項７に記載のモザイク化ユニット。
【請求項９】
領域をモザイク化する方法であって、
グラフィック処理ユニット（ＧＰＵ）によって、領域を、第１の部分を含む複数の部分に分割することと、
前記ＧＰＵによって、前記第１の部分における形状の数と再使用バッファのサイズに基づいて、少なくとも前記第１の部分を、複数の細部分に分割し、これによって、前記細部分の第１の細部分内の複数の形状の座標の格納が、前記再使用バッファをオーバフローさせないようにすることと、
前記ＧＰＵによって、前記第１の細部分内に存在する第１の形状のセットの頂点の座標を決定することであって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含み、前記第１の形状のセットのうちの少なくとも１つの形状は、前記領域の境界に少なくとも１つの頂点を含み、前記第１の部分の第１の縁は、前記領域の境界のうちの１つではない、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記ＧＰＵによって、前記第１の細部分内に存在する第２の形状のセットの頂点の座標を決定することと、
前記座標が最後に決定される前記第１の形状のセットの形状は、前記座標が最初に決定される前記第２の形状のセットの形状と頂点を共有せず、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、前記第２の形状のセットのうちの少なくとも１つの形状は、前記第１の形状のセットのうちの少なくとも１つの形状と同じ、前記領域の境界に、少なくとも１つの頂点を含み、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含まず、
前記第１の細部分の形状の頂点の座標を決定した後、前記ＧＰＵによって、前記第１の部分の第２の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第２の細部分の第１の形状のセットの各形状は、前記第２の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第２の細部分の第１の形状のセットの頂点の座標を決定した後、前記ＧＰＵによって、前記第２の細部分の第２の形状のセットの頂点の座標を決定することと、
前記第２の細部分の第２の形状のセットのうちの何れの形状も、前記第２の細部分の第１の縁に頂点を含んでおらず、
前記ＧＰＵによって、前記第１の細部分の第１の形状のセットの頂点に対して決定した座標、前記第１の細部分の第２の形状のセットの頂点に対して決定した座標、前記第２の細部分の第１の形状のセットの頂点に対して決定した座標、および、前記第２の細部分の第２の形状のセットの頂点に対して決定した座標に基づいて、プリミティブをパッチに加えることと、
前記ＧＰＵによって、前記パッチのプリミティブ上でグラフィック処理を実行し、表示されるべきピクセル対するピクセル値を発生させることと、
前記ＧＰＵによって、前記ピクセル値を出力することとを含む方法。
【請求項１０】
前記領域は三角形領域であり、前記領域は３つの部分に分割される、請求項９に記載の方法。
【請求項１１】
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、請求項９に記載の方法。
【請求項１２】
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在し、前記２つの境界のうちの１つは、前記領域の境界に前記少なくとも１つの頂点を含む、前記第１の細部分の第１の形状のセットのうちの少なくとも１つの形状の境界を含む、請求項９に記載の方法。
【請求項１３】
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、請求項９に記載の方法。
【請求項１４】
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、請求項９に記載の方法。
【請求項１５】
前記領域を複数の部分に分割することはさらに、
前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することと、
前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定することと
を備える、請求項９に記載の方法。
【請求項１６】
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、請求項１５に記載の方法。
【請求項１７】
グラフィック処理ユニット（ＧＰＵ）であって、
領域をモザイク化するためのモザイク化ユニットを含む回路を備え、
前記モザイク化ユニットは、
領域を、第１の部分を含む複数の部分に分割する手段と、
前記第１の部分における形状の数と再使用バッファのサイズに基づいて、少なくとも前記第１の部分を、複数の細部分に分割し、これによって、前記細部分の第１の細部分内の複数の形状の座標の格納が、前記再使用バッファをオーバフローさせないようにする手段と、
前記第１の細部分内に存在する第１の形状のセットの頂点の座標を決定する手段であって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含み、前記第１の形状のセットのうちの少なくとも１つの形状は、前記領域の境界に少なくとも１つの頂点を含み、前記第１の部分の第１の縁は、前記領域の境界のうちの１つではない、決定する手段と、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する第２の形状のセットの頂点の座標を決定する手段と、
前記座標が最後に決定される前記第１の形状のセットの形状は、前記座標が最初に決定される前記第２の形状のセットの形状と頂点を共有せず、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、前記第２の形状のセットのうちの少なくとも１つの形状は、前記第１の形状のセットのうちの少なくとも１つの形状と同じ、前記領域の境界に、少なくとも１つの頂点を含み、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含まず、
前記第１の細部分の形状の頂点の座標を決定した後、前記第１の部分の第２の細部分の第１の形状のセットの頂点の座標を決定する手段であって、前記第２の細部分の第１の形状のセットの各形状は、前記第２の細部分の第１の縁に少なくとも１つの頂点を含む、決定する手段と、
前記第２の細部分の第１の形状のセットの頂点の座標を決定した後、前記第２の細部分の第２の形状のセットの頂点の座標を決定する手段と、
前記第２の細部分の第２の形状のセットのうちの何れの形状も、前記第２の細部分の第１の縁に頂点を含んでおらず、
前記第１の細部分の第１の形状のセットに対して決定した座標、前記第１の細部分の第２の形状のセットに対して決定した座標、前記第２の細部分の第１の形状のセットに対して決定した座標、および、グラフィック処理のために前記第２の細部分の第２の形状のセットに対して決定した座標を出力する手段とを備えるＧＰＵ。
【請求項１８】
前記領域は三角形領域であり、前記領域は３つの部分に分割される、請求項１７に記載のＧＰＵ。
【請求項１９】
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、請求項１７に記載のＧＰＵ。
【請求項２０】
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在し、前記２つの境界のうちの１つは、前記領域の境界に前記少なくとも１つの頂点を含む、前記第１の細部分の第１の形状のセットのうちの少なくとも１つの形状の境界を含む、請求項１７に記載のＧＰＵ。
【請求項２１】
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、請求項１７に記載のＧＰＵ。
【請求項２２】
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、請求項１７に記載のＧＰＵ。
【請求項２３】
前記領域を複数の部分に分割することは、前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することをさらに備え、
前記モザイク化ユニットはさらに、前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定するように構成された、請求項１７に記載のＧＰＵ。
【請求項２４】
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、請求項２３に記載のＧＰＵ。
【請求項２５】
信号ではない非一時的コンピュータ読取可能な媒体において、実行された場合に、プログラム可能なプロセッサに、
領域を、第１の部分を含む複数の部分に分割することと、
前記第１の部分における形状の数と再使用バッファのサイズに基づいて、少なくとも前記第１の部分を、複数の細部分に分割し、これによって、前記細部分の第１の細部分内の複数の形状の座標の格納が、前記再使用バッファをオーバフローさせないようにすることと、
前記第１の細部分内に存在する第１の形状のセットの頂点の座標を決定することであって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含み、前記第１の形状のセットのうちの少なくとも１つの形状は、前記領域の境界に少なくとも１つの頂点を含み、前記第１の部分の第１の縁は、前記領域の境界のうちの１つではない、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する第２の形状のセットの頂点の座標を決定することと、
前記座標が最後に決定される前記第１の形状のセットの形状は、前記座標が最初に決定される前記第２の形状のセットの形状と頂点を共有せず、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、前記第２の形状のセットのうちの少なくとも１つの形状は、前記第１の形状のセットのうちの少なくとも１つの形状と同じ、前記領域の境界に、少なくとも１つの頂点を含み、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含まず、
前記第１の細部分の形状の頂点の座標を決定した後、前記第１の部分の第２の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第２の細部分の第１の形状のセットの各形状は、前記第２の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第２の細部分の第１の形状のセットの頂点の座標を決定した後、前記第２の細部分の第２の形状のセットの頂点の座標を決定することと、
前記第２の細部分の第２の形状のセットのうちの何れの形状も、前記第２の細部分の第１の縁に頂点を含んでおらず、
前記第１の細部分の第１の形状のセットに対して決定した座標、前記第１の細部分の第２の形状のセットに対して決定した座標、前記第２の細部分の第１の形状のセットに対して決定した座標、および、グラフィック処理のために前記第２の細部分の第２の形状のセットに対して決定した座標を出力することと、を実行させる命令を備えるコンピュータ読取可能な媒体。
【請求項２６】
前記領域は三角形領域であり、前記領域は３つの部分に分割される、請求項２５に記載のコンピュータ読取可能な媒体。
【請求項２７】
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、請求項２５に記載のコンピュータ読取可能な媒体。
【請求項２８】
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在し、前記２つの境界のうちの１つは、前記領域の境界に前記少なくとも１つの頂点を含む、前記第１の細部分の第１の形状のセットのうちの少なくとも１つの形状の境界を含む、請求項２５に記載のコンピュータ読取可能な媒体。
【請求項２９】
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、請求項２５に記載のコンピュータ読取可能な媒体。
【請求項３０】
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、請求項２５に記載のコンピュータ読取可能な媒体。
【請求項３１】
前記プロセッサに、前記領域を複数の部分に分割することを実行させる命令は、さらに、
前記プロセッサに、前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することと、
前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定することとを実行させる命令を備える、請求項２５に記載のコンピュータ読取可能な媒体。
【請求項３２】
前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、請求項３１に記載のコンピュータ読取可能な媒体。
【請求項３３】
デバイスであって、
中央処理ユニット（ＣＰＵ）と、
領域を示す情報を受け取るように構成されているグラフィクス処理ユニット（ＧＰＵ）とを備え、
前記ＧＰＵは、前記領域をモザイク化するためのモザイク化ユニットを備え、
前記モザイク化ユニットは、
前記領域を、第１の部分を含む複数の部分に分割することと、
前記第１の部分における形状の数と再使用バッファのサイズに基づいて、少なくとも前記第１の部分を、複数の細部分に分割し、これによって、前記細部分の第１の細部分内の複数の形状の座標の格納が、前記再使用バッファをオーバフローさせないようにすることと、
前記第１の細部分内に存在する第１の形状のセットの頂点の座標を決定することであって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含み、前記第１の形状のセットのうちの少なくとも１つの形状は、前記領域の境界に少なくとも１つの頂点を含み、前記第１の部分の第１の縁は、前記領域の境界のうちの１つではない、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する第２の形状のセットの頂点の座標を決定することと、
前記モザイク化ユニットが座標を最後に決定する前記第１の形状のセットの形状は、前記モザイク化ユニットが座標を最初に決定する前記第２の形状のセットの形状と頂点を共有せず、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、前記第２の形状のセットのうちの少なくとも１つの形状は、前記第１の形状のセットのうちの少なくとも１つの形状と同じ、前記領域の境界に、少なくとも１つの頂点を含み、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含まず、
前記第１の細部分の形状の頂点の座標を決定した後、前記第１の部分の第２の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第２の細部分の第１の形状のセットの各形状は、前記第２の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第２の細部分の第１の形状のセットの頂点の座標を決定した後、前記第２の細部分の第２の形状のセットの頂点の座標を決定することと、
前記第２の細部分の第２の形状のセットのうちの何れの形状も、前記第２の細部分の第１の縁に頂点を含んでおらず、
前記第１の細部分の第１の形状のセットに対して決定した座標、前記第１の細部分の第２の形状のセットに対して決定した座標、前記第２の細部分の第１の形状のセットに対して決定した座標、および、グラフィック処理のために前記第２の細部分の第２の形状のセットに対して決定した座標を出力することと、を実行するように構成されているデバイス。
【請求項３４】
前記領域は三角形領域であり、前記領域は３つの部分に分割される、請求項３３に記載のデバイス。
【請求項３５】
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、請求項３３に記載のデバイス。
【請求項３６】
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在し、前記２つの境界のうちの１つは、前記領域の境界に前記少なくとも１つの頂点を含む、前記第１の細部分の第１の形状のセットのうちの少なくとも１つの形状の境界を含む、請求項３３に記載のデバイス。
【請求項３７】
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、請求項３３に記載のデバイス。
【請求項３８】
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、請求項３３に記載のデバイス。
【請求項３９】
前記領域を分割するために、前記モザイク化ユニットは、前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割するように構成され、
前記モザイク化ユニットはさらに、前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定するように構成された、請求項３３に記載のデバイス。
【請求項４０】
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、請求項３９に記載のデバイス。
【請求項４１】
前記モザイク化ユニットに結合され、前記領域内の形状の頂点の座標を、パッチの頂点の座標へ変換するように構成された領域シェダーと、
前記領域シェダーに結合され、前記領域シェダーからのパッチの頂点の座標を格納するように構成された頂点再使用バッファと、
前記再使用バッファ内のコントローラであって、前記モザイク化によって必要とされる頂点の座標を前記頂点再使用バッファが格納している場合を判定するように構成された再使用制御ロジックを含むコントローラと
をさらに備え、
前記モザイク化ユニットはさらに、前記頂点再使用バッファが前記モザイク化ユニットによって必要とされる頂点の座標を格納していないことを前記コントローラが示した場合に、前記領域シェダーを起動し、前記頂点再使用バッファが前記モザイク化ユニットによって必要とされる頂点の座標を格納していることを前記コントローラが示した場合に、前記頂点再使用バッファからの座標を読み取るように構成された、請求項３３に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビデオ処理のための技法に関し、さらに詳しくは、モザイク化されたプリミティブを用いたビデオ処理に関する。
【背景技術】
【０００２】
コンピューティング・デバイスは、高度な二次元（２Ｄ）および三次元（３Ｄ）のグラフィクス・アプリケーションをますます必要としている。例えば、コンピューティング・デバイスは、高度なグラフィクス・レンダリングを必要とするゲーム、キャラクタ・アニメーション、グラフィック・メニュー・システム、およびその他のアプリケーションをますます提案している。この高度なグラフィクス・レンダリングは、特に、３Ｄグラフィクスの場合、相当な量のデータ処理を含んでいる。高度なグラフィクス・レンダリングの品質は、処理リソースの量、利用可能な処理リソースの能力、利用可能な電力の量等によって制限されうる。
【０００３】
例えば、秒毎のフレームとして測定されるような、高いレンダリング・レートにおける高度なグラフィクス・レンダリングを必要とするアプリケーションは、利用可能なコンピューティング・リソースに相当な負担を課しうる。利用可能なコンピューティング・リソースに課された負担は、コンピューティング・リソースに課された重い負荷により、他のアプリケーションにおけるパフォーマンスの低下、低品質のグラフィクス・レンダリング、またはその両方をもたらしうる。例えば、携帯情報端末（ＰＤＡ）、無線通信デバイス、グローバル・ポジショニング・デバイス等のようなモバイル・コンピューティング・デバイスのコンテキストでは、グラフィクス・レンダリングのために必要な、計算上大容量のメモリを使用するデータ処理は、モバイル・コンピューティング・デバイスの利用可能な電力のうちのかなりの量を消費しうる。
【０００４】
マルチメディア・プロセッサは、グラフィクス処理ユニット（ＧＰＵ）に結合された汎用中央処理ユニット（ＣＰＵ）を含みうる。ＧＰＵは、コンピュータ化されたグラフィックスをディスプレイ上に表示するために、グラフィクス・レンダリング演算を実行することに特化されている。ＧＰＵは、広範な複雑なグラフィック関連アルゴリズムのために、従来の汎用ＣＰＵよりもより効率的な処理を提供する、高度な並列構造で構築されている。ＣＰＵにおいて動作しているグラフィック関連アルゴリズムが、グラフィクス処理を必要とする場合、このＣＰＵは、グラフィックスをモザイク化し、ディスプレイへのレンダリングのためにこれらモザイクをＧＰＵへ提供する。ＧＰＵの高度な並列特性によって、ＧＰＵは、ＣＰＵを用いて画像をディスプレイ上に直接的に描画するよりもより迅速に、ディスプレイ上に複雑な３次元画像を生成することが可能となる。ＧＰＵは、広範なアプリケーションにおいて使用され、例えばビデオ・ゲーム・アプリケーション、複雑なグラフィック・ユーザ・インタフェース・アプリケーション、エンジニアリング・アプリケーションまたは芸術的なアプリケーションのためのコンピュータ支援設計プログラム、または、２Ｄグラフィクスまたは３Ｄグラフィクスを用いるその他任意のタイプのソフトウェア・アプリケーションのような非常に一般的な、大容量のメモリを使用するグラフィック・アプリケーションである。
【０００５】
現代のＧＰＵアーキテクチャは、モザイク化ステージを含みうる。モザイク化ステージは、ＧＰＵ内のハードウェアであることができ、特定の固定機能を実行するように構成されうる。一例として、ＧＰＵのモザイク化ステージは、クワッド領域または三角形領域を、より小さな三角形にモザイク化しうる。この領域は、画像の一部であると見なされ、４つの側（クワッド領域）または３つの側（三角形領域）を含みうる。頂点は、制限されたサイズの頂点再使用バッファにバッファされ、三角形の接続情報が出力される。頂点再使用バッファのサイズが制限されていることにより、接続情報が到来すると、いくつかの頂点が再計算されねばならない。いくつかの例示的なアプローチは、クロック・サイクル当たり約１つのプリミティブを生成する。しかしながら、これは必ずしもすべての実施のためのケースではない。
【発明の概要】
【０００６】
一般に、本開示に記載された技法は、モザイク化のために使用される領域内のリングの縁の第１の部分および第２の部分に沿った点のための座標を決定することに向けられている。例において、例えば、モザイク部に配置された点生成器が、所与のモザイク化レベルについてモザイク化三角形が計算される順序またはシーケンスに従って、領域を処理しうる。モザイク化ユニットから出力されるプリミティブの順序は、後続するステージにおける頂点再使用に影響しうる。従って、本技法は、頂点再使用バッファ・サイズ制限内での頂点の再使用を可能にする順序付け（しばしば、ウォーキングと称される）を選択しうる。本明細書に記載されるように、ウォーキングは、計算された頂点情報が再使用されるように実行されうる。
【０００７】
本明細書に記載されたさまざまなシステム、方法、およびデバイスは、計算される必要のある頂点の時間座標の数を最小化するように、頂点再使用バッファを効率的に利用するために、変更された出力プリミティブの順序を提供する。これは、領域シェダー起動の回数を低減しうる。領域シェダーは、領域シェダーからの使用ダウンストリームのために、頂点の座標を、（例えば、３Ｄ空間における点のような）ある種の三角形に変更する。領域シェダー起動の回数を低減することは、電力を節約し、パフォーマンスを高めうる。
【０００８】
一例において、本開示は、領域をモザイク化するためのモザイク化ユニットを記載している。ここで、モザイク化ユニットは、領域を、第１の部分を含む複数の部分に分割する。モザイク化ユニットは、第１の部分内に存在する第１の形状のセットの頂点の座標を決定する。ここで、第１の形状のセットの各形状は、第１の部分の第１の縁に少なくとも１つの頂点を含む。第１の形状のセットの頂点の座標を決定した後、第１の部分内に存在する第２の形状のセットの頂点の座標を決定する。第２の形状のセットの各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。さらに、第２の形状のセットの形状のうちのいずれも、第１の部分の第１の縁に頂点を含んでいない。
【０００９】
別の例において、本開示は、領域を、第１の部分を含む複数の部分に分割することを含む、領域をモザイク化する方法を記載した。この方法はまた、第１の部分内に存在する第１の形状のセットの頂点の座標を決定する。ここで、第１の形状のセットの各形状は、第１の部分の第１の縁に少なくとも１つの頂点を含む。第１の形状のセットの頂点の座標を決定した後、第１の部分内に存在する第２の形状のセットの頂点の座標を決定する。第２の形状のセットの各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。さらに、第２の形状のセットの形状のうちのいずれも、第１の部分の第１の縁に頂点を含んでいない。
【００１０】
別の例において、本開示は、領域をモザイク化するためのモザイク化ユニットを記載した。このモザイク化ユニットは、領域を、第１の部分を含む複数の部分へ分割する手段を含む。モザイク化ユニットはさらに、第１の部分内に存在する第１の形状のセットの頂点の座標を決定する手段を含む。ここで、第１の形状のセットの各形状は、第１の部分の第１の縁に少なくとも１つの頂点を含む。第１の形状のセットの頂点の座標を決定した後、第１の部分内に存在する第２の形状のセットの頂点の座標を決定する手段。第２の形状のセットの各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。第２の形状のセットの形状のうちのいずれも、第１の部分の第１の縁に頂点を含んでいない。
【００１１】
別の例において、本開示は、シンク・デバイスにおいて実行された場合、プログラマブル・プロセッサに対して、以下のステップを実行することによって領域をモザイク化させる命令を備える非一時的なコンピュータ読取可能な媒体を記載した。プロセッサは、領域を、第１の部分を含む複数の部分に分割する。プロセッサは、第１の部分内に存在する第１の形状のセットの頂点の座標を決定する。ここで、第１の形状のセットの各形状は、第１の部分の第１の縁に少なくとも１つの頂点を含む。第１の形状のセットの頂点の座標を決定した後、第１の部分内に存在する第２の形状のセットの頂点の座標を決定する。第２の形状のセットの各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。第２の形状のセットの形状のうちのいずれも、第１の部分の第１の縁に頂点を含んでいない。
【００１２】
別の例において、本開示は、中央処理ユニット（ＣＰＵ）およびグラフィック処理ユニット（ＧＰＵ）を含むデバイスを記載している。ＧＰＵは、領域をモザイク化するためのモザイク化ユニットを含む。モザイク化ユニットは、領域を、第１の部分を含む複数の部分に分割するように構成される。モザイク化ユニットはまた、第１の部分内に存在する第１の形状のセットの頂点の座標を決定するように構成される。ここで、第１の形状のセットの各形状は、第１の部分の第１の縁に少なくとも１つの頂点を含む。第１の形状のセットの頂点の座標を決定した後、第１の部分内に存在する第２の形状のセットの頂点の座標を決定する。第２の形状のセットの各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。第２の形状のセットの形状のうちのいずれも、第１の部分の第１の縁に頂点を含んでいない。
【００１３】
１つまたは複数の例の詳細が、添付図面および以下の説明において述べられる。他の特徴、目的、および利点が、説明およびこれら図面から、および特許請求の範囲から明らかになるだろう。
【図面の簡単な説明】
【００１４】
【図１】図１は、本開示に記載された１つまたは複数の例に従って、グラフィックス処理パイプラインの例を実施しうるグラフィクス処理ユニット（ＧＰＵ）の例を例示するブロック図である。
【図２】図２は、本開示に記載された１つまたは複数の例に従って、グラフィクス処理パイプラインの別の例を実施しうるＧＰＵの別の例を例示するブロック図である。
【図３】図３は、モザイク化のための頂点を出力する例示的な技法を例示する図である。
【図４】図４は、図３に例示された技法で再計算される必要がありうる点を例示する図である。
【図５Ａ】図５Ａは、本開示に記載された１つまたは複数の例に従って、複数のプリミティブに分割された領域を例示するグラフィック図である。
【図５Ｂ】図５Ｂは、本開示に記載された１つまたは複数の例に従って、複数のプリミティブに分割された領域を例示するグラフィック図である。
【図６】図６は、本開示に記載された１つまたは複数の例に従って、頂点再使用バッファに接続されたモザイク化ユニットの例を例示するブロック図である。
【図７】図７は、本開示に記載された１つまたは複数の例に従って、三角形領域の頂点を出力するための例示的な技法を例示する図である。
【図８】図８は、本開示に記載された１つまたは複数の例に従って、クワッド領域の頂点を出力するための例示的な技法を例示する図である。
【図９】図９は、本開示に記載された１つまたは複数の例に従って、クワッド領域の頂点を出力するための別の例示的な技法を例示する図である。
【図１０】図１０は、本開示に記載された１つまたは複数の例に従って、クワッド領域の頂点を出力するための別の例示的な技法を例示する図である。
【図１１】図１１は、本開示に記載された１つまたは複数の例に従って、奇数のセグメントを持つ縁を有する三角形領域のための例示的な技法を例示する図である。
【図１２】図１２は、本開示に記載された１つまたは複数の例に従って、奇数のセグメントを持つ縁を有するクワッド領域のための例示的な技法を例示する図である。
【図１３】図１３は、本開示に記載された１つまたは複数の例に従って、領域をモザイク化する例示的な方法を例示するフローチャートである。
【図１４】図１４は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの比較を例示する図である。
【図１５】図１５は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。
【図１６】図１６は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。
【図１７】図１７は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。
【図１８】図１８は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。
【発明を実施するための形態】
【００１５】
例えばラップトップ・コンピュータ、タブレット・コンピュータ、スマートフォン、およびデジタル・メディア・プレーヤのような現代のモバイル・デバイスは、ＣＰＵ（中央処理ユニット）、グラフィクス処理ユニット（ＧＰＵ）、およびシステム・メモリを含みうる。アプリケーションを実行することの一部としてグラフィクスをレンダリングする場合、ＣＰＵは、ＧＰＵに対して命令およびグラフィクス・データを送信する。いくつかの例において、グラフィクス・データは、２Ｄ空間または３Ｄ空間における点を記載する１つまたは複数のデータ構造を備えうる頂点の形態をとりうる。
【００１６】
ＣＰＵにおいて動作しているアプリケーションは、アプリケーション・プログラミング・インタフェース（ＡＰＩ）に従ってＧＰＵと通信しうる。例えば、このアプリケーションは、２つの例として、Ｍｉｃｒｏｓｏｆｔ（Ｒ）によって開発されたＤｉｒｅｃｔＸ（Ｒ）ＡＰＩ、または、Ｋｈｏｒｏｎｏｓグループによって開発されたＯｐｅｎＧＬ（Ｒ）ＡＰＩに従って、ＧＰＵと通信しうる。例示の目的のために、および理解を容易にするために、本開示に記載された技法は、一般に、ＤｉｒｅｃｔＸ  ＡＰＩおよびＯｐｅｎＧＬ  ＡＰＩのコンテキストで記載される。しかしながら、本開示の態様は、ＤｉｒｅｃｔＸ  ＡＰＩおよびＯｐｅｎＧＬ  ＡＰＩに限定されると考えられるべきではなく、本開示に記載された技法は、他のＡＰＩにも同様に拡張されうる。
【００１７】
ＤｉｒｅｃｔＸおよびＯｐｅｎＧＬはおのおの、ＧＰＵによって実施されるべきであるグラフィクス処理パイプラインを定義する。これらのグラフィクス処理パイプラインは、プログラマブル・ステージのみならず、固定機能ステージとの組み合わせを含みうる。例えばＤｉｒｅｃｔ３Ｄ  １１  ＡＰＩおよびＯｐｅｎＧＬ  ４．ｘ  ＡＰＩのようなＡＰＩのいくつかの最近のバージョンは、ＧＰＵによって処理されるべきであるモザイク化処理を含む。
【００１８】
このモザイク化処理は、オブジェクトの面の一部分（領域と称される）を、複数のより小さな部分に分割することと、これらより小さな部分をともに相互接続することとを称する。その結果、モザイク化の前の面に比べて、より精細な面となる。モザイク化によって、ＣＰＵにおいて動作しているアプリケーションは、少ない点しか必要としない低解像度の面を定義することが可能となり、ＧＰＵは、より高解像度の面を生成することが可能となる。
【００１９】
例えば、モザイク化ステージは、領域を複数の三角形に分割するハードウェア・ユニットでありうる。その後、領域シェダーが、領域内の三角形の頂点を取り、これら頂点をパッチに変換する。このように面を複数のプリミティブに変換した結果、より精細な面が得られるようになる。ＧＰＵは、高解像度の面の情報を受け取るのではなく、粗い面の情報を受け取って、高解像度の面を生成しうる。高解像度の面を定義するために必要な情報の量は、粗い解像度の面を定義するために必要な情報の量よりもはるかに多くなりうるので、粗い面ではなく、高解像度の面の情報を受け取ることは、帯域幅的に非効率でありうる。例として、ＧＰＵのモザイク化ステージは、領域を受け取りうる。ＧＰＵのモザイク化ステージは、一例として、領域をより小さな三角形に分割しうる。より小さな三角形がともに接続された場合、結果として得られる画像部分は、オリジナルの画像部分よりもより詳細に見えうる。本開示に記載された技法によれば、領域をより小さな三角形に分割することと、その後のより小さな三角形の接続は、モザイク化として考えられうる。
【００２０】
モザイク化で、計算効率化が実現されうる。なぜなら、ＧＰＵで動作しているアプリケーションは、より高解像度の面を生成する必要はなく、高解像度の面を生成するという、ＧＰＵに対する負荷を低減しうるからである。さらに、帯域幅的な効率化も実現されうる。なぜなら、低解像度の面は、高解像度の面に比べてより少ない点しか含んでいないので、ＣＰＵは、面のより少ない点の情報しか送信する必要はなく、ＧＰＵは、面のより少ない点しか取得する必要がないからである。
【００２１】
前述したように、ＧＰＵは、モザイク化処理をパッチに適用する。パッチは、特殊化されたタイプのプリミティブであると考えられうる。パッチは、面の一部分をともに形成する１つまたは複数の制御点によって定義される。例えば、球体のようなオブジェクトが、複数の面に分割されうる。この例において、これら面は、組み合わされた場合、球体を形成する曲面でありうる。これら面のおのおのは、１つまたは複数のパッチへ分割されうる。ここで、これらパッチのおのおのは、１つまたは複数の制御点によって定義される。
【００２２】
一般に、例えばモザイク化ステージ１２４のようなモザイク化ユニットは、領域を、第１の部分を含む複数の部分に分割しうる。モザイク化ユニットは、第１の部分内に存在する第１の形状のセットの頂点の座標を決定しうる。ここで、第１の形状のセットの各形状は、第１の部分の第１の縁に少なくとも１つの頂点を含む。例えば、モザイク部、すなわちモザイク化ユニットに配置された点生成器は、「ウォーキング」によって領域を処理しうる。「ウォーキング」は、所与のモザイク化レベルについてモザイク化三角形が計算されるシーケンスまたは順序を示す。モザイク化ユニットから出力されるプリミティブの順序は、後続するステージにおける頂点再使用に影響しうる。従って、頂点再使用バッファ・サイズ制限内の頂点の再使用を可能とする順序が選択されうる。本明細書に記載されているように、計算された頂点情報が領域シェダーの実行を最小化するために再使用されうるように、ウォーキングは実行されうる。
【００２３】
本明細書に記載されたさまざまなシステム、方法、およびデバイスは、頂点ミスを最小化するように、頂点再使用バッファを効率的に利用するために、変更された出力プリミティブの順序を与える。これは、領域シェダー起動の回数を低減しうる。領域シェダーは、領域内の三角形の頂点を取り、これら頂点を、領域シェダーからの使用ダウンストリームのために、パッチの頂点に変換する。領域シェダー起動の回数を低減することは、電力を節約し、パフォーマンスを高めうる。
【００２４】
モザイク化ユニットから出力されるプリミティブの順序を決定する場合、例えば、以下が考慮されうる。（１）クロック・サイクル毎に１つのプリミティブでありうる現在のモザイク化速度は、一般に、維持される必要がありうる。（２）アルゴリズムが複雑すぎるようになってはならない。および（３）変更はモザイク化ユニット内でのみなされることが好適でありうる。いくつかの例では、再使用ロジックに何ら変更はなされないかもしれない。再使用ロジックは、例えば排他的ＯＲゲート（ＸＯＲゲート）のように、必要とされる頂点情報が頂点再使用バッファ内に格納されているか否かを判定するために使用されうる一連のハードウェア・コンパレータである。
【００２５】
一般に、再使用は、頂点再使用バッファをオーバフローさせることなく、多くの三角形が１つのセットとして「ウォーク」されうるまで、領域を、さらにより小さな部分または細部分に分割することによって達成されうる。例えば、細部分または部分は、細部分または部分の全体が、頂点再使用バッファをオーバフローさせることなくウォークされることを可能にするのに十分な小数の三角形しか有していない。三角形は３つの頂点を有しているが、頂点は三角形を共有しているので、格納される必要のある頂点の総数は、一般に、部分または細部分における三角形の数の３倍にはならないであろうことが理解されるだろう。さらに、部分または細部分におけるいくつかの頂点は、例えば、その頂点のための頂点情報がもはや必要とされない場合、後続する領域シェダー起動を必要とすることなくオーバライトされうることも理解されるだろう。いくつかの例では、本技法は、３２セットの格納場所を備えた頂点再使用バッファを仮定しているが、本開示に記載された技法は、３２セットの格納場所を備えた頂点再使用バッファに限定されない。あるいは、部分または細部分は、例えば、３２セットの頂点情報よりも大きくなりうるが、ウォークされる経路は、１つまたは複数の再使用が生じるように構成されうる。例えば、必要とされるすべての再使用がオーバライト前に生じるように、ウォークする経路を選択することが可能でありうる。他のケースでは、頂点再使用バッファに格納された頂点データの少なくとも一部を再使用しながら、いくつかのオーバライトが生じることを可能にする経路を選択することが有利でありうる。
【００２６】
制御点が、座標（例えば、２次元パッチについてｘおよびｙ座標、または、３次元パッチについてｘ、ｙ、およびｚ座標）によって定義され、制御点は、パッチの頂点として考えられうる。パッチには、任意の数の制御点が存在しうる。例えば、いくつかの例において、パッチにおける制御点の数は、１つの制御点から最大３２までの制御点の間でありうる。パッチにおける制御点の数は、固定されうるか、または、ユーザ定義されうる。
【００２７】
他のプリミティブ・タイプと異なり、パッチ内の制御点は、任意の方式で互いに接続されうる。言い換えれば、パッチの制御点が接続される好適な方式はない。例えば、標準的な三角形プリミティブは、３つの頂点を含み、このプリミティブは、３つの頂点が互いに接続されて三角形を形成する特殊な手法で定義される。一方、制御点は、形状を形成するためにいかなる特殊な手法でも接続される必要はない。そうではなく、一例として、パッチにおけるいくつかの制御点は、三角形を形成するために互いに接続され、同じパッチ内の別の制御点は、長方形を形成するために互いに接続され、同じパッチ内のさらに別の制御点は、八角形を形成するために互いに接続されうる。別の例として、同じタイプの形状を形成するために制御点が互いに接続される（例えば、複数の三角形を形成するためにのみ接続される）ことも可能でありうる。
【００２８】
面のパッチを定義する制御点は、低解像度の面を定義しうる。モザイク化処理を用いて、より高解像度の面を生成するためのさらなる詳細が追加される。例えば、球体の例に戻って述べる。制御点が球体を形成するために使用されたならば、球体は、平滑な球面ではなく、階段状の点を持つ鋸歯に見えるだろう。モザイク化の後、追加の点が接続された場合に、形状があたかも平滑な球体に見えるように、追加の点が加えられる。
【００２９】
モザイク化処理は、ＤｉｒｅｃｔＸ  ＡＰＩおよびＯｐｅｎＧＬ  ４．ｘ  ＡＰＩの両方に従って、２つのシェダーと固定機能ユニットを含む。シェダーは、ＧＰＵのプログラマブル・シェダー・コアで動作するソフトウェア・アプリケーションであり、本質的な機能柔軟性を提供する。例えば、シェダーは、高い柔軟度で、グラフィックス・ハードウェアにおけるレンダリング効果を計算するために使用されうる。固定機能ユニットは、固定機能を実行するハードワイヤ論理ユニットであり、機能柔軟性を提供しないことがありうる。しかしながら、さらなる機能柔軟性を提供するために、プログラマブル・シェダー・コーダを用いて固定機能ユニットの機能を実施することが可能でありうる。例示の目的のためのみで、固定機能ユニットのために本開示において記載された機能は、限定された機能柔軟性しか提供しない固定機能ユニットを用いて記載されている。
【００３０】
ＤｉｒｅｃｔＸ  ＡＰＩでは、モザイク化処理を実行するように構成されたグラフィック処理パイプラインは、領域シェダー・ステージに結合されたモザイク化ステージに結合されたハル・シェダー・ステージを含んでいる。ＤｉｒｅｃｔＸ  ＡＰＩにおける領域シェダー・ステージおよびハル（ｈｕｌｌ）シェダー・ステージは、モザイク化処理の２つのシェダーを形成し、モザイク化ステージは、モザイク化処理の固定機能ユニットを形成しうる。グラフィックス処理パイプラインにおけるその他のステージは、モザイク化処理を実行しないＤｉｒｅｃｔＸ  ＡＰＩにおけるステージに類似している。
【００３１】
ＯｐｅｎＧＬ  ４．ｘ  ＡＰＩでは、モザイク化処理を実行するように構成されたグラフィック処理パイプラインは、モザイク化評価シェダーに結合されたプリミティブ生成器に結合されたモザイク化処理シェダーを含んでいる。ＯｐｅｎＧＬ  ４．ｘにおけるモザイク化制御シェダーおよびモザイク化評価シェダーは、モザイク化処理の２つのシェダーを形成し、プリミティブ生成器は、モザイク化処理の固定機能ユニットを形成しうる。グラフィクス処理パイプラインにおけるその他のステージは、モザイク化処理を実施しないＯｐｅｎＧＬ  ＡＰＩにおけるものに類似しうる。
【００３２】
図１は、本開示に記載された１つまたは複数の例に従って、グラフィックス処理パイプラインの例を実施しうるグラフィック処理ユニット（ＧＰＵ）の例を例示するブロック図である。図１は、グラフィック処理ユニット（ＧＰＵ）１１２、システム・メモリ１１４、および中央処理ユニット（ＣＰＵ）１１６を含むデバイス１１０を例示する。デバイス１１０の例は、限定されないが、モバイル無線電話、ビデオ・ディスプレイを含むビデオ・ゲーム・コンソール、モバイル・ビデオ会議ユニット、ラップトップ・コンピュータ、デスクトップ・コンピュータ、テレビジョン・セット・トップ・ボックス等
を含んでいる。
【００３３】
ＣＰＵ１１６は、様々なタイプのアプリケーションを実行しうる。アプリケーションの例は、ウェブ・ブラウザ、電子メール・アプリケーション、スプレッドシート、ビデオ・ゲーム、または、表示のために視覚可能なオブジェクトを生成するその他のアプリケーションを含む。１つまたは複数のアプリケーションの実行のための命令が、システム・メモリ１１４内に格納されうる。ＣＰＵ１１６は、さらなる処理のために、生成された視覚可能なオブジェクトのグラフィック・データをＧＰＵ１１２へ送信しうる。
【００３４】
例えば、ＧＰＵ１１２は、グラフィック・データを処理するために良好に機能する大量の並列処理を可能にする専用のハードウェアでありうる。このように、ＣＰＵ１１６は、ＧＰＵ１１２によってより良好に取り扱われるグラフィック処理の負荷を軽減する。ＣＰＵ１１６は、特定のアプリケーション処理インタフェース（ＡＰＩ）に従ってＧＰＵ１１２と通信しうる。そのようなＡＰＩの例は、Ｍｉｃｒｏｓｏｆｔ（Ｒ）によるＤｉｒｅｃｔＸ（Ｒ）ＡＰＩと、ＫｈｒｏｎｏｓグループによるＯｐｅｎＧＬ（Ｒ）とを含む。しかしながら、本開示の態様は、ＤｉｒｅｃｔＸ  ＡＰＩおよびＯｐｅｎＧＬ  ＡＰＩに限定されず、開発済み、開発中、または将来開発されるべきその他のタイプのＡＰＩに拡張されうる。
【００３５】
ＧＰＵ１１２がＣＰＵ１１６からグラフィクス・データを受け取る方式を定義することに加えて、ＡＰＩは、ＧＰＵ１１２が実施すべき特定のグラフィクス処理パイプラインを定義しうる。ＧＰＵ１１２は、図１において、Ｄｉｒｅｃｔ３Ｄ  １１  ＡＰＩによって定義されたグラフィクス処理パイプラインを例示する。より詳細に記載されるように、図２は、ＯｐｅｎＧＬ  ４．ｘ  ＡＰＩのグラフィクス処理パイプラインを例示する。
【００３６】
ＣＰＵ１１６およびＧＰＵ１１２の例は、限定されないが、デジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル論理アレイ（ＦＰＧＡ）、またはその他等価な統合または離散論理回路を含む。いくつかの例において、ＧＰＵ１１２は、グラフィクス処理のために適切な大量の並列処理機能をＧＰＵ１１２に提供する集積および／または離散論理回路を含む専用のハードウェアでありうる。いくつかの事例では、ＧＰＵ１１２はまた、汎用処理を含み、汎用ＧＰＵ（ＧＰＧＰＵ）と称されうる。本開示に記載されている技法はまた、ＧＰＵ１１２がＧＰＧＰＵである例に適用可能でありうる。
【００３７】
システム・メモリ１１４は、１つまたは複数のコンピュータ読取可能な記憶媒体を備えうる。システム・メモリ１１４の例は、限定されないが、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル読取専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、または命令および／またはデータ命令の形態で所望プログラム・コードを伝送または格納するために使用され、かつ、コンピュータまたはプロセッサによってアクセスされうるその他任意の媒体を含む。
【００３８】
いくつかの態様では、本開示において、システム・メモリ１１４は、ＣＰＵ１１６および／またはＧＰＵ１１２に対して、ＣＰＵ１１６およびＧＰＵ１１２に割り当てられた機構を実行させる命令を含みうる。したがって、システム・メモリ１１４は、例えばＣＰＵ１１６およびＧＰＵ１１２のような１つまたは複数のプロセッサに対して、さまざまな機能を実行させる命令を備えるコンピュータ読取可能な記憶媒体でありうる。
【００３９】
システム・メモリ１１４は、いくつかの例では、非一時的な記憶媒体として考えられうる。「非一時的な」という用語は、記憶媒体が、搬送波または伝搬信号で具現化されないことを示しうる。しかしながら、「非一時的な」という用語は、システム・メモリ１１４が非移動可能であることを意味するように解釈されるべきではない。一例として、システム・メモリ１１４は、デバイス１１０から取り除かれ、別のデバイスへ移動されうる。別の例として、システム・メモリ１１４に実質的に類似したシステム・メモリが、デバイス１１０へ挿入されうる。ある例において、非一時的な記憶媒体は、（例えば、ＲＡＭにおいて）経時的に変動しうるデータを格納しうる。
【００４０】
ＣＰＵ１１６におけるアプリケーションの実行が、ＣＰＵ１１６に対して、視覚可能なコンテンツを生成するためにともに接続する複数のプリミティブを生成させる。プリミティブの例は、点、線、三角形、正方形、またはその他の任意のタイプの多角形を含んでいる。ＣＰＵ１１６は、それぞれの頂点によってこれらのプリミティブを定義しうる。例えば、ＣＰＵ１１６は、頂点のための座標値および色値を定義しうる。これら座標値は、３次元（３Ｄ）座標または２Ｄ座標でありうる。
【００４１】
本開示に記載された技法に従って、いくつかのケースでは、ＣＰＵ１１６はまた、パッチと称される特別なタイプのプリミティブを生成しうる。その他のプリミティブ・タイプに類似して、パッチは、パッチの制御点と称される複数の頂点によって定義されうる。他のプリミティブ・タイプとは異なり、パッチは、任意の特定の形状ではないことがありうる。例えば、ＣＰＵ１１６は、任意の方式でパッチの制御点を相互接続しうる。これによって、相互接続された制御点は、所望される任意の形状を形成できるようになる。例えば三角形のようなその他のプリミティブ・タイプのために、ＣＰＵ１１６は、（例えば、頂点の相互接続の結果、三角形になるように）頂点が相互接続される具体的な方式を定義しうる。
【００４２】
また、他のプリミティブ・タイプとは異なり、パッチにおける制御点の数は可変でありうる。例えば、ＣＰＵ１１６において動作しているアプリケーションが、パッチのために許可されている制御点の最大数を定義しうるか、あるいは、制御点の最大数は、ユーザ定義されうる。いくつかの例において、パッチにおける制御点の数は、１乃至３２の制御点でありうるが、しかしながら、本開示に記載された技法は、そのように限定されない。
【００４３】
ＣＰＵ１１６は、モザイク化の目的のために制御パッチを利用しうる。前述したように、モザイク化処理は、ＣＰＵ１１６が、低解像度において視覚可能なオブジェクトの面の一部を定義し、この面のより高い解像度のバージョンを生成するために、この部分をモザイク化する処理を称する。例えば、制御点が相互接続された場合に、パッチが、視覚可能なオブジェクトの面の一部を形成できるように、ＣＰＵ１１６は、パッチの制御点を定義しうる。面が、パッチの制御点からのみ形成されるようになっている場合、この面は、高解像度では表れず、鋸歯に見えうる。モザイク化で、追加のプリミティブが、パッチへ加えられる。これによって、プリミティブは、相互接続された場合、パッチに詳細を加えることができるようになる。これは、パッチの解像度を高め、その結果、より高品質な視覚可能なコンテンツとなる。
【００４４】
ＧＰＵ１１２は、モザイク化を実施するように構成されうる。このように、ＣＰＵ１１６は、より高解像度のパッチを生成するために必要とされるすべての追加のプリミティブのための頂点を定義する必要がないことがありうる。これは、ＣＰＵ１１６によって実行される計算量を低減する。さらに、ＣＰＵ１１６は、より少ない頂点（例えば、制御点の頂点であり、追加されるべきプリミティブの頂点ではない）しか送る必要はなく、これによってＧＰＵ１１２は、より少ない頂点を受け取る必要しかない。これは、システム・メモリ１１４へのアクセスがより少なくなることにより、帯域幅効率を高める。
【００４５】
グラフィックス演算を実行するために、ＧＰＵ１１２は、グラフィクス処理パイプラインを実施しうる。グラフィック処理パイプラインは、ＧＰＵ１１２において動作しているソフトウェアまたはファームウェアによって定義されるような機能を実行することと、非常に専用的な機能を実行するようにハードワイヤ化された固定機能ユニットによって機能を実行することと、を含む。ＧＰＵ１１２において動作しているソフトウェアまたはファームウェアは、シェダーと称され、これらシェダーは、ＧＰＵ１１２の１つまたは複数のシェダー・コアにおいて動作しうる。シェダーは、ユーザに、機能的な柔軟性を提供する。なぜなら、ユーザは、任意の考えられる方式で、所望のタスクを実行するようにシェダーを設計できうるからである。しかしながら、固定機能ユニットは、固定機能ユニットがタスクを実行する方式のためにハードワイヤ化される。したがって、固定機能ユニットは、多くの機能的な柔軟性を提供しないことがありうる。
【００４６】
前述したように、図１に例示されるグラフィクス処理パイプラインは、Ｄｉｒｅｃｔ３Ｄ  １１によって実質的に定義されるようなグラフィック処理パイプラインである。この例において、ＧＰＵ１１２は、入力アセンブラ・ステージ１１８、頂点シェダー・ステージ１２０、ハル・シェダー・ステージ１２２、モザイク化ステージ１２４、領域シェダー・ステージ１２６、幾何シェダー・ステージ１２８、ラスタライザ・ステージ１３１、ピクセル・シェダー・ステージ１３２、および出力マージ・ステージ１３４のうちの１つまたは複数を含みうる。ＧＰＵ１１２は、例示されているものよりも多くのステージを含み、いくつかの例では、ＧＰＵ１１２は、例示されたステージのうちのすべてを必ずしも含んでいる必要がない場合もありうる。さらに、これらステージの特定の順序は、例示の目的のために提供され、限定と考えられるべきではない。
【００４７】
本開示に記載された技法では、ＣＰＵ１１６は、システム・メモリ１１４にパッチの制御点を出力しうる。その後、ＧＰＵ１１２は、システム・メモリ１１４から制御点を取得しうる。このように、ＣＰＵ１１６は、ＧＰＵ１１２へ制御点を送信しうる。本開示において使用されるように、ＧＰＵ１１２へ送っているＣＰＵ１１６、またはＣＰＵ１１６から受け取っているＧＰＵ１１２は、一般に、ＣＰＵ１１６が、ＧＰＵ１１２が受け取るシステム・メモリ１１４に書き込むことを含む。あるいは、ＣＰＵ１１６がＧＰＵ１１２にダイレクトに送ることと、ＧＰＵ１１２がＣＰＵ１１６からダイレクトに受け取ることとが可能でありうる。
【００４８】
入力アセンブラ・ステージ１１８は、ＣＰＵ１１６によって定義されたように、システム・メモリ１１４から制御点を読み取り、パッチを生成するために、制御点をアセンブルしうる。例えば、入力アセンブラ・ステージ１１８は、座標値、色値、および、制御点のその他のこのような情報を読み取りうる。座標値、色値、およびその他のこのような情報は、一般に、制御点の属性と称されうる。制御点の属性に基づいて、入力アセンブラ・ステージ１１８は、パッチの一般的なレイアウトを決定しうる。このように、入力アセンブラ・ステージ１１８は、パッチを生成するために、制御点をアセンブルしうる。入力アセンブラ・ステージ１１８は、固定機能ユニットでありうる。
【００４９】
頂点シェダー・ステージ１２０は、入力アセンブラ・ステージ１１８からの頂点（例えば、パッチの制御点）を処理しうる。例えば、頂点シェダー・ステージ１２０は、例えば変換、スキニング、モーフィング、および頂点毎の照明のような頂点毎の演算を実行しうる。頂点シェダー・ステージ１２０は、シェダーでありうる。
【００５０】
ハル・シェダー・ステージ１２２は、パッチの制御点を受け取り、頂点シェダー・ステージ１２０によって処理されるように、制御点を処理し、処理されたパッチのための制御点を出力する。言い換えれば、ハル・シェダー・ステージ１２２は、入力パッチを受け取り、頂点シェダー・ステージ１２０によって処理されるように入力パッチを処理し、出力パッチを出力する。ハル・シェダー・ステージ１２２は、入力パッチを処理するためにさまざまな機能を実行しうる。例えば、ハル・シェダー・ステージ１２２は、制御ポイントの位置を変更するように、制御点の座標を変換しうるか、または、制御点を追加または削除さえも行いうる。
【００５１】
さらに、ハル・シェダー・ステージ１２２は、ハル・シェダー・ステージ１２２によって生成されたパッチ（すなわち、出力パッチ）にいくつのプリミティブが追加されるべきであるかを示す値を決定しうる。ハル・シェダー・ステージ１２２は、いくつのプリミティブがパッチに追加されるべきであるかを決定するために、さまざまな基準を利用しうる。以下に記載されているのは、いくつのプリミティブがパッチに追加されるべきであるのかを決定するためにハル・シェダー・ステージ１２２が利用する２つの例示的な基準である。しかしながら、本開示の態様はそのように限定されず、ハル・シェダー・ステージ１２２は、いくつのプリミティブがパッチに追加されるべきであるかを決定するために任意の基準を利用しうる。
【００５２】
一例として、ハル・シェダー・ステージ１２２は、いくつのプリミティブが追加されるべきであるのかを決定するために、パッチの深さを示す情報を利用しうる。例えば、視覚者の観点からさらに離れているパッチは、高い解像度を必要としないことがありうる。なぜなら、距離的にさらに遠くにあるオブジェクトは、実生活においてぼやけて見えるからである。しかしながら、視覚者の観点からより近くにあるパッチは、より高い解像度を必要としうる。なぜなら、距離的により近くにあるオブジェクトは、実生活においてはっきりと見えるからである。この例において、ハル・シェダー・ステージ１２２は、互いに対して、より離れたパッチに対してより少ないプリミティブが追加されるべきであり、より近いパッチに対してより多くのプリミティブが追加されるべきであると判定しうる。
【００５３】
別の例として、ハル・シェダー・ステージ１２２は、パッチのサイズに基づいて、いくつのプリミティブが追加されるべきであるのかを決定しうる。より小さくサイジングされたパッチの場合、パッチは、より小さなエリアしか含んでいないので、ハル・シェダー・ステージ１２２は、より少ないプリミティブが追加されるべきであると判定しうる。より大きくサイジングされたパッチの場合、パッチは、より大きなエリアを含んでいるので、ハル・シェダー・ステージ１２２は、より多くのプリミティブが追加されるべきであると判定しうる。
【００５４】
いくつのプリミティブが追加されるべきであるかの判定に基づいて、ハル・シェダー・ステージ１２２は、いくつのプリミティブがパッチに追加されるべきであるかを示す値および領域タイプをモザイク化ステージ１２４に出力しうる。Ｄｉｒｅｃｔ３Ｄ  １１  ＡＰＩでは、いくつのプリミティブがパッチに追加されるべきであるかを示す値が、モザイク・ファクタ（ｔｅｓｓｆａｃｔｏｒ）と呼ばれる。
【００５５】
領域は、モザイク化ステージ１２４がモザイク化目的のために使用するテンプレート形状として考えられうる。領域タイプの例は、線、三角形、クワッド（例えば、４つの側を有する多角形）、またはその他のタイプの多角形を含んでいる。パッチが３次元（３Ｄ）の面または２次元（２Ｄ）の面を規定している場合であっても、領域は、２Ｄ形状でありうる。領域が線である場合、たとえパッチが３Ｄの面、２Ｄの面、または１Ｄの面を規定している場合であっても、領域は、１次元（１Ｄ）の形状（すなわち、線）でありうる。例示の目的のために、本開示で記載された技法は、２Ｄの面である領域に関して記載されている。例えば、これら技法は、三角形またはクワッドである領域形状を用いて記載されている。
【００５６】
いくつかの例において、ハル・シェダー・ステージ１２２は、領域タイプを明示的に示さないことがありうる。むしろ、モザイク化ステージ１２４は、送信されたモザイク・ファクタの数に基づいて、領域タイプを決定しうる。例えば、４つのモザイク・ファクタが存在することは、領域タイプが三角形の領域タイプであることを示し、６つのモザイク・ファクタが存在することは、領域タイプがクワッドの領域タイプであることを示しうる。
【００５７】
いくつかの例において、クワッド領域は、２Ｄデカルト座標（ｕ，ｖ）によって定義されうる。いくつかの例において、三角形領域は、重心座標によって定義されうる。重心座標は、三角形内の任意の点を識別するために、３つの座標を利用する。例えば、三角形領域の頂点は、以下に詳細に記載されるように、（ｕ，ｖ，ｗ）によって定義されうる。三角形内の任意の点の位置は、頂点に対する近接度を示す頂点重み付けによって定義される。例えば、点が頂点に対してより接近すると、その頂点重みも高くなり、点が頂点からより離れると、その頂点重みも低くなる。
【００５８】
例として、三角形の頂点は、以下のように、重心座標（ｕ，ｖ，ｗ）によって定義される。（１，０，０），（０，１，０），および（０，０，１）。この例において、中央点は、頂点の各々から等しく離れているので、中央点は（１／３，１／３，１／３）に位置する。また、頂点座標の所与の定義を用いると、この例では、三角形領域内の任意の点のｕ，ｖ，およびｗ座標の合計は、１に等しくならねばならない。
【００５９】
デカルト座標および重心座標は、例示のみの目的で記載されており、限定するものと考慮されるべきではない。他の例において、重心座標またはデカルト座標を用いてクワッド領域を、および、デカルト座標または重心座標を用いて三角形領域を定義することが可能でありうる。一般に、領域は、いずれのタイプであっても、任意の座標系を用いて定義されうる。
【００６０】
モザイク化ステージ１２４は、領域を複数のプリミティブへモザイク化（例えば、分割）しうる。この例において、モザイク化ステージ１２４は、ハル・シェダー・ステージ１２２によって出力されたパッチを、プリミティブに分割せず、領域をプリミティブに分割していることが理解されるべきである。いくつかの例において、モザイク化ステージ１２４は、ハル・シェダー・ステージ１２２によって出力されたパッチへのアクセスさえも有していない場合がありうる。モザイク化ステージ１２４は、固定機能ユニットでありうるが、本開示の態様はそのように限定される必要はない。
【００６１】
モザイク化ステージ１２４は、領域を複数のプリミティブへモザイク化（例えば、分割）するために、ハル・シェダー・ステージ１２２によって出力されたモザイク・ファクタを利用しうる。例えば、領域タイプ（例えば、三角形またはクワッド）を定義することに加えて、モザイク・ファクタは、いくつのリングが領域内に含まれるべきであるかを定義しうる。
【００６２】
リングは、領域内の一連の同心形状でありうる。これら同心形状は、領域形状と同じ形状である。例えば、領域形状がクワッドであれば、クワッドの境界は、外部リングであると考えられうる。ハル・シェダー・ステージ１２２は、クワッド領域内に存在する、より小さくサイジングされた一連のクワッドでありうる内部リングの数を定義しうる。同様に、領域形状が三角形であれば、この三角形の境界は、外部リングであると考えられ、内部リングは、三角形領域内に存在する、より小さくサイジングされた一連の三角形でありうる。
【００６３】
領域内のリングの数を定義することに加えて、モザイク・ファクタは、これらリングに沿って存在する点を定義する。これらリングに沿って存在する点は、制御点と混同されてはならない。制御点はパッチを定義する。これらリングに沿って存在する点は、モザイク・ファクタに基づいてモザイク化ステージ１２４によって生成された点である。これらの点は、領域内で生成され、パッチ内では生成されない。
【００６４】
また、領域を複数のプリミティブに分割するためにモザイク化ステージ１２４がともに接続するのは、これら点である。例えば、モザイク化ステージ１２４が領域を分割するプリミティブが三角形であると仮定する。この例において、モザイク化ステージ１２４は、三角形プリミティブを形成するために、外部のリングに沿って存在する１つの点を、内部のリングに沿って存在する２つの点と接続しうる。あるいは、モザイク化ステージ１２４は、三角形プリミティブを形成するために、外部のリングに沿って存在する２つの点を、内部のリングに沿って存在する１つの点と接続しうる。このように、ハル・シェダー・ステージ１２２は、領域タイプ、領域内のリングの数、および外部および内部のリングに沿った点の数を定義することによって、モザイク化ステージ１２４が領域を分割するプリミティブの数を定義しうる。
【００６５】
いくつかの例において、リングの縁に沿って存在しうる点の数は、１点乃至６５点でありうる。例えば、領域タイプが三角形であれば、三角形領域の縁毎に最大６５の点が存在しうる。同様に、領域タイプがクワッドであれば、クワッドの縁毎に最大６５の点が存在しうる。しかしながら、本開示に記載された技法は、最大６５の点を有する縁に限定されない。
【００６６】
さらに、リングに沿って存在する点の数は、外部および内部のリングで異なりうる。例えば、外部のリングの縁に沿って存在する点の数は、内部のリングの縁に沿って存在する点の数より多い場合も少ない場合もありうる。外部のリングおよび内部のリングの縁に沿って存在する点の数は、同じ点の数であることもまた可能でありうる。
【００６７】
さらに、同じリングの縁に沿った点の数は、異なりうる。例えば、三角形領域の場合、これら縁のうちの１つに沿って存在する点の数は、１つの他方の縁または、両方の縁に沿って存在する点の数とは異なりうる。同様に、クワッド領域の場合、これら縁のうちの１つに沿って存在する点の数は、１つ、２つ、または３つすべての他の残りの縁に沿って存在する点の数とは異なりうる。これらリングの縁のおのおのが、同じ数の点を有することもまた可能でありうる。
【００６８】
前述したように、いくつかの例では、モザイク化ステージ１２４は、パッチを、複数のプリミティブに分割しない場合がありうる。したがって、いくつかの例において、モザイク化ステージ１２４は、例えば制御点の数、制御点の位置、またはパッチのサイズのようないかなる情報も受け取らないことがありうる。パッチのサイズおよび制御点の位置に関する情報無しでは、モザイク化ステージ１２４は、使用される領域のサイズ、または、領域の頂点の特定の座標を定義できないことがありうる。
【００６９】
これに対処するために、モザイク化ステージ１２４は、領域の頂点を定義するためのみならず、領域内で相互接続された点の位置を決定するために、規格化された座標系に依存しうる。規格化された座標の一例として、モザイク化ステージ１２４は、ｕ，ｖ座標内において、単位正方形である（０，０），（１，０），（０，１），および（１，１）として、クワッド領域の頂点を定義しうる。モザイク化ステージ１２４は、ｕ，ｖ，ｗ座標において、正三角形である（０，０，１），（０，１，０），および（１，０，０）として、三角形領域の頂点を定義しうる。モザイク化ステージ１２４は、この規格化された座標系において、複数のプリミティブの相互接続された頂点のための座標を決定しうる。
【００７０】
モザイク化ステージ１２４は、規格化された座標系（例えば、適用可能であればｕ，ｖ座標またはｕ，ｖ，ｗ座標）で、領域の複数のプリミティブの頂点を、領域シェダー・ステージ１２６へ出力しうる。領域シェダー・ステージ１２６の機能は、モザイク化ステージ１２４から受け取ったように、頂点座標をパッチへマップすることでありうる。例えば、モザイク化ステージ１２４は、ハル・シェダー・ステージ１２２によって定義されるようなパッチの情報を受け取らないことがありうる一方、領域シェダー・ステージ１２６は、ハル・シェダー・ステージ１２２からそのような情報を受け取りうる。
【００７１】
領域シェダー・ステージ１２６は、モザイク化ステージ１２４によって出力された各頂点座標について動作しうる。モザイク化ステージ１２４によって出力されると、領域シェダー・ステージ１２６は、ハル・シェダー・ステージ１２２からのパッチの制御点の座標を用いて、パッチ上における頂点の位置を決定しうる。モザイク化ステージ１２４は、モザイク化ステージ１２４によって生成された複数のプリミティブの頂点を出力し、領域シェダー・ステージ１２６は、これらプリミティブをパッチへ加えるので、ハル・シェダー・ステージ１２２、モザイク化ステージ１２４、および領域シェダー・ステージ１２６の組み合わせは、ともに、追加のプリミティブをパッチに加える。この結果、パッチに加えられたプリミティブのメッシュが、ＣＰＵ１１６によって定義されたパッチに比べて、より高解像度の、より詳細なパッチを生成することになる。このように、ハル・シェダー・ステージ１２２、モザイク化ステージ１２４、および領域シェダー・ステージ１２６は、モザイク化処理を実行する。
【００７２】
本明細書に記載されているように、領域は複数の部分に分割されうる。これらは同じサイズの部分でありうる。いくつかの例では、これら技法は、頂点が２つの三角形で共有されている場合に、頂点毎に一度、領域シェダーを実行しうるように、この部分内の三角形の頂点を出力しうる。言い換えれば、モザイク化ステージ１２４が第１の三角形の頂点を出力する場合に、頂点が部分内の第１の三角形と第２の三角形とで共有されており、これら技法が、頂点の座標を変換するために領域シェダーを実行するのであれば、これら技法は、モザイク化ステージ１２４が、第２の三角形の頂点を出力する場合に、頂点が、頂点再使用バッファにおいて利用可能であることを保証しうる。このように、これら技法は、モザイク化ステージ１２４が、頂点を第１の三角形の頂点の一部として出力する場合に領域シェダーを実行するのではなく、領域内の座標からの頂点の座標を、第１の三角形と第２の三角形とで共有された頂点のパッチの座標に変換するために一度だけ領域シェダーを実行し、その後、モザイク化ステージ１２４が、第２の三角形の頂点の一部として頂点を出力した場合に、領域シェダーを再び実行する。
【００７３】
いくつかの例では、これら三角形のおのおのの頂点がモザイク化ステージ１２４によって出力された場合、頂点再使用バッファ内で利用可能である部分内の三角形によって頂点が共有されていることを保証できるほど、部分内の三角形の数が非常に多いか、または、頂点再使用バッファのサイズが小さすぎる。これに対処するために、いくつかの例において、モザイク化ステージ１２４はさらに、部分を、細部分へ分割しうる。モザイク化ステージ１２４は、細部分の各々内で、本開示に記載された頂点出力スキームを実施しうる。例えば、モザイク化ステージ１２４は、細部分内の三角形の頂点を出力する場合、これら三角形の共有された頂点が、頂点再使用バッファ内で利用可能になることを保証できるように、部分を細部分に分割しうる。
【００７４】
このように、モザイク化ステージ１２４は、頂点再使用バッファに格納されていない頂点の座標が必要とされた場合に起こりうる頂点ミスを最小化または低減することに関してこの再使用バッファが効率的に使用されうるように、部分または細部分を処理しうる。例えば、領域シェダーによって処理されておらず、再使用バッファに格納されていない頂点の座標が出力された場合、頂点ミスが生じうる。頂点ミスはまた、例えば、頂点が領域シェダーによって以前に処理され、再使用バッファに格納されているものの、そのデータがオーバライトされている場合にも生じうる。これら技法は、頂点に関する情報が再使用バッファにおいてオーバライトされる前に、特定の頂点を含む各三角形を一般的に処理することによって、再使用バッファにおいて利用可能ではない頂点が出力される回数を低減する方式で頂点を処理する。しかしながら、これは常に可能であるとは限らないことが理解されるだろう。したがって、いくつかの例は、各頂点について、これらの計算を単一の領域シェダー起動に限定するのではなく、再使用バッファに格納されたデータの再計算の回数を低減することを試みうる。よって、さまざまな例は、領域シェダー起動の回数を低減しうる。いくつかのケースでは、領域シェダー起動の回数を、頂点毎に１回に低減することが可能でありうるが、他のケースでは、領域シェダー内の再計算を無くすのではなく、低減することのみが可能でありうる。
【００７５】
幾何シェダー・ステージ１２８は、領域シェダー・ステージ１２６によってパッチに追加されたプリミティブの頂点を受け取り、さらに、よりさらなる解像度を加えるために、プリミティブについて、追加の頂点を生成しうる。ラスタライザ・ステージ１３０は、幾何シェダー・ステージ１２８からプリミティブを受け取り、これらプリミティブを、ディスプレイのために、ピクセルに変換する。例えば、これらプリミティブは、これらプリミティブの相互接続を示すベクトルとして定義され、画像が表示されるべきディスプレイと独立している座標空間において定義されうる。ラスタライザ・ステージ１３０は、これらベクトルをディスプレイ座標に変換し、例えば、閉じられているプリミティブ内の点を取り除くことのような任意の追加の機能を実行する。
【００７６】
ピクセル・シェダー・ステージ１３２は、ラスタライザ・ステージ１３０によって出力されると、ピクセルを受け取り、表示されるべきピクセルの各々に色値を割り当てるための事後処理を実行する。例えば、ピクセル・シェダー・ステージ１３２は、システム・メモリ１１４に格納された不変値、システム・メモリ１１４に格納されたテクスチャ・データ、および、例えば色値のようなピクセル毎の出力を生成するためのその他任意のデータを受け取りうる。ピクセル・シェダー・ステージ１３２はまた、ピクセルの不透明さを示す不透明値を出力しうる。
【００７７】
出力マージ・ステージ１３４は、任意の最終的なピクセル処理を実行しうる。例えば、出力マージ・ステージ１３４は、ピクセルのうちの何れかが、表示されるものから取り除かれるべきであるか否かを判定するために、デプス情報を利用しうる。出力マージ・ステージ１３４はまた、最終的なピクセル値を生成するために、ブレンディング演算を実行しうる。
【００７８】
出力マージ・ステージ１３４は、最終的なピクセル値を、一般にシステム・メモリ１１４内に位置するがＧＰＵ１１２内に位置しうるフレーム・バッファに出力しうる。ディスプレイ・プロセッサ（図示せず）は、フレーム・バッファからピクセル値を取得し、ピクセル値に従って、デバイス１１０のディスプレイ（図示せず）のピクセルを点灯させ、ディスプレイに対して、画像を表示させる。
【００７９】
前述したように、モザイク化ステージ１２４は、領域内の複数のプリミティブを生成するために、領域内の外部リングおよび内部リングの点を相互接続する。例において、モザイク化ステージ１２４は、特定の順序でウォーキングすることによって、領域を処理しうる。例えば、ウォーキングは、計算された頂点情報が再使用されうるように実行されうる。出力プリミティブを処理するための順序は、頂点再使用バッファを効率的（または、少なくともより効率的）に利用するように選択されうる。
【００８０】
モザイク化ステージ１２４から出力されるプリミティブの順序を決定する場合、例えば、以下が考慮されうる。（１）タイムリーな方式でプリミティブが処理されることを可能にするために、クロック・サイクル毎に１つのプリミティブでありうる現在のモザイク化速度が維持される必要がありうる。（２）アルゴリズムは複雑すぎるべきではない。（３）変更はモザイク化ステージ１２４においてのみなされることが好適でありうる。いくつかの例において、再使用ロジックに対して何の変更もなされないことがありうる。前述したように、再使用ロジックは、必要とされている頂点情報が頂点再使用バッファ内に格納されているか否かを判定するために使用されうる、例えば排他的ＯＲゲート（ＸＯＲゲート）のような一連のハードウェア・コンパレータである。いくつかの例において、再使用ロジックは、再使用バッファに格納された３２の格納された３４ビット・インデクスと、到来する頂点の３４ビット・インデクスとを比較する再使用バッファ内の（図９の例示された）コントローラでありうる。他の例において、再使用バッファは、異なる方式でサイジングされ、インデクスは、より多くのビット、またはより少ないビットを含みうる。図７および図８に関して以下に記載されるように、クワッド領域および三角形領域はそれぞれ、頂点ミスを最小化するために、頂点再使用バッファを最も効率的（または、少なくともより効率的）に利用するために選択された順序でウォークされうる。
【００８１】
前述したように、モザイク化ユニットは、領域を複数の部分に分割し、部分内の形状（例えば、三角形）の頂点を決定しうる。例えば、各部分は、複数の形状を含みうる。これら形状は、形状のセットによって表現されうる。例えば、複数の形状のセットは、部分内の形状を形成する。
【００８２】
本開示に記載された技法のうちのいくつかに従って、モザイク化ユニットは、領域の部分内の第１の形状のセット内の形状の頂点の座標を決定しうる。各頂点について、領域シェダーは、座標を、パッチの座標に変換し、これら座標を、再使用バッファに格納しうる。共有された頂点（例えば、第１の形状のセット内の２つの三角形に共通である頂点）について、領域シェダーを実行する必要はない。なぜなら、変換された座標はすでに再使用バッファに格納されているからである。
【００８３】
第１の形状のセット内の形状の頂点の座標を出力した後、モザイク化ユニットは、第２の形状のセット内の形状の頂点を出力しうる。領域シェダーの実行を最小化するために、モザイク化ユニットは、第２の形状のセットにおける形状の頂点の多くが、第１の形状のセットにおける形状の頂点と共有されるように、第２の形状のセットにおける形状の頂点を出力しうる。第１の形状のセットと第２の形状のセットが多くの頂点を共有するので、本開示に記載された例示的な技法は、領域シェダーの実行を最小化しうる。
【００８４】
例えば、第１の形状のセットは、部分の第１の縁に沿って位置しうる。再び、領域は、複数の部分に分割されうる。これら部分の各々は、複数の縁を含んでおり、第１の形状のセットは、これら部分のうちの１つの縁のうちの１つ（すなわち、複数の縁のうちの第１の縁）に沿って位置しうる。本開示に記載された技法では、第２の形状のセットにおける各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有しうる。また、第２の形状のセットのうちの形状の何れも、部分の第１の縁に頂点を含んでいないことがありうる。
【００８５】
本開示に記載された技法では、モザイク化ユニットは、第１の形状のセットをウォークし、その後、第２の形状のセットをウォークしうる。第１の形状のセットと、第２の形状のセットとの間の関係は、前述されている。多くの頂点が、第１の形状のセットと、第２の形状のセットとで共有されており、モザイク化ユニットは、第１の形状のセットをウォークした後、直ちに第２の形状のセットをウォークするので、変換された座標の多くは再使用バッファにおいて未だに利用可能でありうる。したがって、領域シェダーが実行される回数が低減されうる。
【００８６】
図２は、本開示に記載される１つまたは複数の例にしたがうグラフィクス処理パイプラインの別の例を実施しうるグラフィクス処理ユニット（ＧＰＵ）の別の例を例示するブロック図である。例えば、図１は、Ｄｉｒｅｃｔ３Ｄ  １１  ＡＰＩに従って実質的に規定されるグラフィック処理パイプラインを例示した。図２は、実質的にＯｐｅｎＧＬ  ４．ｘ  ＡＰＩに従う図形処理パイプラインを例示している。
【００８７】
ＯｐｅｎＧＬ  ４．ｘグラフィクス処理パイプラインは、Ｄｉｒｅｃｔ３Ｄ  １１グラフィクス処理パイプラインと実質的に同様の方式で機能しうる。したがって、簡潔さの目的のために、Ｄｉｒｅｃｔ３Ｄ  １１グラフィクス処理パイプラインとＯｐｅｎＧＬ  ４．ｘグラフィクス処理パイプラインとの両方に類似した構成要素を記載する図１が参照されている。
【００８８】
図２の例に例示されるように、ＧＰＵ１１２は、入力アセンブラ１３６、頂点シェダー１３８、モザイク化制御シェダー１４０、プリミティブ生成器１４２、モザイク化評価シェダー１４４、幾何シェダー１４６、クリップ・ユニット１４８、ラスタライザ１５０、フラグメント・シェダー１５２、およびポスト・プロセッサ１５４を含む。図２に例示された例では、図１と同様に、ＧＰＵ１１２は、図２に例示されたものよりも、より多くの構成要素、または、より少ない構成要素を含めうる。さらに、例示の目的のために、ユニットの具体的な順序が与えられるが、限定すると考慮されるべきではない。
【００８９】
いくつかの方式において、ＯｐｅｎＧＬ  ４．ｘグラフィクス処理パイプラインを用いたモザイク化処理は、Ｄｉｒｅｃｔ３Ｄ  １１グラフィクス処理パイプラインを用いたモザイク化処理に実質的に類似しうる。例えば、ＯｐｅｎＧＬ  ４．ｘモザイク化処理は、図１に関して前述したものと類似の方式で、パッチおよび制御点に依存しうる。例えば、図２の入力アセンブラ１３６および頂点シェダー１３８は、それぞれ図１の入力アセンブラ・ステージ１１８および頂点シェダー・ステージ１２０と実質的に同様に機能しうる。
【００９０】
例えば、図２において、プリミティブ生成器１４２は、モザイク化ユニットと等価または類似でありうる。モザイク化ユニットは、領域内の第１のリングの第１の縁に沿って存在する点の数を決定しうる。さらに、モザイク化ユニットは、領域内の第１のリングの第１の縁に沿って存在する点の第１の部分のための座標の第１のセットを決定しうる。モザイク化ユニットはまた、第１の部分のための第１の座標のセットに基づいて、領域内の第１のリングの第１の縁に沿って存在する点の第２の部分のための第２の座標のセットを決定しうる。モザイク化ユニットはまた、領域を、パッチにマップされる複数のプリミティブに分割するために、第１のリングの第１の縁に沿って存在する点を、第２のリングの第２の縁に沿って存在する点を用いてステッチするように構成されうる。
【００９１】
より多くの例として、モザイク化のために、図２のモザイク化制御シェダー１４０は、図１のハル・シェダー・ステージ１２２と実質的に同様に機能しうる。しかしながら、モザイク化制御シェダー１４０は、Ｄｉｒｅｃｔ３Ｄ  １１のモザイク・ファクタに類似しうるモザイク化レベルを出力する。例えば、ＯｐｅｎＧＬ  ４．ｘのモザイク化レベルは、領域タイプ、領域内のリングの数、リングの縁毎の点の数、を定義しうる。
【００９２】
プリミティブ生成器１４２は、モザイク化ステージ１２４と実質的に同様に機能しうる。例えば、プリミティブ生成器１４２は、領域を複数のプリミティブに分割するために、モザイク化レベルおよび領域タイプを利用しうる。
【００９３】
図２のモザイク化評価シェダー１４４は、図１の領域シェダー・ステージ１２６と実質的に同様に機能しうる。例えば、モザイク化評価シェダー１４４は、プリミティブ生成器１４２から、生成されたプリミティブの頂点を受け取り、モザイク化制御シェダー１４０によって出力されたパッチに、このプリミティブを加えうる。このように、ＯｐｅｎＧＬ  ４．ｘ  ＡＰＩのグラフィック処理パイプラインは、パッチの解像度を上げるために、パッチにおいてモザイク化を実行しうる。さらに、図３に関して、上記と同様に、出力されるプリミティブの順序が予め決定されうる。そして、頂点ミスを最小化または少なくともより低くするように頂点再使用バッファを効率的に利用するために、例えば、点生成器において実施されうる。例えば、計算された頂点情報が再使用されるような特定の順序でウォークすることによって、領域が処理されうる。前述したように、出力プリミティブを処理するための順序は、頂点ミスを最小化するように頂点再使用バッファを最も効率的（または少なくともより効率的）に利用するように選択されうる。これは、モザイク化評価シェダー１４４起動の回数を低減させうる。
【００９４】
幾何シェダー１４６は、幾何シェダー・ステージ１２８と実質的に同様に機能しうる。図２におけるクリップ・ユニット１４８およびラスタライザ１５０の組み合わせは、図３におけるラスタライザ・ステージ３０と実質的に同様に機能しうる。図２におけるフラグメント・シェダー１５２およびポスト・プロセッサ１５４はそれぞれ、図３におけるピクセル・シェダー・ステージ１３２および出力マージ・ステージ１３４と実質的に同様に機能しうる。ポスト・プロセッサ１５４は、最終的なピクセル値をフレーム・バッファへ出力し、ディスプレイ・プロセッサは、フレーム・バッファからピクセル値を取得し、画像を表示するために、このピクセル値に従って、ディスプレイを照明させる。
【００９５】
前述したように、図２のモザイク化制御シェダー１４０、プリミティブ生成器１４２、およびモザイク化評価シェダー１４４はそれぞれ、モザイク化処理を実施するために、図３のハル・シェダー・ステージ１２２、モザイク化ステージ１２４、および領域シェダー・ステージ１２６と実質的に同様に機能しうる。したがって、Ｄｉｒｅｃｔ３Ｄ  １１  ＡＰＩとＯｐｅｎＧＬ  ４．ｘ  ＡＰＩとの両方は、モザイク化処理を実施するために、２つのプログラマブル・シェダー・ユニットと、１つの固定機能ユニットとに依存する。
【００９６】
一般化の目的のために、本開示に記載された技法は、第１のモザイク化シェダー・ユニット、モザイク化ユニット、および第２のモザイク化ユニットを用いて記載されうる。第１のモザイク化シェダー・ユニットの例は、ハル・シェダー・ステージ１２２およびモザイク化制御シェダー１４０を含んでいる。モザイク化ユニットの例は、モザイク化ステージ１２４およびプリミティブ生成器１４２を含んでいる。第２のモザイク化シェダー・ユニットの例は、領域シェダー・ステージ１２６およびモザイク化評価シェダー１４４を含んでいる。
【００９７】
さらに、Ｄｉｒｅｃｔ３Ｄ  １１は、「モザイク・ファクタ」という用語を、ＯｐｅｎＧＬ  ４．ｘは、「モザイク化レベル」という用語を使用する。これらは、類似した用語と考えられうる。一般化の目的のために、本開示は、「モザイク化ファクタ」という用語を使用する。これらの例は、モザイク・ファクタおよびモザイク化レベルを含む。このように、第１のシェダー・ユニットは、モザイク化ファクタをモザイク化ユニットへ出力すると考えられ、モザイク化ユニットは、モザイク化ファクタに応じて、第２のシェダー・ユニットに頂点を出力しうる。
【００９８】
Ｄｉｒｅｃｔ３Ｄ  １１およびＯｐｅｎＧＬ  ４．ｘは、２つのシェダー・ユニットおよび１つの固定機能ユニットを利用し、本開示に記載された技法は、そのように限定されないことが注目されるべきである。例えば、他のシステムでは、第１および第２のシェダー・ユニットが固定機能ユニットであり、モザイク化ユニットがシェダー・ユニットであることが可能でありうる。別の例として、すべてが固定機能ユニットでありうるか、すべてがシェダー・ユニットでありうるか、またはこれら任意の組み合わせでありうる。
【００９９】
したがって、いくつかの例において、第１のユニットは、第１のシェダー・ユニットに類似した機能を実行するが、シェダー・ユニットまたは固定機能ユニットであり、第２のユニットは、モザイク化ユニットに類似した機能を実行するが、シェダー・ユニットまたは固定機能ユニットであり、第３のユニットは、第２のシェダー・ユニットに類似した機能を実行するが、シェダー・ユニットまたは固定機能ユニットでありうることが考慮されうる。さらに、第１のシェダー・ユニット、モザイク化ユニット、および第２のシェダー・ユニットは、図１および図２において個別のユニットとして例示されているが、本開示の態様は、そのように限定されない。これらのユニット、および恐らくは、図１および図２に例示されたグラフィクス処理ユニットの任意のユニットが、共通のユニットへとともに結合されうる。したがって、これらのユニットの機能は、説明の容易性のために個別に記載されているが、これらユニットは、共有されたハードウェアにおいて、または、別個の構成要素として実現されうる。
【０１００】
図３は、モザイク化のための頂点を出力する例示的な技法を例示する図である。図３の例示的なモザイク化分解では、三角形領域である領域１６０のエリア全体が、より小さな三角形１６２に分割される。矢印１６４，１６６，１６８，１７０は、三角形１６２が処理され、パッチへマップされる順序を例示している。概念的に、例えば三角形１６２のようなさまざまな三角形の頂点は、矢印１６４，１６６，１６８，１７０のように、一般に平行な線からなるリング上に存在することが理解されるだろう。例えば、三角形１６２は、外部リング上に存在する２つの頂点と、内部リング上に存在する１つの頂点とを含む。さらに詳しくは、いくつかの三角形は、例えば三角形１６２のように、外部リング上に存在する２つの頂点と、内部リング上に存在する１つの頂点とを有する一方、その他の三角形は、外部リング上に存在する１つの頂点と、内部リング上に存在する２つの頂点とを有しうる。
【０１０１】
図３に例示されるように、点生成器は、領域１６０の境界である最外周リングから、中央リング１７０へとずっと「ウォーキング」することによって、領域を処理しうる。「ウォーキング」は、所与のモザイク化レベルのためにモザイク化三角形が計算されるシーケンスまたは順序を示す。図３に例示されるように、所与のモザイク化レベルのためにモザイク化三角形が計算されるシーケンスまたは順序は、スパイラル状に一度に１つのリングを処理する。
【０１０２】
このアルゴリズムの問題は、頂点再使用バッファのサイズが制限されていることにより、アルゴリズムが第１のリング１６４における三角形の出力を終了し、次のリングに進んだ場合、最初の２つのリング１６４，１６６の境界におけるすべての頂点が、頂点ミスになる（例えば、頂点再使用バッファに存在しない）であろうことである。言い換えると、頂点バッファは、計算された座標のすべてを格納するほど十分に大きくはないので、頂点情報の喪失が生じる。
【０１０３】
図４は、図３に例示された技法において再計算される必要がありうる点を例示する図である。図４に例示されるように、頂点ミスによって、いくつかの点は、再計算される必要がありうる。例えば、経路１７２が使用される場合、例えば頂点１７４のように、内部リング上の１８の頂点の各々が、再計算される必要がありうる。経路１７２をウォーキングする場合、内部リング上の１８の頂点だけが格納されるのみならず、外部リング上の２４の頂点も格納されるだろうから、頂点がオーバライトされるであろうことに注目されたい。したがって、３２の頂点のための情報を格納することが可能な頂点再使用バッファの場合、例示された経路順序が使用されるのであれば、４２の頂点が、頂点再使用バッファをオーバフローさせるだろう。
【０１０４】
例において、単一幅のリングよりも広い「ウォーク」は、頂点ミスを減らすために使用されうる。例えば、経路をウォークすることは、単に最外周のリング以上のものを表わしうる。例えば、二重リングがウォークされうる。あいにく、そのようなアプローチは、クロック・サイクル毎に１つのプリミティブを処理できることが所望されているのであれば、一般に、さらに多くの点生成ユニットを必要とするだろう。「ドーナッツ」をウォークすること、例えば、同時に２つの行を処理することは、１つのプリミティブ毎に１．３の頂点に迅速に収束し、そこに滞在する。より広くウォーキングすることは、処理をより高速にする訳ではなく、プリミティブ毎に最大＜１．５の頂点を達成するに過ぎない。さらに、そのような処理のためのハードウェアは、著しくより多くの電力を消費し、多くのダイ面積を占有しうる。
【０１０５】
図５Ａおよび図５Ｂは、本開示に記載された１つまたは複数の例にしたがって複数のプリミティブに分割された領域を例示するグラフィック図である。例えば、図５Ａは、複数のプリミティブに分割された（すなわち、モザイク化された）三角形領域１７６を例示し、図５Ｂは、複数のプリミティブに分割されたクワッド領域１７８を例示する。
【０１０６】
図５Ａおよび図５Ｂでは、三角形を形成する点の相互接続は、モザイク化ファクタに基づきうる。例えば、前述されたモザイク化ユニットは、例えば、図５Ａの三角形領域１７６および図５Ｂに例示されたように分割されたクワッド領域１７８の縁のように、領域内の第１のリングの第１の縁に沿って存在する点の数を決定する第１のユニットを含みうる。図５Ａおよび図５Ｂに例示されるように、これら領域は、複数のプリミティブに分割（すなわち、モザイク化）されうる。図５Ａに例示されるように、三角形領域の各縁は、同じ数のセグメントへ分割されうる。これは、均一モザイク化と呼ばれる。クワッド領域もまた、同じ数のセグメントへ分割され、均一モザイク化を有しうる。しかしながら、図５Ｂに例示されるように、クワッド領域１７８は、非一律のモザイク化である。
【０１０７】
より詳細に以下に記載されるように、モザイク化ユニットは、領域内の第１のリングの第１の縁に沿って存在する点の第１の部分の第１の座標のセットを決定し、第１の部分の第１の座標のセットに基づいて、領域内の第１のリングの第１の縁に沿って存在する点の第２の部分の第２の座標のセットを決定しうる。図５Ａおよび図５Ｂに例示されるように、別のリングは、別の数の座標に分割されうる。これらのリングは、その後、本明細書に記載されるように、領域シェダーの起動の回数を減少させる方式でウォークされうる。さらに、これら点の第１の部分における座標の各セット（各点）は、これら点の第２の部分における対応する座標のセット（点）と対称でありうる。
【０１０８】
部分内の三角形の数と、頂点再使用バッファのサイズは、所与の部分を処理する場合、頂点再使用バッファがオーバフローするか否かを決定しうる。部分内の三角形の数が多すぎるか、または、頂点再使用バッファのサイズが小さすぎるのであれば、頂点再使用バッファを埋めるために、モザイク化ステージ１２４によって、これら三角形のおのおのの十分な頂点が出力された場合、最も古いエントリが削除されうる。したがって、その頂点情報とされる必要ならば、削除されたエントリ（単数または複数）は、利用可能にはならないであろう。したがって、それが必要とされるならば、再計算される必要があるだろう。これに対処するために、いくつかの例では、モザイク化ステージ１２４はさらに、部分を細部分に分割しうる。モザイク化ステージ１２４は、細部分のおのおの内において、本開示において記載された頂点出力スキームを実施しうる。一例では、モザイク化ステージ１２４は、細部分内の三角形のすべての頂点が、オーバフローを引き起こすことなく処理されうることを保証するために、部分を細部分に分割しうる。頂点再使用バッファ内のさまざまな頂点は、もはや必要ではない場合、オーバライトされうることが理解されるだろう。いくつかの例において、これは、ファースト・イン・ファースト・アウト方式で行われうる。そのような事例では、ファースト・インされた最も古いエントリが、オーバライトされる最初の値である。さらに、いくつかの頂点は、三角形間で共有される。
【０１０９】
本明細書に記載されたシステムおよび方法は、３２以外の頂点再使用バッファ・サイズのために適応するように修正されうることが理解されるだろう。以下にさらに詳細に記載されるように、モザイク化ユニットはまた、領域を、パッチにマップされる複数のプリミティブに分割するために、第１のリングの第１の縁に沿って存在する点を、第２のリングの第２の縁に沿って存在する点を用いてステッチするように構成されうる。
【０１１０】
図６は、本開示に記載された１つまたは複数の例にしたがって、領域シェダー１８４に接続されたモザイク化ユニット１８２と、頂点再使用バッファ１８６とを含む例示的なシステムまたはサブ・システム１８０を例示するブロック図である。モザイク化ユニット１８２は、領域を複数のプリミティブにモザイク化する（例えば、分割する）ように構成されうる。本明細書に記載されるように、モザイク化ユニット１８２（例えば、モザイク部）は、領域を複数の三角形に分割しうる。その後、領域シェダー１８４は、領域内の三角形の頂点を取り、これら頂点を、パッチの頂点へ変換しうる。外部点生成器と内部点生成器とを含む、点生成器１８８のペアは、シーケンスまたは順序にしたがってモザイク化三角形をウォークすることによってパッチを処理しうる。例えば、外部点生成器は、三角形１で始まって、三角形１の２つの鉛直の頂点を生成し、内部点生成器は、第３の頂点を生成するだろう。接続生成器１９０は、３つの頂点を接続し、これら３つの頂点が三角形１に属することを示し、これら頂点を出力するだろう。頂点再使用バッファ１８６のコントローラ１９２は、出力された頂点が、頂点再使用バッファ１８６内にあるか否かを判定し、頂点再使用バッファ１８６内に無いすべての頂点について、領域シェダー１８４の事例を実施しうる。
【０１１１】
その後、外部点生成器は、三角形２の頂点を生成し、内部点生成器は、三角形２の２つの鉛直の頂点を生成するだろう。接続生成器１９０は、３つの頂点を接続して、これら３つの頂点が三角形２に属していることを示し、これら頂点を出力するだろう。頂点再使用バッファ１８６のコントローラ１９２は、出力された頂点が、頂点再使用バッファ１８６内にあるか否かを判定し、頂点再使用バッファ１８６内に無いすべての頂点について、領域シェダー１８４の事例を実施するであろう、という具合である。
【０１１２】
モザイク化ユニットから出力されるプリミティブの順序は、後続するステージにおける頂点再使用に影響を与えうる。したがって、頂点再使用バッファ・サイズ制限内の頂点の再使用を可能にする順序が選択されうる。点生成器によって使用されるウォーキング順序は、予め決定されうる。さらに、点生成器によって使用されるウォーキング順序は、計算された頂点情報が再使用されるように、モザイク化三角形をウォーキングするための順序でありうる。
【０１１３】
本明細書に記載されたさまざまなシステム、方法、およびデバイスは、頂点ミスを最小化するために、頂点再使用バッファ１８６を最も効率的に利用するか、または、少なくとも、より効率的に利用する方式で、出力されるプリミティブの順序を変更する。これは、領域シェダー１８４起動の回数を低減しうる。経路とも称される異なるウォーキング順のさまざまな例が、例えば、以下に記載されるように、図７乃至図９に例示されている。これらは単に例示的な順序であり、一般に、領域内の特定の三角形で始まって、さらなる三角形の間をウォークし、その後、これらのうちの１つまたは複数が頂点を共有する別の一連の三角形をウォークする任意の順序が、頂点再使用を増やすために使用されうる。
【０１１４】
前述したように、領域（例えば、三角形、クワッド）が、リングに分割されうる。リングは、領域内の一連の同心形状でありうる。同心形状は、領域形状と同じ形状である。例えば、領域形状がクワッドである場合、クワッドの境界は、外部リングであると考えられうる。内部リングは、クワッド領域内に存在する一連のより小さなサイズのクワッドでありうる。同様に、領域形状が三角形であれば、三角形の境界は、外部リングであると考えられ、内部リングは、三角形領域内に存在する一連のより小さなサイズの三角形でありうる。
【０１１５】
領域シェダー１８４は、ハル・シェダーからの変換された制御点から面幾何を生成し、モザイク化ユニット１８２からＵＶ座標を生成しうる。さらに、例えば、重心座標が使用される場合、ＵＶＷ座標がモザイク化ユニット１８２によって提供されうることが理解されるだろう。固定機能モザイク化ユニット１８２によって生成された各頂点について、領域シェダー１８４が起動されうる。その入力は、領域上の点のＵＶ座標であるのみならず、制御点およびパッチ定数を含むハル・シェダーからの出力データのすべてでありうる。領域シェダー１８４の出力は、頂点でありうる。しかしながら、前述したように、アルゴリズムが例えば第１のリングにおける三角形を出力することを終了し、次のリングに進んだ場合、頂点再使用バッファ１８６はサイズが制限されうるので、最初の２つのリングの境界におけるすべての頂点は、頂点ミスとなりうる（例えば、頂点再使用バッファ１８６に存在しない）。言い換えれば、頂点再使用バッファ１８６は、計算された座標のすべてを格納するほど十分には大きくないので、頂点情報の喪失が生じる。これは、本明細書に記載されたように、計算された頂点情報が再使用されるようにウォーキングが実行されないのであれば、追加の領域シェダー１８４起動に至りうる。
【０１１６】
いくつかの例において、頂点再使用バッファ１８６は、計算された３２セットの座標を格納するためのメモリを含んでいるバッファでありうる。しかしながら、別の例では、異なるサイズの頂点再使用バッファ１８６が使用されうることが理解されるだろう。頂点再使用バッファ１８６は、領域シェダー１８４によって計算された座標を格納するために使用されうる。一般に、頂点再使用バッファ１８６に格納された座標は、ＵＶ座標ではない。ＵＶ座標は、一般に、ハル・シェダーからの変換された制御点から、面幾何を生成し、モザイク化ユニット１８２からＵＶ（またはＵＶＷ）座標を生成しうる領域シェダー１８４への１つの入力でありうる。領域シェダー１８４からの出力はその後、頂点再使用バッファ１８６に格納されうる。ＵＶ座標またはＵＶＷ座標は、再使用バッファ１８６へのインデクスとして機能しうる。
【０１１７】
本明細書に記載されるように、頂点再使用バッファ１８６は、３２のロケーション・ディープ再使用キャッシュでありうる。モザイク化ユニットは、例えば、３４ビット（ｕについて１７ビットおよびｖについて１７ビット）でありうるＵＶ座標（ｕ、ｖ）を生成しうる。これら３４ビットは、頂点のインデクスに使用されうる。したがって、領域シェダー１８４によって計算され格納されたどの頂点情報が、頂点再使用バッファ１８６において利用可能であるのかを示すためのインデクスとしてＵＶ座標（ｕ，ｖ）を格納しうる。
【０１１８】
ＵＶ座標は、頂点再使用バッファ１８６内のエントリと比較されうる。例えば、いくつかの実施形態は、エントリが頂点再使用バッファ１８６にあるか否かを判定するために使用される比較を実行するために、頂点再使用バッファ１８６に位置する例えばＸＯＲゲートのような一連のコンパレータを使用しうる。再使用キャッシュは、３４ビットのインデクスを格納する。コンパレータは、到来した３４ビットのインデクスを、頂点再使用バッファ１８６に格納されうる３２の格納された３４ビットのインデクスと比較しうる。到来したインデクスが、再使用テーブルにあるものと一致した場合、ヒットする。そうでなければ、ミスとなる。ヒットした場合、必要な情報は頂点再使用バッファ１８６に格納され、そこからアクセスされうるので、領域シェダー１８４は、起動される必要はない。そうではなく、ミスとなると、領域シェダー１８４は、一般に、起動されるだろう。１つの例示的なシステムでは、コンパレータは、各エントリがインデクス（３４ビット）である場合、所与の三角形のための３つのすべての三角形インデクスを、並行して、再使用テーブル内の３２のすべてのエントリと比較するように構成されうる。
【０１１９】
例えば、３２のエントリのうちの何れかが、３４ビット・インデクスと一致すると、その頂点が頂点再使用バッファ１８６に格納され、領域シェダー１８４によって計算される（または再計算される）必要はない。むしろ、頂点再使用バッファ１８６から読み取られうる。そうでなければ、頂点ミスが生じ、頂点情報が領域シェダー１８４によって計算される（または再計算される）必要がある。さらに、再使用キャッシュからの１つのエントリがＦＩＦＯから読み取られ、頂点ミスのために新たに計算された情報のための場所が空けられる。記載されているように、頂点再使用バッファ１８６は、領域シェダー１８４によって計算された頂点情報を格納しうる。このミスされた（ｕ，ｖ）は、頂点処理（領域シェダー１８４処理）のためにシェダー・システムに発行される新たなインデクスとして使用されうる。
【０１２０】
頂点ミスが生じた場合、頂点取得デコーダ（ＶＦＤ）および高レベル・シーケンサ（ＨＬＳＱ）の前にありうるブロック・プリミティブ・コントローラ（ＰＣ）が、これもまたＨＬＳＱの前にあるＶＦＤへ、ＵＶ座標を送る。ＶＦＤは、シェダー・ユニットの前でもありうるＨＬＳＱにＵＶ座標を送る。ＨＬＳＱはシェダー・ユニット（ＳＰ）にＵＶ座標を送り、ＧＰＲにＵＶ座標をロードする。これは、波を作る３２のファイバのうちの１つのファイバ（１つのスレッド）である。波は、このように構成されると、領域シェダー１８４の実行のために出力される。
【０１２１】
図７は、本開示に記載された１つまたは複数の例に従って、三角形領域の頂点を出力するための例示的な技法を例示する図である。提案されたアプローチは、図３および図４に関して説明されたものと比較された場合に、より複雑であると考えられうるウォーキング・パターンを使用しうる。図７では、ウォーキング・パターンは、クワッド領域のために例示される。図７に例示された例において、モザイク化は、例えば１，２，３，４等のような番号順で「ウォーキング」することによって実行されうる。そのような順序は、頂点を再計算する必要性を減少させる、頂点再使用バッファ１８６における値の再使用を考慮するだろう。
【０１２２】
図７に例示されるように、クワッド領域２００は、４つの異なる部分２０２，２０４，２０６，２０８に分割されうる。各部分２０２，２０４，２０６，２０８は、別々に処理されうる。この説明の目的のために、部分２０８は、第１の部分と考えられるだろう。部分２０２，２０４，２０８，２０８のうちの何れもが、第１の部分と考えられうることが理解されるだろう。
【０１２３】
部分２０８に示すように、モザイク化は、例えば“１”である外部の縁において始まって、例えば、２，３，４，５，６，７，８のように内部に進む番号順にウォーキングすることによって実行されうる。例えば、モザイク化ユニットは、領域を、第１の部分を含む複数の部分に分割しうる。モザイク化ユニットは、第１の部分内に存在する第１の形状のセットの頂点の座標を決定しうる（例えば、第１の形状のセットは、１乃至８とラベルされた三角形を含む）。ここで、第１の形状のセットのうちの各形状は、第１の部分の第１の縁に、少なくとも１つの頂点を含む。第１の形状のセットの頂点のための座標を決定した後、モザイク化ユニットは、第１の部分内に存在する第２の形状のセットの頂点の座標を決定しうる（例えば、第２の形状のセットは、９乃至１６とラベルされた三角形を含む）。第２の形状のセットのうちの各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。さらに、第２の形状のセットのうちの形状の何れも、第１の部分の第１の縁に頂点を含んでいない。これは、これらの頂点のための頂点情報が頂点再使用バッファ１８６に未だにある間、追加の頂点が処理されることを可能としうる。
【０１２４】
頂点再使用バッファ１８６は、領域シェダー１８４によって計算された３２セットの座標を格納しうる。したがって、モザイク化ユニット１８２（例えば、点生成器１８８および接続生成器１９０）が、例えば９における外部の縁から内部へ１６までウォークすると、１乃至８のための８つの値のおのおのが、頂点再使用バッファ１８６において利用可能でありうる。さらに、いくつかの例では、部分２０８において１から８へウォーキングした場合、部分２０８と共有される部分２０６の縁に沿った値が、頂点再使用バッファ１８６において利用可能となりうる。９から１６までウォーキングした後、モザイク化は、例えば“１７”における外部の縁で始まって内部に進む番号順にウォーキングすることによって継続しうる。
【０１２５】
図７の例示された例では、部分２０２，２０４，２０６，２０８はそれぞれ多くの三角形を含んでいる。例において、部分２０２，２０４，２０６，２０８について計算された値の各セットは、その部分が処理されている間、使用のために頂点再使用バッファ１８６に格納されうる。（頂点再使用バッファ１８６は、例えば、計算された頂点情報のために３２の格納場所を含みうることに再度注目されたい。）
図７に例示されるように、部分２０８は、頂点再使用バッファ１８６をオーバフローさせることなく部分２０８の全体がウォークされることを可能にするのに十分少ない数の三角形しか有していない。さらに詳しくは、格納される必要のある頂点の数は、十分少ない数であり、頂点再使用バッファが、例えば３２の格納空間を有することを考慮すると、頂点再使用バッファ１８６は、オーバフローしない。三角形は３つの頂点を有しているが、頂点が、複数の三角形で共有されることによって、格納される必要のある頂点の合計数は、一般には、部分または細部分における三角形の数の３倍にはならないであろうことが理解されるだろう。さらに、部分または細部分におけるいくつかの頂点は、例えば、その頂点の頂点情報がもはや必要とされていない場合、その後の領域シェダー起動を必要とすることなくオーバライトされうることも理解されるだろう。
【０１２６】
三角形が１から８へとウォークされると、１０の頂点が格納され、２２の格納空間が残る。三角形９から１６がウォークされると、必要とされる頂点のうちの５つが、頂点再使用バッファ１８６において既に利用可能となり、領域シェダー１８４は、これらを計算するために起動される必要はないだろう。さらに、三角形９乃至１６を計算するために、三角形１乃至８からの頂点のうちの５つは必要とされず、頂点再使用バッファ１８６から破棄されうる。言い換えると、第１の縁２１２に沿った頂点が破棄されうる。しかしながら、これら頂点は、部分２０６を処理する場合に再計算される必要があり、部分２０８の処理から再度必要とされない。この処理は、番号順に進み、必要に応じて頂点を再使用し、部分２０８を処理するために必要とされない場合に、頂点を破棄する。
【０１２７】
しかしながら、別の例では、部分２０２，２０４，２０６，２０８のうちの１つまたは複数の縁に沿った頂点に関連する情報は、別の部分２０２，２０４，２０６，２０８の処理における使用のために維持されうる。例えば、第１の縁２１２は、部分２０６，２０８によって共有される縁である。いくつかのケースでは、部分２０６と部分２０８との両方の処理における使用のために第１の縁２１２に沿った頂点のための頂点情報を維持することが可能でありうる。さらに詳しくは、三角形１乃至８がウォークされ、１０の頂点の情報が格納されうる。その後、三角形９乃至１６がウォークされ、追加の５つの三角形の情報が格納されうる。三角形９乃至１６は、三角形１乃至８と、５つの頂点を共有する。部分２０８の処理を開始する前に、頂点再使用バッファに何れの情報も格納されていないと仮定すると、現在格納されている頂点の合計数は、１５となりうる。頂点再使用バッファ１８６はオーバフローしておらず、部分２０８の全体は、何れの頂点情報をも破棄することなく処理されうることに注目されたい。次に、部分２０６が処理されるのであれば、第１の縁２１２に沿った頂点の頂点情報が、頂点再使用バッファ１８６において未だに利用可能でありうる。部分２０８全体のための頂点情報が、頂点再使用バッファ１８６に格納されうるが、それは、もはや必要とされない頂点情報をオーバライトするために未だに利用可能でありうる。
【０１２８】
モザイク化ユニット１８２は、２つの点生成器１８８（内部および外部）および接続生成器１９０を含みうる。本明細書に記載されるように、三角形は、番号順にウォークされうる。例えば、１つのシステムでは、三角形１乃至８が、最初にウォークされうる。クワッド領域２００では、外部点生成器が、クワッド領域２００の三角形１乃至８の右への頂点を生成し、内部点生成器が、クワッド領域２００の三角形１乃至８の左への頂点を生成しうる。モザイク化ユニット１８２における接続生成器１９０は、三角形１乃至８をともにステッチし、内部点生成器出力と外部点生成器出力との両方から頂点を取る。
【０１２９】
さらに詳しくは、外部点生成器は、三角形１で始まって、三角形１の２つの鉛直の頂点を生成し、内部点生成器は、第３の頂点を生成するだろう。接続生成器は、これら３つの頂点を接続し、これら３つの頂点が三角形１に属することを示し、これら頂点を出力するだろう。頂点再使用バッファ１８６におけるコントローラ（すなわち、頂点再使用ロジック）は、出力された頂点が頂点再使用バッファ１８６内にあるか否かを判定し、頂点再使用バッファ１８６に無いすべての頂点のために、領域シェダー１８４の事例を実施するであろう。
【０１３０】
その後、外部点生成器は、三角形２の頂点を生成し、内部点生成器は、三角形２の２つの鉛直の頂点を生成するだろう。接続生成器１９０は、これら３つの頂点を接続し、これら３つの頂点が三角形２に属することを示し、これら頂点を出力するだろう。頂点再使用バッファ１８６のコントローラ１９２は、出力された頂点が、頂点再使用バッファ１８６にあるか否かを判定し、頂点再使用バッファ１８６に無いすべての頂点のために、領域シェダー１８４の事例を実施するであろう、という具合である。
【０１３１】
この例では、三角形１から三角形２へ「ウォーキング」することによって点生成器１８８と接続生成器１９０が、先ず三角形１を構築し、次に三角形２を構築し、その後、三角形３乃至８を数字的にウォーキングすることを続ける。したがって、三角形１乃至８は、第１の部分（この例では部分２０８）内に存在する第１の形状のセットと考えられうる。図７に例示されるように、第１の部分内に存在する第１の形状のセットは、第１の部分２０８の第１の縁２１２における例えば２１０のような少なくとも１つ（しばしば２つ）の頂点を含みうる。例えば、頂点２１０は、三角形６，６，および７の頂点である。三角形５，７は、第１の縁２１２上の２つの頂点を含んでいる一方、三角形６は、第１のエッジ２１２上に１つの頂点しか含んでいない。
【０１３２】
その後、点生成器１８８は、一般的に同じ方式で、三角形９乃至１６を「ウォーク」するだろう。三角形９乃至１６は、第１の部分２０８内に存在する第２の形状のセットと考えられうる。外部点生成器は、クワッド領域２００の三角形９乃至１６の右に頂点を生成し、内部点生成器は、クワッド領域２００の三角形９乃至１６の左に頂点を生成しうる。モザイク化ユニット１８２内の接続生成器１９０は、三角形９乃至１６のステッチを開始し、内部点生成器出力と外部点生成器出力との両方から頂点を取る。この処理は、部分２０８内の三角形の残りについて、および、他の部分２０２，２０４，２０６における三角形について継続しうる。図７に例示されるように、第２の形状のセット（三角形９乃至１６）の各形状は、例えば頂点２１４のような少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。さらに、図７に例示されるように、第２の形状のセットのうちの形状の何れも、第１の部分２０８の第１の縁２１２に頂点を含んでいない。
【０１３３】
例において、第１の縁２１２は、クワッド領域２００の２つの境界２１６，２１８の間に存在しうる。さらに、第１の部分２０８は、少なくとも４つの縁のうちの第１の縁２１２および第２の縁２２０が領域の境界内に存在するように４つの縁を含みうる。ここで、４つの縁のうちの第３の縁および第４の縁はおのおの、領域２１８，２２２の境界に存在する。
【０１３４】
部分２０２，２０４，２０６，２０８は、さまざまな順序で処理されうることが理解されるだろう。例示的なウォーキング・スキームの結果、一般に、領域シェダー１８４の起動回数がより少なくなる。なぜなら、頂点再使用バッファ１８６では、リングの周囲をウォーキングすることと比較して、より多くの頂点が利用可能であるからである。形状のセットは、１乃至８の後に、９乃至１６、１７乃至２４、および２５乃至３２が続くこと以外のさまざまな順序で処理されうることも理解されるだろう。例えば、２５乃至３２が第１の形状のセットであると考えられ、形状１７乃至２４は、第２の形状のセットであると考えられうる。さらに、形状のセットの向きが変動することがあり、例えば、三角形１，２，９，１０，１７，１８，２５，２６が、第１の形状のセットとなりうる。さらに、部分は、図７の例におけるものとは異なってサイジングされうることも理解されるだろう。
【０１３５】
図８は、本開示に記載された１つまたは複数の例に従って、クワッド領域の頂点を出力するための例示的な技法を例示する図である。提案されたアプローチは、図３および図４に関して説明されたものと比較された場合、より複雑であると考えられうるウォーキング・パターンを使用しうる。図７では、ウォーキング・パターンは、三角形領域のために例示されている。図７に例示された例において、モザイク化は、例えば１，２，３，４等のような番号順で「ウォーキング」することによって実行されうる。そのような順序は、頂点再使用バッファ１８６における値の再使用を可能にする。これは、頂点を再計算する必要性を低減する。
【０１３６】
図８に例示されるように、三角形領域２２５は、３つの異なる部分２２７，２２９，２３１に分割されうる。各部分２２７，２２９，２３１は、個別に処理されうる。この例の目的のために、部分２３１は、第１の部分と考えられうるが、部分２２７，２２９，２３１の何れかが第１の部分と考えられうることが理解されるだろう。部分２３１に示すように、モザイク化は、例えば“１”である外部の縁において始まって、例えば、２，３，４，５，６，７，８のように内部に進む番号順にウォーキングすることによって実行されうる。
【０１３７】
上記した図７の説明に類似して、モザイク化ユニットは、第１の部分２３１内に存在する第１の形状のセット（例えば三角形１乃至８）の頂点の座標を決定しうる。第１の形状のセットの各形状は、第１の部分の第１の縁２３３における少なくとも１つの頂点を含む。第１の形状のセット（三角形１乃至８）の頂点の座標を決定した後、第１の部分２３１内に存在する第２の形状のセット（三角形９乃至１６）の頂点の座標を決定する。第２の形状のセット（三角形９乃至１６）の各形状は、例えば頂点２３６のような少なくとも１つの頂点を、第１の形状のセット（三角形１乃至８）のうちの少なくとも１つの形状と共有する。さらに、第２の形状のセットのうちの何れの形状も、第１の部分２３１の第１の縁２３３に頂点を含んでいない。さらに、図８に例示されるように、三角形領域２２５の境界上に２つの縁２３５が存在し、三角形領域２２５の境界内に２つの縁２３７が存在する。
【０１３８】
頂点再使用バッファ１８６は、領域シェダー１８４によって計算された３２セットの座標を格納しうる。したがって、例えば、点生成器が、９における外部の縁から内部の１６へウォークすると、１乃至８のための８つの値のおのおのが、頂点再使用バッファ１８６において利用可能でありうる。さらに、いくつかの例では、部分２３１と共有されうる部分２２９の縁に沿った値は、部分２３１において１から８までウォークした場合に、頂点再使用バッファ１８６において利用可能でありうる。９から１６までウォークした後、モザイク化は、例えば１７における外部の縁で始まって内部に２４まで進み、その後２５乃至３１が続く番号順にウォーキングすることによって継続しうる。その後、部分２２７は経路３３，３４，３５等にしたがってウォークされうる。この経路が、２３１と２２７との間の縁について計算された値の再使用を可能にすることが注目されるだろう。（頂点再使用バッファ１８６は、例えば、計算された頂点情報のセットのために３２の格納場所を含みうることに再度注目されたい。）
本明細書で説明されるように、モザイク化ユニット１８２は、２つの点生成器１８８（内部および外部）および接続生成器１９０ユニットを含みうる。三角形領域２２５では、外部点生成器が、三角形領域２２５の三角形１乃至８の右への頂点を生成し、内部点生成器が、三角形領域２２５の三角形１乃至８の左への頂点を生成しうる。モザイク化ユニット１８２内の接続生成器１９０は、三角形１乃至８のステッチを開始し、内部点生成器出力と外部点生成器出力との両方から頂点を取る。その後、点生成器１８８は、三角形９乃至１６を「ウォーク」するだろう。この処理は、部分２３１内の三角形の残りについて、および、他の部分２２７，２２９における三角形について継続しうる。部分２２７，２２９，２３１は、さまざまな順序で処理されうることが理解されるだろう。
【０１３９】
図７の例の説明と同様に、図８の例では、部分２３１は、頂点再使用バッファ１８６をオーバフローさせることなく部分の全体がウォークされることを可能にするのに十分な、少ない数の三角形しか有していない。三角形が１から８へとウォークされると、１０の頂点が格納され、２２の格納空間が残る。三角形９乃至１６がウォークされると、必要とされる頂点のうちの５つが、頂点再使用バッファ１８６において既に利用可能となり、領域シェダー１８４は、これらを計算するために起動される必要はなくなるであろう。さらに、三角形９乃至１６を計算するために、三角形１乃至８からの頂点のうちの５つは必要とされず、頂点再使用バッファ１８６から破棄されうる。したがって、その部分が処理されている間、部分２２７，２２９，２３１のために計算された値の各セットは、使用のために頂点再使用バッファ１８６に格納されうる。図７および図８は、低いモザイク化レベルのためのクワッドおよび三角形の例をそれぞれ例示している。３０を越えるモザイク化レベルの例が、図９に関して例示され、以下に説明される。
【０１４０】
図９は、本開示に記載された１つまたは複数の例に従って、クワッド領域の頂点を出力するための別の例示的な技法を例示する図である。図９は、３０を越えるモザイク化レベルの例を例示する。前述した図７および図８の低いモザイク化レベルの各々では、モザイク化は、１，２，３，４等のような番号順に「ウォーキング」することによって実行されうる。そのような順序は、バッファの再使用を可能にする。これは、頂点を再計算する必要性を低減する。３０を越えるモザイク化レベルの例では、中央までずっとウォークすることは非現実的でありうるので、一例では、システムは、高さのウォークを、例えば１５（あるいは、ウォーク毎に３０の三角形）のように分割する必要がありうる。これは、図９に例示される。
【０１４１】
例えば、クワッド領域２５０は、部分２５２を含む４つの部分に分割されうる。これら部分は、例えば２５４および２５６のような細部分にさらに分割されうる。このように、各細部分は、頂点再使用バッファ１８６に格納されたデータからの頂点再使用を可能にするために別々にウォークされうる。しかしながら、頂点データのいくつかの再生成は、例えば、細部分２５４と細部分２５６との間の境界２５６において必要となりうることが理解されるだろう。例えば、モザイク化ユニットは、第１の細部分２６０の第１の形状のセットの頂点の座標を決定しうる。第１の細部分の第１の形状のセットは、第１の細部分２５８内に存在する。第１の細部分２６０の第１の形状のセットの各形状は、第１の細部分２５４の第１の縁２６２に少なくとも１つの頂点を含む。第１の細部分２５４の第１の形状のセットの頂点の座標を決定した後、モザイク化ユニットは、第１の細部分２６０内に存在する細部分２６４の第２の形状のセットの頂点の座標を決定しうる。第１の細部分２６４の第２の形状のセットのうちの何れの形状も、第１の細部分２５４の第１の縁２６２に頂点を含んでいない。
【０１４２】
本明細書で記述されるように、頂点再使用バッファ１８６サイズと、選択された経路との間には関連性がある。例えば、より大きな頂点再使用バッファは、より長いウォーキング経路を可能にしうる。しかしながら、頂点再使用バッファ・サイズのサイズを増加させないようにすることが好適でありうる。例えば、より大きな再使用バッファ・サイズは、どの情報が頂点再使用バッファ１８６に格納されているのかを判定するために使用される頂点再使用ロジックの複雑さを増加させうる。さらに、頂点再使用バッファ１８６は、固定サイズでありうる。例えば、頂点再使用バッファ１８６は、モザイク化ユニットから分離した構成要素にあり、頂点再使用バッファ１８６を含む構成要素の再設計を回避することが好適でありうる。
【０１４３】
図１０は、本開示に記載された１つまたは複数の例に従って、クワッド領域３７５の頂点を出力するための別の例示的な技法を例示する図である。非均一なモザイク化のケースでは、領域の縁が、異なるモザイク化ファクタを有し、内部が、縁とは異なるモザイク化ファクタを有しているか、その両方である。例えば、縁が、内部とは異なるモザイク化ファクタを有するケースでは、システムは、図７乃至図９に関して実証された方式でウォークしていないかもしれない。むしろ、そのようなケースは、最外周のリング、または、不規則なことが生じる最外周のリングの一部分を取り扱い、その後、領域の内部を取り扱うことによって、処理されうる。例えば、図１０に例示されるように、アルゴリズムのうちの１つの例は、縁１で始まって、領域２，３，４・・・１２を通って進む番号順に進みうる。図７および図８とは異なり、図１０に例示されるように、番号１乃至１２は、個別の三角形自身のための順序ではなく、多くの三角形からなる領域を処理するための例示的な順序を示しうることに注目されたい。したがって、本質的に、クワッドの各象限（または、例示されていないが、三角形のケースにおける１／３）は、２つの近隣の半分の縁の間に挟まれるだろう。一般に、モザイク化は、頂点再使用バッファ１８６に格納されたデータを一般に再使用するウォーキング順序で実行されうる。例えば、順序１乃至１２に従うウォークは、クワッド領域３７５の別の部分間の境界３７７に沿って計算されるデータの多くを再使用しうる。
【０１４４】
図１１は、本開示に記載された１つまたは複数の例に従って、奇数のセグメントを持つ縁を有する三角形領域のための例示的な技法を例示する図である。図１２は、本開示に記載された１つまたは複数の例に従って、奇数のセグメントを持つ縁を有するクワッド領域のための例示的な技法を例示する図である。
【０１４５】
図１１および図１２に例示されるように、奇数の辺長を持つ領域が、中心軸から離されうる。そのような例では、点生成器は、各部分を個別にウォークすることによって、パッチを処理しうる。これは、三角形３００またはクワッド３２５のように、パッチの異なる部分間で再使用が生じうるように、順序が選択されないことを示すことは意図されていない。モザイク化ユニットから出力されるプリミティブの順序は、後続するステージにおける頂点再使用に影響しうる。従って、頂点再使用バッファ・サイズ制限内での頂点の再使用を可能にする順序付けが選択されうる。本明細書に記載されるように、ウォーキングは、計算された頂点情報が再使用されるように実行されうる。
【０１４６】
例えば、図１１に例示されるように、三角形３００は、部分３０２，３０４，３０６および中心３０８を含みうる。部分３０２，３０４，３０６、および中心３０８は個別にウォークされうる。例えば、図８に関して説明されたウォーキング・スキームに一般に類似したような、外部の縁から内部へのウォーキング・スキームが使用されうる。中心は、個別にウォークされうる。理解されるように、いくつかの再使用は、部分３０２，３０４，３０６のうちの少なくとも１つと中心３０８との間で可能でありうる。図１１の具体的な例では必要ではないが、図９および図１０に関して説明された概念は、必要に応じて、より大きなモザイク化値と非均一なモザイク化を取り扱うように適用されうることが理解されるべきである。例えば、各部分３０２，３０４，３０６では、モザイク化ユニットは、例えば、頂点の数が頂点再使用バッファ１８６のサイズよりも少ない場合、頂点再使用バッファ１８６をオーバフローさせずに、別の部分との境界における内部へと縁からウォークされうる。繰り返すが、頂点は三角形を共有しているので、三角形は３つの頂点を有しているが、格納される必要のある頂点の合計数は、一般には、部分または細部分における三角形の数の３倍にはならないであろうことが理解されるだろう。したがって、再使用は、一般に、図８の説明と類似して生じうる。しかしながら、必要ならば、より大きなモザイク化ファクタと奇数の辺長を有する領域の部分が、さらに、図９に関して説明されたように、細部分に分割されうる。中心３０８は、単一の三角形であるので、さらなる分割無しに取り扱われうることに注目されたい。しかしながら、いくつかの例では、より高いモザイク化値では、部分および細部分への異なる分割が可能でありうる。奇数のセグメントを備えた縁を含む領域の非均一なモザイク化も可能でありうる。
【０１４７】
図１２に例示されるように、クワッド３２５は、部分３２７，３２９，３３１，３３３を含みうる。部分３２７，３２９，３３１，３３３は、個別にウォークされうる。例えば、外部の縁から内部へのウォーキング・スキームは、図７に関して説明されたウォーキング・スキームに一般に類似したスキームとして使用されうる。図１２の特定の例では必要ではないが、図９および図１０に関して説明された概念は、必要に応じて、より大きなモザイク化値および非均一なモザイク化を取り扱うために適用されうることが理解されるべきである。例えば、各部分３２７，３２９，３３１，３３３では、モザイク化ユニットは、頂点再使用バッファ１８６がオーバフローしないように、十分に少ない数の頂点を処理しながら、別の部分の境界において、縁から内部へウォークしうる。したがって、一般に、再使用は、図７の説明に類似して生じうる。しかしながら、必要ならば、より大きなモザイク化ファクタおよび奇数の辺長を持つ領域の部分がさらに、図９に関して説明されるように、細部分へ分割されうる。奇数個のセグメントを持つ縁を含む領域の非均一なモザイク化もまた可能である。
【０１４８】
別の例では、均一なウォーキング・スキームが、我々に、非均一なウォーキング・スキームよりもより良好な結果を与え、１つの例示的なシステムは、モザイク化ユニット１８２のセットアップ・ステージにおいて、すべてのモザイク化ファクタが等しいか否かに関するフラグを決定しうる。ほとんどのアプリケーションは、適応的なモザイク化を利用していないので、これは、我々に、パフォーマンス利点を与えるだろう。
【０１４９】
図１３は、本開示に記載された１つまたは複数の例に従って、モザイク化のための例示的な方法を例示するフローチャートである。例示のみの目的のために、図６が参照される。前述したように、図６は、モザイク化ユニットの例を提供する。モザイク化ユニットの例は、図１のモザイク化ステージ１２４と、図２のプリミティブ生成器１４２のみならず、図６のモザイク化ユニット１８２をも含む。
【０１５０】
例示的なシステムでは、モザイク化ユニットは、パッチを、多くの部分に分割しうる（３５０）。いくつかのケースでは、例えば、モザイク化ユニットが、クワッド領域を、４つの部分に分割しうる。同様に、別の例では、モザイク化ユニットは、三角形領域を３つの部分に分割しうる。いくつかのケースでは、モザイク化ユニットはさらに、クワッドまたは三角形領域を、細部分へ分割しうる。このように、部分または細部分は、頂点ミスを最小化または低減するために頂点再使用バッファ１８６が効率的に使用されうるように、グループにおいて処理されうる。これは、領域シェダー１８４起動の回数を低減しうる。例えば、部分または細部分は、三角形の３２のペアよりも少ない、十分少ない数の三角形しか有しておらず、細部分または部分の全体が、頂点再使用バッファをオーバフローさせることなくウォークされることが可能となる。三角形は３つの頂点を有しているが、頂点は三角形を共有しているので、格納される必要のある頂点の合計数は、一般には、部分または細部分における三角形の数の３倍にはならないであろうことが理解されるだろう。さらに、部分または細部分におけるいくつかの頂点は、例えば、その頂点の頂点情報がもはや必要では無い場合、その後の領域シェダー起動を必要とすることなくオーバライトされうることも理解されるだろう。
【０１５１】
いくつかの例において、これら三角形のおのおのの頂点がモザイク化ステージ１２４によって出力される場合、これら部分内の三角形間で共有される頂点が、頂点再使用バッファにおいて利用可能であることを保証できるほど、部分内の三角形の数がそのように大きいか、または、頂点再使用バッファのサイズが小さすぎる。いくつかの例では、これに対処するために、モザイク化ステージ１２４はさらに、部分を細部分へ分割しうる。モザイク化ステージ１２４は、細部分の各々内で、本開示に記載された頂点出力スキームを実施しうる。例えば、モザイク化ステージ１２４は、そのような三角形の頂点を出力する場合、細部分内の三角形のために共有された頂点が頂点再使用バッファにおいて利用可能になるように、部分を細部分に分割しうる。
【０１５２】
さらに、複数の部分は、処理されるべき最初の部分でありうる第１の部分を含みうる。例において、第１の部分は、図７の部分２０８または図８の部分２３１でありうる。前述したように、第１の部分は、三角形９乃至１６、１７乃至２４、および２５乃至３２が後続する三角形１乃至８をウォークすることによって順に処理されうる。
【０１５３】
例示的なシステムでは、モザイク化ユニットは、第１の部分内に存在する第１の形状のセットの頂点の座標を決定しうる（３５２）。例において、第１の形状のセットの各形状は、例えば図７の第１の縁２１２または図８の第１の縁２３３のような第１の部分の第１の縁に少なくとも１つの頂点を含みうる。
【０１５４】
モザイク化ユニットから出力されたプリミティブの順序に依存して、頂点再使用バッファ１８６に格納された頂点情報は、その後のステージにおいて再使用されうる。従って、頂点再使用バッファ・サイズ制限内での頂点の再使用を可能にする順序が選択されうる。前述したように、バッファ・サイズを増加させないことが有利でありうる。
【０１５５】
モザイク化ユニットは、第１の部分内に存在する第２の形状のセットの頂点の座標を決定しうる（３５４）。第１の形状のセットの頂点の座標を決定した後、これは起こりうる（３５２）。第２の形状のセットのうちの各形状は、少なくとも１つの頂点を、第１の形状のセットのうちの少なくとも１つの形状と共有する。さらに、第２の形状のセットのうちの形状の何れも、第１の部分の第１の縁に頂点を含んでいない。出力されるプリミティブの順序は、（例えば、頂点再使用バッファ１８６に存在しない必要とされる頂点情報のような）頂点ミスを最小化するために頂点再使用バッファ１８６を効率的に利用しうる。これは、頂点再使用バッファ１８６に格納された、以前に計算された情報の再使用を増やすことによって、領域シェダー１８４起動の回数を低減しうる。領域シェダー１８４起動の回数を低減することは、電力を節約し、パフォーマンスを高めうる。
【０１５６】
一般に、再使用は、多くの三角形が、頂点再使用バッファ１８６をオーバフローさせることなく１つのセットとして「ウォーク」されうるまで、パッチを、よりさらに小さな部分または細部分へ分割することによって達成されうる。例えば、細部分または部分は、細部分または部分の全体が、頂点再使用バッファをオーバフローさせることなくウォークされることを可能にする十分少ない数の三角形しか有しない。三角形は３つの頂点を有するが、頂点が、三角形を共有しているので、格納される必要のある頂点の合計数は、一般には、部分または細部分における三角形の数の３倍にはならないであろうことが理解されるだろう。さらに、部分または細部分におけるいくつかの頂点は、例えば、その頂点の頂点情報がもはや必要とされない場合、その後の領域シェダー起動を必要とすることなくオーバライトされうることも理解されるだろう。（頂点再使用バッファ１８６は、一般に、いくつかの例において、３２の格納場所を有しうる。）あるいは、例えば、格納された情報が別の部分として用いられるように、頂点再使用バッファ１８６のうちの半分のみを埋めることが、縁から、予め定められた内部位置までウォークされ、頂点再使用バッファ１８６の他の半分が埋められている間に、部分または細部分が、縁から、予め定められた内部位置までウォークされうるように、部分または細部分がサイジングされうる。また別の例において、パッチの１つまたは複数の部分または細部分は、各経路が、頂点再使用バッファ１８６をほとんど埋めるようにサイジングされ、後続する経路では、頂点再使用バッファ１８６における頂点情報が使用され、その後、新たな頂点情報によってオーバライトされうる。さらに、より具体的な例が本明細書で提供される。
【０１５７】
図１４は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、その他の可能なウォーキング・スキームとの比較を例示する図である。この図は、理想的な再使用ケース５００、現在のアプローチ５０２の例、二重リングのウォーキング５０４、および単一リングのウォーキング５０６の例示を提供する。この例は、均一モザイク化レベル１．．６４（すなわち、すべての縁および内部について同じモザイク化ファクタ）を持つ三角形領域のためのものである。図１４に例示されるように、縦軸は、頂点ミスの数で除されたプリミティブの数の割合である。横軸はモザイク化レベルである。
【０１５８】
図１５は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。この図は、理想的な再使用ケース５１０、均一なケース５１２、二重リングのケース５１４、および単一リングのケース５１６の場合における三角形領域の結果の例示を提供する。図１４に類似して、図１５に例示されるように、縦軸は、頂点ミスの数で除されたプリミティブの数の割合である。横軸はモザイク化レベルである。
【０１５９】
図１６は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。この図は、理想的な再使用ケース５２０、均一なケース５２２、二重リングのケース５２４、および単一リングのケース５２６の場合におけるクワッド領域の例示を提供する。
【０１６０】
図１４および図１５に類似して、図１６に例示されるように、縦軸は、頂点ミスの数で除されたプリミティブの数の割合である。横軸はモザイク化レベルである。
【０１６１】
図１７は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。この図は、三角形領域パフォーマンス・ロス対理想の例示を提供する。図１７は、単一のリング５３０、非均一５３４、および均一５３６のウォーキング・スキームの場合のパフォーマンス・ロス（対理想）を例示する。さらに、内部モザイク化レベル２．．６４の場合、図１７は、最悪である５３２の可能な外部モザイク化レベル結果を例示する。図１７に例示されるように、縦軸はパフォーマンス・ロスを示す。横軸はモザイク化レベルである。
【０１６２】
図１８は、本開示において記載された１つまたは複数の例に従う例示的なアルゴリズムと、他の可能なウォーキング・スキームとの別の比較を例示する図である。この図は、クワッド領域パフォーマンス・ロス対理想の例示を提供する。図１８は、単一のリング５４０、非均一５４４、および均一５４６のウォーキング・スキームの場合のパフォーマンス・ロス（対理想）を例示する。さらに、内部モザイク化レベル２．．６４の場合、図１８は、最悪である５４２の可能な外部モザイク化レベル結果を例示する。図１８に例示されるように、縦軸はパフォーマンス・ロスを示す。横軸はモザイク化レベルである。
【０１６３】
１つまたは複数の例において、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせで実現されうる。これら機能は、ソフトウェアで実施されるのであれば、１つまたは複数の命令またはコードとしてコンピュータ読取可能な媒体に格納されうる。コンピュータ読取可能な媒体は、コンピュータ・データ記憶媒体を含みうる。データ記憶媒体は、本開示において記載された技法を実施するための命令、コード、および／または、データ構造を取得するために１つまたは複数のコンピュータまたは１つまたは複数のプロセッサによってアクセスされうる任意の利用可能な媒体でありうる。限定ではなく、例によって、このようなコンピュータ読取可能な媒体は、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、または、命令またはデータ構造の形態で所望のプログラム・コードを格納するために使用され、かつ、コンピュータによってアクセスされることが可能なその他任意の媒体を備えうる。本明細書で使用されるようにディスク（ｄｉｓｋおよびｄｉｓｃ）は、コンパクト・ディスク（ｄｉｓｃ）（ＣＤ）、レーザ・ディスク（ｄｉｓｃ）、光ディスク（ｄｉｓｃ）、デジタル多用途ディスク（ｄｉｓｃ）（ＤＶＤ）、フロッピー（登録商標）ディスク（ｄｉｓｋ）、Ｂｌｕ−ｒａｙ（登録商標）ディスク（ｄｉｓｃ）を含む。ここで、ｄｉｓｋは通常、データを磁気的に再生し、ｄｉｓｃは、レーザを用いてデータを光学的に再生する。前述の組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
【０１６４】
このコードは、例えば、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ロジック・アレイ（ＦＰＧＡ）、またはその他の等価な統合またはディスクリートな論理回路のような１つまたは複数のプロセッサによって実行されうる。したがって、本明細書で使用されているように、「プロセッサ」という用語は、前述した構成、または、本明細書に記載された技法の実施のために適切なその他任意の構成のうちの何れかを称しうる。さらに、これら技法は、１つまたは複数の回路またはロジック素子内で完全に実現されうる。
【０１６５】
本開示の技法は、無線ハンドセット、集積回路（ＩＣ）、またはＩＣのセット（すなわち、チップ・セット）を含む広範なデバイスまたは装置において実現される。本開示では、さまざまな構成要素、モジュール、またはユニットが、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために記載されているが、必ずしも、別のハードウェア・ユニットによる実現を必要としている訳ではない。むしろ、前述したように、さまざまなユニットは、適切なソフトウェアおよび／またはファームウェアと連携して、ハードウェア・ユニット内に結合されうるか、または、前述した１つまたは複数のプロセッサを含む相互運用的なハードウェア・ユニットの集合によって提供されうる。
【０１６６】
様々な例が記載された。これらの例およびその他の例は、以下の特許請求の範囲のスコープ内である。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［発明１］
領域をモザイク化するためのモザイク化ユニットであって、
前記領域を、第１の部分を含む複数の部分に分割することと、
前記第１の部分内に存在する第１の形状のセットの頂点の座標を決定することであって、
前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の部分内に存在する第２の形状のセットの頂点の座標を決定することと、を実行するように構成され、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含んでいない、モザイク化ユニット。
［発明２］
前記モザイク化ユニットは、再使用バッファのサイズと、前記複数の部分のうちの少なくとも１つにおける形状の数に基づいて、前記複数の部分のうちの少なくとも１つを、複数の細部分に分割するように構成され、これによって、細部分内の前記第１の形状のセットのうちの一部分が、前記再使用バッファをオーバフローさせないようにした、発明１に記載のモザイク化ユニット。
［発明３］
前記モザイク化ユニットはさらに、
第１の細部分内に存在する、前記第１の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第１の細部分の第１の形状のセットの各形状は、前記第１の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の細部分の第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する前記細部分の第２の形状のセットの頂点の座標を決定することと、
を実行するように構成され、
前記第１の細部分の第２の形状のセットのうちの何れの形状も、前記第１の細部分の第１の縁に頂点を含んでいない、発明２に記載のモザイク化ユニット。
［発明４］
前記領域は三角形領域であり、前記領域は３つの部分に分割される、発明１に記載のモザイク化ユニット。
［発明５］
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、発明１に記載のモザイク化ユニット。
［発明６］
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在する、発明１に記載のモザイク化ユニット。
［発明７］
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、発明１に記載のモザイク化ユニット。
［発明８］
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、発明１に記載のモザイク化ユニット。
［発明９］
前記領域を複数の部分に分割することはさらに、前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することを備え、
前記モザイク化ユニットはさらに、前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定するように構成された、発明１に記載のモザイク化ユニット。
［発明１０］
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、発明９に記載のモザイク化ユニット。
［発明１１］
領域をモザイク化する方法であって、
領域を、第１の部分を含む複数の部分に分割することと、
前記第１の部分内に存在する第１の形状のセットの頂点の座標を決定することであって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の部分内に存在する第２の形状のセットの頂点の座標を決定することと
を備え、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含んでいない、方法。
［発明１２］
再使用バッファのサイズと、前記複数の部分のうちの少なくとも１つにおける形状の数に基づいて、前記複数の部分のうちの少なくとも１つを、複数の細部分に分割することをさらに備え、これによって、細部分内の前記第１の形状のセットのうちの一部分が、前記再使用バッファをオーバフローさせないようにした、発明１１に記載の方法。
［発明１３］
第１の細部分内に存在する、前記第１の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第１の細部分の第１の形状のセットの各形状は、前記第１の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の細部分の第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する、前記細部分の第２の形状のセットの頂点の座標を決定することと
をさらに備え、
前記第１の細部分の第２の形状のセットのうちの何れの形状も、前記第１の細部分の第１の縁に頂点を含んでいない、発明１２に記載の方法。
［発明１４］
前記領域は三角形領域であり、前記領域は３つの部分に分割される、発明１１に記載の方法。
［発明１５］
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、発明１１に記載の方法。
［発明１６］
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在する、発明１１に記載の方法。
［発明１７］
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、発明１１に記載の方法。
［発明１８］
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、発明１１に記載の方法。
［発明１９］
前記領域を複数の部分に分割することはさらに、
前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することと、
前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定することと
を備える、発明１１に記載の方法。
［発明２０］
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、発明１９に記載の方法。
［発明２１］
領域をモザイク化するためのモザイク化ユニットであって、
領域を、第１の部分を含む複数の部分に分割する手段と、
前記第１の部分内に存在する第１の形状のセットの頂点の座標を決定する手段であって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含む、決定する手段と、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の部分内に存在する第２の形状のセットの頂点の座標を決定する手段と
を備え、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含んでいない、モザイク化ユニット。
［発明２２］
再使用バッファのサイズと、前記複数の部分のうちの少なくとも１つにおける形状の数に基づいて、前記複数の部分のうちの少なくとも１つを、複数の細部分に分割する手段をさらに備え、これによって、細部分内の前記第１の形状のセットのうちの一部分が、前記再使用バッファをオーバフローさせないようにした、発明２１に記載のモザイク化ユニット。
［発明２３］
第１の細部分に存在する、前記第１の細部分の第１の形状のセットの頂点の座標を決定する手段であって、前記第１の細部分の第１の形状のセットの各形状は、前記第１の細部分の第１の縁に少なくとも１つの頂点を含む、決定する手段と、
前記第１の細部分の第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する、前記細部分の第２の形状のセットの頂点の座標を決定する手段と
をさらに備え、
前記第１の細部分の第２の形状のセットのうちの何れの形状も、前記第１の細部分の第１の縁に頂点を含んでいない、発明２２に記載のモザイク化ユニット。
［発明２４］
前記領域は三角形領域であり、前記領域は３つの部分に分割される、発明２１に記載のモザイク化ユニット。
［発明２５］
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、発明２１に記載のモザイク化ユニット。
［発明２６］
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在する、発明２１に記載のモザイク化ユニット。
［発明２７］
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、発明２１に記載のモザイク化ユニット。
［発明２８］
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、発明２１に記載のモザイク化ユニット。
［発明２９］
前記領域を複数の部分に分割することは、前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することをさらに備え、
前記モザイク化ユニットはさらに、前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定するように構成された、発明２１に記載のモザイク化ユニット。
［発明３０］
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、発明２９に記載のモザイク化ユニット。
［発明３１］
シンク・デバイスにおいて実行された場合に、
前記領域を、第１の部分を含む複数の部分に分割することと、
前記第１の部分内に存在する第１の形状のセットの頂点の座標を決定することであって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の部分内に存在する第２の形状のセットの頂点の座標を決定することと、
からなるステップを実行することによって、プログラム可能なプロセッサに対して、領域をモザイク化させる命令を備えた非一時的なコンピュータ読取可能な媒体であって、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含んでいない、コンピュータ読取可能な媒体。
［発明３２］
前記プロセッサに対して、再使用バッファのサイズと、前記複数の部分のうちの少なくとも１つにおける形状の数に基づいて、前記複数の部分のうちの少なくとも１つを、複数の細部分に分割させる命令をさらに備え、これによって、細部分内の前記第１の形状のセットのうちの一部分が、前記再使用バッファをオーバフローさせないようにした、発明３１に記載のコンピュータ読取可能な媒体。
［発明３３］
前記プロセッサに対して、
第１の細部分内に存在する、前記第１の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第１の細部分の第１の形状のセットの各形状は、前記第１の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の細部分の第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する前記細部分の第２の形状のセットの頂点の座標を決定することと、を実行させる命令をさらに備え、
前記第１の細部分の第２の形状のセットのうちの何れの形状も、前記第１の細部分の第１の縁に頂点を含んでいない、発明３２に記載のコンピュータ読取可能な媒体。
［発明３４］
前記領域は三角形領域であり、前記領域は３つの部分に分割される、発明３１に記載のコンピュータ読取可能な媒体。
［発明３５］
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、発明３１に記載のコンピュータ読取可能な媒体。
［発明３６］
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在する、発明３１に記載のコンピュータ読取可能な媒体。
［発明３７］
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、発明３１に記載のコンピュータ読取可能な媒体。
［発明３８］
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、発明３１に記載のコンピュータ読取可能な媒体。
［発明３９］
前記領域を複数の部分に分割する場合、さらに、
前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することと、
前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定することと
備える、発明３１に記載のコンピュータ読取可能な媒体。
［発明４０］
前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、発明３９に記載のコンピュータ読取可能な媒体。
［発明４１］
デバイスであって、
中央処理ユニット（ＣＰＵ）と、
領域をモザイク化するためのモザイク化ユニットを含むグラフィクス処理ユニット（ＧＰＵ）とを備え、
前記モザイク化ユニットは、
前記領域を、第１の部分を含む複数の部分に分割することと、
前記第１の部分内に存在する第１の形状のセットの頂点の座標を決定することであって、前記第１の形状のセットの各形状は、前記第１の部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の形状のセットの頂点の座標を決定した後、前記第１の部分内に存在する第２の形状のセットの頂点の座標を決定することと
を実行するように構成され、
前記第２の形状のセットの各形状は、少なくとも１つの頂点を、前記第１の形状のセットのうちの少なくとも１つの形状と共有し、
前記第２の形状のセットのうちの何れの形状も、前記第１の部分の第１の縁に頂点を含んでいない、デバイス。
［発明４２］
前記モザイク化ユニットは、再使用バッファのサイズと、前記複数の部分のうちの少なくとも１つにおける形状の数に基づいて、前記複数の部分のうちの少なくとも１つを、複数の細部分に分割するように構成され、これによって、細部分内の前記第１の形状のセットのうちの一部分が、前記再使用バッファをオーバフローさせないようにした、発明４１に記載のデバイス。
［発明４３］
前記モザイク化ユニットはさらに、
第１の細部分内に存在する、前記第１の細部分の第１の形状のセットの頂点の座標を決定することであって、前記第１の細部分の第１の形状のセットの各形状は、前記第１の細部分の第１の縁に少なくとも１つの頂点を含む、決定することと、
前記第１の細部分の第１の形状のセットの頂点の座標を決定した後、前記第１の細部分内に存在する前記細部分の第２の形状のセットの頂点の座標を決定することと、
を実行するように構成され、
前記第１の細部分の第２の形状のセットのうちの何れの形状も、前記第１の細部分の第１の縁に頂点を含んでいない、発明４２に記載のデバイス。
［発明４４］
前記領域は三角形領域であり、前記領域は３つの部分に分割される、発明４１に記載のデバイス。
［発明４５］
前記領域はクワッド領域であり、前記領域は４つの部分に分割される、発明４１に記載のデバイス。
［発明４６］
前記第１の部分の第１の縁は、前記領域の２つの境界間に存在する、発明４１に記載のデバイス。
［発明４７］
前記第１の部分は、少なくとも４つの縁を備え、
前記少なくとも４つの縁のうちの第１の縁および第２の縁は、前記領域の境界内に存在し、
前記４つの縁のうちの第３の縁および第４の縁はおのおの、前記領域の境界に存在する、発明４１に記載のデバイス。
［発明４８］
前記領域が、奇数の辺長を有する側面を含んでいる場合、前記領域は、前記側面の中心軸からのオフセット分離される、発明４１に記載のデバイス。
［発明４９］
前記領域を複数の部分に分割することは、前記第１の部分に対して非均一なモザイク化ファクタを有する少なくとも１つの部分へ前記領域を分割することをさらに備え、
前記モザイク化ユニットはさらに、前記第１の部分内の頂点の座標を決定することとは別に、前記非均一なモザイク化ファクタを有する部分内に存在する頂点の座標を決定するように構成された、発明４１に記載のデバイス。
［発明５０］
前記第１の部分に関して非均一なモザイク化ファクタを有する少なくとも１つの部分は、前記領域の境界に沿って存在する、発明４９に記載のデバイス。
［発明５１］
前記モザイク化ユニットに結合され、前記領域内の形状の頂点の座標を、パッチの頂点の座標へ変換するように構成された領域シェダーと、
前記領域シェダーに結合され、前記領域シェダーからのパッチの頂点の座標を格納するように構成された頂点再使用バッファと、
前記再使用バッファ内のコントローラであって、前記モザイク化によって必要とされる頂点の座標を前記頂点再使用バッファが格納している場合を判定するように構成された再使用制御ロジックを含むコントローラと
をさらに備え、
前記モザイク化ユニットはさらに、前記頂点再使用バッファが前記モザイク化ユニットによって必要とされる頂点の座標を格納していないことを前記コントローラが示した場合に、前記領域シェーダを起動し、前記頂点再使用バッファが前記モザイク化ユニットによって必要とされる頂点の座標を格納していることを前記コントローラが示した場合に、前記頂点再使用バッファからの座標を読み取るように構成された、発明４１に記載のデバイス。
【図１】
0006017698.tif 000002
【図２】
0006017698.tif 000003
【図３】
0006017698.tif 000004
【図４】
0006017698.tif 000005
【図５Ａ】
0006017698.tif 000006
【図５Ｂ】
0006017698.tif 000007
【図６】
0006017698.tif 000008
【図７】
0006017698.tif 000009
【図８】
0006017698.tif 000010
【図９】
0006017698.tif 000011
【図１０】
0006017698.tif 000012
【図１１】
0006017698.tif 000013
【図１２】
0006017698.tif 000014
【図１３】
0006017698.tif 000015
【図１４】
0006017698.tif 000016
【図１５】
0006017698.tif 000017
【図１６】
0006017698.tif 000018
【図１７】
0006017698.tif 000019
【図１８】
0006017698.tif 000020