説明

画像処理装置

【課題】 アルファブレンディングを利用した多彩な演出を適切に実行することができる画像処理装置を提供する。
【解決手段】 スプライトレンダリングプロセッサ110は、指定されたスプライトの画像データをレンダリング用ラインバッファの記憶内容に反映させる第1のレンダリング処理と、指定されたアルファテーブルをアルファバッファ106の記憶内容に反映させる第2のレンダリング処理とを実行する。第1のレンダリング処理では、レンダリング対象のスプライトの画像データと、レンダリング用ラインバッファ内のレンダリング先画像データと、アルファバッファ106内のアルファデータのうちレンダリング先画像データに対応したアルファデータを用いたアルファブレンディング処理を行い、アルファブレンディング結果である画像データをレンダリング先画像データに上書きする。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、情報表示機器等に好適なスプライト方式の画像処理装置に関する。
【背景技術】
【0002】
スプライト方式の画像処理装置は、表示対象の画像データを記憶する表示バッファに対し、指示されたスプライトの画像データを反映させるレンダリング処理を実行することにより、スプライトを含む画像表示を行わせる装置である。
【0003】
この種のスプライト方式の画像処理装置におけるスプライトのレンダリングに関連した技術として、アルファブレンディングがある。このアルファブレンディングは、レンディング対象である画像(以下、ソース画像という。)の各画素のカラー値(R、G、Bの各成分の輝度)と各画素の透明度を示すアルファデータαと、ソース画像の背景となるレンダリング先の画像(以下、ディスティネーション画像という。)の各画素のカラー値とに基づき、ソース画像がレンダリングされた後のディスティネーション画像の各画素(ソース画像とディスティネーション画像とがオーバラップした領域の各画素)のカラー値を演算する技術である。さらに詳述すると、このアルファブレンディングでは、図9に示すように、ソース画像を構成する1つの画素(以下、ソース画素という。)のカラー値がSC、このソース画素のレンダリング先であるディスティネーション画像の画素(以下、ディスティネーション画素という。)のカラー値がDである場合、次式に示すカラー値D’を算出し、レンダリング後におけるディスティネーション画素のカラー値とする。
D’=(1−α)・SC+α・D ……(1)
【0004】
これにより、レンダリング後の画像において、レンダリング前のディスティネーション画像がソース画像越しにアルファデータαに応じた透明度で透けて見える状態を演出することができる。
【0005】
アルファブレンディングは、以上のように前方の画像を透過させて後方の画像を見せる演出をするためのエフェクト処理として用いられるだけでなく、スプライトの画像の輪郭線を綺麗に見せる演出を行うためのアンチエイリアスフィルタとしても用いられる。ここで、図10(a)〜(e)を参照し、このようなアンチエイリアスフィルタとしてのアルファブレンディングの利用例について説明する。
【0006】
まず、図10(a)は、レンダリング対象であるスプライトの画像データを例示するものである。また、図10(b)は、スプライトのレンダリング先となる背景の画像データを例示するものである。スプライトの画像データは、本来は連続した状態のアナログ画像をマトリックス状に並んだ複数の画素の位置においてサンプリングしたものである。そして、元のアナログ画像において有色領域を囲む輪郭線近傍領域に着目すると、輪郭線の内側に属する画素では有色領域の色がサンプリングされ、外側に属する画素では空白領域がサンプリングされる。このため、サンプリングにより得られる画像データでは、図10(a)に示すように有色領域(図10(a)では黒く塗りつぶした領域)の内側と外側の境界がギザギザになる。
【0007】
このギザギザを緩和して有色領域の輪郭線を綺麗に見せるために行うのがアンチエイリアスフィルタである。このアンチエイリアスフィルタを実現するため、この例では、図10(a)に示すスプライトの画像データと、図10(b)に示す背景の画像データと、図10(c)に示すアルファテーブルとを用いたアルファブレンディングを実行する。図10(c)に示すアルファテーブルは、スプライトおよび背景の各画素に適用するアルファデータの集まりである。
【0008】
このアルファテーブルにおいて、元のアナログ画像における有色領域の輪郭線が横切らず、輪郭線の完全に内側に属する各画素に対応したアルファデータは、完全非透過(スプライトの色だけを見せ、背景の色を見せない)を指示する0h(hは16進)となっている。また、元のアナログ画像における有色領域の輪郭線が横切らず、輪郭線の完全に外側に属する各画素に対応したアルファデータは、完全透過(背景の色だけを見せ、スプライトの色を見せない)を指示するFhとなっている。そして、元のアナログ画像における有色領域の輪郭線が横切る各画素に対応したアルファデータは、8h、6h、3h等、0hとFhとの中間の値となっている。これらの輪郭線領域の各画素に対応したアルファデータは、図10(e)に示すように、各画素をアナログ画像の有色領域の輪郭線によって二分して、輪郭線の内側の領域の面積aと外側の領域の面積bを求め、面積aと面積bとの比に基づいて決定される。すなわち、面積比b/aが大きければアルファデータをFhに近づけて背景を強調し、面積比b/aが小さければアルファデータを0hに近づけてスプライトを強調するのである。その結果、アルファブレンディング後の画像は、図10(d)に例示するように、背景とスプライトの有色領域との境界における色の変化が滑らかになり、輪郭線のギザギザの緩和された綺麗な画像となる。
なお、アルファブレンディングをアンチエイリアスフィルタとして利用する技術に関しては、例えば特許文献1、2に開示されている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2004−213464号公報
【特許文献2】特開2008−198065号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
ところで、上述した従来のスプライト方式の画像処理装置では、1種類のスプライトに対して1種類のアルファテーブルが用意され、スプライトのレンダリングの際には、そのスプライトのために用意された1つのアルファテーブルを用いてアルファブレンディングを行うようにしていた。このように、従来技術の下では、スプライトとアルファテーブルとが一体不可分のものとして取り扱われていたため、アルファブレンディングを利用して何らかの演出を行おうとする場合に、実現できる演出の範囲が狭かった。また、アルファブレンディングを利用してアンチエイリアスフィルタを実現しようとする場合、1つのスプライトのために使用可能なアルファテーブルが1種類であると、十分なアンチエイリアス効果が得られない場合がある。具体的には、スプライトを拡大または縮小してレンダリングするような場合である。この場合、スプライトの拡大または縮小に合わせて、拡大または縮小後のスプライトと同じサイズになるようにアルファテーブルを拡大または縮小する。そして、拡大または縮小されたスプライトのレンダリングの際には、拡大または縮小されたアルファテーブルを用いてアルファブレンディングを行う(例えば特許文献2参照)。この場合、拡大または縮小されたアルファテーブルにおいて、完全非透過と完全透過の中間の値のアルファデータが分布する領域は、拡大または縮小されたスプライトにおいて有色領域の境界線(ギザギザの境界線)の領域と上手く重複しないため、十分なアンチエイリアス効果が得られないという問題が発生する。
【0011】
この発明は、以上説明した事情に鑑みてなされたものであり、アルファブレンディングを利用した多彩な演出を適切に実行することができる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
上記課題を解決するため、この発明は、表示装置の表示対象となる画像データを記憶する表示バッファと、前記表示対象の画素毎に、前記表示バッファ内の既存の画像データとレンダリング対象である画像データとのアルファブレンディングに用いるアルファデータを記憶するアルファバッファと、予めレンダリング対象とされたスプライトの画像データを前記表示バッファの記憶内容に反映させる第1のレンダリング処理と予めレンダリング対象とされたアルファテーブルを前記アルファバッファの記憶内容に反映させる第2のレンダリング処理とを実行するプロセッサであって、前記第1のレンダリング処理のための手段として、前記レンダリング対象のスプライトの画像データと、前記表示バッファ内の画像データのうち前記スプライトの画像データのレンダリング先となる領域の画像データと、前記アルファバッファ内のアルファデータのうち前記スプライトの画像データのレンダリング先となる領域に対応したアルファデータを用いたアルファブレンディングを行い、アルファブレンディング結果である画像データを前記表示バッファ内の画像データのうち前記レンダリング先となる領域内の画像データに上書きする手段を有するスプライトレンダリングプロセッサとを具備することを特徴とする画像処理装置を提供する。
【0013】
かかる発明によれば、スプライトのレンダリングとは独立して、アルファテーブルのレンダリングを行うことにより、各スプライトと背景とのアルファブレンディングに使用されるアルファデータを自在に切り換えることができるので、アルファブレンディングを利用した多彩な演出を適切に実行することができる。
【図面の簡単な説明】
【0014】
【図1】この発明の一実施形態による画像処理装置100の構成を示すブロック図である。
【図2】同画像処理装置100の外部メモリであるパターンメモリ202の記憶内容を例示する図である。
【図3】同画像処理装置100のスプライトレンダリングプロセッサ110の内部構成の一部を示すブロック図である。
【図4】同スプライトレンダリングプロセッサ110が各水平走査周期において実行する1ラインレンダリング処理の内容を示すフローチャートである。
【図5】同スプライトレンダリングプロセッサ110によって実行される第1および第2のレンダリング処理の具体例を説明する図である。
【図6】同実施形態におけるアルファブレンディングの第1の利用例を説明する図である。
【図7】同実施形態におけるアルファブレンディングの第2の利用例を説明する図である。
【図8】同実施形態におけるアルファブレンディングの第3の利用例を説明する図である。
【図9】一般的なアルファブレンディングの処理内容を説明する図である。
【図10】アルファブレンディングを利用したアンチエイリアス処理の内容を説明する図である。
【発明を実施するための形態】
【0015】
以下、図面を参照し、この発明の実施の形態を説明する。
図1は、この発明の一実施形態による画像処理装置100の構成を示すブロック図である。この画像処理装置100は、CPU201からの指示に従い、ROM(Read Only Memory;読み出し専用メモリ)等による外部メモリであるパターンメモリ202からスプライトのパターンデータを読み出して、表示対象の画像データを生成し、LCD(Liquid Crystal Display;液晶表示器)203に表示させる装置である。ここで、パターンメモリ202には、図2に例示するように、圧縮符号化された各種のスプライトのパターンデータの他、アルファブレンディングに用いる各種のアルファテーブルが記憶されている。
【0016】
上述した従来技術では、スプライトとアルファテーブルには1対1の対応関係があった。しかし、本実施形態において、パターンメモリ202に書き込んでおくスプライトのパターンデータとアルファテーブルは、1対1の対応関係を持ったものである必要はない。1つのスプライトのためのアルファテーブルとして複数種類のものを用意してパターンメモリ202に書き込んでもよい。また、不特定のスプライトに使用するアルファテーブルを用意して、パターンメモリ202に書き込んでおいてもよい。本実施形態の特徴は、スプライトとアルファテーブルとの対応関係に関する制約をなくし、パターンメモリ202内の任意のアルファテーブルを自由に選択して、スプライトのレンダリングの際のアルファブレンディングに使用することができるようにした画像処理装置100の構成にある。
【0017】
次に画像処理装置100の構成について説明する。画像処理装置100において、レジスタ101は、画像処理装置100内の各部の制御に用いられる制御情報を記憶する手段である。本実施形態では、CPU201と、画像処理装置100内に設けられたスプライトレンダリングプロセッサ110がこのレジスタ101への制御情報の書き込みを行う。
【0018】
属性データテーブル102は、スプライト属性データとアルファ属性データを記憶する記憶手段であり、例えばRAM(Random Access Memory)により構成されている。ここで、スプライト属性データは、スプライトのレンダリング条件を指定する属性データである。また、アルファ属性データは、アルファテーブルのレンダリング条件を指定する属性データである。本実施形態の特徴は、スプライトとは独立にアルファ属性データに従ってアルファテーブルをレンダリングし、アルファテーブルの下位レイヤ(アルファテーブルに先行してレンダリングされた画像)と上位レイヤ(アルファテーブルの後にレンダリングされた画像)のアルファブレンディングを行わせるようにした点にある。なお、その詳細については後述する。
【0019】
スプライトのレンダリング条件を指定する1つのスプライト属性データは、LCD203の表示画面内における当該スプライトの表示領域の位置(例えば当該スプライトの左上の頂点の位置)、パターンメモリ202内において当該スプライトのパターンデータが記憶されている領域を指定するパターンメモリアドレス、当該スプライトのX方向およびY方向の各サイズ、当該スプライトの表示の際の拡大縮小率等のデータの集合体である。また、アルファテーブルのレンダリング条件を指定する1つのアルファ属性データは、LCD203の表示画面内における当該アルファテーブルの適用領域の位置(例えば当該アルファテーブルが適用される領域の左上の頂点の位置)、パターンメモリ202内において当該アルファテーブルが記憶されている領域を指定するパターンメモリアドレス、当該アルファテーブルのX方向およびY方向の各サイズ、当該アルファテーブルの使用時における拡大縮小率等のデータの集合体である。
【0020】
パターンデータデコーダ103は、レンダリング対象であるスプライトのパターンデータをパターンメモリ202から読み出して復号化を行い、スプライトを構成する各画素の色を示す画像データを出力する装置である。
【0021】
カラーパレット104は、レンダリング対象であるスプライトの画像データが画素の色をカラーコードにより表現したものである場合に、その画像データを表示に用いることが可能なR、G、BあるいはY、U、V等の画素の色成分の強さを示す画像データに変換する変換テーブルであり、RAM等により構成されている。本実施形態では、CPU201がカラーパレット104の内容の更新を行うことが可能である。
【0022】
ラインバッファ105Aおよび105Bは、LCD203に表示させる画像データを記憶するための表示バッファであり、各々1ライン(1水平走査線)分の画素の画像データを記憶可能な容量を有している。これらのラインバッファ105Aおよび105Bは、各水平走査周期において一方がレンダリング用、他方が表示用となり、水平走査周期が切り換わる毎にレンダリング用であったラインバッファが表示用に、表示用であったラインバッファがレンダリング用に切り換わる。スプライトの画像データのレンダリングは、このラインバッファ105Aおよび105Bのうちレンダリング用であるラインバッファに対して行われる。
【0023】
アルファバッファ106は、レンダリング用のラインバッファ内の1水平走査線分の各画素の画像データとレンダリング対象である画像データとのアルファブレンディングに用いるアルファデータを各々記憶するバッファであり、アルファデータを記憶するためのエリアとして1水平走査線分の各画素に対応付けられた複数のエリアを有している。このアルファバッファ106が上述したアルファテーブルのレンダリング先となる。
【0024】
表示制御部107は、垂直同期信号VSYNC_Nや水平同期信号HSYNC_N等、LCD203の表示制御のための同期信号を発生し、LCD203およびスプライトレンダリングプロセッサ110に供給するとともに、各水平走査周期において表示用となっているラインバッファから1ライン分の各画素の画像データを読み出してLCD203に供給する回路である。
【0025】
スプライトレンダリングプロセッサ110は、CPU201によって属性データテーブル102に予め書き込まれた各属性データに従って第1のレンダリング処理および第2のレンダリング処理を実行するプロセッサである。ここで、第1のレンダリング処理は、属性データテーブル102内のスプライト属性データにより指定されたスプライトの画像データを生成して、ラインバッファ105Aおよび105Bのうちレンダリング用のラインバッファの記憶内容に反映させるレンダリング処理である。また、第2のレンダリング処理は、属性データテーブル102内のアルファ属性データにより指定されたアルファテーブルのアルファデータをアルファバッファ106の記憶内容に反映させるレンダリング処理である。そして、第1のレンダリング処理では、スプライトの画像データのレンダリングの際に、このようにしてアルファバッファ106にレンダリングされたアルファデータを使用したアルファブレンディングを併せて実行する。
【0026】
図3は、スプライトレンダリングプロセッサ110の内部構成の一部を示すブロック図である。なお、図3では、スプライトレンダリングプロセッサ110の処理内容の理解を容易にするため、ラインバッファ105A、105Bおよびアルファバッファ106が併せて図示されている。図3に示すように、スプライトレンダリングプロセッサ110は、アルファブレンディング部111と演算部112とを有している。アルファブレンディング部111は、上述した第1のレンダリング処理においてアルファブレンディングを実行する回路であり、その処理内容は図9を参照して説明したものと基本的に同様である。演算部112は、第2のレンダリング処理において、アルファテーブルのアルファデータがレンダリング対象として与えられた場合に、そのレンダリング対象のアルファデータと、アルファバッファ106内のアルファデータのうちレンダリング対象のアルファデータのレンダリング先となるアルファデータ(以下、レンダリング先アルファデータという)とを用いた演算処理を実行し、演算処理結果であるアルファデータをアルファバッファ106内のレンダリング先アルファデータに上書きする回路である。
【0027】
スプライトレンダリングプロセッサ110では、これらのアルファブレンディング部111および演算部112により第1のレンダリング処理および第2のレンダリング処理が実行される。その具体的手順は次の通りである。
【0028】
<第1のレンダリング処理>
第1のレンダリング処理では、アルファブレンディング部111が次の処理a1〜a4を実行する。
a1.レンダリング用のラインバッファ内の画像データのうちレンダリング対象のスプライトの画像データ(次回の水平走査期間において水平走査線上に表示させる画像データ)のレンダリング先の領域の画像データ(以下、レンダリング先画像データという)を読み出す。
a2.アルファバッファ106内のアルファデータのうちレンダリング先画像データと同一の画素に対応したアルファデータを読み出す。
a3.レンダリング対象である画像データと、レンダリング先画像データと、アルファバッファ106から読み出したアルファデータとを用いて、アルファブレンディングを行い、アルファブレンディング結果である画像データをレンダリング用のラインバッファ内のレンダリング先画像データに上書きする。
a4.アルファバッファ106内のアルファデータのうち上記アルファブレンディングに使用したアルファデータ(すなわち、レンダリング先画像データと同一の画素に対応したアルファデータ)の値を完全非透過の透明度に対応した値0にする。
【0029】
<第2のレンダリング処理の手順>
第2のレンダリング処理では、演算部112が次の処理b1およびb2を実行する。
b1.アルファバッファ106からレンダリング先アルファデータを読み出す。
b2.レンダリング先アルファデータが0である場合には、アルファバッファ106内のレンダリング先アルファデータに対し、レンダリング対象のアルファデータを上書きする。また、レンダリング先アルファデータが0でない場合には、レンダリング対象のアルファデータとレンダリング先アルファデータを乗算し、乗算結果であるアルファデータをアルファバッファ106内のレンダリング先アルファデータに対して上書きする。
【0030】
本実施形態におけるスプライトレンダリングプロセッサ110は、表示制御部107が水平同期信号HSYNC_Nを発生する都度、1ラインレンダリング処理を実行する。図4はこの1ラインレンダリング処理の内容を示すフローチャートである。上述した第1のレンダリング処理および第2のレンダリング処理は、この1ラインレンダリング処理においてステップS5およびステップS6の処理となっている。また、図5(a)〜(c)は、スプライトレンダリングプロセッサ110によって実行される第1および第2のレンダリング処理の具体例を説明するものである。以下、図4および図5(a)〜(c)を参照し、本実施形態の動作を説明する。
【0031】
スプライトレンダリングプロセッサ110は、水平同期信号HSYNC_Nの発生に応じて1ラインレンダリング処理を開始すると、まず、ラインカウントを行う(ステップS1)。すなわち、垂直同期信号VSYNC_Nの発生以降の水平同期信号HSYNC_Nの発生回数のカウントを行い、今回の水平走査期間において表示される水平走査線の番号(表示画面の上端から数えた番号)を求める。次にスプライトレンダリングプロセッサ110は、レンダリング用のラインバッファ内の全ての画像データを所定の背景色(例えば白)を指示する画像データに初期化するとともに、アルファバッファ106内の全てのアルファデータを完全非透過の透明度を指示する値0に初期化する(ステップS2)。
【0032】
次にスプライトレンダリングプロセッサ110は、属性データテーブル102から属性データを1つ読み出す(ステップS3)。図5(a)に示すように、属性データテーブル102には、CPU201によってスプライト属性データおよびアルファ属性データが順次書き込まれている。ステップS3においてスプライトレンダリングプロセッサ110は、この属性データテーブル102内の読み出し未了の各属性データのうち先頭のものを読み出す。
【0033】
次にスプライトレンダリングプロセッサ110は、ステップS3において読み出した属性データがスプライト属性データであるかアルファ属性データであるかを判断する(ステップS4)。そして、ステップS3において読み出した属性データがスプライト属性データである場合には第1のレンダリング処理を実行し(ステップS5)、ステップS3において読み出した属性データがアルファ属性データである場合には第2のレンダリング処理を実行する(ステップS6)。第1のレンダリング処理(ステップS5)または第2のレンダリング処理(ステップS6)が終了すると、スプライトレンダリングプロセッサ110は、属性データテーブル102内の全ての属性データの読み出しを終えたか否かを判断する(ステップS7)。この判断結果が「NO」である場合には、ステップS3に戻り、次の属性データを読み出して、スプライト属性データに基づく第1のレンダリング処理(ステップS5)またはアルファ属性データに基づく第2のレンダリング処理(ステップS6)を実行する。そして、全ての属性データの読み出しを終えて、ステップS7の判断結果が「YES」になったときには、その時点におけるレンダリング用のラインバッファを表示用のラインバッファに、表示用のラインバッファをレンダリング用のラインバッファに切り換え(ステップS8)、1ラインレンダリング処理を終了する。
【0034】
属性データテーブル102内に図5(a)に例示するように属性データが記憶されている場合、1回の1ラインレンダリング処理の実行において、次の各処理が順次実行されることとなる。
・スプライト属性データSP1に基づく第1のレンダリング処理(ステップS5)
・アルファ属性データA1に基づく第2のレンダリング処理(ステップS6)
・スプライト属性データSP2に基づく第1のレンダリング処理(ステップS5)
・アルファ属性データA2に基づく第2のレンダリング処理(ステップS6)
・スプライト属性データSP3に基づく第1のレンダリング処理(ステップS5)
【0035】
このように第1のレンダリング処理によりレンダリング用のラインバッファにレンダリングされる画像データや第2のレンダリング処理によりアルファバッファ106にレンダリングされるアルファデータをレイヤと呼ぶ。順次レンダリングされる各レイヤの間には上位−下位の関係がある。2種類のレンダリングに着目した場合、先のレンダリングによりレンダリング用のラインバッファまたはアルファバッファ106に書き込まれるデータは下位レイヤ、後のレンダリングによりレンダリング用のラインバッファまたはアルファバッファ106に書き込まれるデータは上位レイヤとなる。
【0036】
図5(b)は、1垂直走査期間内の全水平走査期間を通じて、図5(a)に示す一連の属性データに従ってレンダリングされたスプライトの画像データおよびアルファテーブルのLCD表示画面における占有領域を2次元的に例示したものである。この図5(b)において、SP1、SP2およびSP3は、LCD表示画面において、スプライト属性データSP1、SP2およびSP3に基づいてレンダリング用のラインバッファに各々レンダリングされたスプライトを各々示す。また、A1およびA2は、LCD表示画面において、アルファ属性データA1およびA2に基づいてアルファバッファ106にレンダリングされたアルファテーブルを各々示す。
【0037】
スプライトレンダリングプロセッサ110は、ある水平走査期間において1ラインレンダリング処理を実行する際、第1のレンダリング処理(ステップS5)では、図5(b)に例示されるスプライトSP1、SP2またはSP3の各画像データのうち当該水平走査期間の次の水平走査期間における水平走査線上の画像データのみを生成し、その画像データのレンダリングを行う。また、第2のレンダリング処理(ステップS6)では、図5(b)に例示されるアルファテーブルA1またはA2のうち当該水平走査期間の次の水平走査期間における水平走査線上のアルファデータのみを生成し、そのアルファデータのレンダリングを行う。
【0038】
図5(c)は、図5(b)に例示されたスプライトおよびアルファテーブルのうち1本の水平走査線上に乗るものをレイヤ順に上下方向に並べて示したものである。ここで、図5(c)に示すスプライトSP2をレンダリング対象とする場合を例に第1のレンダリング処理(ステップS5)の処理内容を具体的に説明する。
【0039】
まず、上述した処理a1では、レンダリング用のラインバッファに格納された画像データのうちスプライトSP2の画像データのレンダリング先画像データである画像データRs1を読み出す。次に処理a2では、アルファバッファ106に格納されたアルファデータのうちレンダリング先画像データRs1と同一の画素に対応したアルファデータRa1(図5(c)に示す例ではアルファテーブルA1の一部)を読み出す。次に処理a3では、レンダリング対象のスプライトSP2の画像データと、レンダリング先画像データRs1と、アルファデータRa1とを用いて、次式に示すアルファブレンディングを行い、アルファブレンディング結果である画像データRs1’をレンダリング先画像データRs1に上書きする。
Rs1’=(1−Ra1)・SP2+Ra1・Rs1 ……(2)
【0040】
そして、処理a4では、アルファバッファ106内のアルファデータのうち上記アルファブレンディングに使用したアルファデータ(すなわち、レンダリング先画像データRs1と同一の画素に対応したアルファデータ)Ra1の値を完全非透過の透明度に対応した値0にする。
【0041】
次に、図5(c)に示すアルファテーブルA2をレンダリング対象とする場合を例に第2のレンダリング処理(ステップS6)の処理内容を具体的に説明する。まず、上述した処理b1では、アルファテーブルA2のアルファデータのレンダリング先アルファデータとして、アルファデータRb1、Rb2およびRb3を読み出す。ここで、アルファデータRb1は、元々はアルファデータRa1の一部であったが、スプライトSP2についての第1のレンダリング処理の際のアルファブレンディングに使用されたため、値が0となっている(処理a4)。アルファデータRb2は、アルファテーブルA1のアルファデータの一部であったが、スプライトSP2についての第1のレンダリング処理の際のアルファブレンディングに使用されなかったため、アルファテーブルA1から読み出された元の値を維持している。そして、アルファデータRb3は、アルファテーブルA1のアルファデータがレンダリングされなかった領域内のものであるため、初期化(ステップS2)されたときの値0になっている。従って、上記処理b2では、レンダリング先アルファデータのうち値が0であるアルファデータRb1およびRb3に対しては、レンダリング対象であるアルファテーブルA2のアルファデータを上書きする。また、レンダリング先アルファデータのうち値が0でないアルファデータRb2に対しては、アルファテーブルA2のアルファデータとアルファデータRb2とを乗算し、乗算結果であるアルファデータを上書きする。
【0042】
この後行われるスプライトSP3の画像データについての第1のレンダリング処理では、このようにしてアルファバッファ106にレンダリングされたアルファデータを使用してアルファブレンディングが行われる。
以上が本実施形態の動作の詳細である。
【0043】
図6は本実施形態におけるアルファブレンディングの第1の利用例を示すものである。この第1の利用例では、アンチエイリアスフィルタを実現するために1つのスプライトに利用するアルフテーブルとして、そのスプライトのレンダリングにおいて想定される各種の拡大縮小率に応じた複数のアルファテーブルがパターンメモリ202に格納される。ここで、1つの拡大縮小率に対応したアルファテーブルは、完全非透過と完全透過の中間の値のアルファデータが分布する領域が、その拡大縮小率で拡大または縮小されたスプライトにおける有色領域の境界線(ギザギザの境界線)の領域と完全に重複し、十分なアンチエイリイアス効果が得られるように、アルファテーブル内のアルファデータが最適化されている。
【0044】
そして、属性データテーブル102にスプライト属性データおよびアルファ属性データを書き込むに当たっては、ある拡大縮小率でスプライトを拡大または縮小してレンダリングすることを指示するスプライト属性データの前に、同じ拡大縮小率に対応した当該スプライトのためのアンチエイリアスフィルタ用のアルファテーブルを拡大または縮小後のスプライトのレンダリング先と同じ領域にレンダリングすることを指示するアルファ属性データを配置するのである。このようにすることで、スプライトを拡大または縮小してレンダリングする場合にも、十分なアンチエイリアス効果を得ることができる。
【0045】
図7は本実施形態におけるアルファブレンディングの第2の利用例を示すものである。この第2の利用例において、アルファテーブルA1は、完全透過を指示するアルファデータが例えば丸穴状に密集した完全透過領域を有している。そして、CPU201は、1ラインレンダリング処理において、スプライトSP1、アルファテーブルA1およびスプライトSP2の順にレンダリングが行われるように属性データテーブル102にスプライト属性データおよびアルファ属性データを書き込む。また、CPU201は、属性データテーブル102内のアルファテーブルA1に関するアルファ属性データにおけるレンダリング先の位置を示す情報を書き換えることにより、アルファテーブルA1を時間経過に伴って移動させる。この結果、LCD203には、スプライトSP2の画像の中に丸穴が開き、その丸穴越しにスプライトSP1の一部が見え、かつ、その丸穴が移動するシーンが表示される。このように本実施形態によれば、スプライトの下位レイヤとしてレンダリングするアルファテーブルの位置を移動させることができ、この操作により、スプライト越しに見える画像を変化させる演出を行うことができる。
【0046】
図8は本実施形態におけるアルファブレンディングの第3の利用例を示すものである。この第3の利用例において、CPU201は、1ラインレンダリング処理において、スプライトSP1、アルファテーブルA1、スプライトSP2、アルファテーブルA2、スプライトSP3の順にレンダリングが行われるように属性データテーブル102にスプライト属性データおよびアルファ属性データを書き込む。ここで、スプライトSP1およびSP3並びにアルファテーブルA1およびA2は、同じ面積を有し、同じ領域にレンダリングされる。スプライトSP2は、スプライトSP1およびSP3並びにアルファテーブルA1およびA2よりも面積が小さく、スプライトSP1およびSP3並びにアルファテーブルA1およびA2には、スプライトSP2と重複している領域R4と、スプライトSP2と重複していない領域R5およびR6がある。
【0047】
ここで、スプライトSP2のレンダリング時、領域R4については、次式に示すアルファブレンディングが行われ、アルファブレンディング結果である画像データSP2’がレンダリング用のラインバッファに書き込まれる。
SP2’=(1−A1)・SP2+A1・SP1 ……(3)
【0048】
次に、スプライトSP3のレンダリング時、領域R4については、次式に示すアルファブレンディングが行われ、アルファブレンディング結果である画像データSP3’がレンダリング用のラインバッファに書き込まれる。
SP3’=(1−A2)・SP3+A2・SP2’
=(1−A2)・SP3+A2・{(1−A1)・SP2+A1・SP1}
=(1−A2)・SP3+A2・(1−A1)・SP2+A2・A1・SP1
……(4)
【0049】
一方、領域R5およびR6では、アルファテーブルA1のアルファデータは、スプライトSP2のレンダリングに使用されない。このため、領域R5およびR6において、スプライトSP3のレンダリング時には、次式に示すように、先にレンダリングされたアルファテーブルA1のアルファデータと後からレンダリングされたアルファテーブルA2のアルファデータの積A2・A1がアルファデータとしてアルファブレンデングに使用され、アルファブレンディング結果である画像データSP3’がレンダリング用のラインバッファに書き込まれる。
SP3’=(1−A2・A1)・SP3+A2・A1・SP1 ……(5)
【0050】
式(4)および(5)を比較すれば分かるように、アルファブレンディングを伴う全てのレンダリングが終了した時点では、領域R4内の画像データSP3’におけるスプライトSP1の画像データの重み係数と、領域R5およびR6内の画像データSP3’におけるスプライトSP1の画像データの重み係数は、いずれもA2・A1である。このように、LCD203の表示画面に前後方向に並んだ2つのスプライト(この例ではスプライトSP3およびSP2)越しに背景(この例ではスプライトSP1)が見える領域R4と、1つのスプライト(この例ではスプライトSP3)越しに背景(この例ではスプライトSP1)が見える領域R5およびR6がある場合に、各領域R4、R5、R6における背景の見え具合を揃えることができる。
【0051】
<他の実施形態>
以上、この発明の実施形態を説明したが、この発明には、他にも各種の実施形態が考えられる。例えば次の通りである。
【0052】
(1)上記実施形態における第2のレンダリング処理では、レンダリング先アルファデータがアルファブレンディングに使用されないでアルファバッファ106内に残っている場合に、そのレンダリング先アルファデータとレンダリング対象のアルファデータとの乗算結果であるアルファデータをレンダリング先アルファデータに上書きした。この場合においてレンダリング先アルファバッファに上書きするアルファデータを得るための演算処理は、乗算以外の他の演算処理であってもよい。あるいは、レンダリング先アルファデータとレンダリング対象のアルファデータとからレンダリング先アルファデータに上書きするアルファデータを得るための演算処理を複数種類定めておき、アルファ属性データにおいて、いずれの種類の演算処理によりアルファデータを得るかを指定するようにしてもよい。
【0053】
(2)上記実施形態における第2のレンダリング処理では、アルファバッファ106内のアルファデータがアルファブレンディングに使用された場合に、その使用の事実を明示するために、当該アルファデータを0にした。しかし、例えばアルファデータの構成ビット中にアルファブレンディングに使用されたか否かを示すフラグビットを設け、このフラグビットにより使用の事実を明示してもよい。この場合、アルファデータがアルファブレンディングに使用されたとしても、アルファデータにおけるフラグビット以外の部分に変化はないので、その使用されたアルファデータをその後の上位レイヤのレンディングの際のアルファブレンディングに何らかの形で利用することが可能になる。
【0054】
(3)スプライトのレンダリング時にアルファブレンディングを行うか否かのフラグをスプライト属性データに設け、このフラグによりアルファブレンディングの実行を制御してもよい。
【0055】
(4)上記実施形態では、表示バッファとして、ライン単位で画像データを記憶するラインバッファ105Aおよび105Bと、ライン単位でアルファデータを記憶するアルファバッファ106を設け、ライン単位でレンダリングを行ったが、表示バッファとして、フレーム単位で画像データを記憶する2個のフレームバッファと、フレーム単位でアルファデータを記憶するアルファバッファを設け、フレーム単位でレンダリングを行ってもよい。
【0056】
(5)上記実施形態において、アルファテーブルのフォーマットは、カラーコードにより表現された画像データのフォーマットと同様である。従って、第1のレンダリング処理における画像データのレンダリング処理と第2のレンダリング処理におけるアルファテーブルのレンダリング処理を共用化し、スプライトレンダリングプロセッサ110の小規模化を図ってもよい。
【0057】
(6)上記実施形態において、スプライトレンダリングプロセッサ110は、属性データテーブル102内の一連の属性データを先頭のものから順に読み出し、読み出した順に各属性データに基づく第1のレンダリング処理または第2のレンダリング処理を実行した。このため、属性データテーブル102には、スプライト属性データおよびアルファ属性データを各々レンダリングに使用する順序に従って書き込む必要があった。しかしながら、例えばスプライト属性データまたはアルファ属性データを属性データテーブル102に書き込む際にその属性データにレンダリングに使用する順序を示す番号を付加し、スプライトレンダリングプロセッサ110は、この番号順に属性データテーブル102から属性データを読み出してレンダリングを行うようにしてもよい。
【符号の説明】
【0058】
100……画像処理装置、101……レジスタ、102……属性データテーブル、103……パターンデータデコーダ、104……カラーパレット、105A,105B……ラインバッファ、106……アルファバッファ、107……表示制御部、110……スプライトレンダリングプロセッサ、111……アルファブレンディング部、112……演算部、201……CPU、202……パターンメモリ、203……LCD。

【特許請求の範囲】
【請求項1】
表示装置の表示対象となる画像データを記憶する表示バッファと、
前記表示対象の画素毎に、前記表示バッファ内の既存の画像データとレンダリング対象である画像データとのアルファブレンディングに用いるアルファデータを記憶するアルファバッファと、
予めレンダリング対象とされたスプライトの画像データを前記表示バッファの記憶内容に反映させる第1のレンダリング処理と予めレンダリング対象とされたアルファテーブルを前記アルファバッファの記憶内容に反映させる第2のレンダリング処理とを実行するプロセッサであって、前記第1のレンダリング処理のための手段として、前記レンダリング対象のスプライトの画像データと、前記表示バッファ内の画像データのうち前記スプライトの画像データのレンダリング先となる領域の画像データと、前記アルファバッファ内のアルファデータのうち前記スプライトの画像データのレンダリング先となる領域に対応したアルファデータを用いたアルファブレンディングを行い、アルファブレンディング結果である画像データを前記表示バッファ内の画像データのうち前記レンダリング先となる領域内の画像データに上書きする手段を有するスプライトレンダリングプロセッサと
を具備することを特徴とする画像処理装置。
【請求項2】
スプライトのレンダリング条件を指定する属性データであるスプライト属性データとアルファテーブルのレンダリング条件を指定する属性データであるアルファ属性データを記憶する書き換え可能な属性データテーブルを具備し、
前記スプライトレンダリングプロセッサは、前記属性データテーブルに記憶された属性データを順次読み出し、読み出した属性データがスプライト属性データである場合にはそのスプライト属性データに従って前記第1のレンダリング処理を実行し、読み出した属性データがアルファ属性データである場合にはそのアルファ属性データに従って前記第2のレンダリング処理を実行することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記スプライトレンダリングプロセッサは、前記第2のレンダリング処理において、レンダリング対象のアルファデータのレンダリング先のアルファデータがアルファブレンディングに使用されないで前記アルファバッファに記憶されている場合に、そのレンダリング対像のアルファデータとレンダリング先のアルファデータとを用いた演算を行い、演算結果であるアルファデータを前記アルファバッファ内のレンダリング先のアルファデータに上書きすることを特徴とする請求項1または2に記載の画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−33651(P2011−33651A)
【公開日】平成23年2月17日(2011.2.17)
【国際特許分類】
【出願番号】特願2009−176766(P2009−176766)
【出願日】平成21年7月29日(2009.7.29)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】