JP3747859B2 - 画像処理装置およびその方法 - Google Patents

画像処理装置およびその方法 Download PDF

Info

Publication number
JP3747859B2
JP3747859B2 JP2002029483A JP2002029483A JP3747859B2 JP 3747859 B2 JP3747859 B2 JP 3747859B2 JP 2002029483 A JP2002029483 A JP 2002029483A JP 2002029483 A JP2002029483 A JP 2002029483A JP 3747859 B2 JP3747859 B2 JP 3747859B2
Authority
JP
Japan
Prior art keywords
data
large area
area data
circuit
pixel
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.)
Expired - Fee Related
Application number
JP2002029483A
Other languages
English (en)
Other versions
JP2003233821A (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 Corp
Original Assignee
Sony Corp
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 Corp filed Critical Sony Corp
Priority to JP2002029483A priority Critical patent/JP3747859B2/ja
Priority to US10/358,729 priority patent/US8576219B2/en
Publication of JP2003233821A publication Critical patent/JP2003233821A/ja
Application granted granted Critical
Publication of JP3747859B2 publication Critical patent/JP3747859B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Image Generation (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、モデルを単位図形の組み合わせによって表現し、スクリーン座標系の描画対象領域内に、ピクセルを発生する画像処理装置およびその方法に関するものである。
【0002】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィックス(CG)」技術が盛んに研究・開発され、さらに実用化されている。
【0003】
たとえば、3次元グラフィックスは、3次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで3次元的な2次元高精細画像を生成するものである。
このようなコンピュータ・グラフィックスは、科学、工学、製造などの開発分野でのCAD/CAM、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【0004】
3次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【0005】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する3次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【0006】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル(pixel)を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるRGB形式などで表される色(描画色)データ、奥行き方向の距離を表すz値などがある。
また、最近の高精細な3次元グラフィックス処理では、遠近感を醸し出すためのf(fog:霧)や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャt(texture)なども、画像パラメータの1つとして含まれている。
【0007】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくDDA(Digital Differential Analyzer)と呼ばれる線形補間手法を用いて実行される。
DDAプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向(X方向)の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【0008】
このとき、1ピクセル単位で走査を行う代わりに、領域単位で走査を行うことで、複数のピクセルを同時に発生するという方法がある。
その一つとして、特開2000−338959号公報(特願平11−152702号(文献1))に記載されているものがある。
この方法では、短形内の領域にあるピクセルを同時に処理を行い、ピクセルをまとめて短形領域データとして後段の処理へ渡すことで、ピクセルの描画速度を向上させることができる。
【0009】
【発明が解決しようとする課題】
しかし、上述した領域単位でピクセルを処理する方法では、たとえば領域を短形領域とした場合、処理をした領域に有効なピクセルが一つも含まれないことがあるという不利益がある。
【0010】
たとえば、図1に示すように、2×2の領域単位でピクセルの中心点が三角形の領域内に含まれるかどうかを処理していく場合、図中に符号1,2,3で示す領域は、スキャンを行ったが、有効なピクセルは存在しない。
この場合は、後段の処理へはデータは渡されず、後段の処理の稼働率は低下してしまう。
【0011】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、領域データを絶え間なく生成することができ、無効な領域による無駄な処理を省くことができ、画像を効率的に描画することができる画像処理装置およびその方法を提供することにある。
【0012】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点に係る画像処理装置は、描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、単位領域にあるピクセルを同時に処理する画像処理装置であって、描画すべきプリミティブに関する情報を受けて、複数のピクセルを含む単位領域において、少なくとも一つのピクセルがプリミティブの内側に位置する場合、当該単位領域の少なくとも一つ分のデータを増やした大領域データを生成する大領域データ生成回路と、上記大領域データ生成回路により生成された大領域データを単位領域と同等の領域データに分割し、分割した領域データを所定のタイミングで順次出力する大領域データ分割回路と、上記大領域データ分割回路による領域データに基づいて描画処理を行う処理回路とを有する。
【0013】
また、本発明の第2の観点に係る画像処理装置は、描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、単位領域にあるピクセルを同時に処理する画像処理装置であって、描画すべきプリミティブに関する情報を受けて、複数のピクセルを含む単位領域において、少なくとも一つのピクセルがプリミティブの内側に位置する場合、当該単位領域の少なくとも一つ分のデータを増やした大領域データを生成する大領域データ生成回路と、上記大領域データ生成回路により生成された大領域データを記憶する大領域データ記憶回路と、上記大領域データ記憶回路に記憶された大領域データを読み出し、読み出した大領域データを単位領域と同等の領域データに分割し、分割した領域データを所定のタイミングで順次出力する大領域データ分割回路と、上記大領域データ分割回路による領域データに基づいて描画処理を行う処理回路とを有する。
【0014】
好適には、上記大領域データ生成回路は、プリミティブ情報記憶回路、およびピクセル内外判定回路を含み、上記プリミティブ情報記憶回路は、プリミティブに関する情報を記憶し、記憶されているデータの現在位置がプリミティブの内側であるか否かの判別を行い、内側にある場合には指定された大領域に含まれる記憶データをピクセル内外判定回路に出力し、内側に無い場合にはさらにプリミティブに関する情報を受け取って記憶し、指定された大領域のデータをピクセル内外判定回路に出力し、上記ピクセル内外判定回路は、プリミティブ情報記憶回路から読み出されたプリミティブ情報に基づいて、大領域内の各ピクセルについてプリミティブに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合に大領域データを生成する。
【0015】
また、好適には、上記大領域データ生成回路は、大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を移動し、移動した大領域を示す指定データをプリミティブ情報記憶回路に出力する大領域移動回路を有し、上記ピクセル内外判定回路は、大領域データを生成した旨、またはピクセルがプリミティブの内側に無く大領域データを生成しなかった旨を上記大領域移動回路に報知する。
【0016】
また、上記大領域データ分割回路は、生成された大領域データを単位領域と同等の領域データに分割し、分割した大領域データのうち有効なピクセルを含むデータを領域データとして出力する領域データ生成回路と、領域データ生成回路による一つないし複数の領域データを記憶し、記憶した領域データを所定のタイミングで出力する領域データ記憶回路とを含む。
【0017】
本発明の第3の観点に係る画像処理方法は、描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、単位領域にあるピクセルを同時に処理する画像処理方法であって、描画すべきプリミティブに関する情報を受けて、複数のピクセルを含む単位領域において、少なくとも一つのピクセルがプリミティブの内側に位置する場合、当該単位領域の少なくとも一つ分のデータを増やした大領域データを生成する大領域データ生成ステップと、上記大領域データ生成ステップにより生成された大領域データを単位領域と同等の領域データに分割し、分割した領域データを所定のタイミングで順次出力する大領域データ分割ステップと、上記大領域データ分割ステップによる領域データに基づいて描画処理を行う処理ステップとを有する。
【0018】
好適には、上記大領域データ生成ステップでは、プリミティブに関する情報を記憶し、記憶されているデータの現在位置がプリミティブの内側であるか否かの判別を行い、内側にある場合には指定された大領域に含まれる記憶データを供給し、内側に無い場合にはさらにプリミティブに関する情報を受け取って記憶し、指定された大領域のデータを供給し、供給されたプリミティブ情報に基づいて、大領域内の各ピクセルについてプリミティブに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合に大領域データを生成する。
【0019】
また、好適には、上記大領域データ生成ステップでは、大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を移動し、移動した大領域を次に処理すべき大領域として指定する。
【0020】
また、上記大領域データ分割ステップでは、生成された大領域データを単位領域と同等の領域データに分割し、分割した大領域データのうち有効なピクセルを含むデータを領域データとして出力する領域データ生成ステップと、領域データ生成ステップによる一つないし複数の領域データを記憶し、記憶した領域データを所定のタイミングで出力する領域データ記憶ステップとを含む。
【0021】
本発明によれば、たとえば各種データ(z,テクスチャ座標、カラーなど)をラスタライズするにあたっては、大領域データ生成回路において、プリミティブに関する情報を基に、複数のピクセルを含む単位領域において、少なくとも一つのピクセルがプリミティブの内側に位置する場合、単位領域の少なくとも一つ分のデータを増やした大領域データが生成されて、この大領域データが単位領域と同等の通常の領域データに分割されて、後段の処理回路に出力される。
具体的には、大領域データ生成回路においてはプリミティブに関する情報がプリミティブ情報記憶回路に記憶される。
そして、プリミティブ情報記憶回路に記憶されているデータの現在の位置が、プリミティブの内側であるか否かの判別が行われる。
ここで、プリミティブの内側にないと判別される前段の回路からプリミティブに関する情報がセットアップデータが受け取られ、受け取ったプリミティブに関する情報がプリミティブ情報記憶回路に記憶される。
ここで、ピクセル内外判定回路にプリミティブ情報記憶回路の記憶データから大領域移動回路により指定された大領域に相当するデータが読み出される。
ピクセル内外判定回路において、大領域内の各ピクセルについて内外判定、具体的には、少なくとも一つのピクセルがプリミティブの内側に有るか否かの判別が行われる。
ここで、少なくとも一つのピクセルがプリミティブの内側に有ることから、ピクセル内外判定回路において、大領域データが生成されて大領域データ記憶回路に出力される。
そして、ピクセル内外判定回路により、大領域データを生成し出力した旨が大領域移動回路に報知される。
ピクセル内外判定回路による大領域データが生成された旨が報知されると、大領域移動回路では、ピクセルの内外判定を行う大領域が移動され、移動した大領域を示すデータがプリミティブ情報記憶回路に出力される。
【0022】
さらに、大領域データ生成回路により生成された大領域データが大領域データ記憶回路に記憶されると、この記憶データが大領域データ分割回路に読み出される。
大領域データ分割回路においては、領域データ生成回路により大領域データ記憶回路から読み出した大領域データが単位矩形領域と同等の通常の領域データに分割される。
分割された大領域データのうち有効なピクセルを含むものが領域データとして領域データ記憶回路に出力される。
これにより、領域データ記憶回路の所定のアドレスに、領域データ生成回路による複数の領域データが記憶される。
そして、領域データ記憶回路により記憶した領域データが所定のタイミングで順次に後段の処理回路に出力される。
【0023】
【発明の実施の形態】
以下、本実施形態においては、パーソナルコンピュータなどに適用される、任意の3次元物体モデルに対する所望の3次元画像をCRT(Cathode Ray Tube)などのディスプレイ上に高速に表示する3次元コンピュータグラフィックスシステムについて説明する。
【0024】
図2は、本発明に係る画像処理装置としての3次元コンピュータグラフィックスシステム10のシステム構成図である。
【0025】
3次元コンピュータグラフィックスシステム10は、立体モデルを単位図形である三角形(ポリゴン)の組み合わせとして表現し、このポリゴンを描画することで表示画面の各画素の色を決定し、ディスプレイに表示するポリゴンレンダリング処理を行うシステムである。
また、3次元コンピュータグラフィックスシステム10では、平面上の位置を表現する(x,y)座標の他に、奥行きを表すz座標を用いて3次元物体を表し、この(x,y,z)の3つの座標で3次元空間の任意の一点を特定する。
【0026】
図2に示すように、3次元コンピュータグラフィックスシステム10は、メインプロセッサ11、メインメモリ12、I/Oインタフェース回路13、およびレンダリング回路14が、メインバス15を介して接続されている。
以下、各構成要素の機能について説明する。
【0027】
メインプロセッサ11は、たとえば、アプリケーションの進行状況などに応じて、メインメモリ12から必要なグラフィックデータを読み出し、このグラフィックデータに対して、座標変換、クリッピング(Clipping)処理、ライティング(Lighting)処理などのジオメトリ(Geometry)処理などを行い、ポリゴンレンダリングデータを生成する。
メインプロセッサ11は、ポリゴンレンダリングデータS11を、メインバス15を介してレンダリング回路14に出力する。
【0028】
I/Oインタフェース回路13は、必要に応じて、外部から動きの制御情報またはポリゴンレンダリングデータなどを入力し、これをメインバス15を介してレンダリング回路14に出力する。
【0029】
レンダリング回路14に入力されるポリゴンレンダリングデータは、ポリゴンの各3頂点の(x,y,z,R,G,B,s,t,q)のデータを含んでいる。ここで、(x,y,z)データは、ポリゴンの頂点の3次元座標を示し、(R,G,B)データは、それぞれ当該3次元座標における赤、緑、青の輝度値を示している。
(s,t,q)データのうち、(s,t)は、対応するテクスチャの同次座標を示しており、qは同次項を示している。ここで、「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じて、実際のテクスチャ座標データ(u,v)が得られる。
レンダリング回路14のグラフィックスメモリ(具体的には後記するテクスチャバッファ)に記憶されたテクスチャデータへのアクセスは、テクスチャ座標データ(u,v)を用いて行われる。
すなわち、ポリゴンレンダリングデータは、三角形の各頂点の物理座標値と、それぞれの頂点の色とテクスチャデータである。
【0030】
以下、レンダリング回路14について詳細に説明する。
【0031】
図2に示すように、レンダリング回路14は、線形補間演算のための初期設定演算ブロックとしてのDDA(Digital Differential Anarizer) セットアップ回路141、線形補間処理ブロックとしてのトライアングルDDA回路142、テクスチャエンジン回路143、メモリインタフェース(I/F)回路144、たとえばDRAMからなるグラフィックスメモリ145、およびCRTコントロール回路146を有している。そして、テクスチャエンジン回路143、およびメモリインタフェース(I/F)回路144により処理回路が構成される。
【0032】
本実施形態におけるレンダリング回路14は、一つの半導体チップ内にロジック回路と少なくとも表示データとテクスチャデータとを記憶するグラフィックスメモリ145とが混載されている。
【0033】
以下、レンダリング回路14の各ブロックの構成および機能について、図面に関連付けて順を追って説明する。
【0034】
DDAセットアップ回路141は、後段のトライアングルDDA回路142において物理座標系上の三角形の各頂点の値を線形補間して、三角形の内部の各画素の色と深さ情報を求めるに先立ち、ポリゴンレンダリングデータS11が示す(z,R,G,B,s,t,q)データについて、三角形の辺と水平方向の差分などを求めるセットアップ演算を行う。
このセットアップ演算は、具体的には、開始点の値と終点の値と、開始点と終点との距離を用いて、単位長さ移動した場合における、求めようとしている値の変分を算出する。
DDAセットアップ回路141は、算出した変分データを含むプリミティブに関する情報としてのセットアップデータS141をトライアングルDDA回路142に出力する。
【0035】
DDAセットアップ回路141の機能について図3に関連付けてさらに説明する。
上述したように、DDAセットアップ回路141の主な処理は、前段のジオメトリ処理を経て物理座標にまで落ちてきた各頂点における各種情報(色、テクスチャ座標)の与えられた三頂点P0(x0,y0)、P1(x1,y1)、P2(x2,y2)により構成される三角形内部で変分を求めて、後段の線形補間処理の基礎デ−タを算出することである。
三角形の描画はひとつひとつの画素の描画に集約されるが、そのために描画開始点における最初の値を求める必要がある。
最初の描画点における各種情報は、頂点からその最初の描画点までの水平距離に水平方向の変分を掛けた値と、垂直距離に垂直方向の変分を掛けた値を足し合わせたものとなる。いったん目的の三角形の内部の一つの整数格子上の値が求まれば、対象の三角形内部のその他の格子点における値は変分の整数倍で求めることが可能となる。
【0036】
三角形の各頂点データは、たとえばx,y座標が16ビット、z座標が24ビット、RGBカラー値が各12ビット(=8+4)、s,t,qテクスチャ座標は各32ビット浮動少数値(IEEEフォーマット)等で構成される。
【0037】
なお、このDDAセットアップ回路141は、従来のようにDSP構造ではなく、ASIC手法により実装している。
具体的には、図4に示すように、多段に配置したレジスタ1411−1〜1411−4間に複数の演算ユニットを並列に配置した演算ユニット群1412−1〜1412−3を挿入したフルデータパスロジック、換言すれば、同期パイプライン方式の時間並列構造として構成されている。
【0038】
トライアングルDDA回路142は、DDAセットアップ回路141から入力した変分データを含むプリミティブに関する情報としてのセットアップデータS141を基に、三角形内部の各画素における線形補間された(z,R,G,B,s,t,q)データを算出する。
トライアングルDDA回路142は、各画素の(x,y)データと、当該(x,y)座標における(z,R,G,B,s,t,q)データとを、DDAデータ(補間データ)S142としてテクスチャエンジン回路143に出力する。
【0039】
すなわち、トライアングルDDA回路142は、ポリゴンの頂点毎に求められた画像パラメータに基づいてポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間するラスタライズ処理(ラスタライゼーション:Rasterization)を行う。
具体的には、トライアングルDDA回路142は、各種データ(z,テクスチャ座標、カラーなど)をラスタライズする。
【0040】
本実施形態に係るトライアングルDDA回路142は、図5(A)に示すように、DDAセットアップ回路141から入力した変分データを含むセットアップデータS141を基に、複数のピクセル、たとえば2×2の4個のピクセルを含む単位矩形領域USRにおいて、少なくとも一つのピクセルがプリミティブ(本実施形態ではトライアングル)の内側に位置する場合、換言すれば、単位矩形領域USRにトライアングルの内側に位置する有効な領域データが存在する場合には、単位矩形領域USRをn(nは2以上の整数、本実施形態ではn=2)倍した2×4の8個のピクセルを含む大領域データを生成し(ST1)、大領域データを記憶し(ST2)、さらに記憶した大領域データを単位矩形領域と同等の領域データに分割して(ST3)、DDAデータS142としてテクスチャエンジン回路143に出力する(ST4)。
従来は図5(B)に示すように、単に領域データを生成し、出力する場合には、必ず有効な領域データを出力することができるとは限られなかったのに対し、本実施形態に係るトライアングルDDA回路142においては、大領域データ内には必ず有効な領域を含むことから、領域データを絶え間なく生成することができ、画像の効率的な描画を実現している。
【0041】
以下、大領域データ生成、分割データ出力機能を有するトライアングルDDA回路142の具体的な構成例について、図面に関連付けて説明する。
【0042】
図6は、本実施形態に係るトライアングルDDA回路142の要部構成を示すブロック図である。
【0043】
本トライアングルDDA回路142は、図6に示すように、DDAセットアップ回路141によるセットアップデータS141を受けて単位矩形領域の少なくとも一つ分のデータを増やした大領域データを生成する大領域データ生成回路1421、大領域データ生成回路1421で生成された大領域データS1421を記憶する大領域データ記憶回路1422、および大領域データ記憶回路1422に記憶された大領域データS1422を読み出して、通常の領域データの大きさ、すなわち単位矩形領域の大きさに分割してDDAデータS142としてテクスチャエンジン回路143に出力する大領域データ分割回路1423を主構成要素として有している。
【0044】
図7は、本実施形態に係るトライアングルDDA回路の主要部である大領域データ生成回路1421の具体的な構成例を示すブロック図である。
【0045】
本大領域データ生成回路1421は、図7に示すように、プリミティブ情報記憶回路としてのセットアップデータ記憶回路14211、ピクセル内外判定回路14212、および大領域移動回路14213を有している。
【0046】
セットアップデータ記憶回路14211は、DDAセットアップ回路141によるセットアップデータS141を記憶し、記憶されているデータの現在位置がトライアングルの内側であるか否かの判別を行い、内側にある場合には記憶データをピクセル内外判定回路14212に出力し、内側に無い場合にはDDAセットアップ回路141からセットアップデータS141を受け取り、このセットアップデータを新たに記憶し、大領域移動回路14213により指定された大領域のデータをピクセル内外判定回路14212に出力する。
【0047】
ピクセル内外判定回路14212は、セットアップデータ記憶回路14211に記憶されているセットアップデータに基づいて、あらかじめ設定した大きさを有する矩形の大領域、たとえば2×2の単位矩形領域USRをx方向に2倍した2×4の矩形の大領域内の各ピクセルについてトライアングルに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合には、大領域データS1421を生成して大領域データ記憶回路1422に出力する。
また、ピクセル内外判定回路14212は、大領域データを生成して出力した旨、またはピクセルがトライアングルの内側に無く大領域データを生成しなかった旨を大領域移動回路14213に報知する。
【0048】
大領域移動回路14213は、ピクセル内外判定回路14212による大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を、たとえば隣接する大領域に移動し、移動した大領域を示すデータS14213をセットアップデータ記憶回路14211に出力する。
【0049】
図8は、図7の構成を有する大領域データ生成回路1421の動作を説明するためのフローチャートである。
図8に示すように、大領域データ生成回路1421においては、以下のステップST11〜ST16の処理が行われる。
【0050】
ステップST11において、セットアップデータ記憶回路14211に記憶されているデータの現在の位置が、トライアングルの内側であるか否かの判別が行われる。
ここで、トライアングルの内側にないと判別するとステップST12に処理に移行し、トライアングルの内側にあると判別するとステップST13の処理に移行する。
【0051】
ステップST12においては、DDAセットアップ回路141からセットアップデータを受け取り、受け取ったセットアップデータをセットアップデータ記憶回路14211に新たに記憶し、ステップST13の処理に移行する。
【0052】
ステップST13においては、ピクセル内外判定回路14212にセットアップデータ記憶回路14211の記憶データから大領域移動回路14213により指定された大領域に相当するデータを読み出し、ピクセル内外判定回路14212において、大領域内の各ピクセルについて内外判定を行い、ステップST14の処理に移行する。
【0053】
ステップST14においては、少なくとも一つのピクセルがトライアングルの内側に有るか否かの判別を行う。
ここで、内側に有ると判別するとステップST15の処理に移行し、内側に無いと判別するとステップST16の処理に移行する。
【0054】
ステップST15においては、少なくとも一つのピクセルがトライアングルの内側に有ることから、ピクセル内外判定回路14212において、大領域データS1421を生成して大領域データ記憶回路1422に出力し、ステップST16の処理に移行する。
そして、ピクセル内外判定回路14212により、ステップST15において大領域データを生成して出力した旨、またはステップST14においてピクセルがトライアングルの内側に無く大領域データを生成しなかった旨を大領域移動回路14213に報知する。
【0055】
ステップST16においては、ピクセル内外判定回路14212による大領域データを生成あるいは生成しなかった旨を報知されると、大領域移動回路14213は、ピクセルの内外判定を行う大領域を移動し、移動した大領域を示すデータS14213をセットアップデータ記憶回路14211に出力する。
【0056】
図9は、本実施形態に係るトライアングルDDA回路の主要部である大領域データ分割回路1423の具体的な構成例を示すブロック図である。
【0057】
本大領域データ分割回路1423は、図9に示すように、領域データ生成回路14231、および領域データ記憶回路14232を有している。
【0058】
領域データ生成回路14231は、大領域データ記憶回路1422に記憶された大領域データS1422を読み出し、この大領域データを単位矩形領域と同等の領域データに分割して(たとえば2つに分割して)、たとえば分割した大領域データのうち有効なピクセルを含むものを領域データとして領域データ記憶回路14232に出力する。
【0059】
領域データ記憶回路14232は、領域データ生成回路14231による領域データを記憶する。
【0060】
図10は、図9の構成を有する大領域データ分割回路1423の動作を説明するためのフローチャートである。
図10に示すように、大領域データ分割回路1423においては、以下のステップST21〜ST24の処理が行われる。
【0061】
ステップST21においては、領域データ生成回路14231により大領域データ記憶回路1422から読み出した大領域データS1422を単位矩形領域と同等の領域データに分割し、ステップST22の処理に移行する。
【0062】
ステップST22においては、分割された大領域データのうち有効なピクセルを含むものを領域データとして領域データ記憶回路14232に出力し、ステップST23の処理に移行する。
【0063】
ステップST23においては、領域データ記憶回路14232の所定のアドレスに、領域データ生成回路14231による一つないし複数の領域データを記憶し、ステップST24の処理に移行する。
【0064】
ステップST24においては、領域データ記憶回路14232により記憶した領域データを所定のタイミングでテクスチャエンジン回路143にDDAデータS142として出力する。
【0065】
テクスチャエンジン回路143は、「s/q」および「t/q」の算出処理、テクスチャ座標データ(u,v)の算出処理、グラフィックスメモリ145からの(R,G,B)データの読み出し処理等をパイプライン方式で行う。
なお、テクスチャエンジン回路143は、たとえば所定の矩形内に位置する複数(たとえば4あるいは8)画素についての処理を同時に並行して行う。
【0066】
テクスチャエンジン回路143は、DDAデータS142が示す(s,t,q)データについて、sデータをqデータで除算する演算と、tデータをqデータで除算する演算とを行う。
テクスチャエンジン回路143には、たとえば図示しない除算回路が並列処理する画素数分だけ(たとえば8個)設けられており、8画素についての除算「s/q」および「t/q」が同時に行われる。また、8画素のうち代表点からの補間演算処理を行うように実装することも可能である。
【0067】
また、テクスチャエンジン回路143は、除算結果である「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEを乗じて、テクスチャ座標データ(u,v)を生成する。
また、テクスチャエンジン回路143は、メモリI/F回路144を介して、グラフィックスメモリ145に、生成したテクスチャ座標データ(u,v)を含む読み出し要求を出力し、メモリI/F回路144を介して、グラフィックスメモリ145に含まれるテクスチャバッファに記憶されているテクスチャデータを読み出すことで、(s,t)データに対応したテクスチャアドレスに記憶された(R,G,B)データを得る。
テクスチャエンジン回路143は、読み出した(R,G,B)データの(R,G,B)データと、前段のトライアングルDDA回路142からのDDAデータS142に含まれる(R,G,B)データとを、それぞれ掛け合わせるなどして、画素データを生成する。
テクスチャエンジン回路143は、この画素データを最終的に画素のカラー値としてメモリI/F回路144に出力する。
【0068】
なお、グラフィックスメモリ145に含まれるテクスチャバッファには、MIPMAP(複数解像度テクスチャ)などの複数の縮小率に対応したテクスチャデータが記憶されている。ここで、何れの縮小率のテクスチャデータを用いるかは、所定のアルゴリズムを用いて、前記三角形単位で決定される。
【0069】
テクスチャエンジン回路143は、フルカラー方式の場合には、テクスチャバッファから読み出した(R,G,B)データを直接用いる。
一方、テクスチャエンジン回路143は、インデックスカラー方式の場合には、あらかじめ作成しておいたカラーインデックステーブルのデータを、テクスチャカラールックアップテーブル(CLUT)バッファより内蔵するSRAM等で構成した一時保管バッファに転送しておいて、このカラールックアップテーブルを用いて、テクスチャバッファから読み出したカラーインデックスに対応する(R,G,B)データを得る。
たとえばカラールックアップテーブルがSRAMで構成された場合、カラーインデックスをSRAMのアドレスに入力すると、その出力には実際の(R,G,B)データが出てくるといった使い方となる。
【0070】
ここで、いわゆるテクスチャマッピング処理について、図11および図12に関連付けてさらに説明する。
図11は、テクスチャエンジン回路143におけるテクスチャマッピング処理回路の構成例を示すブロック図であり、図12は、実際のテクスチャマッピング処理をイメージ的に示す図である。
【0071】
このテクスチャマッピング処理回路は、DDA回路1431,1432、テクスチャ座標算出回路(Div)1433、MIMMAPレベル算出回路1434、フィルタ回路1435、第1の合成回路(FUNC)1436、および第2の合成回路(FOG)1437を有している。
【0072】
このテクスチャマッピング処理回路においては、図12(A)に示すように、DDA回路1431,1432において、三角形の内部で線形補間されたテクスチャの同時座標s、t、qを用いて、デカルト座標でのテクスチャの実際のアドレスに変換する(qでの除算)。
さらにMIPMAP等を行う場合は、MIMMAPレベル算出回路1434においてMIPMAPのレベルの算出を行う。そして、図12(B)に示すように、テクスチャ座標算出回路1433においてテクスチャ座標の算出を行う。
また、フィルタ回路1435において、グラフィックスメモリ145に含まれるテクスチャバッファからそれぞれのレベルのテクスチャデータを読み出し、そのまま使うポイントサンプリング(Point Sampling)または、bi-Linea(4近傍)補間、Tri-Linea 補間等を行う。
そこで得られたテクスチャーカラーに対して次の処理を行う。すなわち、第1の合成回路1436において、入力された物体カラーとテクスチャーカラーを合成し、さらに第2の合成回路1437でそれにフォグカラーを合成して、最終的に描画する画素のカラーを決定する。
【0073】
メモリI/F回路144は、テクスチャエンジン回路143から入力した画素データS145に対応するzデータと、グラフィックスメモリ145に含まれるzバッファに記憶されているzデータとの比較を行い、入力した画素データによって描画される画像が、前回、グラフィックスメモリ145(ディスプレイバッファ)に書き込まれた画像より、手前(視点側)に位置するか否かを判断し、手前に位置する場合には、画像データに対応するzデータでzバッファに記憶されたzデータを更新する。
また、メモリI/F回路144は、(R,G,B)データをグラフィックスメモリ145(ディスプレイバッファ)に書き込む。
【0074】
さらに、メモリI/F回路144は、今から描画しようとしている画素におけるテクスチャアドレスに対応したテクスチャデータを格納しているグラフィックメモリ145のメモリブロックをそのテクスチャアドレスより算出し、そのメモリブロックにのみ読み出し要求を出すことにより、テクスチャデータを読み出す。
この場合、該当するテクスチャデータを保持していないメモリブロックにおいては、テクスチャデータの読み出しのためのアクセスが行われないため、描画により多くのアクセス時間を提供することが可能となっている。
【0075】
メモリI/F回路144は、描画においても同様に、今から描画しようとしている画素アドレスに対応する画素データを格納しているグラフィックスメモリ145のメモリブロックに対して、該当アドレスから画素データをモディファイ書き込みをするために読み出し、モディファイ後同じアドレスへ書き戻す。
隠れ面処理を行なう場合には、やはり同じように今から描画しようとしている画素アドレスに対応する奥行きデータを格納しているメモリブロックに対して、該当アドレスから奥行きデータをモディファイ書き込みするため読み出し、必要ならばモディファイ後同じアドレスへ書き戻す。
【0076】
また、メモリI/F回路144は、テクスチャエンジン回路143からグラフィックスメモリ145に対する、生成されたテクスチャ座標データ(u,v)を含む読み出し要求を受けた場合には、グラフィックスメモリ145に記憶された(R,G,B)データを読み出す。
また、メモリI/F回路144は、CRTコントロール回路146から表示データを読み出す要求を受けた場合には、この要求に応じて、グラフィックメモリ145(ディスプレイバッファ)から一定の固まり、たとえば8画素あるいは16画素単位で表示データを読み出す。
【0077】
メモリI/F回路144は、グラフィックスメモリ145へのアクセス(書き込みまたは読み出し)を行うが、書き込み経路と読み出し経路とが別経路として構成されている。
すなわち、書き込みの場合には書き込みアドレスADRWと書き込みデータDTWが書き込み系回路で処理されてグラフィックスメモリ145に書き込み、読み出しの場合には読み出し系回路で処理されてグラフィックスメモリ145から読み出す。
そして、メモリI/F回路144は、所定のインターリーブ方式のアドレッシングに基づいてグラフィックスメモリ145へのアクセスを、たとえば16画素単位で行う。
【0078】
このようなメモリとのデータのやりとりにおいては、それまでの処理を複数並行処理することで、描画性能を向上させることができる。
特に、トライアングルDDA部分とテクスチャエンジン部分を並列実効形式で、同じ回路を設ける(空間並列)か、または、パイプラインを細かく挿入する(時間並列)ことで、複数画素の同時算出を行っている。
グラフィックスメモリ145のメモリブロックは表示領域において隣接した部分は、後述するように異なるメモリブロックとなるように配置してあるので、三角形のような平面を描画する場合には面で同時に処理できることになるため、それぞれのメモリブロックの動作確率は非常に高くなっている。
【0079】
グラフィックスメモリ145は、テクスチャバッファ、ディスプレイバッファ、zバッファおよびテクスチャCLUT(Color Look Up Table) バッファとして機能する。
また、グラフィックスメモリ145は、同一機能を有する複数、たとえば4個のモジュールに分割されている。
【0080】
また、グラフィックスメモリ145には、より多くのテクスチャデータを格納するために、インデックスカラーにおけるインデックスと、そのためのカラールックアップテーブル値が、テクスチャCLUTバッファに格納されている。
インデックスおよびカラールックアップテーブル値は、上述したように、テクスチャ処理に使われる。
すなわち、通常はR,G,Bそれぞれ8ビットの合計24ビットでテクスチャ要素を表現するが、それではデータ量が膨らむため、あらかじめ選んでおいたたとえば256色等の中から一つの色を選んで、そのデータをテクスチャ処理に使う。このことで256色であればそれぞれのテクスチャ要素は8ビットで表現できることになる。インデックスから実際のカラーへの変換テーブルは必要になるが、テクスチャの解像度が高くなるほど、よりコンパクトなテクスチャデータとすることが可能となる。
これにより、テクスチャデータの圧縮が可能となり、内蔵メモリの効率良い利用が可能となる。
【0081】
さらに、グラフィックスメモリ145には、描画と同時並行的に隠れ面処理を行うため、描画しようとしている物体の奥行き情報が格納されている。
なお、表示データと奥行きデータおよびテクスチャデータの格納方法としては、たとえばメモリブロックの所定の位置、たとえば先頭から連続して表示データが格納され、次に奥行きデータが格納され、残りの空いた領域に、テクスチャの種類毎に連続したアドレス空間でテクスチャデータが格納される。
図面に関連付けて概念的に説明すると、図13(A)〜(C)に示すように、いわゆるベースポインタ(BP)で示された位置から図中FBで示す領域に、たとえば24ビット幅で表示データと奥行きデータが格納され、残りの空いた領域である8ビット幅の領域に図中TBで示すようにテクスチャデータが格納される。これらは表示データとテクスチャデータのユニファイドメモリ(Unified Memory)化ということになる。
これにより、テクスチャデータを効率よく格納できることになる。
【0082】
以上のように、DDAセットアップ回路141、トライアングルDDA回路142、テクスチャエンジン回路143、メモリI/F回路144等における所定処理を経て、最終的なメモリアクセスがピクセル(Pixel;Picture Cell Element) という描画画素単位になる。
【0083】
CRTコントロール回路146は、与えられた水平および垂直同期信号に同期して、図示しないCRTに表示する表示アドレスを発生し、グラフィックスメモリ145に含まれるディスプレイバッファから表示データを読み出す要求をメモリI/F回路144に出力する。
この要求に応じて、メモリI/F回路144は、グラフィックスメモリ145(ディスプレイバッファ)から一定の固まりで表示データを読み出す。
CRTコントロール回路146は、グラフィックスメモリ145から読み出した表示データを記憶するたとえばFIFO回路を内蔵し、一定の時間間隔で、RGBのインデックス値を発生する。
CRTコントロール回路146は、各インデックス値に対応するR,G,Bデータを記憶しており、発生したRGBのインデックス値に対応するデジタル形式のR,G,Bデータを、図示しないD/Aコンバータ(Digital/Analog Converter)に転送し、アナログ形式のR,G,Bデータを生成する。
CRTコントロール回路146は、この生成されたR,G,Bデータを図示しないCRTに出力する。
【0084】
次に、上記構成による動作を説明する。
なお、この説明において、トライアングルDDDA回路142の動作については、図14に関連付けて説明する。
図14において、実線で区分けした図中上側が大領域データ生成回路1421の処理を示し、下側が大領域データ分割回路1423の処理を示している。
【0085】
3次元コンピュータグラフィックスシステム10においては、グラフィックス描画等のデータは、メインプロセッサ11のメインメモリ12、あるいは外部からのグラフィックスデータを受けるI/Oインタフェース回路13からメインバス15を介してレンダリング回路14に与えられる。
なお、必要に応じて、グラフィックス描画等のデータは、メインプロセッサ11等において、座標変換、クリップ処理、ライティング処理等のジオメトリ処理が行われる。
ジオメトリ処理が終わったグラフィックスデータは、三角形の各3頂点の頂点座標x,y,z、輝度値R,G,B、描画しようとしている画素と対応するテクスチャ座標s,t,qとからなるポリゴンレンダリングデータS11となる。
このポリゴンレンダリングデータS11は、レンダリング回路14のDDAセットアップ回路141に順々に転送される。
【0086】
DDAセットアップ回路141においては、ポリゴンレンダリングデータS11に基づいて、三角形の辺と水平方向の差分などを示す変分データが生成される。
具体的には、開始点の値と終点の値、並びに、その間の距離を用いて、単位長さ移動した場合における、求めようとしている値の変化分である変分が算出され、変分データを含むセットアップデータS141としてトライアングルDDA回路142に出力される。
【0087】
トライアングルDDA回路142においては、変分データを含むセットアップデータS141を用いて、、三角形内部の各画素における線形補間された(z,R,G,B,s,t,q)データが算出される。
そして、この算出された(z,R,G,B,s,t,q)データと、三角形の各頂点の(x,y)データとが、DDAデータS142として、トライアングルDDA回路142からテクスチャエンジン回路143に出力される。
すなわち、トライアングルDDA回路142においては、ポリゴンの頂点毎に求められた画像パラメータに基づいてポリゴン内部に含まれるすべてのピクセルの画像パラメータ(z,テクスチャ座標、カラーなど)を補間するラスタライズ処理が行われる。
そして、トライアングルDDA回路142において、各種データ(z,テクスチャ座標、カラーなど)をラスタライズするにあたっては、セットアップデータS141を基に、複数のピクセル、たとえば2×2の4個のピクセルを含む単位矩形領域USRにおいて、少なくとも一つのピクセルがトライアングルの内側に位置する場合、単位矩形領域USRをx方向にたとえば2倍した2×4の8個のピクセルを含む大領域データが生成されて記憶され、さらに記憶した大領域データが単位矩形領域と同等の通常の領域データに分割されて、DDAデータS142としてテクスチャエンジン回路143に出力される。
【0088】
具体的には、まず、図14(A)に示す処理が行われる。
すなわち、大領域データ生成回路1421においては、セットアップデータS141がセットアップデータ記憶回路14211に記憶される。
そして、セットアップデータ記憶回路14211に記憶されているデータの現在の位置が、トライアングルの内側であるか否かの判別が行われる。
ここで、トライアングルの内側にないと判別されるDDAセットアップ回路141からセットアップデータが受け取られ、受け取ったセットアップデータがセットアップデータ記憶回路14211に新たに記憶される。
ここで、ピクセル内外判定回路14212にセットアップデータ記憶回路14211の記憶データから大領域移動回路14213により指定された大領域に相当するデータが読み出される。
ピクセル内外判定回路14212において、大領域内の各ピクセルについて内外判定、具体的には、少なくとも一つのピクセルがトライアングルの内側に有るか否かの判別が行われる。
図14(A)の場合は、少なくとも一つのピクセルがトライアングルの内側に有ることから、ピクセル内外判定回路14212において、大領域データS1421が生成されて大領域データ記憶回路1422に出力される。
そして、ピクセル内外判定回路14212により、大領域データを生成し出力した旨が大領域移動回路14213に報知される。
ピクセル内外判定回路14212による大領域データが生成された旨が報知されると、大領域移動回路14213では、ピクセルの内外判定を行う大領域が移動され、移動した大領域を示すデータS14213がセットアップデータ記憶回路14211に出力される。これにより、大領域データ生成回路1421では、図14(B)の処理に移行する。
【0089】
図14(A)の処理において、大領域データ生成回路1421により生成された大領域データが大領域データ記憶回路1422に記憶されると、この記憶データが大領域データ分割回路1423に読み出される。
大領域データ分割回路1423においては、領域データ生成回路14231により大領域データ記憶回路1422から読み出した大領域データS1422が単位矩形領域と同等の通常領域データDUSR1およびDUSR2に分割される。
分割された大領域データのうち有効なピクセルを含むものが領域データDUSR1,DUSR2として領域データ記憶回路14232に出力される。
これにより、領域データ記憶回路14232の所定のアドレスに、領域データ生成回路14231による2つの領域データDUSR1,DUSR2が記憶される。
そして、領域データ記憶回路14232により記憶した領域データDUSR1が所定のタイミングt0でテクスチャエンジン回路143にDDAデータS142として出力される。
【0090】
次に、図14(B)の処理では、ピクセル内外判定回路14212にセットアップデータ記憶回路14211の記憶データから大領域移動回路14213により指定された大領域に相当するデータが読み出される。
ピクセル内外判定回路14212において、大領域内の各ピクセルについて内外判定、具体的には、少なくとも一つのピクセルがトライアングルの内側に有るか否かの判別が行われる。
図14(B)の場合は、少なくとも一つのピクセルがトライアングルの内側に無いことから、ピクセル内外判定回路14212において、大領域データは生成されず、大領域データ記憶回路1422への出力は行われない。
そして、ピクセル内外判定回路14212により、ピクセルがトライアングルの内側に無く大領域データを生成しなかった旨が大領域移動回路14213に報知される。
ピクセル内外判定回路14212による大領域データが生成されなかった旨が報知されると、大領域移動回路14213では、ピクセルの内外判定を行う大領域が移動され、移動した大領域を示すデータS14213がセットアップデータ記憶回路14211に出力される。これにより、大領域データ生成回路1421では、図14(C)の処理に移行する。
【0091】
図14(B)の処理において、大領域データ生成回路1421により大領域データは生成されなかったことから、大領域データ記憶回路1422に次の大領域データは記憶されてない。
したがって、大領域データ分割回路1423においては、分割処理は行われないが、このとき、図14(A)の処理においては得られた通常の領域データDUDUSR2が、出力されずに領域データ記憶回路14232に記憶されている。そして、領域データ記憶回路14232により記憶されている領域データDUSR2が所定のタイミングt1でテクスチャエンジン回路143にDDAデータS142として出力される。
【0092】
次に、図14(C)の処理では、ピクセル内外判定回路14212にセットアップデータ記憶回路14211の記憶データから大領域移動回路14213により指定された大領域に相当するデータが読み出される。
ピクセル内外判定回路14212において、大領域内の各ピクセルについて内外判定、具体的には、少なくとも一つのピクセルがトライアングルの内側に有るか否かの判別が行われる。
図14(C)の場合は、少なくとも一つのピクセルがトライアングルの内側に有ることから、ピクセル内外判定回路14212において、大領域データS1421が生成されて大領域データ記憶回路1422に出力される。
そして、ピクセル内外判定回路14212により、大領域データを生成して出力した旨が大領域移動回路14213に報知される。
ピクセル内外判定回路14212による大領域データが生成された旨が報知されると、大領域移動回路14213では、ピクセルの内外判定を行う大領域が移動され、移動した大領域を示すデータS14213がセットアップデータ記憶回路14211に出力される。これにより、大領域データ生成回路1421では、大領域データの生成処理が終了する。
【0093】
図14(C)の処理において、大領域データ生成回路1421により生成された大領域データが大領域データ記憶回路1422に記憶されると、この記憶データが大領域データ分割回路1423に読み出される。
大領域データ分割回路1423においては、領域データ生成回路14231により大領域データ記憶回路1422から読み出した大領域データS1422が単位矩形領域と同等の通常の領域データDUSR3およびDUSR4に分割される。
分割された大領域データのうち有効なピクセルを含むものが領域データDUSR3,DUSR4として領域データ記憶回路14232に出力される。
これにより、領域データ記憶回路14232の所定のアドレスに、領域データ生成回路14231による2つの領域データDUSR3,DUSR4が記憶される。
そして、領域データ記憶回路14232により記憶した領域データDUSR3が所定のタイミングt2でテクスチャエンジン回路143にDDAデータS142として出力される。
さらに、領域データ記憶回路14232により記憶した領域データDUSR4が次にのタイミングt3でテクスチャエンジン回路143にDDAデータS142として出力される。
【0094】
テクスチャエンジン回路143においては、DDAデータS142が示す(s,t,q)データについて、sデータをqデータで除算する演算と、tデータをqデータで除算する演算とが行われる。そして、除算結果「s/q」および「t/q」に、それぞれテクスチャサイズUSIZEおよびVSIZEが乗算され、テクスチャ座標データ(u,v)が生成される。
【0095】
次に、テクスチャエンジン回路143からメモリI/F回路144に対して生成されたテクスチャ座標データ(u,v)を含む読み出し要求が出力され、メモリI/F回路144を介して、グラフィックスメモリ145に記憶された(R,G,B)データが読み出される。
次に、テクスチャエンジン回路143において、読み出した(R,G,B)データの(R,G,B)データと、前段のトライアングルDDA回路142からのDDAデータS142に含まれる(R,G,B)データとが掛け合わされ、画素データとして生成される。
この画素データは、テクスチャエンジン回路143からメモリI/F回路144に出力される。
【0096】
そして、メモリI/F回路144において、テクスチャエンジン回路143から入力した画素データに対応するzデータと、zバッファに記憶されているzデータとの比較が行われ、入力した画素データS145によって描画される画像が、前回、ディスプレイバッファに書き込まれた画像より、手前(視点側)に位置するか否かが判断される。
判断の結果、手前に位置する場合には、画像データに対応するzデータでzバッファに記憶されたzデータが更新される。
【0097】
次に、メモリI/F回路144において、(R,G,B)データがグラフィックスメモリ145のディスプレイバッファに書き込まれる。
これら書き込む(更新も含む)べきデータは、書き込み系回路を介し所定のメモリに対して並列的に書き込まれる。
【0098】
メモリI/F回路144においては、今から描画しようとしている画素におけるテクスチャアドレスに対応したテクスチャを格納しているグラフィックスメモリ145のメモリブロックがそのテクスチャアドレスにより算出され、そのメモリブロックにのみ読みだし要求が出され、テクスチャデータが読み出される。
この場合、該当するテクスチャデータを保持していないメモリブロックにおいては、テクスチャ読み出しのためのアクセスが行われないため、描画により多くのアクセス時間を提供することが可能となっている。
【0099】
描画においても同様に、今から描画しようとしている画素アドレスに対応する画素データを格納しているメモリブロックに対して、該当アドレスから画素データがモディファイ書き込み(Modify Write)を行うために読み出され、モディファイ後、同じアドレスへ書き戻される。
【0100】
隠れ面処理を行う場合には、やはり同じように今から描画しようとしている画素アドレスに対応する奥行きデータを格納しているメモリブロックに対して、該当アドレスから奥行きデータがモディファイ書き込み(Modify Write)を行うために読み出され、必要ならばモディファイ後、同じアドレスへ書き戻される。
【0101】
そして、図示しないCRTに画像を表示する場合には、CRTコントロール回路146において、与えられた水平垂直同期周波数に同期して、表示アドレスが発生され、メモリI/F回路144へ表示データ転送の要求が出される。
メモリI/F回路144では、その要求に従い、一定のまとまった固まりで、表示データがCRTコントロール回路146に転送される。
CRTコントロール回路146では、図示しないディスプレイ用FIFO等にその表示データが貯えられ、一定の間隔でRGBのインデックス値が生成される。
CRTコントロール回路146においては、内部にRGBのインデックスに対するRGB値が記憶されていて、インデックス値に対するRGB値が図示しないD/Aコンバータへ転送される。
そして、D/Aコンバータでアナログ信号に変換されたRGB信号がCRTへ転送される。
【0102】
以上説明したように、本実施形態によれば、DDAセットアップ回路141から入力した変分データを含むセットアップデータS141を基に、複数のピクセルを含む単位矩形領域USRにおいて、少なくとも一つのピクセルがトライアングルの内側に位置する場合、単位矩形領域USRの少なくとも一つ分のデータを増やした大領域データを生成して、大領域データを記憶し、さらに記憶した大領域データを単位矩形領域と同等の通常の領域データに分割して、DDAデータS42としてテクスチャエンジン回路143に出力するトライアングルDDA回路142を設けたので、単位図形を連続して描画する場合に、分割された領域データを絶え間なく生成でき、無効な領域による無駄な処理を省くことができ、領域データを絶え間なく生成することができる。その結果、画像を効率的に描画することができる利点がある。
【0103】
なお、図2に示す3次元コンピュータグラフィックスシステム10では、ポリゴンレンダリングデータを生成するジオメトリ処理を、メインプロセッサ11で行う場合を例示したが、レンダリング回路14で行う構成にしてもよい。
【0104】
【発明の効果】
以上説明したように、本発明によれば、連続する単位図形を描画する場合、同時に処理を行う領域データを生成する場合に、領域データを絶え間なく生成することができる。
その結果、画像を効率的に描画することができる。
【図面の簡単な説明】
【図1】従来の課題を説明するための図である。
【図2】本発明に係る画像処理装置としての3次元コンピュータグラフィックスシステムのシステム構成図である。
【図3】本実施形態に係るDDAセットアップ回路の機能を説明するための図である。
【図4】本実施形態に係るDDAセットアップ回路の構成例を示す図である。
【図5】本実施形態に係るトライアングルDDA回路の機能を説明するための図である。
【図6】本実施形態に係るトライアングルDDA回路の要部構成を示すブロック図である。
【図7】本実施形態に係るトライアングルDDA回路の主要部である大領域データ生成回路の具体的な構成例を示すブロック図である。
【図8】図7の構成を有する大領域データ生成回路の動作を説明するためのフローチャートである。
【図9】本実施形態に係るトライアングルDDA回路の主要部である大領域データ分割回路の具体的な構成例を示すブロック図である。
【図10】図9の構成を有する大領域データ分割回路の動作を説明するためのフローチャートである。
【図11】本実施形態に係るテクスチャエンジン回路におけるテクスチャマッピング処理回路の構成例を示すブロック図である。
【図12】本実施形態に係るテクスチャエンジン回路における実際のテクスチャマッピング処理をイメージ的に示す図である。
【図13】本実施形態に係るグラフィックスメモリへの表示データと奥行きデータおよびテクスチャデータの格納方法を概念的に説明するための図である。
【図14】図2の画像処理装置のトライアングルDDA回路の動作を説明するための図である。
【符号の説明】
10…画像処理装置、11…メインプロセッサ、12…メインメモリ、13…I/Oインタフェース回路、14…レンダリング回路、141…DDAセットアップ回路、142…トライアングルDDA回路、1421…大領域データ生成回路、14211…セットアップデータ記憶回路、14212…ピクセル内外判定回路、14213…大領域移動回路、1422…大領域データ記憶回路、1423…大領域データ分割回路、14231…領域データ生成回路、14232…領域データ記憶回路、143…テクスチャエンジン回路、144…メモリインタフェース(I/F)回路、145…グラフィックスメモリ、146…CRTコントロール回路。

Claims (16)

  1. 描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、単位領域にあるピクセルを同時に処理する画像処理装置であって、
    描画すべきプリミティブに関する情報を受けて、複数のピクセルを含む単位領域において、少なくとも一つのピクセルがプリミティブの内側に位置する場合、当該単位領域の少なくとも一つ分のデータを増やした大領域データを生成する大領域データ生成回路と、
    上記大領域データ生成回路により生成された大領域データを単位領域と同等の領域データに分割し、分割した領域データを所定のタイミングで順次出力する大領域データ分割回路と、
    上記大領域データ分割回路による領域データに基づいて描画処理を行う処理回路と
    を有する画像処理装置。
  2. 上記大領域データ生成回路は、プリミティブ情報記憶回路、およびピクセル内外判定回路を含み、
    上記プリミティブ情報記憶回路は、プリミティブに関する情報を記憶し、記憶されているデータの現在位置がプリミティブの内側であるか否かの判別を行い、内側にある場合には指定された大領域に含まれる記憶データをピクセル内外判定回路に出力し、内側に無い場合にはさらにプリミティブに関する情報を受け取って記憶し、指定された大領域のデータをピクセル内外判定回路に出力し、
    上記ピクセル内外判定回路は、プリミティブ情報記憶回路から読み出されたプリミティブ情報に基づいて、大領域内の各ピクセルについてプリミティブに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合に大領域データを生成する
    請求項1記載の画像処理装置。
  3. 上記大領域データ生成回路は、大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を移動し、移動した大領域を示す指定データをプリミティブ情報記憶回路に出力する大領域移動回路を有し、
    上記ピクセル内外判定回路は、大領域データを生成した旨、またはピクセルがプリミティブの内側に無く大領域データを生成しなかった旨を上記大領域移動回路に報知する
    請求項2記載の画像処理装置。
  4. 上記大領域データ分割回路は、生成された大領域データを単位領域と同等の領域データに分割し、分割した大領域データのうち有効なピクセルを含むデータを領域データとして出力する領域データ生成回路と、
    領域データ生成回路による一つないし複数の領域データを記憶し、記憶した領域データを所定のタイミングで出力する領域データ記憶回路と
    を含む請求項1記載の画像処理装置。
  5. 上記大領域データ生成回路は、プリミティブ情報記憶回路、およびピクセル内外判定回路を含み、
    上記プリミティブ情報記憶回路は、プリミティブに関する情報を記憶し、記憶されているデータの現在位置がプリミティブの内側であるか否かの判別を行い、内側にある場合には指定された大領域に含まれる記憶データをピクセル内外判定回路に出力し、内側に無い場合にはさらにプリミティブに関する情報を受け取って記憶し、指定された大領域のデータをピクセル内外判定回路に出力し、
    上記ピクセル内外判定回路は、プリミティブ情報記憶回路から読み出されたプリミティブ情報に基づいて、大領域内の各ピクセルについてプリミティブに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合に大領域データを生成し、
    上記大領域データ分割回路は、生成された大領域データを単位領域と同等の領域データに分割し、分割した大領域データのうち有効なピクセルを含むデータを領域データとして出力する領域データ生成回路と、
    領域データ生成回路による一つないし複数の領域データを記憶し、記憶した領域データを所定のタイミングで出力する領域データ記憶回路と
    を含む請求項1記載の画像処理装置。
  6. 上記大領域データ生成回路は、大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を移動し、移動した大領域を示す指定データをプリミティブ情報記憶回路に出力する大領域移動回路を有し、
    上記ピクセル内外判定回路は、大領域データを生成した旨、またはピクセルがプリミティブの内側に無く大領域データを生成しなかった旨を上記大領域移動回路に報知する
    請求項5記載の画像処理装置。
  7. 描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、単位領域にあるピクセルを同時に処理する画像処理装置であって、
    描画すべきプリミティブに関する情報を受けて、複数のピクセルを含む単位領域において、少なくとも一つのピクセルがプリミティブの内側に位置する場合、当該単位領域の少なくとも一つ分のデータを増やした大領域データを生成する大領域データ生成回路と、
    上記大領域データ生成回路により生成された大領域データを記憶する大領域データ記憶回路と、
    上記大領域データ記憶回路に記憶された大領域データを読み出し、読み出した大領域データを単位領域と同等の領域データに分割し、分割した領域データを所定のタイミングで順次出力する大領域データ分割回路と、
    上記大領域データ分割回路による領域データに基づいて描画処理を行う処理回路と
    を有する画像処理装置。
  8. 上記大領域データ生成回路は、プリミティブ情報記憶回路、およびピクセル内外判定回路を含み、
    上記プリミティブ情報記憶回路は、プリミティブに関する情報を記憶し、記憶されているデータの現在位置がプリミティブの内側であるか否かの判別を行い、内側にある場合には指定された大領域に含まれる記憶データをピクセル内外判定回路に出力し、内側に無い場合にはさらにプリミティブに関する情報を受け取って記憶し、指定された大領域のデータをピクセル内外判定回路に出力し、
    上記ピクセル内外判定回路は、プリミティブ情報記憶回路から読み出されたプリミティブ情報に基づいて、大領域内の各ピクセルについてプリミティブに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合に大領域データを生成し、上記大領域データ記憶回路に出力する
    請求項7記載の画像処理装置。
  9. 上記大領域データ生成回路は、大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を移動し、移動した大領域を示す指定データをプリミティブ情報記憶回路に出力する大領域移動回路を有し、
    上記ピクセル内外判定回路は、大領域データを生成した旨、またはピクセルがプリミティブの内側に無く大領域データを生成しなかった旨を上記大領域移動回路に報知する
    請求項8記載の画像処理装置。
  10. 上記大領域データ分割回路は、上記大領域データ記憶回路から読み出した大領域データを単位領域と同等の領域データに分割し、分割した大領域データのうち有効なピクセルを含むデータを領域データとして出力する領域データ生成回路と、
    領域データ生成回路による一つないし複数の領域データを記憶し、記憶した領域データを所定のタイミングで出力する領域データ記憶回路と
    を含む請求項7記載の画像処理装置。
  11. 上記大領域データ生成回路は、プリミティブ情報記憶回路、およびピクセル内外判定回路を含み、
    上記プリミティブ情報記憶回路は、プリミティブに関する情報を記憶し、記憶されているデータの現在位置がプリミティブの内側であるか否かの判別を行い、内側にある場合には指定された大領域に含まれる記憶データをピクセル内外判定回路に出力し、内側に無い場合にはさらにプリミティブに関する情報を受け取って記憶し、指定された大領域のデータをピクセル内外判定回路に出力し、
    上記ピクセル内外判定回路は、プリミティブ情報記憶回路から読み出されたプリミティブ情報に基づいて、大領域内の各ピクセルについてプリミティブに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合に大領域データを生成し、上記大領域データ記憶回路に出力し、
    上記大領域データ分割回路は、生成された大領域データを単位領域と同等の領域データに分割し、分割した大領域データのうち有効なピクセルを含むデータを領域データとして出力する領域データ生成回路と、
    領域データ生成回路による一つないし複数の領域データを記憶し、記憶した領域データを所定のタイミングで出力する領域データ記憶回路と
    を含む請求項7記載の画像処理装置。
  12. 上記大領域データ生成回路は、大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を移動し、移動した大領域を示す指定データをプリミティブ情報記憶回路に出力する大領域移動回路を有し、
    上記ピクセル内外判定回路は、大領域データを生成した旨、またはピクセルがプリミティブの内側に無く大領域データを生成しなかった旨を上記大領域移動回路に報知する
    請求項11記載の画像処理装置。
  13. 描画すべきプリミティブに関する情報に基づいてピクセルデータを発生し、単位領域にあるピクセルを同時に処理する画像処理方法であって、
    描画すべきプリミティブに関する情報を受けて、複数のピクセルを含む単位領域において、少なくとも一つのピクセルがプリミティブの内側に位置する場合、当該単位領域の少なくとも一つ分のデータを増やした大領域データを生成する大領域データ生成ステップと、
    上記大領域データ生成ステップにより生成された大領域データを単位領域と同等の領域データに分割し、分割した領域データを所定のタイミングで順次出力する大領域データ分割ステップと、
    上記大領域データ分割ステップによる領域データに基づいて描画処理を行う処理ステップと
    を有する画像処理方法。
  14. 上記大領域データ生成ステップでは、プリミティブに関する情報を記憶し、記憶されているデータの現在位置がプリミティブの内側であるか否かの判別を行い、内側にある場合には指定された大領域に含まれる記憶データを供給し、内側に無い場合にはさらにプリミティブに関する情報を受け取って記憶し、指定された大領域のデータを供給し、
    供給されたプリミティブ情報に基づいて、大領域内の各ピクセルについてプリミティブに対する内外判定を行い、少なくとも一つのピクセルが内側にある場合に大領域データを生成する
    請求項13記載の画像処理方法。
  15. 上記大領域データ生成ステップでは、大領域データを生成あるいは生成しなかった旨を報知されると、ピクセルの内外判定を行う大領域を移動し、移動した大領域を次に処理すべき大領域として指定する
    請求項14記載の画像処理方法。
  16. 上記大領域データ分割ステップでは、生成された大領域データを単位領域と同等の領域データに分割し、分割した大領域データのうち有効なピクセルを含むデータを領域データとして出力する領域データ生成ステップと、
    領域データ生成ステップによる一つないし複数の領域データを記憶し、記憶した領域データを所定のタイミングで出力する領域データ記憶ステップと
    を含む請求項13記載の画像処理方法。
JP2002029483A 2002-02-06 2002-02-06 画像処理装置およびその方法 Expired - Fee Related JP3747859B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002029483A JP3747859B2 (ja) 2002-02-06 2002-02-06 画像処理装置およびその方法
US10/358,729 US8576219B2 (en) 2002-02-06 2003-02-05 Linear interpolation of triangles using digital differential analysis

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002029483A JP3747859B2 (ja) 2002-02-06 2002-02-06 画像処理装置およびその方法

Publications (2)

Publication Number Publication Date
JP2003233821A JP2003233821A (ja) 2003-08-22
JP3747859B2 true JP3747859B2 (ja) 2006-02-22

Family

ID=27773701

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002029483A Expired - Fee Related JP3747859B2 (ja) 2002-02-06 2002-02-06 画像処理装置およびその方法

Country Status (2)

Country Link
US (1) US8576219B2 (ja)
JP (1) JP3747859B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6987432B2 (en) * 2003-04-16 2006-01-17 Robert Bosch Gmbh Temperature compensation for silicon MEMS resonator
US7737994B1 (en) * 2003-09-26 2010-06-15 Oracle America, Inc. Large-kernel convolution using multiple industry-standard graphics accelerators
US7266255B1 (en) * 2003-09-26 2007-09-04 Sun Microsystems, Inc. Distributed multi-sample convolution
US10902265B2 (en) * 2019-03-27 2021-01-26 Lenovo (Singapore) Pte. Ltd. Imaging effect based on object depth information

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3640318B2 (ja) * 1995-09-01 2005-04-20 インターナショナル・ビジネス・マシーンズ・コーポレーション ディジタル画像の符号化方法及びシステム
US6025853A (en) * 1995-03-24 2000-02-15 3Dlabs Inc. Ltd. Integrated graphics subsystem with message-passing architecture
US5870097A (en) * 1995-08-04 1999-02-09 Microsoft Corporation Method and system for improving shadowing in a graphics rendering system
US6348919B1 (en) * 1995-12-18 2002-02-19 3Dlabs Inc, Ltd. Graphics system with optimized use of unified local and frame buffers
US5973692A (en) * 1997-03-10 1999-10-26 Knowlton; Kenneth Charles System for the capture and indexing of graphical representations of files, information sources and the like
US5936641A (en) * 1997-06-27 1999-08-10 Object Technology Licensing Corp Graphics hardware acceleration method, computer program, and system
JPH11203501A (ja) * 1998-01-14 1999-07-30 Sega Enterp Ltd 画像処理装置及び画像処理方法
US6459428B1 (en) * 1998-02-17 2002-10-01 Sun Microsystems, Inc. Programmable sample filtering for image rendering
JP4314655B2 (ja) * 1998-03-04 2009-08-19 ソニー株式会社 画像処理装置
JP2000011190A (ja) * 1998-06-25 2000-01-14 Sony Corp 画像処理装置
US6466229B1 (en) * 1999-01-26 2002-10-15 Fuji Xerox Co., Ltd. Graphics processing apparatus and graphics processing method
US6323874B1 (en) * 1999-02-08 2001-11-27 Silicon Graphics, Inc. System and method for rendering an image
JP2000338959A (ja) * 1999-05-31 2000-12-08 Toshiba Corp 画像処理装置
JP4568950B2 (ja) * 2000-02-29 2010-10-27 ソニー株式会社 グラフィックス描画装置
US6741243B2 (en) * 2000-05-01 2004-05-25 Broadcom Corporation Method and system for reducing overflows in a computer graphics system
US6768492B2 (en) * 2000-10-06 2004-07-27 Microsoft Corporation Texture tiling with adjacency information
TW509879B (en) * 2001-01-29 2002-11-11 Silicon Integrated Sys Corp Method and apparatus for minimizing the idle time of a graphics engine by using rendering control before flipping frame buffer
US6847378B2 (en) * 2002-03-07 2005-01-25 Sun Microsystems, Inc. System and method for performing scale and bias operations by preclamping input image data
JP4158413B2 (ja) * 2002-05-22 2008-10-01 ソニー株式会社 画像処理装置

Also Published As

Publication number Publication date
JP2003233821A (ja) 2003-08-22
US8576219B2 (en) 2013-11-05
US20040004620A1 (en) 2004-01-08

Similar Documents

Publication Publication Date Title
US6704018B1 (en) Graphic computing apparatus
US4975976A (en) Image transformation method and device
US6636232B2 (en) Polygon anti-aliasing with any number of samples on an irregular sample grid using a hierarchical tiler
JP2005352657A (ja) 描画処理装置、描画処理方法、及び描画処理プログラム
JP3892016B2 (ja) 画像処理装置および画像処理方法
JP4198087B2 (ja) 画像生成装置および画像生成方法
US6774897B2 (en) Apparatus and method for drawing three dimensional graphics by converting two dimensional polygon data to three dimensional polygon data
JP3979162B2 (ja) 画像処理装置およびその方法
JP3687945B2 (ja) 画像処理装置およびその方法
JP3747859B2 (ja) 画像処理装置およびその方法
JP2005332195A (ja) テクスチャユニット、画像描画装置、テクセル転送方法
JP2003263650A (ja) 画像処理装置およびその方法
US6563507B1 (en) Storage circuit control device and graphic computation device
JP4042462B2 (ja) 画像処理装置およびその方法
US6476818B1 (en) Storage circuit control device and graphic computation device
JP2003132347A (ja) 画像処理装置
JP2003296748A (ja) 画像処理装置およびその方法
JP2006133940A (ja) 詳細度を用いたリアルタイム画像生成装置
JPH11272548A (ja) 記憶回路制御装置およびグラフィック演算装置
JP4408152B2 (ja) テクスチャマッピング方法及びテクスチャマッピング装置
JP3971448B2 (ja) 描画装置及び描画方法
JP4419480B2 (ja) 画像処理装置およびその方法
JP4411939B2 (ja) 演算装置および画像処理装置
JPH10261095A (ja) 画像処理装置及び画像処理方法
JPH10222690A (ja) 3次元画像生成方法および装置とこの方法および装置を用いた3次元画像処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051021

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: 20051108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051121

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091209

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091209

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101209

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111209

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111209

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121209

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121209

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131209

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees