JP6801001B2 - 画像処理装置、画像処理方法およびプログラム - Google Patents

画像処理装置、画像処理方法およびプログラム Download PDF

Info

Publication number
JP6801001B2
JP6801001B2 JP2018555040A JP2018555040A JP6801001B2 JP 6801001 B2 JP6801001 B2 JP 6801001B2 JP 2018555040 A JP2018555040 A JP 2018555040A JP 2018555040 A JP2018555040 A JP 2018555040A JP 6801001 B2 JP6801001 B2 JP 6801001B2
Authority
JP
Japan
Prior art keywords
pixels
group
pixel
processing
parallel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018555040A
Other languages
English (en)
Other versions
JPWO2018105655A1 (ja
Inventor
竜也 石渡
竜也 石渡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JPWO2018105655A1 publication Critical patent/JPWO2018105655A1/ja
Application granted granted Critical
Publication of JP6801001B2 publication Critical patent/JP6801001B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/26Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
    • G06V10/267Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

本発明は画像処理装置、画像処理方法およびプログラムに関する。
近年は、高精細な3次元画像をディスプレイに表示させるために、GPU(Graphic Processing Unit)の処理速度が重要になっている。
一般的なGPUは、表示領域を複数のタイルに分割し、そのタイルのそれぞれと、例えば三角形のようなプリミティブの領域と、が重なる領域に存在するピクセルを抽出している。そして、GPUは抽出されたピクセルを複数の並列処理のグループのいずれかに割り当て、そのグループごとに並列にテクスチャマッピングやバンプマッピングといった処理をして各ピクセルの色を算出する。
特許文献1には、プリミティブが表示されるスクリーンが複数のブロックに分割され、複数のブロックのそれぞれがビンに対応づけられること。GPUが、プリミティブと重なるビンを検出し、ビンに属するピクセルをユニファイドシェーダーシステムに処理させることが開示されている。
米国特許出願公開第2014/0292756号
例えばテクスチャマッピングやバンプマッピングのように、色を計算するためのデータを複数の位置についてメモリに格納し、そのデータを用いてピクセルの色を求める場合、並列度を上げても処理時間があまり短縮されない場合がある。
本発明は上記課題を鑑みてなされたものであり、その目的は、色を計算するためのデータを用いてピクセルの色を計算する処理の速度を向上させることである。
上記課題を解決するために、本発明にかかる画像処理装置は、表示領域が分割された部分領域のそれぞれについて、2次元領域と重なる複数のピクセルからなるピクセル群を決定するラスタライザと、前記2次元領域の各位置について色計算情報を格納するメモリと、前記複数のピクセル群に属するピクセルを、複数の処理グループであってそれぞれ所定の並列数以下のピクセルを含むことができる処理グループのいずれかに割り当てる割当部と、前記メモリに格納された色計算情報に基づいて、前記処理グループに属するピクセルのそれぞれの色を並列に算出する並列演算ユニットと、前記算出された色に基づいて、画像のデータを出力する画像生成部と、を含む。前記割当部は、前記ピクセル群のそれぞれについて、当該ピクセル群に属するピクセルが割当てられる処理グループの数が、必要最小数になるように、前記ピクセルを複数の処理グループのうち少なくとも1つに割り当てる。
また、本発明にかかる画像処理方法は、2次元領域の各位置について色計算情報を格納するメモリと、前記メモリに格納された色計算情報に基づいて、複数の処理グループであってそれぞれ所定の並列数以下のピクセルを含むことができる処理グループに属するピクセルのそれぞれの色を並列に算出する並列演算ユニットと、を含む装置の画像処理方法であって、表示領域が分割された部分領域のそれぞれについて、2次元領域と重なる複数のピクセルからなるピクセル群を決定するステップと、前記複数のピクセル群に属するピクセルを、前記複数の処理グループのいずれかに割り当てるステップと、前記並列計算ユニットにより算出された色に基づいて、画像のデータを出力するステップと、を含む。前記ピクセルを割り当てるステップでは、前記ピクセル群のそれぞれについて、当該ピクセル群に属するピクセルが割当てられる処理グループの数が、必要最小数になるように、前記ピクセルを複数の処理グループのうち少なくとも1つに割り当てる。
また、本発明にかかるプログラムは、2次元領域の各位置について色計算情報を格納するメモリと、前記メモリに格納された色計算情報に基づいて、複数の処理グループであってそれぞれ所定の並列数以下のピクセルを含むことができる処理グループに属するピクセルのそれぞれの色を並列に算出する並列演算ユニットと、を含み、前記並列計算ユニットにより算出された色に基づいて画像のデータを出力するコンピュータに、表示領域が分割された部分領域のそれぞれについて、2次元領域と重なる複数のピクセルからなるピクセル群を決定するステップと、前記複数のピクセル群に属するピクセルを、複数の処理グループのいずれかに割り当てるステップと、を実行させる。前記ピクセルを割り当てるステップでは、前記ピクセル群のそれぞれについて、当該ピクセル群に属するピクセルが割当てられる処理グループの数が、必要最小数になるように、前記ピクセルを複数の処理グループのうち少なくとも1つに割り当てる。
本発明によれば、色を計算するためのデータを用いてピクセルの色を計算する処理の速度を向上させることができる。
本発明の一形態では、前記メモリに連続して格納される前記色計算情報の位置は、互いに離間していなくてよい。
本発明の一形態では、前記割当部は、処理グループに割り当てられたピクセルの数が前記所定の並列数より小さく、かつ前記所定の並列数から前記割り当てられたピクセルの数を引いた数が他のピクセル群に属する未割当のピクセルの数より大きい場合は、前記他のピクセル群に属するピクセルを前記処理グループに割り当ててよい。
本発明の一形態では、前記割当部は、直前にピクセルが割り当てられた処理グループに属するピクセルの数を前記並列数から引いた数を空き数として求め、次のピクセル群に属するピクセルの数を並列数で割った余りが前記空き数より小さい場合に、前記余りの数のピクセルを最近にピクセルが割り当てられた前記処理グループに割り当て、次のピクセル群に属するピクセルの数を並列数で割った余りが前記空き数より大きい場合に、新たな1または複数の処理グループに、前記次のピクセル群に属するピクセルを割り当ててよい。
本発明の一形態では、前記割当部は、ピクセルの数が並列数より大きいピクセル群に含まれる並列数のピクセルをそれぞれ処理グループに割り当て、未割当のピクセルを有する前記ピクセル群のうちいずれかのピクセルの数が処理グループの空き数以下の場合に、当該処理グループに前記いずれかのピクセル群に属する未割当のピクセルを割り当て、未割当のピクセルを有する前記ピクセル群のうちいずれのピクセルの数も処理グループの空き数より大きい場合に、前記ピクセル群のうちいずれかのピクセルが割り当てられる新たな処理グループを生成してよい。
本発明の実施形態にかかる画像処理装置のハードウェア構成の一例を示す図である。 画像処理装置が行う処理の一例を概略的に示すフロー図である。 表示領域内に生成されるプリミティブの一例を示す図である。 パターンとプリミティブとの対応の一例を示す図である。 コントローラがピクセルを並列処理グループに割り当てる処理の一例を示すフロー図である。 並列処理グループへのピクセルの割り当ての一例を説明する図である。 並列処理グループへのピクセルの割り当ての比較例を示す図である。 並列処理グループへのピクセルの割り当ての他の一例を説明する図である。 並列処理グループへのピクセルの割り当ての他の一例を説明する図である。 並列演算器が担当する領域の一例を示す図である。 コントローラがピクセルを並列処理グループに割り当てる処理の他の一例を示すフロー図である。 並列処理グループへのピクセルの割り当ての一例を説明する図である。
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
図1は、本発明の実施形態にかかる画像処理装置1のハードウェア構成の一例を示す図である。画像処理装置1は、パーソナルコンピュータや家庭用ゲーム機、またはタブレット端末などである。画像処理装置1は、主プロセッサ11、画像処理ユニット12、メモリコントローラ13、入出力ユニット14、DRAM(Dynamic Random Access Memory)16、表示信号生成部18を含む。
主プロセッサ11は、DRAM16に格納されているプログラムに従って動作し、画像処理ユニット12、入出力ユニット14等を制御する。なお、上記プログラムは、フラッシュメモリ等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
画像処理ユニット12は、いわゆるGPUの主要機能を実現する部分である。画像処理ユニット12は、頂点管理部21、ラスタライザ22、コントローラ23、ROPユニット24、シェーダーユニット25を含む。
頂点管理部21は、3次元のローカル座標をグローバル座標に変換する処理や、3次元の座標から、視点からみた場合の表示平面上の2次元座標を生成する処理をシェーダーユニット25と連携して行う。これにより、頂点管理部21は3次元の形状が変換された2次元の領域を生成している。
ラスタライザ22は、生成された2次元座標に基づいて、表示領域が分割された部分領域(以下では「タイル」と表記する)のそれぞれについて、そのタイルに属するピクセルのうちその2次元の領域と重なる複数のピクセルからなるピクセル群を決定する。以下では、あるタイルについて決定されたピクセル群に属するピクセルのことを、そのタイルに属するピクセルと記載する。
コントローラ23は、ラスタライザ22が決定した各タイルのピクセル群に基づいて、そのピクセル群に属するピクセルの色を算出する処理を、シェーダーユニット25と連携して行う。なお、コントローラ23は、汎用的なプログラムを実行するプロセッサであってもよいし、プログラムにより、頂点管理部21に相当する動作をしてもよい。
シェーダーユニット25は、複数の並列演算器27を含む。並列演算器27のそれぞれは、一つのインストラクションに対して予め定められた数(以下、「並列数P」と表記する)の処理を並列に行うことができる。並列演算器27は、いわゆるSIMDの演算装置である。シェーダーユニット25は、頂点管理部21の制御により、3次元の座標をある視点からみた場合の表示平面上の2次元の座標に変換する。また、シェーダーユニット25は、コントローラ23の制御により、DRAM16内のデータにアクセスし、2次元の領域を構成するピクセルの色を計算する。シェーダーユニット25は、キャッシュメモリを有していてもよい。
ROPユニット24は、コントローラ23およびシェーダーユニット25により算出された、複数の2次元領域についてのピクセルの色に基づいて、複数の2次元領域の画像を合成し、表示画像のデータをいわゆるフレームバッファに出力する。
なお、画像処理ユニット12は、頂点管理部21、ラスタライザ22、コントローラ23、ROPユニット24、シェーダーユニット25のセットを、複数含んでいてもよい。
メモリコントローラ13は、主プロセッサ11からDRAM16への読み書きのアクセスや、画像処理ユニット12からDRAM16への読み書きのアクセスを制御する。メモリコントローラ13は、主プロセッサ11や画像処理ユニット12がアクセスするアドレスをDRAM16のアクセス先を特定する信号(ローやカラム)に変換する。またメモリコントローラ13は変換された信号により特定されるDRAM16内の位置にあるデータを読み出し、DRAM16内のその位置にデータを書き込む。図示しないが、メモリコントローラ13は、より高速に動作するキャッシュメモリと接続されている。キャッシュメモリにより、繰り返しアクセスされるデータを高速に読み出すことが可能になる。
入出力ユニット14は、主プロセッサ11と、図示しない通信デバイスおよび入出力デバイスとを接続する。通信デバイスは例えば有線LANを構成する集積回路や端子、無線LANを構成する集積回路やアンテナを含み、入出力デバイスはキーボードやポインティングデバイス、オーディオデバイスを含む。
なお、主プロセッサ11、画像処理ユニット12、メモリコントローラ13、入出力ユニット14は、同じパッケージに格納されていてもよい。
DRAM16は、プログラムや、表示用の画像生成に必要なデータ、例えば3次元のテクスチャやバンプマップ等のデータ(以下では「パターン」と記載する)を格納する。また、DRAM16は、フレームバッファのデータも格納する。図1の例では、メモリコントローラ13およびDRAM16は主プロセッサ11と画像処理ユニット12とで共通のように書かれているが、メモリコントローラ13およびDRAM16は、主プロセッサ11と画像処理ユニット12とのそれぞれと対になるように設けられていてもよい。また、フレームバッファがDRAM16と異なるメモリ素子に格納されていてもよい。なお、DRAM16は複数のチップにより構成されていてもよい。
表示信号生成部18は、フレームバッファに格納される画像データに基づいて、表示信号を生成し、ディスプレイ19に向けて出力することで、ディスプレイ19に画像を表示させる。ディスプレイ19は、例えば画像処理装置1の外にあるテレビ装置や、画像処理装置1に内蔵される表示デバイスである。
図2は、画像処理装置1が行う処理の一例を概略的に示すフロー図である。図2には、画像処理装置1が3次元の形状を構成する1または複数のプリミティブを2次元の領域に変換し、変換された領域についてピクセルの色を算出する例が示されている。プリミティブは、例えば3次元空間に配置された三角形などのポリゴンや円板のように、頂点や中心、半径のような簡易なパラメータで位置や形状を特定できる図形である。図2に示される処理は、主プロセッサ11が予めデータを準備し、画像処理ユニット12が主プロセッサからの命令やプログラムに基づいてデータを演算することにより実現されている。主プロセッサ11がデータを準備するステップおよび指令するステップの詳細については説明を省略する。
はじめに、頂点管理部21は、3次元のプリミティブのデータをDRAM16から取得する(ステップS101)。3次元のプリミティブのデータは、例えば、ポリゴンの頂点の座標である。
次に、頂点管理部21は、シェーダーユニット25を制御し、そのシェーダーユニット25にプリミティブの頂点の座標を視点からみた表示平面上の2次元の座標に変換させる(ステップS102)。ここで、プリミティブの頂点の座標がローカル座標系で示されている場合は、頂点管理部21はシェーダーユニット25の演算により、頂点の座標をグローバル座標系に変換し、さらに2次元の座標に変換してもよい。3次元座標を表示平面上の2次元座標へ変換することは透視投影と呼ばれており、公知技術であるので詳細の説明は省略する。頂点管理部21は、変換された2次元の座標を示す情報を取得することで、描画対象となる2次元のプリミティブを取得する(ステップS103)。
次に、ラスタライザ22は、タイルのそれぞれについて、プリミティブと重なるピクセルからなるグループを選択する(ステップS104)。ここで、タイルは表示領域が分割された部分領域であり、タイルのそれぞれは矩形の領域である。表示領域には、例えば、a行b列(a,bは正の整数)のタイルが配置されている。タイルは、三角形などの領域であってもよい。以下では、選択されたピクセルのグループを対象タイルとも表記し、ピクセルのグループに属するピクセルを、対象タイルに属するピクセルと記載する。
図3は、表示領域内に生成されるプリミティブの一例を示す図である。図3には、表示領域71、矩形のタイル72、プリミティブ73が模式的に示されている。実際のタイル72の数は図3より多い。図3ではプリミティブ73は直角三角形であり、タイル72のうちいくつかと重なっている。ラスタライザ22は、上から2行目の左側の4つのタイル72について、それぞれ、プリミティブ73と重なる領域にあるピクセルからなる対象タイル741,742,743,744を決定している。ラスタライザ22は、他のタイル72についても対象タイル74を決定している。
ラスタライザ22により対象タイル74が決定されると、コントローラ23は、対象タイル74に属するピクセルを、1たたは複数の並列処理グループ81に割り当てる(ステップS105)。ここで、並列処理グループ81は、並列演算器27がまとめて並列に演算できる複数のスレッドのグループであり、スレッドの最大の数は並列数Pである。本実施形態では1ピクセルの処理を1スレッドで行うため、1つの並列処理グループに割り当てられるピクセルの数も並列数Pとなる。なお、複数のピクセルを1つのスレッドで処理する場合など、1つの並列処理グループに割り当てられるピクセルの最大数は、処理についての並列数Pと異なっていてもよい。ステップS105の処理の詳細については後述する。
並列処理グループ81にピクセルが割り当てられると、シェーダーユニット25に含まれる並列演算器27は、並列処理グループ81ごとに、メモリに格納されたパターンに基づいて、並列処理グループ81に割り当てられたピクセルの色を並列に算出する(ステップS106)。この色を算出する処理は、いわゆるテクスチャマッピングやバンプマッピングの処理を含んでおり、公知であるので詳細の説明は省略する。
図4は、パターン76と3次元のプリミティブ73との対応の一例を示す図である。図4の例では、パターン76は2次元の所定の外形を有し、パターン76の中に複数のテクセル77が設けられている。図4の例では、パターン76はいわゆるテクスチャであり、各テクセル77の色情報を含む。パターン76は、バンプマッピングに用いられるバンプマップであってもよい。この場合、パターン76は各テクセル77の高低の情報または法線の情報を含む。また、プリミティブ73内の平面上の位置75とパターン76内のテクセル77とは予め対応付けられている。また、プリミティブ73が変換された2次元領域におけるピクセルに相当するプリミティブ73内の位置は一意に求まるので、2次元領域内のピクセルの位置とテクセル77とも対応付けられている。パターン76は2次元領域内の各位置についての、例えば色や高低や法線といった色計算情報である。また、メモリに格納されるパターン76について、近くのテクセル77の色計算情報がより近いアドレスに格納されるようなデータ構造を有し、DRAM16に連続して格納される色計算情報の位置は、互いに離間していない。例えば、パターン76内の一辺が2のべき乗の矩形の領域にあるテクセルの色情報は、連続したアドレスに格納される。
ピクセルの色が算出されると、ROPユニット24は、算出された2次元領域のピクセルの色に基づいて、表示画像のデータをフレームバッファに出力する(ステップS107)。なお、画像のデータが、テクスチャ等として、フレームバッファの代わりに、他のメモリに出力されてもよい。また、表示信号生成部18は、フレームバッファに出力された表示画像データからディスプレイに出力するための表示信号を生成し、そのディスプレイに向けて表示信号を出力する(ステップS108)。
次に、ステップS105の処理についてさらに詳細に説明する。図5は、コントローラ23がピクセルを並列処理グループに割り当てる処理の一例を示すフロー図である。なお、この処理は、コントローラ23がプログラムを実行することにより実行される。コントローラ23は、図5に示される処理を、プリミティブ73から生成される2次元領域ごとに行ってもよいし、複数のプリミティブ73から生成される2次元領域についてまとめて行ってもよい。また、対象タイルを複数の並列演算器27ごとに割り当てる場合は、並列演算器27ごとに図5に示される処理を行ってもよい。
はじめに、コントローラ23は、1番目の並列処理グループ81を生成する(ステップS201)。コントローラ23は、この時点では並列処理グループについて処理を実行する命令を発行しない。そして、コントローラ23は以降の処理で用いるために、並列処理グループ81の空スレッドの数Nを求める(ステップS202)。コントローラ23は1番目の対象タイルを選択する(ステップS203)。
そして、コントローラ23は選択された対象タイルに属する未割当のピクセルの数Mを並列数Pで割った余りを算出し(ステップS204)、その余りがNより大きい場合には(ステップS204のN)、コントローラ23は以下のステップS205からステップS210の処理をスキップし、後述のステップS211の処理を行う。
一方、その余りがN以下である場合には(ステップS204のY)、コントローラ23はステップS205以降の処理を実行する。ステップS205では、対象タイルに含まれる未割当のピクセルのうち一部を並列処理グループ81のスレッドに割り当てる(ステップS205)。ここで、割り当てられるピクセルの数は、MとNのうち小さい方の数である。また、1つのスレッドには1つのピクセルが割り当てられるものとする。
そして、コントローラ23は割り当て後の並列処理グループ81の空スレッドの数Nを求める(ステップS206)。より具体的には、空スレッドの数Nは並列数からその並列処理グループ81に割り当てられたピクセルの数を引いた数である。コントローラ23は、単に割り当て前のNから今回割り当てられたピクセルの数を引いて空スレッドの数Nを求めてよい。
そして、コントローラ23は対象タイルに未割当のピクセルがないか判定し(ステップS207)、未割当のピクセルがある場合には(ステップS207のN)、コントローラ23はステップS207からS209の処理をスキップする。未割当のピクセルがない場合には(ステップS207のY)、コントローラ23は選択されていない対象タイルがあるか判定する(ステップS208)。選択されていない対象タイルがない場合は(ステップS208のN)すべての対象タイルについて処理がされているのでコントローラ23はステップS105の処理を終了する。一方、選択されていない対象タイルが存在する場合には(ステップS208のY)、コントローラ23は選択されていない対象タイルから新たな対象タイルを選択し(ステップS209)、ステップS210の処理へ進む。
ステップS210では、コントローラ23は並列処理グループの空きスレッドの数Nが0であるか判定する(ステップS210)。Nが0の場合には(ステップS210のY)、コントローラ23は新たな並列処理グループ81を生成し、空スレッドの数Nとして並列数を設定し(ステップS211)ステップS204の処理から繰り返す。一方、Nが0でない場合には、ステップS211の処理を経ずにステップS204の処理から繰り返す(ステップS210のN)。
図5に示される処理により、コントローラ23は、対象タイルのそれぞれについて、対象タイルに属するピクセルが割当てられる並列処理グループの数が必要最小数になる条件を満たすようにピクセルを並列処理グループ81に割り当てる。より具体的には、ある対象タイルに含まれるピクセルの数をTとすると、対象タイルに属するピクセルが割当てられる並列処理グループの数Kは以下の式を満たす。
K=Ceil(T/P)
ここで、Ceil(x)は、x以上の最小の整数を求める関数である。これにより、対象タイルに属するピクセルが必要最低限の数の並列処理グループに存在するようになる。
図6は、並列処理グループ81へのピクセルの割り当ての一例を説明する図である。図6は、図5に示される処理により、並列数Pが64であり、3つの対象タイル7211,7212,7213に属するそれぞれ10個、40個、50個のピクセルを並列処理グループ8111,8112に割り付けた場合の例を示す。図6の例では、同じ対象タイルに属するピクセルが割り付けられる並列処理グループ81の数は1になっており、対象タイル7211,7212に属するピクセルは1つの並列処理グループ8111に割り当てられている。
すると、ステップS106での並列計算において、メモリアクセスを効率化できる。一般的に、同じ対象タイルに属するピクセルに対応するテクセル77のメモリ内のアドレスは互いに近くなる。一方、DRAM16などへのメモリアクセスでは、バースト読出しがあるため、近いアドレスへのアクセスであれば、DRAM16への少ない回数のアクセスによってデータを読み出すことができる。また、仮にDRAM16から一度にデータを読み出せなくても、キャッシュやアドレス指定などのハードウェア上の都合により、ある程度アドレスが近ければより短時間でアクセスすることが可能になる。近年のGPUは並列度の向上により計算速度は速くなっており、メモリがボトルネックになりやすくなっている。このような状況下ではメモリアクセスの効率化により全体の処理速度を効果的に向上させることが可能になる。
図7は、並列処理グループ81へのピクセルの割り当ての比較例を示す図である。図7の例は、図6と同じ構成の対象タイル7201,7202,7203に属するピクセルを、先行する並列処理グループ81のスレッドの空きを最小にするアルゴリズムで割り当てしている。この場合、1つの対象タイル7203に属するピクセルが複数の並列処理グループ8101,8102に割り当てられるため、ステップS106の処理において、並列処理グループ8101の処理と並列処理グループ8102の処理とで、図6の例では1回で済んだ2回のメモリアクセスが発生しやすくなり、処理速度が低下しやすくなる。
図8は、並列処理グループ81へのピクセルの割り当ての他の一例を説明する図である。図8は、図5に示される処理により、3つの対象タイル7221,7222,7223に属するそれぞれ10個、40個、132個のピクセルを並列処理グループ8121,8122に割り付けた場合の例を示す。図8の例では、対象タイル7223に属するピクセルの数が132であるが、それが割り当てられる並列処理グループ8121,8122,8123の数が3である一方、3つの対象タイル7221,7222に属するピクセルと対象タイル7223に属するピクセルの一部とが同じ並列処理グループ8121に割り当てられている。
コントローラ23は、ある対象タイルに属するピクセルが割り当てられる並列処理グループの数を最小にしつつも、複数の対象タイルに属するピクセルが1つの並列処理グループに割り当てできるように制御している。これにより、単に対象タイルごとに並列処理グループ81を設ける場合より処理の並列度を向上させることができ、並列処理グループの数が増えることによる悪影響を抑え、より確実に処理速度を向上させることができる。
なお、並列度は低くなってしまうが、並列処理グループ81のそれぞれには1つの対象タイルに属するピクセルが割り当てられてもよい。図9は、並列処理グループ81へのピクセルの割り当ての他の一例を説明する図である。図9の例では、並列処理グループ8131,8132,8133のそれぞれには、1つの対象タイルに属するピクセルが割り当てられている。
なお、ある並列演算器27について順番が隣り合う対象タイルの位置は、必ずしも隣り合っていない。図10は、並列演算器27が担当する領域の一例を示す図である。図10は4つの並列演算器27を用いる場合のタイルの割り当ての例であり、S1からS4はその記号が付された対象タイルが割り当てられる並列演算器27を特定するIDを示している。また、一点鎖線を有する矢印は、ラスタライザ22がタイルを処理する順序を示す。タイルを処理する順序は、図10の例と異なっていてもよい。
図10の例では、対象タイルを並列演算器27にラウンドロビンで割り当てている。このため、ある並列演算器27についてみると、対象タイルの位置は互いに隣り合わない。このため、異なる対象タイルに属するピクセルについてのメモリアクセスが一度に行われる可能性は低くなる。このような状況では、本発明を実施する場合としない場合とでメモリアクセスの効率の差がさらに大きくなり、より大きな速度の向上の効果を得ることができる。
また、本実施形態により、メモリアクセスの効率化だけではなく、処理速度そのものの向上も期待できる。例えば、DRAM16に格納されるパターン76がバンププマップである場合、陰影を表すために法線の向きに応じて分岐処理をする場合がある。このような場合、並列演算の場合には、分岐処理でピクセルにより分岐先が異なると、分岐先の処理を2回にわけて計算する必要が生じる。本実施形態では1つの並列処理グループに属する対象タイルの数が1になる可能性が高くなる一方、パターンの局所性から同じ対象タイルに属するピクセルの法線が似た方向になる可能性が高くなり、複数の分岐先が生じる可能性を減らすことができる。
もし、対象タイルに含まれるピクセルの数の最大値が並列数と同じ場合には、図5に示される処理は簡略化されてよい。この場合、ステップS204は単に未割当のピクセルの数MがN以下か判定する処理となり、ステップS205は、単にNこのピクセルを並列処理グループのスレッドに割り当てる処理になり、ステップS207は不要になる。
ここで、ステップS105において、コントローラ23は、対象タイルのそれぞれについて、対象タイルに属するピクセルが割当てられる並列処理グループの数が必要最小数になる条件を満たしつつ、さらに並列度を高める処理をしてもよい。
図11は、コントローラ23がピクセルを並列処理グループ81に割り当てる処理の他の一例を示すフロー図である。コントローラ23は、図11に示される処理を、予め定められたバッファ数の対象タイルごとに行う。より具体的には、コントローラ23はバッファ数の対象タイルをローカルのメモリ等にバッファし、そのバッファされた対象タイルについて図11の処理を実行する。またコントローラ23は対象タイルがなくなるまで図11に示される処理を繰り返す。
はじめに、コントローラ23は、バッファされた対象タイルのうち未処理のものから、新たな対象タイルを選択する(ステップS401)。次に、コントローラ23は、選択された対象タイルに属する未割当のピクセルの数Mを求め、その数Mが並列数以上の場合には(ステップS402のY)、コントローラ23は新たな並列処理グループを生成し、対象タイルに属する未割当のピクセルのうち、並列数のピクセルを、その生成された並列処理グループのスレッドに割り当てる(ステップS403)。そして、ステップS402の処理から繰り返す。一方、数Mが並列数より小さい場合には(ステップS402のN)、コントローラ23はバッファされたすべての対象タイルが選択されたか確認する(ステップS404)。バッファされたすべての対象タイルが選択されていない場合には(ステップS404のN)、ステップS401から繰り返す。バッファされたすべての対象タイルが選択された場合には(ステップS404のY)、コントローラ23はステップS405以降の処理を実行する。
ステップS401からS404の処理は、対象タイルに属するピクセルのうち並列数の倍数のピクセルを並列数のピクセルごとに並列処理グループ81に割り当てる処理であり、これにより、各対象タイルに属する未割当のピクセルの数は、並列数未満になる。
ステップS405では、コントローラ23は、ステップS401の処理の前に生成された並列処理グループの空きスレッドがない場合は並列処理グループを生成する(ステップS405)。そして、コントローラ23は以降の処理のために並列処理グループの空きスレッドの数Nを取得する(ステップS406)。
コントローラ23は、バッファされた対象タイルの中に未割当のピクセルを含む対象タイルが存在するか判定し(ステップS407)、その対象タイルが存在しない場合には(ステップS407のN)処理を終了する。
一方、その対象タイルが存在する場合には(ステップS407のY)、コントローラ23は未割当のピクセルの数MがN以下の対象タイル(以下「対象タイル候補」と記載する)があるか判定する。未割当のピクセルの数MがN以下の対象タイルがない場合には、ステップS409、S410の処理をスキップする。一方、未割当のピクセルの数MがN以下の対象タイルが存在する場合には、コントローラ23は、その条件を満たす対象タイル候補のうちMが最大のものに属するピクセルを並列処理グループ81に割り当て、空スレッドの数Nを再計算する(ステップS409)。そして、空きスレッドの数Nが0の場合は(ステップS410のY)、コントローラ23は新たな並列処理グループを生成し、空きスレッドの数Nとして並列数を設定し(ステップS411)、ステップS407からの処理を繰り返す。一方、空きスレッドの数Nが0でない場合は(ステップS410のN)、ステップS411を実行することなく、ステップS407からの処理を繰り返す。
図12は、並列処理グループ81へのピクセルの割り当ての一例を説明する図である。図12は、図11に示される処理により、対象タイル7241,7242,7243,7244に属するピクセルが並列処理グループ8141,8142,8143に割り当てられた場合の例である。図5の例と異なり、順番が隣り合う対象タイルに属するピクセルが同じ並列処理グループ81に割り当てられるため、処理の並列度が向上する。例えば、対象タイル7241,7242,7243,7244について図5に示される処理をすると、並列処理グループ81の数は4になる。
本実施形態では、3次元の形状を構成するプリミティブを2次元の領域に変換し、変換された領域についてピクセルの色を算出する場合に本発明を適用する例を説明しているが、3次元のプリミティブを2次元の領域に変換しなくても本発明を適用できる。例えば、予め定められた2次元の領域にテクスチャマッピングをするような場合であっても本発明を適用できる。

Claims (7)

  1. 表示領域が分割された部分領域のそれぞれについて、2次元領域と重なる複数のピクセルからなるピクセル群を決定するラスタライザと、
    前記2次元領域の各位置について色計算情報を格納するメモリと、
    前記複数のピクセル群に属するピクセルを、複数の処理グループであってそれぞれ所定の並列数以下のピクセルを含むことができる処理グループのいずれかに割り当てる割当部と、
    前記メモリに格納された色計算情報に基づいて、前記処理グループに属するピクセルのそれぞれの色を並列に算出する並列演算ユニットと、
    前記算出された色に基づいて、画像のデータを出力する画像生成部と、
    を含み、
    前記割当部は、前記ピクセル群のそれぞれについて、当該ピクセル群に属するピクセルが割当てられる処理グループの数が、必要最小数になるように、前記ピクセルを複数の処理グループのうち少なくとも1つに割り当てる、
    画像処理装置。
  2. 請求項1に記載の画像処理装置において、
    前記メモリに連続して格納される前記色計算情報の位置は、互いに離間していない、
    画像処理装置。
  3. 請求項1または2に記載の画像処理装置において、
    前記割当部は、処理グループに割り当てられたピクセルの数が前記所定の並列数より小さく、かつ前記所定の並列数から前記割り当てられたピクセルの数を引いた数が他のピクセル群に属する未割当のピクセルの数より大きい場合は、前記他のピクセル群に属するピクセルを前記処理グループに割り当てる、
    画像処理装置。
  4. 請求項1または2に記載の画像処理装置において、
    前記割当部は、
    直前にピクセルが割り当てられた処理グループに属するピクセルの数を前記並列数から引いた数を空き数として求め、
    次のピクセル群に属するピクセルの数を並列数で割った余りが前記空き数より小さい場合に、前記余りの数のピクセルを最近にピクセルが割り当てられた前記処理グループに割り当て、
    次のピクセル群に属するピクセルの数を並列数で割った余りが前記空き数より大きい場合に、新たな1または複数の処理グループに、前記次のピクセル群に属するピクセルを割り当てる、
    画像処理装置。
  5. 請求項1または2に記載の画像処理装置において、
    前記割当部は、
    ピクセルの数が並列数より大きいピクセル群に含まれる並列数のピクセルをそれぞれ処理グループに割り当て、
    未割当のピクセルを有する前記ピクセル群のうちいずれかのピクセルの数が処理グループの空き数以下の場合に、当該処理グループに前記いずれかのピクセル群に属する未割当のピクセルを割り当て、
    未割当のピクセルを有する前記ピクセル群のうちいずれのピクセルの数も処理グループの空き数より大きい場合に、前記ピクセル群のうちいずれかのピクセルが割り当てられる新たな処理グループを生成する、
    画像処理装置。
  6. 2次元領域の各位置について色計算情報を格納するメモリと、前記メモリに格納された色計算情報に基づいて、複数の処理グループであってそれぞれ所定の並列数以下のピクセルを含むことができる処理グループに属するピクセルのそれぞれの色を並列に算出する並列演算ユニットと、を含む装置の画像処理方法であって、
    表示領域が分割された部分領域のそれぞれについて、2次元領域と重なる複数のピクセルからなるピクセル群を決定するステップと、
    前記複数のピクセル群に属するピクセルを、前記複数の処理グループのいずれかに割り当てるステップと、
    前記並列演算ユニットにより算出された色に基づいて、画像のデータを出力するステップと、
    を含み、
    前記ピクセルを割り当てるステップでは、前記ピクセル群のそれぞれについて、当該ピクセル群に属するピクセルが割当てられる処理グループの数が、必要最小数になるように、前記ピクセルを複数の処理グループのうち少なくとも1つに割り当てる、
    画像処理方法。
  7. 2次元領域の各位置について色計算情報を格納するメモリと、前記メモリに格納された色計算情報に基づいて、複数の処理グループであってそれぞれ所定の並列数以下のピクセルを含むことができる処理グループに属するピクセルのそれぞれの色を並列に算出する並列演算ユニットと、を含み、前記並列演算ユニットにより算出された色に基づいて画像のデータを出力するコンピュータに、
    表示領域が分割された部分領域のそれぞれについて、2次元領域と重なる複数のピクセルからなるピクセル群を決定するステップと、
    前記複数のピクセル群に属するピクセルを、複数の処理グループのいずれかに割り当てるステップと、
    を実行させ、
    前記ピクセルを割り当てるステップでは、前記ピクセル群のそれぞれについて、当該ピクセル群に属するピクセルが割当てられる処理グループの数が、必要最小数になるように、前記ピクセルを複数の処理グループのうち少なくとも1つに割り当てる、
    プログラム。
JP2018555040A 2016-12-09 2017-12-06 画像処理装置、画像処理方法およびプログラム Active JP6801001B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016239308 2016-12-09
JP2016239308 2016-12-09
PCT/JP2017/043816 WO2018105655A1 (ja) 2016-12-09 2017-12-06 画像処理装置、画像処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2018105655A1 JPWO2018105655A1 (ja) 2019-10-24
JP6801001B2 true JP6801001B2 (ja) 2020-12-16

Family

ID=62491097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018555040A Active JP6801001B2 (ja) 2016-12-09 2017-12-06 画像処理装置、画像処理方法およびプログラム

Country Status (5)

Country Link
US (1) US10755468B2 (ja)
EP (1) EP3553750B1 (ja)
JP (1) JP6801001B2 (ja)
CN (1) CN110024001B (ja)
WO (1) WO2018105655A1 (ja)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856320B1 (en) * 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6704026B2 (en) * 2001-05-18 2004-03-09 Sun Microsystems, Inc. Graphics fragment merging for improving pixel write bandwidth
US6831653B2 (en) * 2001-07-31 2004-12-14 Sun Microsystems, Inc. Graphics pixel packing for improved fill rate performance
US7728841B1 (en) 2005-12-19 2010-06-01 Nvidia Corporation Coherent shader output for multiple targets
JP5664052B2 (ja) * 2010-09-15 2015-02-04 富士通セミコンダクター株式会社 グラフィック処理装置、及び、グラフィック処理プログラム
JP5413501B1 (ja) * 2012-12-07 2014-02-12 富士ゼロックス株式会社 画像処理装置、画像処理システム及びプログラム
US9495721B2 (en) * 2012-12-21 2016-11-15 Nvidia Corporation Efficient super-sampling with per-pixel shader threads
US10169906B2 (en) * 2013-03-29 2019-01-01 Advanced Micro Devices, Inc. Hybrid render with deferred primitive batch binning
KR102102166B1 (ko) * 2013-04-22 2020-04-21 삼성전자 주식회사 심드 구조 기반의 쓰레드 분기 관리 장치 및 방법
US10943389B2 (en) * 2016-12-09 2021-03-09 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling

Also Published As

Publication number Publication date
EP3553750A4 (en) 2020-06-10
EP3553750A1 (en) 2019-10-16
CN110024001A (zh) 2019-07-16
CN110024001B (zh) 2023-05-26
US10755468B2 (en) 2020-08-25
US20190251732A1 (en) 2019-08-15
WO2018105655A1 (ja) 2018-06-14
JPWO2018105655A1 (ja) 2019-10-24
EP3553750B1 (en) 2023-08-02

Similar Documents

Publication Publication Date Title
TWI616846B (zh) 利用以空間及/或時間方式改變取樣圖案之增強型消鋸齒的一種圖形子系統、電腦實施方法及電腦裝置
US9342311B2 (en) Techniques for adaptively generating bounding boxes
US8941653B2 (en) Order-preserving distributed rasterizer
US10417817B2 (en) Supersampling for spatially distributed and disjoined large-scale data
US8704836B1 (en) Distributing primitives to multiple rasterizers
KR20070064337A (ko) 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법
KR102545176B1 (ko) 레지스터 관리 방법 및 장치
US20150213638A1 (en) Hierarchical tiled caching
CN107392836B (zh) 使用图形处理管线实现的立体多投影
US9299182B2 (en) Divided-area-based rendering device and divided-area-based rendering method
KR20130132752A (ko) 압축된 슈퍼타일 이미지들의 디스플레이
KR20170005031A (ko) 타일 기반의 렌더링 gpu 아키텍처를 위한 임의의 타일 형상을 갖는 적응적 파티션 메커니즘
US20170084078A1 (en) System, method, and computer program product for rejecting small primitives
KR20160051153A (ko) 캐시 메모리의 관리 방법 및 그 장치
JP6801001B2 (ja) 画像処理装置、画像処理方法およびプログラム
JP2005332195A (ja) テクスチャユニット、画像描画装置、テクセル転送方法
US11748933B2 (en) Method for performing shader occupancy for small primitives
US9536341B1 (en) Distributing primitives to multiple rasterizers
JP7118315B1 (ja) 描画装置
JP5719157B2 (ja) グラフィック演算処理チップ
KR20220112710A (ko) 픽셀 패킹 관련 애플리케이션 데이터를 위한 방법 및 장치
CN115439588A (zh) 用于交错纹理的技术
JP2015212860A (ja) 画像処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200624

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201125

R150 Certificate of patent or registration of utility model

Ref document number: 6801001

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150