(57)【要約】  ディスプレイ（２）のディスプレイブロック（１０２）に対する値を含むデプスバッファ（１６）の値を更新する方法及びその方法を実現するデバイスが提供される。ディスプレイは、複数のディスプレイ領域（１０１）に区分される。ディスプレイ領域は、複数のディスプレイブロックを含み、最小領域デプス値及び最大領域デプス値を有する。各ディスプレイ領域は、複数のディスプレイサブ領域を含む。最小サブ領域デプス値及び最大サブ領域デプス値は、最小領域デプス値及び最大領域デプス値のうち少なくとも一方を基準として判定される。
2008521103.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイのディスプレイブロックに対するデプス値を含むデプスバッファに対して値の読み出し及び書き込みの少なくともいずれかを行なう方法であり、
前記ディスプレイは、各々が複数の前記ディスプレイブロックを含む複数のディスプレイサブ領域を含む複数のディスプレイ領域に区分される方法であって、
少なくとも１つのディスプレイ領域の前記ディスプレイブロックに対して、最小領域デプス値及び最大領域デプス値のうち少なくとも一方を決定し、
少なくとも１つのディスプレイサブ領域の前記ディスプレイブロックに対して、最小サブ領域デプス値及び最大サブ領域デプス値のうち少なくとも一方を決定することを特徴とする方法。
【請求項２】
前記最小領域デプス値を基準として前記最小サブ領域デプス値を決定することを含む請求項１に記載の方法。
【請求項３】
前記最大領域デプス値を基準として前記最大サブ領域デプス値を決定することを含む請求項１又は２に記載の方法。
【請求項４】
前記最小領域デプス値及び前記最大領域デプス値を基準として前記最小サブ領域デプス値を決定することを含む請求項１に記載の方法。
【請求項５】
前記最大領域デプス値及び前記最小領域デプス値を基準として前記最大サブ領域デプス値を決定することを含む請求項１又は４に記載の方法。
【請求項６】
前記最小領域デプス値以上となるように前記最小サブ領域デプス値を決定し、前記最大領域デプス値以下となるように前記最大サブ領域デプス値を決定することを含む請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記サブ領域に対して格納された全てのデプス値以下となるように前記最小サブ領域デプス値を決定し、前記サブ領域に対して格納された全てのデプス値以上となるように前記最大サブ領域デプス値を決定することを含む請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記領域に対して格納された全てのデプス値以下となるように前記最小領域デプス値を決定し、前記領域に対して格納された全てのデプス値以上となるように前記最大領域デプス値を決定することを含む請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
特定のディスプレイサブ領域にレンダリングされる形状プリミティブの最小デプス値及び最大デプス値のうち少なくとも一方を判定し、
前記デプスバッファが前記ディスプレイサブ領域に対して読み出される必要があるかを判定するために、前記最小デプス値及び前記最大デプス値のうち少なくとも一方を前記最小サブ領域デプス値及び前記最大サブ領域デプス値のうち少なくとも一方と比較することとを含む請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
特定のディスプレイ領域にレンダリングされる形状プリミティブの最小デプス値及び最大デプス値のうち少なくとも一方を判定し、
前記デプスバッファが前記ディスプレイ領域に対して読み出される必要があるかを判定するために、前記最小デプス値及び前記最大デプス値のうち少なくとも一方を前記最小領域デプス値及び前記最大領域デプス値のうち少なくとも一方と比較することを含む請求項１乃至９のいずれか１項に記載の方法。
【請求項１１】
前記サブ領域の少なくとも１つのディスプレイブロックに対して少なくとも１つの形状プリミティブのデプス値を判定することを含む請求項１乃至１０のいずれか１項に記載の方法。
【請求項１２】
前記デプスバッファが前記ディスプレイブロックに対して読み出される必要があるかを判定するために、前記少なくとも１つのディスプレイブロックにおける前記形状プリミティブに対する前記デプス値を前記最小サブ領域デプス値及び前記最大サブ領域デプス値のうち少なくとも一方と比較することを含む請求項１１に記載の方法。
【請求項１３】
前記デプスバッファが前記ディスプレイブロックに対して読み出される必要があるかを判定するために、前記少なくとも１つのディスプレイブロックにおける前記形状プリミティブに対する前記デプス値を前記最小領域デプス値及び前記最大領域デプス値のうち少なくとも一方と比較することを含む請求項１１又は１２に記載の方法。
【請求項１４】
kを[0, 1, 2, ..., 2m-1]として、
zminsub = zminr+ (zmaxr-zminr)*k/(2m-1)
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準として前記最小サブ領域デプス値zminsubの値を決定し、
sを[0, 1, 2, ..., 2n-1]として、
zmaxsub = zmaxr+ (zminr-zmaxr)*s/(2n-1)
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準として前記最大サブ領域デプス値zmaxsubの値を決定し、
nは前記最小領域デプス値及び前記最大領域デプス値を基準としてzmaxsubを符号化するのに使用されるビット数であり、mは前記最小領域デプス値及び前記最大領域デプス値を基準としてzminsubを符号化するのに使用されるビット数である請求項１乃至１３のいずれか１項に記載の方法。
【請求項１５】
kを[0, 1, 2, ..., 2n-1]として、
zminsub = zminr+ (zmaxr-zminr)*k/2m
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準として前記最小サブ領域デプス値zminsubの値を決定し、
sを[0, 1, 2, ..., 2n-1]として、
zmaxsub = zmaxr+ (zminr-zmaxr)*s/2n
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準として前記最大サブ領域デプス値zmaxsubの値を決定し、
mは前記最小領域デプス値及び前記最大領域デプス値を基準として前記最小サブ領域デプス値を符号化するのに使用されるビット数であり、nは前記最小領域デプス値及び前記最大領域デプス値を基準として前記最大サブ領域デプス値を符号化するのに使用されるビット数である請求項１乃至１３のいずれか１項に記載の方法。
【請求項１６】
まず、前記最小領域デプス値及び前記最大領域デプス値を基準として前記最小サブ領域デプス値を決定し、その後、前記最小サブ領域デプス値及び前記最大領域デプス値を基準として前記最大サブ領域デプス値を決定すること、あるいは、
まず、前記最小領域デプス値及び前記最大領域デプス値を基準として前記最大サブ領域デプス値を決定し、その後、前記最大サブ領域デプス値及び前記最小領域デプス値を基準として前記最小サブ領域デプス値を決定することを含む請求項１乃至１３のいずれか１項に記載の方法。
【請求項１７】
k = 0, 1, ..., 2N-1、zmin_1=zminr、zmin_2≧zmin_1、且つNが各ディスプレイサブ領域に対するビット値を格納するのに使用されるビット数であるとした場合、
zminsub = zmin_1 +(zmin_2-zmin_1)*k/(2N)、
zminsub = zmin_1 +(zmin_2-zmin_1)*k/(2N-1)
のいずれかの式に従って、前記最小領域デプス値zminrを基準として前記最小サブ領域デプス値zminsubの値を決定することを含む請求項１乃至１３のいずれか１項に記載の方法。
【請求項１８】
k = 0, 1, ..., 2N-1、zmax_2=zmaxr、zmax_2≧zmax_1、且つNが各ディスプレイサブ領域に対するビット値を格納するのに使用されるビット数であるとした場合、
zmaxsub = zmax_2 +(zmin_1-zmin_2)*k/(2N)、
zmaxsub = zmax_2 +(zmin_1-zmin_2)*k/(2N-1)
のいずれかの式に従って、前記最大領域デプス値zmaxrを基準として前記最大サブ領域デプス値zmaxsubの値を判定することを含む請求項１乃至１３のいずれか１項に記載の方法。
【請求項１９】
ディスプレイ（２、１４）のディスプレイブロック（１０２）に対するデプス値を含むデプスバッファ（１６）に対して値の読み出し又は書き込みを行なう処理デバイス（１０）であり、
前記ディスプレイは、各々が複数の前記ディスプレイブロックを含む複数のディスプレイサブ領域を含む複数のディスプレイ領域（１０１）に区分される処理デバイスであって、
前記処理デバイスは、
少なくとも１つのディスプレイ領域の前記ディスプレイブロックに対する最小領域デプス値及び最大領域デプス値のうち少なくとも一方と、
少なくとも１つのディスプレイサブ領域の前記ディスプレイブロックに対する最小サブ領域デプス値及び最大サブ領域デプス値のうち少なくとも一方とを含むメモリを備える処理デバイス。
【請求項２０】
前記最小サブ領域デプス値は、前記最小領域デプス値に関連している請求項１９に記載の処理デバイス。
【請求項２１】
前記最大サブ領域デプス値は、前記最大領域デプス値に関連している請求項１９又は２０に記載の処理デバイス。
【請求項２２】
前記最小サブ領域デプス値は、前記最小領域デプス値及び前記最大領域デプス値に関連している請求項１９記載の処理デバイス。
【請求項２３】
前記最大サブ領域デプス値は、前記最大領域デプス値及び前記最小領域デプス値に関連している請求項１９又は２２に記載の処理デバイス。
【請求項２４】
前記最小サブ領域デプス値は前記最小領域デプス値以上であり、前記最大サブ領域デプス値は前記最大領域デプス値以下である請求項１９乃至２３のいずれか１項に記載の処理デバイス。
【請求項２５】
前記最小サブ領域デプス値は前記サブ領域に対して格納された全てのデプス値以下であり、前記最大サブ領域デプス値は前記サブ領域に対して格納された全てのデプス値以上である請求項１９乃至２４のいずれか１項に記載の処理デバイス。
【請求項２６】
前記特定のディスプレイサブ領域にレンダリングされる形状プリミティブの最小デプス値及び最大デプス値のうち少なくとも一方を判定する計算ユニットと、
前記デプスバッファ（１６）が前記ディスプレイサブ領域に関してアクセスされる必要があるかを判定するために、前記最小デプス値及び前記最大デプス値のうち少なくとも一方を前記最小サブ領域デプス値及び前記最大サブ領域デプス値のうち少なくとも一方と比較する比較器とを備える請求項１９乃至２５のいずれか１項に記載の処理デバイス。
【請求項２７】
前記比較器は、前記デプスバッファ（１６）が前記特定のディスプレイサブ領域に対して読み出される必要があるかを判定するために、前記最小デプス値及び前記最大デプス値のうち少なくとも一方を前記最小サブ領域デプス値及び前記最大サブ領域デプス値のうち少なくとも一方と比較するように構成される請求項２６に記載の処理デバイス。
【請求項２８】
前記比較器は、前記デプスバッファ（１６）が前記特定のディスプレイ領域に対して読み出される必要があるかを判定するために、前記最小デプス値及び前記最大デプス値のうち少なくとも一方を前記最小領域デプス値及び前記最大領域デプス値のうち少なくとも一方と比較するように構成される請求項２６に記載の処理デバイス。
【請求項２９】
前記比較器は、前記サブ領域における少なくとも１つのディスプレイブロックに対する少なくとも１つの形状プリミティブのデプス値を判定するように構成される請求項１９から２６のいずれか１項に記載の処理デバイス。
【請求項３０】
前記比較器は、前記デプスバッファ（１６）が前記ディスプレイブロックに対して読み出される必要があるかを判定するために、前記少なくとも１つのディスプレイブロックにおける前記形状プリミティブに対する前記デプス値を前記最小サブ領域デプス値及び前記最大サブ領域デプス値のうち少なくとも一方と比較するように構成される請求項２９に記載の処理デバイス。
【請求項３１】
前記比較器は、前記デプスバッファ（１６）が前記ディスプレイブロックに対して読み出される必要があるかを判定するために、前記少なくとも１つのディスプレイブロックにおける前記形状プリミティブに対する前記デプス値を前記最小領域デプス値及び前記最大領域デプス値のうち少なくとも一方と比較するように構成される請求項２８又は２９に記載の処理デバイス。
【請求項３２】
kを[0, 1, 2, ..., 2n-1]として、
zminsub = zminr+ (zmaxr-zminr)*k/(2m-1)
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準とする前記最小サブ領域デプス値zminsubの値が関連付けられ、
sを[0, 1, 2, ..., 2n-1]として、
zmaxsub = zmaxr+ (zminr-zmaxr)*s/(2n-1)
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準とする前記最大サブ領域デプス値zmaxsubの値が関連付けられ、
nは前記最小領域デプス値及び前記最大領域デプス値を基準としてzmaxsubを符号化するのに使用されるビット数であり、mは前記最小領域デプス値及び前記最大領域デプス値を基準としてzminsubを符号化するのに使用されるビット数である請求項１９乃至３１のいずれか１項に記載の処理デバイス。
【請求項３３】
kを[0, 1, 2, ..., 2n-1]として、
zminsub = zminr+ (zmaxr-zminr)*k/2m
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準とする前記最小サブ領域デプス値zminsubの値が関連付けられ、
sを[0, 1, 2, ..., 2n-1]として、
zmaxsub = zmaxr+ (zminr-zmaxr)*s/2n
の式に従って、前記最小領域デプス値zminr及び前記最大領域デプス値zmaxrを基準とする前記最大サブ領域デプス値zmaxsubの値が関連付けられ、
mは前記最小領域デプス値及び前記最大領域デプス値を基準として前記最小サブ領域デプス値を符号化するのに使用されるビット数であり、nは前記最小領域デプス値及び前記最大領域デプス値を基準として前記最大サブ領域デプス値を符号化するのに使用されるビット数である請求項１９乃至３１のいずれか１項に記載の処理デバイス。
【請求項３４】
前記処理デバイスは、
まず、前記最小領域デプス値及び前記最大領域デプス値を基準として前記最小サブ領域デプス値を決定し、その後、前記最小サブ領域デプス値及び前記最大領域デプス値を基準として前記最大サブ領域デプス値を決定すること、あるいは、
まず、前記最小領域デプス値及び前記最大領域デプス値を基準として前記最大サブ領域デプス値を決定し、その後、前記最大サブ領域デプス値及び前記最小領域デプス値を基準として前記最小サブ領域デプス値を決定するように構成される請求項１９乃至３１のいずれか１項に記載の処理デバイス。
【請求項３５】
k = 0, 1, ..., 2N-1、zmin_1=zminr、zmin_2≧zmin_1、且つNが各ディスプレイサブ領域に対するビット値を格納するのに使用されるビット数であるとした場合、
zminsub = zmin_1 +(zmin_2-zmin_1)*k/(2N)、
zminsub = zmin_1 +(zmin_2-zmin_1)*k/(2N-1)
のいずれかの式に従って、前記最小サブ領域デプス値zminsubの値が前記最小領域デプス値zminrに関連付けられる請求項１９乃至３１のいずれか１項に記載の処理デバイス。
【請求項３６】
k = 0, 1, ..., 2N-1、zmax_2=zmaxr、zmax_2≧zmax_1、且つNが各ディスプレイサブ領域に対するビット値を格納するのに使用されるビット数である場合、
zmaxsub = zmax_2 +(zmin_1-zmin_2)*k/(2N)、
zmaxsub = zmax_2 +(zmin_1-zmin_2)*k/(2N-1)
のいずれかの式に従って、前記最大サブ領域デプス値zmaxsubの値が前記最大領域デプス値zmaxrに関連付けられる請求項１９乃至３１のいずれか１項に記載の処理デバイス。
【請求項３７】
請求項１９乃至３６のいずれか１項に記載の処理デバイス（１０）を具備する電子装置（１）。
【請求項３８】
前記装置は、移動無線端末、ページャ、通信機、電子オーガナイザ、スマートフォン、パーソナルデジタルアシスタント又はコンピュータである請求項３７に記載の装置。
【請求項３９】
前記装置は携帯電話（１）である請求項３７に記載の装置。
【請求項４０】
コンピュータプログラムコード手段がコンピュータ能力を有する電子デバイス（１）により実行される場合に請求項１から１８のいずれか１項に記載の方法を実行する前記コンピュータプログラムコード手段を含むコンピュータプログラム。
【請求項４１】
前記コンピュータプログラムコード手段は、コンピュータ可読媒体（１１）に実現される請求項４０記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の技術分野
本発明は、３次元グラフィックスをレンダリングするためのデプス値を含むデプスバッファを更新する方法に関する。更に、本発明は、その方法を実現するデバイスに関する。
【背景技術】
【０００２】
関連技術の説明
３次元グラフィックスのリアルタイムレンダリングは、移動端末等のポータブル電子装置上にいくつかの魅力的なアプリケーションを有する。そのようなアプリケーションは、例えばゲームのマンマシンインタフェース、メッセージング及びｍコマース（m-commerce）を含む。３次元レンダリングは多くの計算を必要とするタスクであるため、十分な性能を達成するために、専用のハードウェアが使用されることが多い。
【０００３】
３次元レンダリング中、ポリゴン又は三角形等の形状プリミティブが任意の順番で描画されるため、デプスバッファは、可視性を解決するのに使用され得る。デプスバッファは、目からオブジェクトまでの距離を格納する。レンダリングされる新しいオブジェクトがデプスバッファのコンテンツより離れた場所にある場合、そのオブジェクトは、既に描画されているコンテンツにより隠されるため表示される必要がなく、デプスバッファは上書きされる必要がない。
【０００４】
しかし、画素が数回上書きされるため、そのようなグラフィックシステムは最適ではない。画素が数回上書きされる場合でも、最終的には、１つの形状プリミティブ（ポリゴン）のみが可視となる。
【０００５】
デプスバッファのアクセスを減少する１つの方法は、オクルージョンカリング（occlusion culling）を使用することである。画面は、例えば８×８のディスプレイブロックを含むディスプレイ領域に分割される。各ディスプレイ領域に対して、ディスプイレイ領域の最大デプス値又はｚ値、zmaxが、オンチップメモリ又はキャッシュメモリ等の高速でエネルギー効率の良いメモリに格納される。新しいポリゴンが前記領域内にレンダリングされる場合、そのディスプレイ領域内のポリゴンの一部の最小ｚ値であるzminが算出又は推定される。zminがディスプレイ領域のzmaxより大きい場合、レンダリングされるポリゴンはそのディスプレイ領域に対して完全に隠蔽されるため、そのディスプレイ領域はそれ以上処理される必要がない。ポリゴンが隠蔽されない場合、デプスバッファがポリゴンの値で上書きされるべきかを決定するためにディスプレイ領域内の画素は１つずつ処理される。
【０００６】
更に、ディスプレイ領域のzmin及びzmaxの双方をメモリに格納できる。まず、zmin及びzmaxは、それぞれ初期値、zmin=FAR及びzmax=NEARに設定される。新しいポリゴンがディスプイレイ領域にレンダリングされる場合、zmin及びzmaxは、ディスプレイブロックにレンダリングされるポリゴンの一部に対して計算又は推定される。ポリゴンのzminがディスプレイ領域のzmaxより大きい場合、そのディスプレイ領域の内部にあるポリゴンのその部分はレンダリングされず、デプスバッファは更新される必要がない。ポリゴンのzmaxがディスプレイ領域のzminより小さい場合、デプスバッファは最初に読み出されることなく単純に上書きされる。ポリゴンのzmin及びzmaxにより規定される範囲がディスプレイ領域のzmin及びzmaxにより規定される範囲と重なる場合、ポリゴンの各ｚ値は算出され、デプスバッファに格納された対応するｚ値と比較される。このように、その画素に対してデプスバッファがポリゴンのｚ値で上書きされるかどうかが決定されてもよい。
【０００７】
カリングの効果は、ディスプレイ領域のサイズに依存する。ディスプレイ領域が小さくなる程、カリングはより正確になる。しかし、ディスプレイ領域が小さくなる程、より多くのメモリリソースが必要とされる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ポータブル電子装置において、メモリアクセスはポータブル電子装置の不十分なリソースであるエネルギーを非常に多く消費するため、メインメモリに対する帯域幅の使用量は可能な限り低減される必要がある。
【０００９】
発明の概要
本発明の目的は、メモリ読出しに必要な帯域幅を減少する方法及びデバイスを提供することである。
【課題を解決するための手段】
【００１０】
第１の面において、本発明は、ディスプレイのディスプレイブロックに対するデプス値を含むデプスバッファに対して値の読み出し及び／又は書き込みを行なう方法を提供する。ここで、ディスプレイは、各々が複数の前記ディスプレイブロックを含む複数のディスプレイサブ領域を含む複数のディスプレイ領域に区分される。方法は、少なくとも１つのディスプレイ領域のディスプレイブロックに対する最小領域デプス値及び最大領域デプス値を判定することと；少なくとも１つのディスプレイサブ領域のディスプレイブロックに対する最小サブ領域デプス値及び最大サブ領域デプス値を判定することとを含む。
【００１１】
一実施形態において、最小サブ領域デプス値は最小領域デプス値を基準として判定され、最大サブ領域デプス値は最大領域デプス値を基準として判定される。
【００１２】
別の実施形態において、最小サブ領域デプス値は最小領域デプス値及び最大領域デプス値を基準として判定され、最大サブ領域デプス値は最大領域デプス値及び最小領域デプス値を基準として判定される。
【００１３】
最小サブ領域デプス値は、最小領域デプス値以上となるように判定されてもよく、最大サブ領域デプス値は、最大領域デプス値以下となるように判定されてもよい。更に、最小サブ領域デプス値は、前記サブ領域に対して格納された全てのデプス値以下となるように判定されてもよく、最大サブ領域デプス値は、前記サブ領域に対して格納された全てのデプス値以上となるように判定されてもよい。また、最小領域デプス値は、前記領域に対して格納された全てのデプス値以下となるように判定されてもよく、最大領域デプス値は、前記領域に対して格納された全てのデプス値以上となるように判定されてもよい。
【００１４】
別の実施形態によると、特定のディスプレイサブ領域にレンダリングされる形状プリミティブの最小デプス値及び最大デプス値のうち少なくとも一方が判定され；デプスバッファが前記ディスプレイサブ領域に対して読み出される必要があるかを判定するために、最小デプス値及び最大デプス値のうち少なくとも一方は、最小サブ領域デプス値及び最大サブ領域デプス値のうち少なくとも一方と比較される。更に、レンダリングされる形状プリミティブの最小デプス値及び最大デプス値のうち少なくとも一方は、特定のディスプレイ領域において判定されてもよく；デプスバッファが前記ディスプレイ領域に対して読み出される必要があるかを判定するために、最小デプス値及び最大デプス値のうち少なくとも一方は、最小領域デプス値及び最大領域デプス値のうち少なくとも一方と比較される。
【００１５】
少なくとも１つの形状プリミティブデプス値は、前記サブ領域の少なくとも１つのディスプレイブロックに対して判定されてもよい。デプスバッファが前記ディスプレイブロックに対して読み出される必要があるかを判定するために、前記少なくとも１つのディスプレイブロックのデプス値は、最小サブ領域デプス値及び最大サブ領域デプス値のうち少なくとも一方と比較されてもよい。デプスバッファが前記ディスプレイブロックに対して読み出される必要があるかを判定するために、前記少なくとも１つのディスプレイブロックの形状プリミティブデプス値は、最小領域デプス値及び最大領域デプス値のうち少なくとも一方と比較されてもよい。
【００１６】
別の実施形態において、最小サブ領域デプス値zminsubは、以下の式に従って、最小領域デプス値zminr及び最大領域デプス値zmaxrを基準として決定されてもよい：
zminsub = zminr+ (zmaxr-zminr)*k/(2m-1)
式中、kは[0, 1, 2, ..., 2n-1]である。また、最大サブ領域デプス値zmaxsubの値は、以下の式に従って、最小領域デプス値zminr及び最大領域デプス値zmaxrを基準として決定されてもよい：
zmaxsub = zmaxr+ (zminr-zmaxr)*s/(2n-1)
式中、sは[0, 1, 2, ..., 2n-1]である。ここで、nは最小領域デプス値及び最大領域デプス値を基準としてzmaxsubを符号化するのに使用されるビット数であり、mは最小領域デプス値及び最大領域デプス値を基準としてzminsubを符号化するのに使用されるビット数である。
【００１７】
あるいは、最小サブ領域デプス値zminsubの値は、以下の式に従って、最小領域デプス値zminr及び最大領域デプス値zmaxrを基準として決定されてもよい：
zminsub = zminr+ (zmaxr-zminr)*k/2m
式中、kは[0, 1, 2, ..., 2n-1]である。また、最大サブ領域デプス値zmaxsubの値は、以下の式に従って、最小領域デプス値zminr及び最大領域デプス値zmaxrを基準として決定されてもよい：
zmaxsub = zmaxr+ (zminr-zmaxr)*s/2n
式中、sは[0, 1, 2, ..., 2n-1]である。ここで、mは最小領域デプス値及び最大領域デプス値を基準として最小サブ領域デプス値を符号化するのに使用されるビット数であり、nは最小領域デプス値及び最大領域デプス値を基準として最大サブ領域デプス値を符号化するのに使用されるビット数である。
【００１８】
更に別の実施形態において、方法は、まず、最小領域デプス値及び最大領域デプス値を基準として最小サブ領域デプス値を決定し、その後、最小サブ領域デプス値及び最大領域デプス値を基準として最大サブ領域デプス値を決定することを含む。あるいは、方法は、まず、最小領域デプス値及び最大領域デプス値を基準として最大サブ領域デプス値を決定し、その後、最大サブ領域デプス値及び最小領域デプス値を基準として最小サブ領域デプス値を決定することを含む。
【００１９】
別の面において、上述の方法を実行する処理デバイスが提供される。デバイスは、添付の請求の範囲において更に定義される。
【００２０】
更なる面において、上述のような処理デバイスを含む電子装置が提供される。装置は、移動無線端末、ページャ、通信機、電子オーガナイザ、スマートフォン、パーソナルデジタルアシスタント、ハンドヘルドデバイス又はコンピュータであってもよい。装置は、携帯電話であってもよい。
【００２１】
更に別の面において、コンピュータプログラムコード手段がコンピュータ能力を有する電子デバイスにより実行される場合に上述の方法を実行するコンピュータプログラムコード手段を含むコンピュータプログラムが提供される。コンピュータプログラムは、コンピュータ可読媒体に実現されてもよい。
【００２２】
用語「具備する」は、本明細書において使用される場合、記載される特徴、数字、ステップ又は構成要素を指定するために使用されるが、１つ以上の他の特徴、数字、ステップ、構成要素又はそれらの集合の存在又は追加を除外するわけではないことが強調されるべきである。
本発明の更なる目的、特徴及び利点は、添付の図面を参照し、本発明の以下の詳細な説明を読むことにより明らかとなるだろう。
【発明を実施するための最良の形態】
【００２３】
実施形態の詳細な説明
図１は、本発明によるデバイス及び方法が実現される電子装置を示す。この例において、電子装置は携帯電話１として実現されるが、それに限定されない。
【００２４】
本発明の実施形態によると、形状プリミティブ（geometric primitive）のｚ値又はデプス値は、特定のディスプレイ領域と関連付けられる最小デプス値zmin及び最大デプス値zmaxのうち少なくとも一方に対してテストされる。オブジェクトは、ポリゴン又は更に詳細には三角形等の１つ以上の形状プリミティブから形成されてもよい。以下において、用語「オブジェクト」、「形状プリミティブ」及び「ポリゴン」は、レンダリングされるべきものを説明するために使用される。既にレンダリングされている形状プリミティブは、「コンテンツ」と呼ばれる。
【００２５】
本発明の一実施形態によると、ディスプレイ領域内にレンダリングされる形状プリミティブ又はポリゴンの推定又は計算された最小ｚ値obj-zminr及び最大ｚ値obj-zmaxrは、ディスプレイ領域のzminr及びzmaxrの少なくとも一方に対してテストされる。レンダリングされる際、レンダリングされるポリゴンの全てのディスプレイブロックが可視であると判定される場合、デプスバッファは、ポリゴンのレンダリング中に読み出される必要はなく、書き込まれる必要がある。ポリゴンが隠蔽されると判定される場合、デプスバッファは、レンダリング中に読み出される必要も書き込まれる必要もない。また、レンダリングされる際、レンダリングされるポリゴンが少なくとも部分的に可視であると判定される場合、ポリゴンのデプス値obj-z値は、各ディスプレイブロックに対して計算される。ディスプレイブロック毎の計算されたデプス値は、ディスプレイブロックの格納された値と比較される。レンダリング中、ポリゴンディスプレイブロックが可視であることがその比較から判定される場合、デプス値はデプスバッファに直接書き込まれ、そのディスプレイブロックに対して、デプスバッファに格納される値の読み出しは必要ない。ポリゴンディスプレイブロックが隠蔽されると判定される場合、デプスバッファに格納された値の書き込みは必要ない。
【００２６】
本発明の別の実施形態によると、各ディスプレイ領域はディスプレイサブ領域に区分される。各ディスプレイサブ領域の最小サブ領域デプス値zminsub及び最大サブ領域デプス値zmaxsubは、全ディスプレイ領域のzminr及びzmaxrの範囲内にあることは周知である。従って、本発明によると、各ディスプレイサブ領域の最小デプス値及び最大デプス値は、ディスプレイ領域の最小デプス値及び最大デプス値を基準として説明されてもよい。これは、以下に説明するように、デプスバッファの更なる読出しが回避されることを意味する。しかし、相対値は読み出される必要がある。
【００２７】
本発明を実現するのに必要なメモリ帯域幅は、従来のオクルージョンカリングと比較して小さい。メモリアクセスは比較的電力を消費するため、本発明は、ハンドヘルドデバイス、移動無線端末、ページャ、通信機、電子オーガナイザ、スマートフォン、携帯電話又はパーソナルデジタルアシスタント等のメモリ及びバッテリ容量が制限されるポータブル電子デバイスにおいて有用である。しかし、本発明は、コンピュータ等の固定電子デバイスにおいて実現されてもよい。
【００２８】
図１に示す携帯電話１は、ユーザと携帯電話１との対話のためのマンマシンインタフェースを具備する。マンマシンインタフェースは、静止画、画像の連続ストリーム、アイコン、テキスト等のグラフィックスを表示できるＬＣＤディスプレイ又はタッチパネル等のディスプレイ２を具備するが、それに限定されない。以下に説明するように、ポリゴン等の３次元オブジェクトをレンダリングするために、オブジェクトはレンダリング中に隠蔽（occlusion）に対するテストが行なわれ、デプスバッファがアクセスされる必要があるのかを判定する。
【００２９】
図２は、ｚ値を判定、比較及び格納するシステムの一実施形態を示すブロック図である。ＣＰＵ（中央処理装置）、ＤＳＰ（デジタル信号プロセッサ）、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ハードワイヤードロジック等のプロセッサ１０は、データバス１２によりメモリ１１に接続される。プロセッサは、携帯電話１の全体の制御を管理してもよい。
【００３０】
ＧＰＵ等の処理デバイス１０ａは、スタンドアロンプロセッサとして提供されてもよいし、あるいはプロセッサ１０に実現されるソフトウェアにより提供されてもよい。処理デバイス１０ａは、以下に説明するように、ｚ値、並びに種々の最大デプス値及び最小デプス値を生成するように構成されてもよい。また、ＧＰＵは、オブジェクトに対するカラーデータを生成するように構成されてもよい。メモリ１１は、システムにより実行されるアプリケーションプログラムのコード部分等のコンピュータ可読命令又はコード手段を含んでもよい。アプリケーションプログラムは、コンピュータゲーム又はＣＡＤ（コンピュータ支援設計）プログラムであってもよい。
【００３１】
プロセッサ１０は、メモリ１１から命令を検索し、特定のタスクを実行するためにそれら命令を実行する。プロセッサ１０のタスクは、ディスプレイ１４に描画されるコンテンツ又はグラフィックスに関する情報をディスプレイ制御器１３に提供することであってもよい。ディスプレイコントローラ１３は、プロセッサ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ、ハードワイヤードロジック等の別個のハードウェア構成要素として提供されてもよい。あるいは、ディスプレイコントローラ１３は、ソフトウェア及びハードウェアの組合せで実現されるか、又はソフトウェアで提供され且つプロセッサ１０により実行される。ディスプレイコントローラ１３は、データバス１２に接続される。あるいは又はそれに加えて、ディスプレイコントローラ１３は、別個のデータバス（不図示）によりプロセッサ１０に接続される。大量の情報がプロセッサ１０とディスプレイコントローラ１３との間で転送される場合、データバスは、高速データバスであってもよい。この場合、別個のデータバスにおけるデータ転送は、通常のデータバス１２のデータトラフィックを妨害しない。
【００３２】
ディスプレイメモリ１５は、データバス１２に接続され、ディスプレイ１４に描画されるコンテンツに関してプロセッサ１０から送信される情報を格納する。ディスプレイメモリ１５は、例えばレンダリングされたコンテンツのサンプル値等の情報を格納するサンプルバッファ及びカラーバッファを含む。カラーバッファは、先の画像のレンダリングの完了後にディスプレイ１４に表示される画素の色等の生成された画素値を保持する。プロセッサ１０とディスプレイ制御器１３との間の相互接続と同様に、ディスプレイメモリ１５は、想像線で示すように、別個の高速バス１７によりディスプレイコントローラ１３に直接に接続されてもよい。また、ディスプレイメモリ１５は、メモリ１１の一部を形成してもよい。通常、ディスプレイコントローラ１３及びディスプレイメモリ１５が画像の連続ストリームを生成するのに使用されるため、それら２つのユニット間のリンクが可能な限り速く且つデータバス１２の通常のトラフィックを妨げない場合、それは利点となるだろう。ディスプレイメモリ１５は、別個の高速バス１７ａにより処理デバイス１０ａに接続されてもよい。
【００３３】
ディスプレイコントローラ１３は、ＶＤＡＣ（ビデオデジタルアナログ変換器）を含んでもよい。ＶＤＡＣは、個々の画素をディスプレイ１４に描画するために、ディスプレイメモリ１５から情報を読み出し、それをディスプレイ１４に提供されるＲＧＢ（赤色、緑色、青色）コンポジット信号等のアナログ信号に変換する。
【００３４】
ディスプレイメモリ１５に格納されるカラーバッファ又はフレームバッファは、図形画像に対応する画素情報を格納してもよい。画素情報は、各画素が色を割り当てられる画素のグリッド状の配列により表されてもよい。カラーバッファの値は、図形画像を構成する画素の赤色、緑色及び青色に対応するＲ値、Ｇ値及びＢ値として表されてもよい。Ｒ値、Ｇ値及びＢ値を規定するビット数は、表される色及び濃淡の数に依存する。更なるビットが規定されてもよい。
【００３５】
表示される３次元グラフィックオブジェクトを処理する際、ポリゴン内のサンプル位置におけるオブジェクトのデプス属性、すなわちｚ値は、カラーバッファの値の更新前に考慮される必要がある。処理される新しいオブジェクトが、少なくとも部分的に表示コンテンツの背後に位置付けられ且つ少なくとも部分的に表示コンテンツにより隠蔽される場合、新しいオブジェクトの可視部分のみがカラー及びデプスバッファに描画されるべきである。一方、新しいオブジェクトが既に描画されたコンテンツにより完全に隠蔽される場合、カラーバッファを更新する必要はなく、オブジェクトは描画又はレンダリングされない。
【００３６】
３次元オブジェクトは、ポリゴン面を規定する頂点のセットにより表されてもよい。各頂点は、Ｘ軸、Ｙ軸及びＺ軸に対応するｘ次元、ｙ次元及びｚ次元により規定される。Ｘ軸及びＹ軸はビュー平面を規定し、Ｚ軸はビュー平面から観察者の原点までの縮尺距離を表す。ｚ座標値は、特定のｘ座標及びｙ座標により規定される画素位置におけるオブジェクトの深さを示す。
【００３７】
デプス値を格納するデプスバッファ１６は、バス１２に接続される。デプスバッファ１６は、バス１２に直接接続されるスタンドアロンメモリユニットとして提供されてもよく、あるいはメモリ１５に内蔵されてもよい。デプスバッファ１６は、各画素のｚ値又はデプス値が格納されてもよいストレージ手段を提供する。新しいオブジェクトがビュー平面の表示部分に描画されるべきである場合、新しいオブジェクトが可視であり且つ表示されるべきであるか、あるいは新しいオブジェクトが既に表示されているコンテンツにより隠されるかに関して、判定が行なわれる必要がある。チップ外に位置してもよいデプスバッファにｚ値が格納されるため、高速バス１８（想像線で示される）が処理デバイス１０ａとデプスバッファ１６との間に提供される。その結果、デプスバッファ１６へのアクセスはバス１２の他のトラフィックを妨害しない。
【００３８】
処理デバイス１０ａは、オンチップメモリ又はキャッシュメモリ等の統合ストレージ手段１９を含んでもよい。処理デバイス１０ａ及びストレージ手段１９は、同一のチップ上に提供されてもよいため、バス１２のメモリ帯域幅を占有しない。ストレージ手段１９は、ディスプレイの各ディスプレイ領域１０１（図３）と関連付けられる最小領域デプス値及び最大領域デプス値を格納してもよい。更に、ストレージ手段は、ディスプレイサブ領域の最小サブ領域デプス値及び最大サブ領域デプス値を格納してもよい。処理デバイス１０ａがＧＰＵである場合、ストレージ手段１９はオンチップメモリであってもよい。処理デバイス１０ａがＣＰＵである場合、ストレージ手段１９は、キャッシュメモリ又はオンチップメモリのいずれであってもよい。
【００３９】
図３は、複数のディスプレイ領域１０１に区分されるディスプレイ１００を示す。本実施形態において、ディスプレイ１００は１０×１０のディスプレイ領域を含む。しかし、他の実施形態によると、ディスプレイは、任意の数のディスプレイ領域１０１に区分されてもよく、単一のディスプレイ領域であってもよい。各ディスプレイ領域は、複数のディスプレイブロック１０２に区分される。各ディスプレイブロックは、１つの画素を含んでもよい。本実施形態において、各ディスプレイ領域１０１は８×８のディスプレイブロックを含む。あるいは、このディメンジョンは、例えば４×４、８×４、１６×４、１６×８又は１６×１６であってもよい。これらディメンジョンは単なる例であり、他の実施形態は、各ディスプレイ領域１０１内に任意の数のディスプレイブロック１０２を含むことができる。８×８のディスプレイブロックを含むディスプレイ領域が使用される場合、１０２４×７６８画素の解像度を有する画面は、１２８×９６のディスプレイ領域を含む。
【００４０】
ディスプレイ領域１０１の最小領域デプス値は、当該ディスプレイ領域１０１内のディスプレイブロックの全てのデプス値の最小値を表す。同様に、最大領域ディスプレイ値は、当該ディスプレイ領域１０１内のディスプレイブロック１０２の全てのデプス値の最大値を表す。
【００４１】
図３において、新しい三角形１０３の一部が特定のディスプレイ領域１０４にレンダリングされる。カラー及びデプスバッファが三角形１０３の潜在的な影響によって更新される前に、三角形１０３がディスプレイ領域１０４に既にレンダリングされているプリミティブにより隠蔽されるかをテストする必要がある。
【００４２】
図４ａ〜図４ｃは、三角形等のオブジェクトがディスプレイ領域１０４にレンダリングされる時に起こる可能性のある種々の状況を示す。別の三角形の少なくとも一部より離れた場所にある三角形の部分は破線で描画される。
【００４３】
図４ａにおいて、第１の三角形１２０が、特定のディスプレイ領域１２２に表示される。そして、第２の三角形１２１が、当該特定のディスプレイ領域１２２にレンダリングされる。最小領域デプス値zminrは、そのディスプレイ領域の第１の三角形に対する最小ポリゴンデプス値と同一であり、最大領域デプス値zmaxrは、そのディスプレイ領域の第１の三角形に対する最大ポリゴンデプス値と同一である。第２の三角形１２１全体は、第１の三角形１２０より離れた場所にあると仮定する。その結果、第２の三角形１２１のzminは、第１の三角形１２０のzmaxより大きいため、zmaxrより大きい。第１の三角形１２０は、当該ディスプレイ領域において観察者の最も近くに位置付けられるオブジェクトである。第２の三角形１２１のzminをディスプレイ領域のzmaxrと比較することにより、第２の三角形が当該特定のディスプレイ領域１２２に対するバッファ値（例えば、ｚ及び色）を上書きする必要はないことが確認されてもよい。
【００４４】
図４ｂにおいて、第１の三角形１３０が、特定のディスプレイ領域１３２に表示される。そして、第２の三角形１３１が、当該特定のディスプレイ領域１３２にレンダリングされる。最小領域デプス値zminrは、第１の三角形に対するzminと同一であり、最大領域デプス値zmaxrは、ディスプレイ領域１３２の第１の三角形に対するzmaxと同一である。第２の三角形１３１は、第１の三角形１３０より観察者の近くに位置付けられる。その結果、第２の三角形１３１のzmaxは、第１の三角形１３０のzminより小さく、またzminrより小さい。従って、第２の三角形１３１のzmaxをディスプレイ領域のzminrと比較することにより、第２の三角形がレンダリングされる必要があることが確認さてもよく、当該ディスプレイ領域に対して、デプスバッファに対するメモリ読出しは完全に回避されるが、ポリゴンのｚ値はデプスバッファに直接書き込まれる。またストレージ手段１９は、必要に応じて、第２の三角形１３１のzmin及び／又はzmaxに対応するzminr及びzmaxrの新しい値で更新されるべきである。
【００４５】
図４ｃにおいて、第１の三角形１４０は、特定のディスプレイ領域１４２に表示される。最小領域デプス値zminrは第１の三角形１４０に対するzminと同一であり、最大領域デプス値zmaxrは第１の三角形１４０に対するzmaxと同一である。第２の三角形１４１は、当該特定のディスプレイ領域１４２にレンダリングされる。第２の三角形１４１の少なくとも一部（実線で示される）が第１の三角形１４０より近くにあり且つ第２の三角形１４１の他の一部（破線で示される）が第１の三角形１４０より離れた場所にあるように、第２の三角形１４１は、部分的に第１の三角形１４０より離れた場所に置かれる。その結果、第２の三角形１４１のzminはディスプレイ領域１４２のzmaxrより小さく、且つ／又は第２の三角形１４１のzmaxはディスプレイ領域のzmaxrより大きい。従って、第２の三角形１４１のzmin及びzmaxをディスプレイ領域１４２のzminr及び／又はzmaxrと比較することのみでは、第２の三角形１４１がレンダリングされるべきか又はレンダリングされないべきかを確認できず、更なる処理が必要とされ、デプスバッファ１６を読み出すことが必要となる。
【００４６】
新しい三角形１２１、１３１、１４１に対するzmin値及びzmax値が、計算又は推定されてもよい。zmin及びzmaxは、例えばポリゴンの頂点のzmin値及びzmax値として判定されてもよい。あるいは、図形プリミティブがポリゴンである場合、それらzmin値及びzmax値は、ディスプレイ領域の角でポリゴンの平面の式を評価することにより推定され、それら値の最小値及び最大値を得る。更に、それら技術の組合せが使用されてもよい。別の実施形態によると、新しい三角形に対するzmin及びzmaxは、ディスプレイ領域のサイズ及び当該ディスプレイ領域内の三角形の斜辺の傾きを知ることにより推定される。zmin値及びzmax値は、控え目に推定されるべきである。
【００４７】
尚、図４ａ〜図４ｃにおいて説明した状況は、単に説明の目的で与えられたものである。例えば、三角形がオーバーラップしない場合には他の状況が発生するだろう。また、ディスプレイ領域内の三角形の数は他の数であってもよい。更に、ディスプレイ領域の各ディスプレイブロックは、異なる三角形と関連してもよい。
【００４８】
新しいオブジェクトのzmin及びzmaxをディスプレイ領域のzminr及びzmaxrと領域毎に比較することにより、新しいオブジェクトの可視性に対する明確な回答が得られない場合、同様の比較がサブ領域毎に行なわれる。それでも明確な回答が得られない場合、特定のディスプレイ領域内のオブジェクトに対する全てのｚ値が生成されてもよい。新しい三角形の各ディスプレイブロックに対するｚ値は、頂点のｚ値の透視補正補間（perspective-correctinterpolation）により生成されてもよい。
【００４９】
各ｚ値が、サブディスプレイ領域に対するzminsub及びzmaxsubのうち少なくとも一方と比較されるようにしてもよい。すなわち、ｚ値をzminsub及びzmaxsubの双方と比較する必要はない。従って、デプスバッファが各ｚ値に対して読み出される必要があるか否かは、ディスプレイブロック毎に判定されてもよい。
【００５０】
特定のディスプレイブロックに対応するポリゴンのｚ値がディスプレイ領域のzminrより小さい場合、デプスバッファ１６は、読み出される必要はないが、新しいオブジェクトに対してデプスバッファを特定のディスプレイブロックに対応するｚ値で更新するために書き込まれる必要がある。デプスバッファ１６は、ディスプレイブロックに対する更なる処理なしで更新される。
【００５１】
特定のディスプレイブロックに対応するポリゴンのｚ値がディスプレイ領域のzmaxrより大きい場合、デプスバッファ１６は、ディスプレイブロックに対して読み出される必要も書き込まれる必要もない。
【００５２】
しかし、特定のディスプレイブロックに対応するポリゴンのｚ値がディスプレイ領域のzminrとzmaxrとの間である場合、明確な回答は与えられない。デプスバッファ１６は、特定のディスプレイブロックと関連付けられる格納されたｚ値を検索するために読み出される必要がある。特定のディスプレイブロックに対して生成されたｚ値は、格納され且つ今検索された対応するｚ値と比較される。生成されたｚ値が格納された対応するｚ値より小さい場合、デプスバッファは生成されたｚ値で更新される。生成されたｚ値が格納された対応するｚ値より大きい場合、デプスバッファは更新される必要はない。
【００５３】
尚、他の実施形態に従って、格納された対応するｚ値以下、ｚ値より大きい、ｚ値と等しい、ｚ値以上等の他の比較演算子が使用されてもよい。
【００５４】
オブジェクトに対するzmin及びzmaxに加え、オブジェクトに対する補間された各ｚ値をサブディスプレイ領域のzminsub及びzmaxsubと比較することは、デプスバッファ１６に対する読み出しが回避される可能性があるため有利である。従って、利用されるメモリ帯域幅は、オブジェクトのzmin及びzmaxの比較のみの場合より減少される。
【００５５】
図５は、ディスプレイ領域の断面を示す。図中、ディスプレイブロックはＹ軸に示され、デプス値の関係はｚ軸に沿って示される。例示する目的のため、ディスプレイ領域の１列のディスプレイブロック数は４つのみである。
【００５６】
第１のオブジェクト１５０及び第２のオブジェクト１５１は、ディスプレイ領域にレンダリングされている。ディスプレイ領域のzmaxrは、第１のオブジェクト１５０の最大ｚ値と同一である。ディスプレイ領域のzminrは、第１のオブジェクト１５０の最小ｚ値と同一である。第３のオブジェクト１５２が、ディスプレイ領域にレンダリングされる。第３のオブジェクトのobj-zminr及びobj-zmaxrがディスプレイ領域のzminr及びzmaxrと比較される場合、第３のオブジェクトのobj-zmaxrがzminrとzmaxrとの間であるため、第３のオブジェクト１５２の可視性に関する明確な回答は与えられない。従って、第３のオブジェクト１５２のサンプル点１５３、１５４、１５５におけるobj-z値は、ディスプレイ領域の各ディスプレイブロックにおいて生成される。サンプル点１５３、１５４、１５５におけるz値を見ることにより、サンプル点１５５におけるｚ値はzminrより小さいことが判定されてもよく、デプスバッファはそのディスプレイ領域に対して読み出される必要はない。しかし、zminrの値は、サンプル点１５５に対して更新される。サンプル点１５３及び１５４は、各ディスプレイブロックにおいて判定される。それにより、サンプル点１５４がレンダリングされるべきであり且つサンプル点１５３がレンダリングされるべきではないと判定される前に、ディスプレイバッファの読み出しが必要とされる。
【００５７】
図８を参照すると、最小ポリゴンデプス値及び最大ポリゴンデプス値が最小領域デプス値及び最大領域デプス値のうち少なくとも一方と比較される方法のフローチャートが示される。
【００５８】
新しいオブジェクトがレンダリングされる場合、図８を参照して以下の手順が実行される。
【００５９】
ブロック２００において、新しいオブジェクトのobj-zminr及びobj-zmaxrは、特定のディスプレイ領域において推定される。
【００６０】
ブロック２０１において、ディスプレイ領域のzminr及びzmaxrは、メモリ１６、１１又は１９から検索される。
【００６１】
ブロック２０２において、obj-zmaxrはzminrと比較される。
【００６２】
obj-zmaxrがzminrより小さい場合、オブジェクト全体は、領域のディスプレイに既に存在する全ての他のコンテンツの手前に位置付けられるため、レンダリングされる必要がある。ｙｅｓの線に従ってブロック２１４ａに進む。
【００６３】
ブロック２１４ａにおいて、領域に含まれるディスプレイブロックの新しいオブジェクトに対するｚ値が生成される。ブロック２１５ａにおいて、特定のディスプレイブロックのｚバッファは、新しく生成されたｚ値で更新される。ブロック２１６ａにおいて、特定の領域の全てのディスプレイブロックが処理されたかが判定される。ｎｏである場合、ブロック２１７ａに示すように次のディスプレイブロックに進み、ブロック２１４ａに戻る。ｙｅｓである場合、ブロック２１９に進み、全てのディスプレイ領域が処理されたかが判定される。処理されていない場合、ブロック２２０において次のディスプレイ領域に進み、次の領域のためにブロック２００に戻る。
【００６４】
ブロック２０２において、obj-zmaxrがzminsubより大きい場合、ｎｏの線に従ってブロック２０３に進む。
【００６５】
ブロック２０３において、obj-zminrがzmaxrと比較される。
【００６６】
obj-zminrがzmaxrより大きい場合、オブジェクト全体は、ディスプレイに既に存在する任意の他のオブジェクトの背後に位置付けられるため、レンダリングされる必要はない。ｙｅｓの線に従って次の領域のためにブロック２１９に進む。
【００６７】
obj-zminrがzmaxsubより小さい場合、オブジェクトのレンダリングに関しては確定した結論が得られないため、更なる調査が必要とされ、ｎｏの線に従ってブロック２０４ａに進む。
【００６８】
ブロック２０４ａにおいて、サブ領域のオブジェクトに対して、obj-zmaxsub及びobj-zminsubが判定される。
【００６９】
ブロック２０４ｂにおいて、ディスプレイサブ領域に対して、zmaxsub及びzminsubが検索及び／又は計算される。
【００７０】
ブロック２０５において、obj-zmaxsubがzminsubと比較される。
【００７１】
obj-zmaxsubがzminsubより小さい場合、オブジェクト全体は、サブ領域に対してディスプレイに既に存在する他の全てのオブジェクトの手前に位置付けられるため、レンダリングされる必要がある。ｙｅｓの線に従ってブロック２１４ｂに進む。
【００７２】
ブロック２１４ｂにおいて、サブ領域に含まれるディスプレイブロックの新しいオブジェクトに対するｚ値が生成される。ブロック２１５ｂにおいて、特定のディスプレイブロックのｚバッファは、新しく生成されたｚ値で更新される。ブロック２１６ｂにおいて、特定のサブ領域の全てのディスプレイブロックが処理されたかが判定される。ｎｏである場合、ブロック２１７ｂに示すように次のディスプレイブロックに進み、ブロック２１４ｂに戻る。ｙｅｓである場合、ブロック２１３に進み、全てのディスプレイサブ領域が処理されたかが判定される。処理されていない場合、ブロック２１８に示すように次のディスプレイサブ領域に進み、次のサブ領域のためにブロック２０４ａに戻る。
【００７３】
ブロック２０５において、obj-zmaxsubがzminsubより大きい場合、ｎｏの線に従ってブロック２０６に進む。
【００７４】
ブロック２０６において、obj-zminsubがzmaxsubと比較される。
【００７５】
obj-zminsubがzmaxsubより大きい場合、オブジェクト全体は、ディスプレイに既に存在する任意の他のコンテンツの背後に位置付けられるため、レンダリングされる必要はない。次のサブ領域のためにｙｅｓの線に従ってブロック２１３に進む。
【００７６】
obj-zminsubがzmaxsubより小さい場合、オブジェクトのレンダリングに関しては確定した結論が得られないため、更なる調査が必要とされ、ｎｏの線に従ってブロック２０７に進む。
【００７７】
ブロック２０７において、特定のディスプレイブロックに対して、新しいオブジェクトのｚ値が生成される。
【００７８】
ブロック２１８において、オブジェクトのｚ値はzminsubと比較される。
【００７９】
ｚ値がzminsubより小さい場合、オブジェクトは、ディスプレイブロックに既に存在する任意のコンテンツの手前に位置付けられるため、レンダリングされる必要がある。ｙｅｓの線に従ってブロック２１２に進む。
【００８０】
ブロック２１８において、ｚ値がzminsubより大きい場合、ｎｏの線に従ってブロック２１９に進む。
【００８１】
ブロック２１９において、ｚ値はzmaxsubと比較される。
【００８２】
ｚ値がzmaxsubより大きい場合、オブジェクト全体は、ディスプレイブロックに既に存在する任意のコンテンツの背後に位置付けられるため、レンダリングされる必要はない。次のディスプレイブロックのためにｙｅｓの線に従ってブロック２１０に進む。
【００８３】
ｚ値がzmaxsubより小さい場合、オブジェクトのレンダリングに関しては確定した結論が得られないため、更なる調査が必要とされ、ｎｏの線に従ってブロック２０８に進む。
【００８４】
ブロック２０８において、特定のディスプレイブロックに対して、格納されたｚ値がメモリから検索される。
【００８５】
ブロック２０９において、オブジェクトに対して生成されたｚ値は、格納され検索されたｚ値と比較される。
【００８６】
生成されたｚ値が格納されたｚ値より大きい場合、新しいオブジェクトは、先のコンテンツの背後にあるため、特定のディスプレイブロックにレンダリングされる必要はない。ｎｏの線に従ってブロック２１０に進む。
【００８７】
ブロック２１０において、全てのディスプレイブロックが処理されたかが判定される。処理されていない場合、ブロック２１１に示すように次のディスプレイブロックに進み、その後ブロック２０７に進む。
【００８８】
全てのディスプレイブロックが処理された場合、次のサブ領域のためにブロック２１３に進む。
【００８９】
ブロック２０９において、生成されたｚ値が格納されたｚ値より小さい場合、新しいオブジェクトは特定のディスプレイブロックにレンダリングされる必要があり、ｙｅｓの線に従ってブロック２１２に進む。
【００９０】
ブロック２１２において、そのディスプレイブロックに対するｚバッファは更新され、任意の新しいディスプレイブロックのためにブロック２１０に進む。
【００９１】
ブロック２１３において判定されるように、全てのディスプレイサブ領域が処理された場合、ブロック２１９に進む。
ブロック２１９において、全てのディスプレイ領域が処理されたかが判定される。ｙｅｓである場合、手順は終了する。
【００９２】
尚、カラーバッファの情報は、ｚバッファが更新されるのと同時に更新されてもよい。あるいは、カラーバッファは後で更新される。これは、いくつかのポリゴンがレンダリングされる場合がその例であり、いくつかの又は全てのポリゴンが本発明に従って処理された時にカラーバッファは更新される。
【００９３】
更なる実施形態によると、ディスプレイ領域のzminr及びzmaxrの解像度を増加できる。ディスプレイ領域のサイズが小さくなる程、カリングはより正確になる。しかし、ディスプレイ領域が小さくなるのに伴い、必要とされるオンチップ記憶容量は増加する。あるいは、キャッシュがzminr／zmaxrにアクセスするのに使用される場合、キャッシュはより頻繁にメモリ１１にアクセスする。前者は、チップ領域におけるコストを大きくし、後者は、帯域幅の使用に関して非生産的である。例えば、８×８のディスプレイブロックのディスプレイ領域サイズから４×４のディスプレイブロックのディスプレイ領域サイズへ変更すると、一般に、帯域幅の使用及び必要とされるメモリに関して４倍のコストがかかる。
【００９４】
一実施形態によると、この問題に対する安価な解決策が提供される。ｐ×ｐのディスプレイブロックのディスプレイ領域サイズが使用されると仮定する。性能を向上するために、ｐ／２×ｐ／２のディスプレイブロックのディスプレイ領域サイズを使用するのが適切だが、オンチップメモリのコストを４倍増加することは望ましくない。以下において、ｐ×ｐのディスプレイ領域はディスプレイ領域と呼ばれ、ｐ／２×ｐ／２のディスプレイ領域はディスプレイサブ領域と呼ばれる。
【００９５】
図７は、４つのディスプレイサブ領域２５１、２５２、２５３、２５４を含むディスプレイ領域２５０を示す。各ディスプレイサブ領域は、４×４のディスプレイブロックを含む。
【００９６】
ディスプレイ領域２５０全体に対して、zminr及びzmaxrはストレージ手段１９に格納される。各サブ領域２５１、２５２、２５３、２５４に対する最小サブ領域デプス値zminsub及び最大サブ領域デプス値zmaxsubは、ディスプレイ領域のzminr及びzmaxrの範囲にあることは周知である。従って、一実施形態によると、zminsub及びzmaxsubはzminr及びzmaxrと関連付けられる。zminsub及びzmaxsubは、ディスプレイ領域のzminr及びzmaxrを基準として判定されてもよい。zminsub及びzmaxsubは、ディスプレイ領域のzminr及びzmaxrと共にストレージ手段１９に格納されてもよい。従って、新しいオブジェクトがレンダリングされる場合、新しいオブジェクトに対して判定されたzmin及びzmaxと各ディスプレイサブ領域のzminsub及びzmaxsubのうち少なくとも一方との比較が行なわれる。最初の比較で可視性に関して一般的な判定がされない場合、生成された各ｚ値は、zminsub及び／又はzmaxsubと比較される。また、要望に応じて、レンダリングされるポリゴンに対して判定されたzmin及び／又はzmaxがzminr及び／又はzmaxrと比較されてもよい。
【００９７】
zminsubは、zminr以上となるように決定されてもよく、zmaxsubは、zmaxr以下となるように決定されてもよい。
【００９８】
当然、zminsub及びzmaxsubは、サブ領域のデプス値の実際の最小値及び最大値として決定されてもよい。
【００９９】
あるいは、zminsubは、前記特定のサブ領域に対して格納された全てのデプス値以下となるように決定され、zmaxsubは、前記特定のサブ領域に対して格納された全てのデプス値以上となるように決定されてもよい。
【０１００】
あるいは、zminsub及びzmaxsubは、以下のように決定されてもよい。
【０１０１】
zminsub = zminr+ (zmaxr-zminr)*k/(2m-1)
式中、kは[0, 1, 2, ..., 2n-1]である。
【０１０２】
zmaxsub = zmaxr+ (zminr-zmaxr)*s/(2n-1)
式中、sは[0, 1, 2, ..., 2n-1]である。
【０１０３】
mは、ディスプレイサブ領域毎にzminsubを符号化するのに使用されるビット数であり、nは、zmaxsubを符号化するのに使用されるビット数である。m及びnは、１以上の整数である。
【０１０４】
m=n=2である場合、３で分割される。これは、２ビットがzminsub及びzmaxsubを符号化するのに使用され、22-1=3から得られる。３による分割で、zminr以上zmaxr以下の可能な値は均等に分布される。zminsub及びzmaxsubは、zminr及びzmaxrを含む可能な値のいずれかを取ることができる。
【０１０５】
ハードウェアの観点から、奇数による分割は、ハードウェアがより複雑になるため望ましくない。この問題を処理するために、zminsub及びzmaxsubを判定する以下のアルゴリズムが使用されてもよい。
【０１０６】
zminsub = zminr+ (zmaxr-zminr)*k/2m
式中、kは[0, 1, 2, ..., 2n-1]である。
【０１０７】
zmaxsub = zmaxr+ (zminr-zmaxr)*s/2n
式中、sは[0, 1, 2, ..., 2n-1]である。
【０１０８】
本実施形態において、zminsubの値は、zminr以上であり且つzmaxrより小さい。zmaxsubの値は、zminrより大きく且つzmaxr以下である。これは、zminsubがzmaxrの値を格納できず、zmaxsubがzminrの値を格納できないことを意味する。しかし、zminsub及びzmaxsubのうち一方がzminr又はzmaxrを常に格納できるため、この状況が頻繁に発生する可能性は低い。更に、別のより大きい値がより近い場合でも、zmin、zmax、zminsub、zmaxsub、zminr及びzmaxrの全てが控え目に符号化される限り、すなわちzminsubに最も近い可能な小さい値及びzmaxsubに最も近い可能な大きい値に符号化される限り、レンダリングは依然として適切である。
【０１０９】
zminrとzmaxrとの間のzminsub及びzmaxsubに対する可能な値の他の分布も可能である。例えば、zmaxrよりzminrの近くにより多くの可能な値が提供されてもよく、zminrよりzmaxrの近くにより多くの可能な値が提供されてもよい。あるいは、zminrとzmaxrとの間のある特定の範囲内により多くの可能な値が提供されてもよい。特定の状況毎に、実際の分布がテストされてもよい。
【０１１０】
従って、zmaxr及びzminrの値は、対応するビット数を有する任意の所望の解像度で格納される。zmaxsub及びzminsubの値は、上記式で示されるｋの数及びｓの数としてnビットで格納される。
【０１１１】
図６は、ディスプレイ領域の断面を示す。図中、ディスプレイブロックはＹ軸に沿って示され、デプス値の間の関係はＺ軸に示される。例示する目的のため、ディスプレイサブ領域の１列のディスプレイブロック数は４つのみである。各ディスプレイ領域のzminr及びzmaxr、並びにディスプレイサブ領域のzminsub及びzmaxsubが示される。ディスプレイサブ領域のディスプレイブロックにレンダリングされる新しいオブジェクトに対して生成されたｚ値２７０、２７１、２７２、２７３が示される。
【０１１２】
zmin／zmax又は新しいオブジェクトに対して生成された各ｚ値２７０、２７１、２７２、２７３をzminr及びzmaxrと比較することにより、可視性に関する明確な回答は得られない。これは、前記生成されたｚ値がzminr及びzmaxrにより規定された範囲にあるためである。更に、新しいオブジェクトのzminがzmaxrより小さく、新しいオブジェクトのzmaxがzminrより大きいため、新しいオブジェクトのzmin／zmaxを比較することにより、デプスバッファ１６が読み出される必要があるという回答が与えられる。生成されたｚ値２７０、２７１、２７２、２７３をzminsub及びzmaxsubと比較することにより、ｚ値２７０は、zmaxsubより大きく且つレンダリングされる際にディスプレイサブ領域に先に描画されたコンテンツの範囲に含まれることが判定される。そのため、そのサブ領域ブロックに対してデプスバッファ１６を更新する必要はない。ｚ値２７１及び２７２は、zminsubより大きく且つzmaxsubより小さい。その結果、デプスバッファ１６は、ｚ値２７１及び２７２に対応するディスプレイブロックに対して格納されたｚ値を検索するために読み出される必要がある。ｚ値２７３はzminsubより小さく、レンダリングされる際にそのディスプレイブロックにおいて新しいオブジェクトを範囲に含むオブジェクトは存在しないことが判定される。そのため、デプスバッファ１６は、読み出されることなく、そのディスプレイブロックに対して更新される。
【０１１３】
上述から明らかであるように、zminr及びzmaxrを基準とする符号化zminsub及びzmaxsubを使用することは、更なるデプスバッファの読み出しが回避される可能性があるという利点を有する。上述の例においては、４回のデプスバッファ読み出しのうち２回が回避された。
【０１１４】
別の実施形態において、ディスプレイサブ領域の最小ポリゴンデプス値及び／又は最大ポリゴンデプス値、あるいはポリゴンデプス値は、最小サブ領域デプス値、最大サブ領域デプス値、最小領域デプス値及び／又は最大領域デプス値の組合せに対して比較されてもよい。
【０１１５】
更に別の実施形態において、最初に、ディスプレイサブ領域のzminsubが、ディスプレイ領域のzminr及びzmaxrを基準として決定される。その後、zmaxsubは、ディスプレイサブ領域の当該決定されたzminsub及びディスプレイ領域のzmaxrを基準として符号化される。あるいは、最初に、ディスプレイサブ領域のzmaxsubがディスプレイ領域のzminr及びzmaxrを基準として決定され、その後、当該ディスプレイサブ領域のzminsubがディスプレイ領域のzminr及びディスプレイサブ領域の当該決定されたzmaxsubを基準として決定される。zminsub及びzmaxsubは、ディスプレイサブ領域内の全てのｚ値のzmin及びzmaxを判定することにより生成され、上述のようにzminsub及びzmaxsubを判定できる。
【０１１６】
図９において、手順の別の実施形態を示す。
【０１１７】
手順は、ブロック３００で開始される。
【０１１８】
ブロック３０１において、obj-zminr及びobj-zmaxrが判定される。更に、zminr及びzmaxrがメモリから検索される。
【０１１９】
ブロック３０２において、obj-zmaxrがzminrより小さいかが判定される。小さい場合、新しいオブジェクトは、ディスプレイ領域におけるあらゆる既存のコンテンツの手前にある。
【０１２０】
ブロック３０２においてｙｅｓである場合、ブロック３１６に示すように、オブジェクトは領域全体にレンダリングされる。ブロック３１７において、全ての領域が処理されたかが判定される。処理された場合、手順はブロック３１８で終了する。処理されていない場合、ブロック３０１に戻り、新しいディスプレイ領域が処理される。
【０１２１】
ブロック３０２においてｎｏである場合、ブロック３０３に進む。ブロック３０３において、obj-zminrがzmaxrより大きいかが判定される。大きい場合、新しいオブジェクトは、ディスプレイ領域におけるあらゆる既存のオブジェクトの背後にある。
【０１２２】
ブロック３０３においてｙｅｓである場合、ブロック３１９に示すように、オブジェクトはレンダリングされるべきではない。ブロック３１７に進み、上述のように、全ての領域が処理されたかが判定される。図９において、ブロック３１７は別の場所にも示されるが、それは手順をより理解し易くするためのものである。同一の番号を付けられた各ブロックにおける手順は同一である。
【０１２３】
ブロック３０３においてｎｏである場合、領域におけるオブジェクトのレンダリングに関しては明確な決定が得られず、ブロック３０４に進む。
【０１２４】
ブロック３０４において、obj-zminsub及びobj-zmaxsubが、上述したように判定される。
【０１２５】
ブロック３０５において、obj-zmaxsubがzminrより小さいかが判定される。ここで、zminrは、ブロック３０１で既に取得されており、且つ更なる処置（動作）を行うことなく利用可能である。
【０１２６】
ブロック３０５においてｙｅｓである場合、ブロック３２０に示すように、オブジェクトはサブ領域全体にレンダリングされる。ブロック３２１において、全てのサブ領域が処理されたかが判定される。処理された場合、次の領域の処理のためにブロック３１７に進む。処理されていない場合、新しいサブ領域の処理のためにブロック３０４に戻る。
【０１２７】
ブロック３０５においてｎｏである場合、ブロック３０６に進み、obj-zminsubがzmaxrより大きいかが判定される。大きい場合、新しいオブジェクトは、サブ領域の任意の先のオブジェクトの背後にある。なお、zmaxrは、既に利用可能である。
【０１２８】
ブロック３０６においてｙｅｓである場合、ブロック３２４に示すように、オブジェクトはレンダリングされるべきではない。
【０１２９】
ブロック３０６においてｎｏである場合、ブロック３０７に進み、ディスプレイサブ領域に対するzmaxsub及びzminsubがメモリから検索及び／又は計算される。
【０１３０】
ブロック３０８において、obj-zmaxsubがzmaxsubより小さいかが判定される。小さい場合、オブジェクトはサブ領域全体においてすべての既存のコンテンツの手前にある。
【０１３１】
ブロック３０８においてｙｅｓである場合、ブロック３２０に示すように、オブジェクトはサブ領域全体にレンダリングされる。
【０１３２】
ブロック３０８においてｎｏである場合、ブロック３０９に進み、obj-zminsubがzmaxsubより大きいかが判定される。大きい場合、新しいオブジェクトは、ディスプレイサブ領域のすべての既存のコンテンツの背後にある。
【０１３３】
ブロック３０９においてｙｅｓである場合、ブロック３２４に示すように、オブジェクトはレンダリングされるべきではない。
【０１３４】
ブロック３０９においてｎｏである場合、サブ領域のオブジェクトのレンダリングに関しては確定した決定が得られず、ブロック３１０に進む。
【０１３５】
ブロック３１０において、ディスプレイブロックのオブジェクトのｚ値が判定される。
【０１３６】
ブロック３１１において、オブジェクトのｚ値は、zminsubより小さいかが判定される。なお、zminsubはブロック３０７において既に取得されており更なる処置（動作）を加えることなく利用可能である。
【０１３７】
ブロック３１１においてｙｅｓである場合、ブロック３２２に示すように、オブジェクトはディスプレイブロックにレンダリングされる。ブロック３２３において、全てのディスプレイブロックが処理されたかが判定される。処理された場合、次のサブ領域のためにブロック３２１に進む。処理されていない場合、新しいディスプレイブロックのためにブロック３１０に戻る。
【０１３８】
ブロック３１１においてｎｏである場合、ブロック３１２に進み、ｚ値がzmaxsubより大きいかが判定される。大きい場合、新しいオブジェクトは、サブ領域の任意の先のコンテンツの背後にある。zmaxsubは、既に利用可能である。
【０１３９】
ブロック３１２においてｙｅｓである場合、ブロック３２５に示すように、オブジェクトはレンダリングされるべきではない。
【０１４０】
ブロック３１２においてｎｏである場合、ブロック３１３に進み、ディスプレイブロックの格納されたｚがメモリから検索される。
【０１４１】
ブロック３１４において、ｚ値が格納されたｚより小さいかが判定される。小さい場合、オブジェクトは、ディスプレイブロックのすべての他のコンテンツの手前にある。
【０１４２】
ブロック３１４においてｙｅｓである場合、ブロック３２２に示すように、オブジェクトはディスプレイブロックにレンダリングされる。
【０１４３】
ブロック３１４においてｎｏである場合、ブロック３２５に進む。
【０１４４】
図９において、ブロック３０２、３０３；３０５、３０６；３０８、３０９；３１１、３１２；及び３１４、３１５を含む５つのステップが開示された。種々のステップが、図９に示す組合せ以外で実行できる。例えば、ステップ３０２、３０３、ステップ３０５、３０６及びステップ３１１、３１２はオプションであってもよい。それらステップのうち３つ、２つ又は１つが使用さてもよく、あるいは１つも使用されなくてもよい。更に、ブロック３０８及び３０９の双方を常に使用する必要はなく、それら２つのブロックのうち一方のみを使用することも利点である。同様のことが各ステップの２つのブロックの全ての組合せに対して当てはまる。
【０１４５】
ブロック３１９、３２４、３２５の「レンダリングしない」は、ｚバッファ及び／又はディスプレイサブ領域及びディスプレイ領域の値の読み出しが必要とされないことを含む。これは節約を意味する。
【０１４６】
ブロック３１６、３２０及び３２２は、ｚバッファが最初に読み出されることなく更新されることを含み、これは節約を意味する。手順は、図８に関して説明された通りであってもよい。
【０１４７】
ディスプレイサブ領域は、任意のサイズを有してもよく、例えばp≧1及びq≧1である場合、ｐ×ｑのディスプレイブロックを有する。zminsub及びzmaxsubを符号化するのに任意のビット数が使用されてもよい。２×２のディスプレイブロックが各ディスプレイサブ領域に対して使用され、zminsub及びzmaxsubの各々に対して各相対位置を格納するのに２ビットが使用されると仮定すると、コストは、ディスプレイ領域毎に(2*2)*(2+2)=16ビットである。更に、zminr及びzmaxrがそれぞれ１６ビットで格納されると仮定すると、本実施形態による方式が従来技術より効果的であることは明らかである。例えば、ディスプレイ領域毎に３２ビット（zminr+zmaxrの場合、16+16ビット）から[n/2]×[n/2]のディスプレイ領域サイズにするには、標準的な従来の方式を使用して32*4=128ビットのコストがかかる。本実施形態による方式は４８ビット（zminr+zmaxr+相対位置ビットの場合、16+16+16ビット）のコストがかかる。
【０１４８】
一実施形態において、少なくとも１つのディスプレイ領域のディスプレイブロックに対するzminr及びzmaxrのうち少なくとも一方が判定される。zminr及びzmaxrのいずれか又は双方が判定される。よって、少なくとも１つのディスプレイサブ領域のディスプレイブロックに対するzminsub又はzmaxsubのうち一方のみが判定される必要がある。しかし、zminr及びzmaxrの双方が判定される場合、zminsub及びzmaxsubの双方が判定される。例えばzmaxsub値又はzminsub値のいずれかが使用されない場合に、本実施形態が使用されてもよい。
【０１４９】
zminsubは、少なくともzminrを基準として決定されてもよい。zmaxsubは、少なくともzmaxrを基準として決定されてもよい。
【０１５０】
４つのディスプレイサブ領域Ａ、Ｂ、Ｃ、Ｄを有するディスプレイ領域を考える。各サブ領域Ａ、Ｂ、Ｃ、Ｄは、最小サブ領域デプス値zminsub_A、zminsub_B、zminsub_C及びzminsub_Dをそれぞれ有する。また、各ディスプレイ領域に対して、２つの最小デプス値zmin_1及びzmin_2が判定され、格納される。zmin_1は、min[zminsub_A,zminsub_B, zminsub_C, zminsub_D]として決定されてもよい。従って、zmin_1は、ディスプレイ領域のzminrとして決定されてもよい。また、zmin_2は、zmin_1以上の値である。例えば、zmin_2は、(zmin_1+ max[zminsub_A, zminsub_B, zminsub_C, zminsub_D])/2として決定されてもよい。別の例は、[zminsub_A,zminsub_B, zminsub_C, zminsub_D]の２番目に大きい値をzmin_2の値とすることである。各サブ領域デプス値は、zmin_1に対して相対的に、すなわちzminrに対して相対的に決定されてもよい。ビット値zminsub_bitは、各サブ領域に対して使用（設定又はクリア）されてもよい。特定のサブ領域のzminsubがzmin_2より小さい場合、当該特定のサブ領域のzminsub_bitは、０等の第１の値に設定される。特定のサブ領域のzminsubがzmin_2以上である場合、当該特定のサブ領域のzminsub_bitは、１等の第２の値に設定される。第１の値はzmin_1を参照し、第２の値はzmin_2を参照する。符号化値が実数値以下となるため、正確な又は控え目な表現はこのように保証される。従って、レンダリング中、最小サブ領域デプス値はzmin_1又はzmin_2により表される。zmin_1、zmin_2及びディスプレイ領域のサブ領域に対するzminsub_bitの値が格納される。zmin_1及びzmin_2は、各値に対して１６ビット等の第１のビット数を使用して格納されてもよい。zminsub_bit値は、各値に対して単一ビットを使用して格納されてもよい。
【０１５１】
zmin_1及びzmin_2を使用する例として、zminsub_A=10、zminsub_B=20、zminsub_C=30、zminsub_D=40であり、zmin_1= zminsub_A = 10、zmin_2 = (zmin_1+zmin_sub_D)/2 =(10+40)/2 = 25と決定された場合を考える。また、ビット値は、zminsub_bit_A = 0、zminsub_bit_B= 0、zminsub_bit_C = 1、zminsub_bit_D = 1と決定される。この例において、サブ領域Ａは正確に表され、サブ領域Ｂ、Ｃ及びＤは控え目に表される。zmin_2がzminsub_A、zminsub_B、zminsub_C及びzminsub_Dのうち２番目に大きいものとして選択される場合、zmin_2は３０となり、Ｂ及びＤが控え目に表される。この例と同様に、サブ領域Ａ、Ｂ、Ｃ及びＤに対するビット値、並びにzmin_1及びzmin_2を格納するには、16+16+4*1=36ビットを必要とする。zmin_1及びzmin_2と同様の解像度、すなわち１６ビットを使用して、各サブ領域に対する最小デプス値を別個に格納するには、4*16=64ビットを必要とする。従って、zmin_1及びzmin_2及びビット値の表現を使用するには、必要とされる記憶空間は非常に少なくてすむ。
【０１５２】
別の実施形態において、zmin_1は上述のように判定され、zmin_2はzmin_1以上の数として、例えばディスプレイ領域のディスプレイブロック（画素）の全ての個々のデプス値の最大値として選択される。サブ領域デプス値の解像度を増加するために、ディスプレイ領域デプス値の間隔は、例えばzmin_1及びzmin_2-1を間隔の上限及び下限値として有する間隔[zmin_1,zmin_2-1]と判定される。この間隔は、２Ｎ個のサブ間隔に分割される。各サブ領域に対するビット値を格納するために、Ｎビットが使用される。zminsubを符号化する場合、zminsubを含むサブ間隔が選択され、控え目な符号化を提供するために、サブ間隔の最小値が使用される。
【０１５３】
zmin_1及びzmin_2及び間隔を使用する一例において、N=3と仮定すると、zmin_1をzminrとして決定し、zmin_2をディスプレイ領域におけるディスプレイブロック（画素）のデプス値の最大値として決定する。zmin_1=128及びzmin_2=256と仮定する。ディスプレイ領域デプス値の間隔は[128,255]と決定され、サブ間隔は、[128, 143]、[144, 159]、[160, 175]、[176,191]、[192, 207]、[208,223]、[224, 240]及び[241, 255]と決定される。zminsub_bit値は、上述のように決定され、ある特定のサブ間隔を参照する。zminsub_bit_A=100b=4と仮定する。zminsub_bit_Aは、５番目のサブ間隔、すなわち[192,207]を参照する。控え目な値を有するために、サブ領域Ａに対するサブ領域デプス値は、レンダリング中に１９２と判定される。サブ領域Ａ、Ｂ、Ｃ及びＤに対して、この例と同様にビット値、並びにzmin_1及びzmin_2を格納するには、16+16+3*4=44ビットを必要とする。これは、６４ビットを必要とする各サブ領域に対するデプス値の格納より好ましい。
【０１５４】
zminsubは、例えば以下の式を使用して判定されてもよい：zminsub =zmin_1+(zmin_2-zmin_1)*k/(2N)。kはzminsub_bit値と等しく、0, 1,..., 2N-1の範囲内である。例えば、N=3且つK=4である場合、4*(256-128)/23+128=192が与えられる。
【０１５５】
別の実施形態において、k = 0, 1, ..., 2N-1とした場合に、zminsubが、式zminsub= zmin_1 +(zmin_2-zmin_1)*k/(2N-1)で計算されるように、メイン間隔を[zmin_1, zmin_2]とし、メイン間隔を異なる方法で分割できるようにする。しかし、それら２つの式は単なる例であり、サブ間隔の開始値は別の方法で計算されてもよい。
【０１５６】
zmin_1及びzmin_2を参照して上述したことは、zmax値にも適用可能である。従って、zmax_1及びzmax_2の値は対応する方法で判定されてもよいため、対応する方法でzmaxsubを符号化する。zmax_1及びzmax_2のうちの一方は、少なくともzmaxrに対して相対的に決定される。格納されるzminsub及びzmaxsubの値は、ビット値により表される。上述から明らかであるように、zmin_1はzmaxrに等しくてもよい。zmin_2は、zmin_1以上であってもよい。同様に、zmax_2はzmaxrに等しくてもよい。zmax_は、zmax_2以下であってもよい。
【０１５７】
zmax_2は、max[zmaxsub_A, zmaxsub_B,zmaxsub_C,zmaxsub_D]として計算され、zmax_1はzmax_2以下である値になるように選択される。例えば、zmax_2は、ディスプレイ領域中の個々のディスプレイ要素ブロックのデプス値の最小値として計算されてもよい。更に、間隔[zmax_1+1,zmax_2]は、２Ｎ個のサブ間隔に分割されてもよく、それらの間隔の限界値はzmaxsubとして使用されてもよい。例えば、kがzmaxsub_bitに等しく、0,1, ..., 2N-1の範囲にある場合、zmaxsubは、式zmaxsub =zmax_2 +(zmin_1-zmin_2)*k/(2N)を使用して計算されてもよい。あるいは、間隔は[zmax_1, zmax_2]であってもよく、k=0,1, ..., 2N-1、zmax_2=zmaxr、amax_2≧zmax_1である場合、終了点は、zmaxsub =zmax_2 +(zmin_1-zmin_2)*k/(2N-1)として計算される。しかし、それら２つの式は単なる例であり、サブ間隔に対する限界値は別の方法で計算できる。
【０１５８】
従来のzmin／zmaxの技術と比較すると、ディスプレイ領域のzminr及びzmaxrを有するポリゴンのデプス値を比較するステップとディスプレイ領域をより正確なzminsub及びzmaxsubの関連する符号化を有するディスプレイサブ領域に分割するステップとを組み合わせることにより、デプスバッファ読み出しに関して非常に節約できる。節約により、デプスバッファ読み出しは、従来のzmin／zmaxの技術と比較して１．６〜２．９回少なくなる。ゲームの場合、フレーム毎に最大４０，０００回の不必要なデプスバッファ読み出しが回避されることになる。換言すると、約４０％のデプスバッファ読み出しが回避される。３０Ｈｚ（画像／秒）では、メモリアクセスは１秒に１２０万回少なくなる。
【０１５９】
特定の実施形態を参照して、本発明を先に説明した。しかし、本発明の範囲内において、上述以外の実施形態が可能である。本発明の範囲内において、ハードウェア又はソフトウェアにより方法を実行する上述以外の方法ステップが提供されてもよい。本発明の種々の特徴及びステップは、上述以外の組合せに組み合わされてもよい。本発明の範囲は、添付の請求の範囲によってのみ限定される。
【図面の簡単な説明】
【０１６０】
【図１】図１は、ディスプレイを具備する電子装置を示す正面図である。
【図２】図２は、デプス値を生成、格納及び比較するシステムを示すブロック図である。
【図３】図３は、ディスプレイブロックを含むディスプレイ領域の配列を示す概略図である。
【図４ａ】図４ａ〜図４ｃは、レンダリングされたオブジェクト及びレンダリングされるオブジェクトを示す概略図である。
【図４ｂ】図４ａ〜図４ｃは、レンダリングされたオブジェクト及びレンダリングされるオブジェクトを示す概略図である。
【図４ｃ】図４ａ〜図４ｃは、レンダリングされたオブジェクト及びレンダリングされるオブジェクトを示す概略図である。
【図５】図５は、ディスプレイ領域及びディスプレイブロックに対するデプス値の関係を示す図である。
【図６】図６は、ディスプレイ領域、並びにディスプレイ領域及びディスプレイサブ領域の最小デプス値と最大デプス値との関係を示す図である。
【図７】図７は、ディスプレイサブ領域を含むディスプレイ領域の配列を示す概略図である。
【図８】図８は、本発明による方法の一実施形態を示すフローチャートである。
【図９】図９は、本発明による方法の別の実施形態を示すフローチャートである。
【図１】
2008521103.tif 000003
【図２】
2008521103.tif 000004
【図３】
2008521103.tif 000005
【図４ａ】
2008521103.tif 000006
【図４ｂ】
2008521103.tif 000007
【図４ｃ】
2008521103.tif 000008
【図５】
2008521103.tif 000009
【図６】
2008521103.tif 000010
【図７】
2008521103.tif 000011
【図８】
2008521103.tif 000012
【図９】
2008521103.tif 000013
【手続補正書】
【提出日】平成18年9月23日(2006.9.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
ディスプレイのディスプレイブロックに対するデプス値を含むデプスバッファに対して値の読み出し及び書き込みの少なくともいずれかを行なう方法であり、
前記ディスプレイは、各々が複数の前記ディスプレイブロックを含む複数のディスプレイサブ領域を含む複数のディスプレイ領域に区分される方法であって、
少なくとも１つのディスプレイ領域の前記ディスプレイブロックに対して、最小領域デプス値及び最大領域デプス値のうち少なくとも一方を決定し、
少なくとも１つのディスプレイサブ領域の前記ディスプレイブロックに対して、最小サブ領域デプス値及び最大サブ領域デプス値のうち少なくとも一方を決定し、
前記最小サブ領域デプス値と前記最大サブ領域デプス値の少なくとも１つが前記最小領域デプス値と前記最大領域デプス値の少なくとも１つに関連して決定されることを特徴とする方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１９
【補正方法】変更
【補正の内容】
【請求項１９】
ディスプレイ（２、１４）のディスプレイブロック（１０２）に対するデプス値を含むデプスバッファ（１６）に対して値の読み出し又は書き込みを行なう処理デバイス（１０）であり、
前記ディスプレイは、各々が複数の前記ディスプレイブロックを含む複数のディスプレイサブ領域を含む複数のディスプレイ領域（１０１）に区分される処理デバイスであって、
前記処理デバイスはメモリを備え、該メモリは、
少なくとも１つのディスプレイ領域の前記ディスプレイブロックに対する最小領域デプス値及び最大領域デプス値のうち少なくとも一方と、
少なくとも１つのディスプレイサブ領域の前記ディスプレイブロックに対する最小サブ領域デプス値及び最大サブ領域デプス値のうち少なくとも一方とを含み、
前記最小サブ領域デプス値と前記最大サブ領域デプス値の少なくとも１つが前記最小領域デプス値と前記最大領域デプス値の少なくとも１つに関連して決定されていることを特徴とする処理デバイス。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
カリングの効果は、ディスプレイ領域のサイズに依存する。ディスプレイ領域が小さくなる程、カリングはより正確になる。しかし、ディスプレイ領域が小さくなる程、より多くのメモリリソースが必要とされる。
刊行物“Graphics for the masses: a hardwarerasterization architecture for mobile phones”（ACM TRANSACTIONS ON GRAPHICS ACMUSA, Vol 22, No. 3, July 2003 (2003-07), 801-808ページ, XP002311930 ISSN:0730-0301, AKENINE-MOLLER T ET AL）には、メモリ帯域幅の倹約に焦点をあてた、テクスチャ三角形をラスタライズする新たなハードウエア構造が開示されている。
刊行物“ATI Radeon Hyper Z Technology ”（in WORKSHOP ON GRAPHICS, 21 August 2000 (2000-08-21) − 22 August 2000 (2000-08-22), XP002311931 INTERLAKEN, SWITZERLAND,by MOREIN S）には、Ｚバッファのロスレス圧縮のような、Radeon特徴の点形式における概要が開示されている。
米国特許第5 509 110A号明細書は、デジタル的に生成された画像の各画素においてどのオブジェクトが可視であるかを決定する方法を開示する。
米国特許第6 313 839号明細書は、コンピュータグラフィックス表示システムにおけるＺデプス比較テストの実行方法及び装置を開示する。
【国際調査報告】
2008521103.tif 000014
2008521103.tif 000015
2008521103.tif 000016