首页 / 专利库 / 资料储存系统 / 高速缓冲存储器 / 顶点缓存 / Plotting arithmetic processor

Plotting arithmetic processor

阅读:423发布:2021-01-18

专利汇可以提供Plotting arithmetic processor专利检索,专利查询,专利分析的服务。并且PROBLEM TO BE SOLVED: To provide a plotting arithmetic processor by which an application producer can freely control the speed and picture quality in a real-time three- dimensional CG and, moreover, picture generating technique with high definition, which is used in a non-real-time CG, is realized in real time. SOLUTION: A shape primitive expressing the surface shape of an object in a three-dimensional space is inputted to a shape dividing part 10 and divided into a plurality of sub-polygons which are two-dimensionally arrayed by optional size so that a polygon mesh is generated. Then a parameter required for plotting by pixel unit of the sub-polygon is calculated at every vertex in the polygon mesh by a vertex processing part 30 for reading data from an image memory 80 via an image memory reading route 60 and a cache 70. Then plotting data by pixel unit are calculated by a rendering processing part 40 and a picture memory access part 50 based on the data and written on the image memory 80.,下面是Plotting arithmetic processor专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】3次元空間に存在するオブジェクトの表面の単位形状を二次元に配列された任意の大きさの複数のサブポリゴンに分割してサブポリゴンメッシュを生成する形状分割部と、 前記形状分割部により生成されたポリゴンメッシュの頂点毎にサブポリゴンに対するピクセル単位の描画に必要なパラメータを算出する頂点処理部と、 前記頂点処理部により算出されたパラメータ及びテクスチュアマッピングのための画像データに基づいてピクセル単位の描画データを算出するレンダリング処理部と、 前記描画データを画像データとして保持すると共に、前記レンダリング処理部で前記描画データの算出に必要な少なくともテクスチュアマッピングのためのデータを保持する画像メモリとを具備することを特徴とする描画演算処理装置。
  • 【請求項2】3次元空間に存在するオブジェクトの表面の単位形状を二次元に配列された任意の大きさの複数のサブポリゴンに分割してサブポリゴンメッシュを生成する形状分割部と、 前記形状分割部により生成されたポリゴンメッシュの頂点毎にサブポリゴンに対するピクセル単位の描画に必要なパラメータを算出する複数の頂点処理部と、前記形状分割部の出力と前記複数の頂点処理部の入力とを任意に交換接続する交換部と、 前記頂点処理部により算出されたパラメータ及びテクスチュアマッピングのための画像データに基づいてピクセル単位の描画データを算出するレンダリング処理部と、 前記描画データを画像データとして保持すると共に、前記レンダリング処理部で前記描画データの算出に必要な少なくともテクスチュアマッピングのためのデータを保持する画像メモリとを具備することを特徴とする描画演算処理装置。
  • 【請求項3】3次元空間に存在するオブジェクトの表面の単位形状を二次元に配列された任意の大きさの複数のサブポリゴンに分割してサブポリゴンメッシュを生成する複数の形状分割部と、 前記複数の形状分割部に対して前記単位形状のデータを振り分ける入力振り分け部と、 前記形状分割部により生成されたポリゴンメッシュの頂点毎にサブポリゴンに対するピクセル単位の描画に必要なパラメータを算出する複数の頂点処理部と、 前記形状分割部の出力と前記複数の頂点処理部の入力とを任意に交換接続する交換部と、 前記頂点処理部により算出されたパラメータ及びテクスチュアマッピングのための画像データに基づいてピクセル単位の描画データを算出するレンダリング処理部と、 前記描画データを画像データとして保持すると共に、前記レンダリング処理部で前記描画データの算出に必要な少なくともテクスチュアマッピングのためのデータを保持する画像メモリとを具備することを特徴とする描画演算処理装置。
  • 【請求項4】前記画像メモリが保持する前記少なくともテクスチュアマッピングのためのデータを読み出して前記頂点処理部に伝達するための画像読み出し経路とをさらに具備し、 前記頂点処理部は、前記生成されたポリゴンメッシュの頂点に対応する前記画像メモリ中の前記少なくともテクスチュアマッピングのためのデータを前記画像読み出し経路を介して読み込み、該読み込んだデータを用いて該ポリゴンメッシュの頂点毎にサブポリゴンのピクセル単位の描画に必要なパラメータを算出する特徴とする請求項1乃至3のいずれか1項に記載の描画演算処理装置。
  • 【請求項5】前記画像読み出し経路を介して読み込んだデータを一時保持するためのキャッシュをさらに具備することを特徴とする請求項4に記載の描画演算処理装置。
  • 【請求項6】前記頂点処理部は、前記ポリゴンメッシュの頂点毎にサブポリゴンのピクセル単位の描画に必要なパラメータを算出する演算をそれぞれ行う複数の演算部を有し、複数の頂点に対して同時に同一プログラムに従って該演算を行うことを特徴とする請求項1乃至5のいずれか1項記載の描画演算処理装置。
  • 【請求項7】前記複数の演算部は、前記生成されたサブポリゴンメッシュの各行について前記演算を同時に行う処理を該ポリゴンメッシュの行数だけ繰り返すことを特徴とする請求項6に記載の描画演算処理装置。
  • 【請求項8】前記複数の演算部は、一次元に配列されると共に、配列方向に隣接する演算部間がデータ転送経路により接続され、該データ転送路を介して全ての演算部が該配列方向に隣接する演算部に対して内部データの少なくとも一部を同時に転送することを特徴とする請求項6または7記載の描画演算処理装置。
  • 【請求項9】前記複数の演算部による前記演算の結果を連続した三角形列に組み上げて、前記レンダリング処理部へ転送する三角形列組み上げ部をさらに有することを特徴とする請求項6乃至8のいずれか1項に記載の描画演算処理装置。
  • 【請求項10】前記複数の形状分割部は、処理プログラムを格納するプログラムメモリを共有することを特徴とする請求項3に記載の描画演算処理装置。
  • 【請求項11】前記レンダリング処理部は、頂点単位のマッピングとピクセル単位のマッピングを併用して前記描画データを算出することを特徴とする請求項1乃至1
    0のいずれか1項に記載の描画演算処理装置。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【発明の属する技術分野】本発明は、3次元コンピュータグラフィックス(CG)をリアルタイムに、かつ高品位に描画する描画演算処理装置に関する。

    【0002】

    【従来の技術】リアルタイム3次元CGを用いたゲーム機のようなシステムでは、3次元空間に存在する物体、
    すなわち3Dオブジェクト(以下、単にオブジェクトという)の表面の単位形状を表す形状プリミティブと呼ばれるデータを入し、これに描画を行う描画演算処理が必要となる。 この処理を高速に行うためには、ハードウェアとして実現される描画演算処理装置が用いられる。

    【0003】従来の描画演算処理装置では、ポリゴンと呼ばれる平面多形をオブジェクトの形状プリミティブとして用い、これに描画を行うことで3次元空間を表現している。 具体的には、従来の画像演算処理装置は大きく「ジオメトリ処理部」と「ラスタライズ処理部」及び「画像メモリ」の三つの要素からなっており、処理はパイプライン的に行われる。

    【0004】まず、ジオメトリ処理部は形状プリミティブであるポリゴンについて頂点単位に座標変換やライティング処理を行う。 また、ジオメトリ処理部は必要に応じて頂点に対応するテクスチュア座標の計算も行うが、
    テクスチュア画像そのものを画像メモリから読み込むことはない。 ジオメトリ処理部では処理結果としてポリゴンの頂点のスクリーン座標値、色、及びテクスチュア座標値を求め、ラスタライズ処理部に引き渡す。

    【0005】ラスタライズ処理部は、ポリゴンを画像メモリ上でピクセル単位に描画する処理を行う。 ピクセル単位の色は、スムーズ・シェーディングと呼ばれる手法により、各頂点に与えられた色を線形補間して決定される。 また、ラスタライズ処理部で描画を行う際に、画像メモリ上に構成するZバッファを用いたZバッファ法と呼ばれる隠面消去アルゴリズムにより、あるオブジェクトに隠れて見えないオブジェクトを隠す(描画しない)
    手法が用いられる。 さらに、ラスタライズ処理部でピクセル単位の描画処理を行う際には、画像メモリに置かれたテクスチュア画像を用いてテクスチュア・マッピングと呼ばれる2次元画像を張り付ける技術が使われる。

    【0006】テクスチュア・マッピング処理では、ジオメトリ処理部からのテクスチュア座標値を基に、ピクセル単位に画像メモリ上のテクスチュア画像領域の対応するテクスチュア画素の位置を求め、その位置の色データをテクスチュア画像領域から読み込み、先の線形補間により決定されたピクセル単位の色と演算処理して、画像メモリに書き込む色を決定する。 従来では、テクスチュア・マッピング処理でのピクセル単位の演算部はラスタライズ処理部にハードウェア回路で組まれており、非常に単純な演算処理しかできなかった。

    【0007】実際のシステムの構成例としては、例えば、ジオメトリ処理部の処理をCPUでのプログラムが行うもの、ジオメトリ処理部をCPUに含むもの、ジオメトリ処理部とラスタライズ処理部を一つのLSIで構成したもの、ラスタライズ処理部と画像メモリ部を一つのLSIで構成したものがある。 しかし、いずれの構成でも、ジオメトリ処理部からラスタライズ処理部への処理は、一方通行パイプラインが基本である。

    【0008】一方、さらに進んだ3次元CG技術として、ピクセル演算型の並列型グラフィックス・アーキテクチャがある。 その代表例として、Molnar,S.他、“Pix
    elFlow: High-Speed Rendering Using Image Compositi
    on,” Computer Graphics(Proc. of SIGGRAPH '92), Vo
    l.26, No.2, pp.231-240.(文献1)や、米国特許明細書第4,590,465号(文献2)及び米国特許明細書第4,78
    3,649(文献3)等に開示されたPixelFlow/PixelPlane
    が知られている。

    【0009】このPixelFlow/PixelPlaneは、ポリゴンをラスタライズする際に、ピクセル単位に割り当てられたSIMD型のプロセッサが入れ替え可能なプログラムを実行するにより、ピクセル単位で複雑な手続き型演算によって色を決定し、画像メモリに書き込むことを特徴とし、これにより高度な画像表現を可能とする技術である。 しかし、ピクセル単位の処理であるがゆえに、単純な表面特性しか持たない大きなポリゴンを描画するのにも、多くのSIMDプロセッサによる演算が必要であり、これを高速に実行するためには多数のSIMDプロセッサを必要とし、システムが大がかりなものとなってしまう難点がある。 また、この技術ではオブジェクトの表面の位置が変位することを特徴とする変位マッピング
    (displace mapping)を実装するには困難が伴う。

    【0010】

    【発明が解決しようとする課題】ゲームなどのリアルタイム3次元CGでは、動きのスムーズなアニメーションを表示するために、1/60秒に代表されるフレーム時間と呼ばれる決められた時間内で可能な限り高品位な画像を表示することが求められる。

    【0011】画像生成の高速性と高品位のバランスは、
    ゲーム等のアプリケーション・ソフトウェア制作者にとって最も重要な点であり、リアルタイム3次元CGのための描画演算処理装置には、アプリケーション制作者がより自由に速度と画質の制御ができる構成が求められている。

    【0012】しかし、従来の描画演算処理装置では、ジオメトリ処理部での手続き型でフレキシブルな頂点処理とラスタライズ処理部での画像メモリを用いたテクスチュア処理が分離分担され、それぞれの部分で可能な表現が決められているので、速度と画質の制御方法が限られている。

    【0013】また、リアルタイム3次元CGにおいて従来よりも高品位な画像を提供するために求められている技法として、現在、映画などの「非リアルタイム3次元CG」の分野で非常に高品位な画像を生成するために用いられている技法がある。 これらの技法には、例えば以下のものがある。 (1) 曲面定義によるモデリングで人物や生物などのオブジェクトをリアルに表示する (2) オブジェクトの表面形状を変位させる変位マッピング(displace mapping) (3) 影を計算して描画することで、空間のオブジェクトの配置を分かり易くする (4) 実写画像からの演算で3次元CGを生成する、イメージ・ベースド描画(Image-Based Rendering)手法 (5) 手続き型シェーディングでスケッチ調やイラスト調といった、ノン・フォト・リアリスティック(Non-Photo
    -Relistic Rendering)手法。

    【0014】なお、「非リアルタイムCG」の分野では、スクリーンに画像が表示される時の時間は決められているが、表示する画像をあらかじめ1枚1枚計算で求める時点では、画像生成の処理時間に制限はない。 従って、これらの技法をリアルタイム3次元CGで実現するには、より高速に描画演算処理を行うための仕組みが必要である。

    【0015】しかし、従来の画像演算処理装置の構造では、前述のようにジオメトリ部での頂点処理とレンダリング部でのテクスチュア処理が分離分担され、それぞれの処理部で可能な表現が決められているので、上記技法を用いた高度でリアリティのある画像を効率よく描画できなかった。

    【0016】「非リアルタイムCG」分野での上記技法が可能な公知例としては、Robert L. Cook他、“The Re
    yes Image Rendering Architecture,”Computer Graphi
    cs(Proc. of SIGGRAPH'87), Vol.21, No.4, pp.95-10
    2.(文献4)で提案されたREYESアーキテクチャがある。 これはソフトウェアで実装され、米PIXAR社から“P
    HOTOREALISTIC RENDERMAN”ソフトウェアとして販売されている。このアーキテクチャは、入力された形状プリミティブをマイクロポリゴンと呼ぶ、ピクセルの大きさ以下の小さなポリゴンに分割し、変位マッピングを含めた高度な処理をマイクロポリゴンの頂点単位にプログラマブルに行っている。

    【0017】しかし、このREYESアーキテクチャは非常に高品位な画像を生成することのみに重点を置いている。 従って、リアルタイム3次元CGで厳しく要求される描画時間短縮のための工夫がなく、演算に時間がかかり、そのままではリアルタイムのハードウェアに向かないアーキテクチャである。 特に、基本的には全ての形状プリミティブをピクセルの大きさ以下の小さなマイクロポリゴンに分割して処理するため、膨大なマイクロポリゴンが生成され、例えば上記文献4に掲載されている例では、マイクロポリゴンの数は680万個にもなり、このことがリアルタイム・ハードウェアへの適応性に欠ける原因となっている。

    【0018】本発明は、このような従来技術の問題点に鑑みてなされたものであって、リアルタイム3次元CG
    において、アプリケーション制作者がより自由に速度と画質の制御ができ、さらには非リアルタイムCGで用いられている高品位な画像生成技法をリアルタイムに実現できる描画演算処理装置を提供することを目的としている。

    【0019】

    【課題を解決するための手段】上記の課題を解決するため、本発明に係る描画演算処理装置は、3次元空間に存在するオブジェクトの表面の単位形状、具体的にはポリゴンや曲面などの形状プリミティブを二次元に配列された任意の大きさの複数のサブポリゴンに分割してサブポリゴンメッシュを生成する形状分割部と、この形状分割部により生成されたポリゴンメッシュの頂点毎にサブポリゴンに対するピクセル単位の描画に必要なパラメータを算出する頂点処理部と、この頂点処理部により算出されたパラメータ及びテクスチュアマッピングのための画像データに基づいてピクセル単位の描画データを算出するレンダリング処理部と、この描画データを画像データとして保持すると共に、レンダリング処理部で描画データの算出に必要な少なくともテクスチュアマッピングのためのデータを保持する画像メモリとを有する。

    【0020】すなわち、形状分割部で生成されたサブポリゴンメッシュは、サブポリゴンが2次元構造的に並んだ構成となり、頂点処理部では各サブポリゴンの3次元頂点毎にライティングなどの計算を行う。 ここで、形状分割部での分割に際して、形状プリミティブをどの程度細かなサブポリゴンに分割するかを種々の方法で指定できるようにすることで、サブポリゴンの個数を制御し、
    計算時間と画像の品質を制御することが可能となる。

    【0021】また、頂点処理部ではサブポリゴンの頂点毎にプログラマブルに処理を行うことができるために、
    形状プリミティブの頂点単位より細かい処理が可能となる。 具体的には、例えば頂点座標を変位させることで、
    変位マッピング(displacement mapping)を適用した形状プリミティブに対する描画ができる。

    【0022】また、画像メモリが保持する少なくともテクスチュアマッピングのためのデータを読み出して頂点処理部に伝達するための画像読み出し経路とをさらに備え、頂点処理部ではポリゴンメッシュの頂点に対応する画像メモリ中の少なくともテクスチュアマッピングのためのデータを画像読み出し経路を介して読み込み、この読み込んだデータを用いてポリゴンメッシュの頂点毎にサブポリゴンのピクセル単位の描画に必要なパラメータを算出するようにしてもよい。

    【0023】このように画像メモリから頂点処理部への画像メモリ読み出し経路を持つことにより、頂点単位での演算においてテクスチュア、さらにはデプスマップなどの画像データを利用でき、粗い分割のサブポリゴンメッシュにおいては、粗くて高速なテクスチュアマッピングや影付け処理を可能とし、ピクセルより細かな分割のサブポリゴンメッシュにおいてはピクセル単位以上の高品質なテクスチュアマッピングや影付け処理を施すことを可能とする。 この画像データ読み出し経路にキャッシュを付加してもよく、これにより画像メモリへのアクセス回数を減らして処理速度をさらに向上させることができる。

    【0024】頂点処理部は、ポリゴンメッシュの頂点毎にサブポリゴンのピクセル単位の描画に必要なパラメータを算出する演算をそれぞれ行う複数の演算部を有し、
    複数の頂点に対して同時に同一プログラムに従って演算を行うようにしてよい。

    【0025】さらに、これら複数の演算部においてサブポリゴンメッシュの各行について演算を同時に行う処理をポリゴンメッシュの行数だけ繰り返すようにしてもよい。 すなわち、頂点処理部において2次元構造であるサブポリゴンメッシュに対する頂点処理に際して1次元に配列された複数の演算部にサブポリゴンメッシュの各行を割り当て、各行毎に演算を行うことで演算部の利用効率を上げ、トータルの処理速度を向上させることが可能である。

    【0026】また、このように複数の演算部を一次元に配列し、かつ配列方向に隣接する演算部間をデータ転送経路により接続して、これらのデータ転送路を介して全ての演算部が配列方向に隣接する演算部に対して内部データの少なくとも一部を同時に転送するようにすれば、
    頂点処理部において隣接頂点に対する演算結果を利用することにより、法線ベクトルの計算などを容易に行うことができる。

    【0027】さらに、複数の演算部による頂点単位の演算結果を連続した三角形列(Triangle Strip)に組み上げて、画像塗り潰し処理を行うレンダリング処理部へ転送する三角形列組み上げ部を設けることで、処理効率を上げることができる。

    【0028】このようにして本発明の描画演算処理装置によると、従来の描画演算処理装置では困難であった種々の高品質描画をフレキシブルに行うことが可能となると同時に、従来の描画演算処理装置と同様の高速描画も可能であり、これらのトレードオフを容易に制御することができる。

    【0029】本発明に係る他の描画演算処理装置では、
    複数の頂点処理部を有し、さらに形状分割部の出力と複数の頂点処理部の入力とを任意に交換接続する交換部を有することにより、複数のサブポリゴンメッシュに対する処理を並列に行うことで処理効率を上げ、全体の処理をより高速化することができる。

    【0030】本発明に係る更に別の描画演算処理装置では、複数の形状分割部及び複数の頂点処理部を有し、さらに複数の形状分割部に対して形状プリミティブのデータを振り分ける入力振り分け部を備えることにより、複数の形状プリミティブをサブポリゴンメッシュへ分割する処理を並列に行うことで処理効率を上げ、全体の処理をさらに高速化することができる。

    【0031】

    【発明の実施の形態】以下、本発明の実施の形態について図面を参照しながら説明する。 本発明に係る描画演算処理装置は、例えば図1に示したようなゲーム機などのリアルタイム3次元グラフィックスシステムで用いられる。 低速バスにコントローラ1、DVDドライブ2、ハードディスクドライブ3、通信ユニット4が接続されると共に、バス・ブリッジ5を介してCPU6が接続されている。 DVDドライブ2にセットされる媒体(DV
    D)に、ゲームなどのアプリケーションソフトウェアが格納されている。

    【0032】このアプリケーションソフトウェアは、C
    PU6によってメインメモリ7を用いて実行され、コントローラ1から入力されるユーザの操作に応じて様々な処理が行われることにより、3次元空間データが更新される。 これによりCPU6から描画演算処理装置8に形状プリミティブデータが送られ、描画処理が実行される。

    【0033】演算処理装置8から出力される描画結果の画像データは、例えばD/Aコンバータ9を通してビデオ信号出力となり、図示しないディスプレイに送られて表示される。 ディスプレイは専用ディスプレイであってもよいし、TV受像機やコンピュータなどのディスプレイであってもよい。 ディスプレイ上の表示画面をスクリーンと呼ぶ。

    【0034】以下、本発明に基づく描画演算処理装置8
    の実施形態について説明する。 [第1の実施形態]図2に、本発明の第1の実施形態に係る描画演算処理装置の構成を示す。 この描画演算処理装置8は、形状分割部10、頂点処理部30、レンダリング処理部40、画像メモリアクセス部50、画像メモリ読み出し経路60と該画像メモリ読み出し経路60に挿入されたキャッシュ70、画像メモリ80及び画像出力部90からなる。

    【0035】描画演算処理装置8には、図1のCPU6
    から形状プリミティブのデータが入力される。 形状プリミティブは、3次元空間と3次元モデルを構成する要素であり、形状プリミティブデータは3次元空間内の物体(以下、オブジェクトという)の表面の単位形状を数値データで表したものである。 オブジェクトが通常の物体の場合、形状プリミティブはポリゴン(平面多角形)であり、多数のポリゴンによりオブジェクトの表面形状が表されるが、球面体、立方体、円柱体などの場合は一つの形状プリミティブで表面形状が表される。 すなわち、
    従来の形状プリミティブは、ポリゴンを中心とした数種類に限られていたが、本発明はそれに限定されない。

    【0036】描画演算処理装置8に入力された形状プリミティブは、まず形状分割部10によって処理される。
    形状分割部10では、入力された形状プリミティブを種々のプログラムに従って頂点処理部30が処理できる二次元に配列された複数のサブポリゴンに任意の方法で分割し、メッシュ構造(これをサブポリゴンメッシュという)を生成する。 この場合、形状分割部30においては分割するサブポリゴンの大きさをプログラムに従って任意に変えられることが特徴である。 形状分割部10の詳細については、後に説明する。

    【0037】頂点処理部30は、形状分割部10で生成されたサブポリゴンメッシュの各頂点毎にサブポリゴンのピクセル単位の描画のための演算処理を種々のプログラムによって実行し、演算結果として頂点毎のピクセル単位の描画に必要なパラメータを三角形または三角形列
    (Triangle Strip)などの形式で出力して、レンダリング処理部40及び画像メモリアクセス部50に送る。

    【0038】ここで、頂点処理部30においては、画像メモリアクセス部50と画像メモリアクセス部50から頂点処理部30へ向けて張られた画像読み出し経路60
    及びここに挿入されたキャッシュ70を介して、画像メモリ80からデータを適宜読み込み、それを描画に必要なパラメータの演算処理に使用することが可能となっていることが本発明の一つの特徴である。 この頂点処理部30についても、後に詳しく説明する。

    【0039】レンダリング処理部40は、前述した従来の描画演算処理装置におけるラスタライズ処理部に相当するものであり、頂点処理部30から送られてきた頂点単位のデータを用いて、画像メモリアクセス部50によりアクセスされた画像メモリ部80に記憶保持されている画像データに対して塗り潰し(レンダリング)の処理を行う。 レンダリングとは、3次元CGの分野で良く知られているように、テクスチュアマッピング、隠面消去、ライティング(照明の輝度計算)、シェーディング(影付け)、アンチエイリアシング、透視変換、クリッピングなどの処理をいう。

    【0040】以下、図2の各部についてさらに詳しく説明する。 (画像メモリ80について)画像メモリ80は、画像データを保持するメモリであり、具体的には図3に示すように、画像表示用フレーム・バッファ801、隠面消去用デプス・バッファ802、ステンシル・バッファ80
    3、テクスチュア・マップ・メモリ804、光源デプス・バッファ805及びレンダリング用フレーム・バッファ806からなる。 これら画像メモリ80の各部は、以下の機能を有する。 画像表示用フレーム・バッファ80
    1は、ディスプレイの画面上に表示される2次元画像のデータを保持するためのフレームメモリである。 この画像表示用フレーム・バッファ801上の2次元画像の画素は、ピクセルと呼ばれる。 隠面消去用デプス・バッファ802は、隠面消去のためのデプス値の2次元配列を保持するデプス・バッファであり、その内容は例えばX,Y,Z座標のZ値や1/Z値である。 ステンシル・
    バッファ803は、デプス・バッファを機能拡張したもので、画素単位にアプリケーションが利用できる属性情報を保持する。

    【0041】テクスチュア・マップ・メモリ804は、
    テクスチュアマッピングで用いられる画像(テクスチュア画像)のデータを保持するメモリである。 このテクスチュア・マップ・メモリ804上のテクスチュア画像の画素はテクセルと呼ばれる。 光源デプス・バッファ80
    5は、影付け処理のために光源から描画されるデプス・
    バッファである。 マルチパス・レンダリング用フレーム・バッファ806は、その内容がテクスチュア画像等として次の描画に利用される作業用メモリ領域としてのフレームメモリである。

    【0042】この画像メモリ80に対するデータの読み書きは、画像メモリアクセス部50によって行われる。
    画像メモリ80内の画像表示用フレーム・バッファ80
    1から読み出された画像データは、画像出力部90を介して図示しないディスプレイに送出される。

    【0043】(形状分割部10について)図4に、形状分割部10の具体的な構成例を示す。 この形状分割部1
    0はプロセッサコア201を持ち、プログラムメモリ2
    03に置かれたプログラムに従って、データメモリ20
    4を作業領域として用いて前述した分割処理を実行する。 本実施形態では、プログラムメモリ203及びデータメモリ204へのアクセスを高速化するためにキャッシュ202を備えているが、キャッシュ202を必ずしも備えなくとも構わない。 また、本実施形態ではプログラムメモリ203及びデータメモリ204が形状分割部10に含まれているが、このような構成に限られない。

    【0044】形状分割部10は、入力される形状プリミティブ毎に、それに適した分割方法のプログラムをプログラムメモリ203から選択して実行し、形状プリミティブを二次元に配列された任意の大きさの複数のサブポリゴンに分割する。 入力される形状プリミティブには、
    例えば、ポリゴン、NURBS曲面、Subdivision曲面、線分、点群がある。 このような分割処理により、形状分割部10は入力された形状プリミティブを一つまたは複数のサブポリゴンメッシュに変換し、このサブポリゴンメッシュを頂点処理部30へ送る。

    【0045】図5は、形状分割部10において四角形の形状プリミティブが複数のサブポリゴンメッシュに分割される様子を示している。 サブポリゴンは、頂点処理部30での処理単位である。 図5に示されるように、サブポリゴンメッシュは一つまたは複数のサブポリゴンからなる。 また、一つのサブポリゴンメッシュを構成するサブポリゴンは、隣接関係から2次元的に並んでおり、隣のサブポリゴンと共有する頂点をまとめたデータ構造になっている。 これにより、サブポリゴンの頂点データを独立に保持するより効率が良くなる。

    【0046】この点について、図6を用いて説明する。
    図6(a)は、縦4個×横4個の計16個のサブポリゴンを持つサブポリゴンメッシュがスクリーン座標(ディスプレイの表示画面の座標)へ投影された様子を示している。 このサブポリゴンメッシュは、縦5個×横5個の計25の頂点を持っている。 図6(b)は、サブポリゴンメッシュに含まれる16個のサブポリゴンの隣接関係を示している。 図6(c)の黒丸と白丸の合計25個は、16個のサブポリゴンが共有する頂点であり、これは16個のサブポリゴンが独立に頂点データを持った場合の64個より少ない。 図6(c)の16個の黒丸は、
    25個の頂点のうちで、16個のサブポリゴンを代表する頂点を示している。 図6(d)は、これらの丸の位置をずらし、黒丸の頂点がサブポリゴンと対応していることを分かりやすく示している。

    【0047】一般に、縦Pm個×横Pn個のサブポリゴンを保持するサブポリゴンメッシュには、縦(Pm+1
    個)×横(Pn+1)個の頂点がある。 以下、これを縦Vm個×横Vn個の頂点と称する。 例えば、サブポリゴンメッシュの最小のメッシュ構造としては、1つのサブポリゴンのみからなるメッシュがあり、これは4つの頂点を持つ。 形状分割部10は、サブポリゴンメッシュの縦または横の頂点の個数が頂点処理部30で処理できる個数以下になるような分割を行う。

    【0048】次に、図7に示すフローチャートを用いて、形状分割部10での形状プリミティブの分割処理の流れについて説明する。 まず、形状プリミティブのデータを読み込む(ステップS101)。 次に、この形状プリミティブデータから、形状プリミティブがディスプレイの画面上に描画される可能性があるかどうかをテストする(ステップS102)。 このテストは、例えば形状プリミティブを包む箱または球を計算し、これがスクリーン座標系でスクリーン(ディスプレイの表示画面)の範囲の内側にあるかどうかを調べることで行うことができる。

    【0049】ステップS102でのテストの結果、形状プリミティブが画面上に描画される可能性があるとき(ステップS103でYESのとき)には、その形状プリミティブを頂点処理部30が処理できる数までのサブポリゴンを含むサブポリゴンメッシュに変換できるかどうかをチェックする(ステップS105)。 頂点処理部30が処理できるサブポリゴンの数の上限は、装置の構成に依存する。 サブポリゴンは通常四角形で、4つの3
    次元頂点を持ち、頂点処理部30によって後述のように色情報が決定される。

    【0050】頂点処理部30が処理できる数までのサブポリゴンを含むサブポリゴンメッシュに変換できる場合には、形状プリミティブをサブポリゴンに分割し、その集まりをサブポリゴンメッシュとして構成する(ステップS107)。 このとき、座標変換処理、すなわちサブポリゴンメッシュの各頂点の座標をスクリーン座標系に変換する処理は行わず、後に頂点処理部30で行う。

    【0051】形状プリミティブを頂点処理部30が処理できる数までのサブポリゴンを含むサブポリゴンメッシュに変換できない場合には、その形状プリミティブをさらに複数の形状プリミティブに分割し、それぞれについてループを繰り返し(ステップS106)、再度、ステップS101により分割した形状プリミティブに関して同様の処理を行う。

    【0052】形状プリミティブが画面上に描画される可能性がないとき(ステップS103でNOのとき)には、その形状プリミティブのデータを廃棄して(ステップS104)、ステップS108に進む。

    【0053】形状分割部10は、前述したように入力された形状プリミティブのサブポリゴンへの分割の細かさを任意に変更できるように構成されている。 形状分割部10での分割方法はプログラムメモリ103にプログラムで書かれているので、このプログラムによって以下のように様々な分割方法が可能である。 (1) 入力された形状プリミティブを各サブポリゴンの大きさが、ある数のピクセルの集合より大きくなるようなメッシュに変換するプログラムを用いる。 これにより、
    サブポリゴンの個数を減らすことが可能となるため、描画速度を上げることができる。 (2) 入力された形状プリミティブを各サブポリゴンの大きさが、ピクセルより小さくなるようなサブポリゴンメッシュに変換するプログラムを用いる。 これにより、ピクセルより小さな間隔の頂点に対して処理できるので、
    形状プリミティブを高品位な技法で描画できる。 例えば、曲面定義の形状プリミティブについては、完全な曲面で画面に表示できる。 (3) 入力された形状プリミティブをスクリーン座標系に投影されたサブポリゴンがピクセルと1対1で対応するようなサブポリゴンメッシュに変換する。 これは、頂点処理部30がピクセル単位の処理を行うのと同様になる。 このような変換と頂点処理部30での画像メモリ8
    0からの画像メモリ読み出し機能を用いると、様々な2
    次元画像処理効果が可能になる。

    【0054】一方、サブポリゴンメッシュを構成するサブポリゴンの大きさ、すなわち形状分割部10での分割の細かさを指定する方法には、以下のように幾つかの方法がある。 (1) 形状プリミティブのデータに分割の細かさの情報を添付する。 (2) 形状分割部10のプログラムによって、分割の細かさを動的に判断する。 具体的には、決められたフレーム時間の残り時間に応じて分割の細かさを変えることで、
    フレーム時間内に描画を終えるように調節する。 (3) 画面上でのサブポリゴンの大きさが指定されたピクセルサイズ以下になるまで分割を行う。 例えば、形状プリミティブから変換されるサブポリゴンメッシュを構成するサブポリゴンの数が指定した上限以下の間、分割を繰り返す。 また、これらの(1)〜(3)の方法を組合せた方法もある。

    【0055】(頂点処理部30について)頂点処理部3
    0は、形状分割部10からサブポリゴンメッシュを受け取り、そのサブポリゴンメッシュを構成するサブポリゴンの頂点単位に、頂点変位や座標変換や色付けや影付けの演算を様々なプログラムで行って、レンダリング処理部40が画像メモリ80上で描画を行うために必要なパラメータを計算し、そのデータをレンダリング処理部4
    0へ送る。 以下、この頂点処理部30の処理の概略を説明する。

    【0056】サブポリゴンメッシュに含まれる縦Pm個×横Pn個のサブポリゴンについての頂点処理部30の処理は、縦Pm+1個×横Pn+1個の頂点に対して行われる。 この結果から、縦Pm個×横Pn個のサブポリゴンの頂点の色を決定する。 この対応関係は、先に図6
    を用いて説明した通りである。

    【0057】頂点処理部30は頂点単位で演算を行うので、与えられた頂点座標値に対しプログラムまたはデータから求めた変位を加えて新しい座標値を計算することで、従来の技術では困難であった変位マッピング(displ
    ace mapping)を容易に実現できる。 また、後に説明する方法で、新しい座標値を基に法線ベクトル値も計算でき、変位マッピングの結果がライティングに反映されることによって、よりリアルな画像が生成できる。 この処理例については、後に図9で説明する。

    【0058】頂点処理部30は、画像メモリ読み出し経路60及びキャッシュ70を介して頂点単位の演算の際に画像メモリアクセス部50により画像メモリ80から読み出した画像データを読み込むことができる。 これにより、従来の技術では不可能であった画像メモリ80上の頂点単位のデータの利用が可能となる。 すなわち、画像メモリ読み出し経路60を備えることによって、従来はピクセル単位での処理しか出来なかった技法がサブポリゴンの頂点単位でプログラマブルに可能になる。

    【0059】このような画像メモリ80上の頂点単位のデータの利用の一例としては、サブポリゴンの頂点の色決定処理における画像メモリ80上のテクスチュアマップデータの利用が挙げられる。 具体的には、形状分割部10によってサブポリゴンメッシュの頂点が画面上で任意の間隔となるように形状プリミティブを分割できるので、頂点処理部30での処理時間と描画される画像の画質とのバランスをコントロールしつつ、テクスチュアマッピングや、デプスマップを用いた影付けが可能となる。

    【0060】例えば、テクスチュアマッピングに関しては、従来はラスタライズ処理部が持つ単純な機構によるマッピング技法しかできなかったのに対し、頂点処理部30ではプログラム処理で様々な技法が可能となる。 そして、形状分割部10による分割の細かさ(サブポリゴンの大きさ)が可変であるので、粗い分割を行ったメッシュは、処理する頂点の少なさから、少ない処理量での大まかなマッピングが可能である。 また、サブポリゴンがスクリーン座標系でピクセルより小さくなるような細かい分割を行ったサブポリゴンメッシュに対しては、ピクセル単位でのテクスチュアマッピングより高品位なマッピングに劣らない高品位なマッピングが可能である。
    このように処理時間や画質のコントロールが自由にできる。

    【0061】一方、デプスマップを用いた影付けでは、
    緻密な影を投影したいオブジェクトについては、形状プリミティブのサブポリゴンへの分割を細かくし、おおまかな影を高速に投影したいオブジェクトについては、サブポリゴンの分割を粗くするといったコントロールが可能となる。 この影付け処理の具体的な手順については、
    後に図10で説明する。

    【0062】また、画像メモリ80への塗り潰しを行うレンダリング処理部40においては、従来のラスタライズ部と同様に画像メモリ80からテクスチュア画像データを読み込む機能を持たせることにより、さらに複雑なマッピングが可能となる。 例えば、サブポリゴンの頂点単位の大まかな影付けにピクセル単位のテクスチュアマッピングを重ね合わせることができる。 また、テクスチュア模様の低周波部分についてはサブポリゴン単位で計算し、高周波部分はピクセル単位で計算して描画することも可能である。

    【0063】また、画像メモリ80内に図3に示したように階層構造を持った隠面消去用デプス・バッファ80
    2を構成することで、頂点処理部30での頂点単位の処理の早い段階で、計算された頂点のデプス値と画像読み出し経路60を用いて読み出した隠面消去用デプス・バッファ802の値との比較により、予備の隠面テストが可能となる。 この予備の隠面テストは、頂点が代表するサブポリゴンが他のオブジェクトより手前に来ないことだけを検査するテストである。 このテストにより、頂点が代表するサブポリゴンが他のオブジェクトより手前に来ないことが分かれば、頂点の色を決定する複雑で時間のかかる処理を行う必要がないことが分かり、このような無駄な処理を中断して効率を上げることができる。

    【0064】また、形状分割部10においてサブポリゴンの頂点とピクセルが一致するような分割を行うと、頂点処理部30が画像読み出し経路60及びキャッシュ7
    0を介して画像メモリ80内の画像表示用フレーム・バッファ801上の各ピクセルのデータを読み込み、それを使った演算結果を画像メモリ80内の画像表示用フレーム・バッファ801上の各ピクセルに戻すといった処理も可能である。 この処理例については、後に図11で説明する。 この処理においても、読み込んだピクセルの位置と書き込むピクセルの位置が同一である必要はない。

    【0065】これにより様々な2次元画像処理効果が可能となり、例えば画像メモリ80内の画像表示用フレーム・バッファ801上の複数の領域のピクセルのデータを頂点処理部30に入力すると、頂点処理部30の処理内容をプログラムによって幅広く記述できることになる。

    【0066】(頂点処理部30の出力データ形式について)頂点処理部30が処理したサブポリゴンメッシュのサブポリゴンをレンダリング処理部40及び画像メモリアクセス部50へ出力する際のデータ形式には、幾つかの形式がある。

    【0067】出力データ形式の一つは、従来のラスタライザ方式でも採用されている、三角形列(Triangle Stri
    p)のデータ構成である。 三角形列のデータ構成とは、複数の三角形を隣接した2つの三角形で一辺を共有するように連結して配置した構造において、隣接した2つの三角形で共有する頂点(共有する一辺の両端の頂点)のデータを省く構成であり、頂点処理部30の頂点単位の処理に合っている。

    【0068】図8に、サブポリゴンメッシュが4×4個のサブポリゴンで構成される場合の三角系列の例を示す。 まず、第1列の4つのサブポリゴンから、8個の三角形を含む10個の頂点からなる三角形列が構成される。 これは、図8の4つの黒丸の頂点において処理することで得られる。 なお、第2列目の左端の頂点は、サブポリゴンを代表しない頂点である。

    【0069】頂点処理部30の出力データ形式の他の例としては、一つのサブポリゴンを2つの独立した三角形として出力する形式や、一つのサブポリゴンを2つの三角形が連結された4個の頂点を有する三角形列として出力する形式がある。 これらの出力データ形式のどれが適しているかは、レンダリング処理部40及び画像メモリアクセス部50の構成による。

    【0070】頂点処理部30はプログラマブルであるので、任意の処理が可能である。 ここで、いくつかの処理例について説明する。 (頂点処理部30の処理例1)図9に示すフローチャートを用いて、ポリゴンメッシュデータに対する頂点処理部30での変位マッピングも含む頂点単位の処理について説明する。

    【0071】まず、頂点の座標値から、画像メモリ80
    内のテクスチュア・マップ・メモリ803上の変位マップのテクスチュア座標を求める(ステップS201)。
    次に、画像メモリ読み出し経路60により、画像メモリアクセス部50を経由して画像メモリ80内のから変位データを読み取る(ステップS202)。 この変位データにより、頂点座標に変位を加える(ステップS20
    3)。 次に、ステップS203で算出された変位後の座標値から法線ベクトルを求める(ステップS204)。
    法線ベクトルを求める方法については、後に図16を用いて詳しく述べる。 次にステップS204で得られた法線ベクトルに基づライティング計算(輝度計算)を行い、それに基づき頂点の色を算出する(ステップS20
    5)。 描画のために、頂点座標をスクリーン座標に変換し(ステップS206)、三角方程式の係数を求めることで、頂点が代表するサブポリゴンを構成する2つの三角形データを計算する(ステップS207)。

    【0072】ステップS207で得られた三角形データを画像メモリアクセス部50に出力すれば(ステップS
    208)、処理は終了する。

    【0073】(頂点処理部30の処理例2)図10に示すフローチャートを用いて、画像メモリ80内の光源デプスマップを用いて影付けを行うときの頂点処理部30
    での頂点単位での処理について説明する。 まず、光源デプスマップで計算するのに適するように、頂点の座標系を光源座標系に変換する(ステップS301)。 次に、
    この変換された光源座標系でのX,Y座標値から、画像メモリ読み出し経路60及びキャッシュ70を介して画像メモリアクセス部50により画像メモリ80内の光源デプス・バッファ805上の光源デプス(奥行き)値を読み出す(ステップS302)。

    【0074】次に、読み出した光源デプス値と光源座標系でのZ値を比較して影に入っているかどうかを判断し、その光源からの寄与率を求める(ステップS30
    3)。 次に、頂点の座標値から法線ベクトルを求め(ステップS304)、この法線ベクトルを使ってライティング計算を行い、これとステップS303で求めた寄与率に基づいて頂点の色を決定する(ステップS30
    5)。 法線ベクトルを求める方法については、後に図1
    6を用いてより詳しく述べる。 次に、描画のために頂点座標をスクリーン座標系に変換し(ステップS30
    6)、三角方程式の係数を求めることで、頂点が代表するサブポリゴンを構成する2つの三角形データを計算する(ステップS307)。 そして、ステップS307で得られた三角形データをレンダリング処理部40へ出力することにより(ステップS308)、処理は終了する。

    【0075】(頂点処理部30の処理例3)図11に示すフローチャートを用いて、2次元画像処理の例として頂点処理部30によって画像メモリ80内の作業メモリ領域(レンダリング用フレーム・バッファ806)上の画像を縦横共に半分にした画像を生成する処理の例を説明する。

    【0076】この処理を行うには、予め形状分割部10
    においてサブポリゴンがスクリーン座標系でピクセルと同じ大きさになるようにサブポリゴンメッシュを構成する必要がある。 頂点処理部30では、各頂点に対して図11に従った処理を行う。

    【0077】まず、頂点の座標をスクリーン座標値(X,Y)に変換する(ステップS401)。 このスクリーン座標値(X,Y)は、画像メモリ80内の画像表示用フレームバッファ801上の書き込みピクセル位置を指定するとともに、レンダリング用フレーム・バッファ806上の画像データの読み出し位置を指定するのに用いられる。

    【0078】X,Yをそれぞれ2倍した値に差分を加えていくことにより、スクリーン座標値(X,Y)を持つピクセル位置に書き込まれるデータの元になるレンダリング用フレーム・バッファ806上の4点のデータを読み込む(ステップS402〜S405)。

    【0079】次に、この4点のデータの平均を計算し、
    レジスタR5に代入する(ステップS406)。 レジスタR5の値を頂点の色として、描画のための三角方程式の係数を求め、頂点が代表するサブポリゴンを構成する2つの三角形データを計算する(ステップS407)。
    そして、ステップS407で得られた三角形データをレンダリング処理部40及び画像メモリアクセス部50に出力すれば(ステップS408)、処理は終了する。

    【0080】(SIMDアーキテクチャ)図12を用いて、頂点処理部30のより詳細な構成を説明する。 この頂点処理部30は、一つの制御部310と複数の演算部320,321,…,32Mを有する。 演算部320,
    321,…,32Mの数M+1をCnとする。 これらの演算部320,321,…,32Mは、並列計算アーキテクチャ分類では、いわゆるSIMD(Single instruct
    ion,multiple data stream)アーキテクチャである。

    【0081】すなわち、演算部320,321,…,3
    2Mは制御部310内のプログラムメモリ313で共有する同一プログラムの各命令を同時に同一のサイクルで実行する。 SIMDアーキテクチャには、全ての演算部が同じプログラムの同じ命令を実行しなくてはならない制約があるが、一つのメッシュの頂点は通常同じ特性を持つことから、同じプログラムを実行することは制約にならない。

    【0082】一方、このようなSIMDアーキテクチャ構成にすることで、命令読み込み機構など、個々の演算部320,321,…,32Mで持たずに、制御部31
    0に一つあればよい部分が多くなり、装置の構成効率が良くなる。 また、後述する法線ベクトルの計算などに際して隣接頂点データを同期的に使用できるのも、SIM
    Dアーキテクチャの利点である。 さらに、演算部32
    0,321,…,32Mは、本実施形態では論理的に1
    次元に配列されており、2次元配列より装置の構成が容易である。

    【0083】制御部310は、共有レジスタ群311、
    データメモリ312及びプログラムメモリ313を有する。 本実施形態では、データメモリ312及びプログラムメモリ313を制御部310の中に含んでいるが、これには限定されない。

    【0084】共有レジスタ群311は、各演算部32
    0,321,…,32Mで共通のデータ、あるいは共有するデータを格納する。 データメモリ312には、形状分割部10からのデータが溜められる。 このため、形状分割部10は頂点処理部30にデータを送り終えれば、
    次の形状プリミティブに対する分割処理に移ることができる。 プログラムメモリ313には、制御部310と演算部320,321,…,32Mを動作させるプログラムが格納される。

    【0085】演算部320,321,…,32Mは、それぞれローカルレジスタ群3201,3211,…,3
    2M1とローカルメモリ3202,3212,…,32
    M2を持ち、これらと共有レジスタ群311を用いて演算を行う。 本実施形態では、ローカルメモリ3202,
    3212,…,32M2は演算部320,321,…,
    32Mの中に含まれているが、外に置かれる構成でもよいが。

    【0086】さらに、ローカルレジスタ群3201,3
    211,…,32M1の相互間はデータ転送路によって接続されている。 これらのデータ転送路によって、ローカルレジスタ群3201,3211,…,32M1のうちの3211,…,32M1は、演算部320,32
    1,…,32Mの1次元配列方向において一方の側(図では左側)に隣接する演算部320,321,…,32
    M-1内のローカルレジスタ群3210,…,32M-11
    から転送されたデータを受け付けることが可能となっている。 これにより演算部320,321,…,32Mにおいて頂点単位の演算を行う際に、隣接する頂点に対する計算結果を利用することが可能となり、後述する法線ベクトル計算などを容易に行うことができる。

    【0087】演算部320,321,…,32Mでは、
    基本的には各頂点に関する演算がその頂点の座標値などのデータを用いてそれぞれ独立に行われる。 演算部32
    0,321,…,32Mは、通常は異なる頂点に対して演算を行うが、データの縮退などによって、複数の演算部が同一の頂点に対する演算を行うこともあり得る。

    【0088】頂点処理部30は、演算部320,32
    1,…,32Mを用いてサブポリゴンメッシュの各行について同時に演算を行う。 図13に、サブポリゴンメッシュの「行」を示す。 演算部320,321,…,32
    Mは、まず白丸で示す第1行について同時に演算を行い、次に黒丸で示す第2行について同時に演算を行い、
    以下、第3行、第4行…と順次1行ずつ同時に演算を行う。

    【0089】図14に、一つのサブポリゴンメッシュに対する頂点処理部30での処理の流れを示す。

    【0090】まず、形状分割部10からのサブポリゴンメッシュのデータを読み込む(ステップS501)。 このサブポリゴンメッシュの第1行を演算部320,32
    1,…,32Mの演算対象の行とし(ステップS50
    2)、演算対象の行の全ての頂点についての演算を演算部320,321,…,32Mで実行する(ステップS
    503)。 演算内容は、例えば先に図9や図10で示したものである。

    【0091】演算対象の行の演算が終了したら、まだ処理すべき次の行があるかを調べ(ステップS504)、
    全て処理し終えていたら終了する。 まだ処理すべき次の行があれば、それを演算対象とし(ステップS50
    5)、ステップS503に戻って演算を行う。

    【0092】このように頂点毎の計算は、頂点毎に独立に行われる。 しかし、例えば法線ベクトルの計算と三角形方程式の係数の計算においては、隣接頂点の計算結果が必要となる。 本実施形態における法線ベクトルと三角形方程式の係数の計算方法について説明する。

    【0093】(法線ベクトルの計算について)ライティング計算には法線ベクトル値が必要なので、サブポリゴンメッシュの各頂点で法線ベクトル計算が必要な場合がある。 例えば、形状プリミティブが曲面の場合や、頂点にバンプマッピングや変位マッピングを加える場合である。 一般に、法線ベクトルは平面や曲面の平行でない2
    つの接線ベクトルの外積として求められる。

    【0094】図15を用いて、サブポリゴンを平面とみなした場合の法線ベクトルの計算方法を説明する。 なお、以下のPO,PL,PU,PULは3次元座標値である。

    【0095】一つのサブポリゴンを代表する頂点の法線ベクトルNOは、 NO=normalize((PL−PO)×(PU−PO)) である。

    【0096】ここで、normalize関数はベクトルの長さが1となるように正規化する演算関数である。 また、×
    はベクトル外積計算である。 PL−POは、対象としている頂点の座標値POとその「左」に隣接する頂点の座標値PLの差分である。 PU−POは、対象としている頂点の座標値POと、その「上」に隣接する頂点の座標値PUの差分である。

    【0097】次に、図16に示すフローチャートを用いて、本実施形態における法線ベクトルの計算手順を説明する。 図16において、R1〜R10は各演算部32
    0,321,…,32Mの3次元要素または4次元要素を持つベクトル型のローカルレジスタを示す。

    【0098】まず、各演算部320,321,…,32
    Mが共有するプログラムは、次のようなものになる。 R
    3に、R1の内容を代入する(ステップS601)。 R
    4に、R2の内容を代入する(ステップS602)。 ここで、頂点の変位された座標値の計算をR3とR4のデータを破壊しないように計算し、R1に代入する(ステップS603)。 なお、R1の値は、ここ以外では書き込まないようにプログラミングする。

    【0099】ここで、「左」隣の演算部のローカルレジスタR1の値を読み出し、R2に代入する(ステップS
    604)。 なお、R2の値は、ここ以外では書き込まないようにプログラミングする。

    【0100】以上で、各ローカルレジスタにおいては、
    R1に頂点の変位された座標値PO、R2に「左」の頂点の変位された座標値PL、R3に「上」の頂点の変位された座標値PU、R4に「左上」の頂点の変位された座標値PULがそれぞれ入っているので、これらからR
    1とR2のデータを破壊しないように外積を求めて正規化する。 例えば、R7に、R2からR1をベクトル引き算する(ステップS605)。 R8に、R3からR1をベクトル引き算する(ステップS606)。 R9に、R
    7とR8の外積を代入する(ステップS607)。 R1
    0に、R9ベクトルの長さが1になるように正規化演算したものを代入する(ステップS608)。 というプログラムとなる。

    【0101】その後も、R1とR2のデータを破壊しないようにして、頂点処理プログラムを終了まで実行する。

    【0102】以上により、頂点単位に法線ベクトルが計算される。 この図16で説明した法線ベクトル計算は、
    図9で説明した処理例1または図10で説明した処理例2に含まれる。 次に、これらの頂点毎の処理をサブポリゴンメッシュの全頂点に対して行う場合の流れについて、再度図14と図16を用いて説明する。

    【0103】図14において、ステップS503の処理は各行毎に繰り返し実行される。 まず、ステップS50
    2からステップS503に進むとき、演算部320,3
    21,…,32Mでは、メッシュの第1列の頂点に対して同時に頂点処理を実行する。

    【0104】ここで、図16の処理が開始される時点では、R1とR2の値は不定であり、ステップS601とステップS602でその不定値がR3とR4に入れられる。 しかし、図6(c)で示したように、第1行の頂点はメッシュのサブポリゴンを代表しないので、これらの値は使用されない。 そして、次の行に必要な新しいR1
    とR2は正常に求められる。 この段階では、頂点処理部30からサブポリゴンは出力されない。

    【0105】次に、図14のステップ205からステップ203に進んでくる。 今度は、演算部320,32
    1,…,32Mはメッシュの第2行の頂点に対して同時に頂点処理を実行する。 ここでは、「上」列である第1
    列の演算結果R1とR2が残っており、これらR3とR
    4に代入することで、R3は「上」の頂点、R4は「左上」の頂点の座標値となる。 これと新たに計算されるR
    1とR2を用いて法線ベクトルが求められ、サブポリゴンの頂点の色情報が計算されて出力される。

    【0106】なお、各行の左端の頂点においても、
    「左」頂点からのR1の値が不定となるが、図6(c)
    に示すように、各行の左端の頂点もサブポリゴンを代表しないので問題ない。 これら左端の頂点でも、必要な演算結果R1は求められるので、その「右」の頂点は結果を利用できる。

    【0107】これをメッシュの全ての列に繰り返すことで、メッシュの全てのサブポリゴンの頂点に対しての法線ベクトルが求められることになる。 これらの法線ベクトルからライティングの計算が正しく行える。

    【0108】(サブポリゴンの三角方程式の係数計算について)一つのサブポリゴンのデータをレンダリング処理部40が処理するには、例えば、従来技術のラスタライズ技術を用いる方法がある。 これは図8で示したように、一つのサブポリゴンから2つの三角形を生成し、それらを三角形ラスタライズ方法で画像メモリに描画することになる。 これらの三角形は、独立した三角形として処理してもよいし、図8で示すような三角形列として処理されてもよい。

    【0109】このサブポリゴンを分割した2つの三角形は、図15で示した代表頂点に対して、「左」の頂点と「上」の頂点と「左上」の頂点からなる三角形A及び、
    この代表頂点と「上」の頂点と「左」の頂点からなる三角形Bの2つとなる。

    【0110】従って、法線ベクトルの計算と同様の方法で、ある頂点の「左」「上」「左上」の各頂点の頂点情報が利用できるので、それらを用いて従来の三角形ラスタライズ処理で必要な係数、例えば、三角形の各辺の傾き、デプス情報や色情報のX方向変位とY方向変位を求めることができる。

    【0111】(レンダリング処理部40及び画像メモリアクセス部50について)図17に示すように、レンダリング処理部40は一つまたは複数の単位レンダリング処理部400から構成され、画像メモリアクセス部50
    も一つまたは複数の単位アクセス部500から構成される。 単位レンダリング処理部400は、基本的に頂点処理部30からの三角形または三角形列をピクセル単位で描画する機能を有する。 この機能を実現するには例えば次の2つの方法があり、単位レンダリング処理部400
    は、これらのうちの少なくとも一つの方法を実行できる。 (1) 従来のラスタライズ部と同等の頂点処理部30から送られて来た三角形または三角形列について、それぞれの三角形を塗り潰す処理。 (2) ピクセルより小さい三角形を効率よくサンプリングして描画する。

    【0112】一方、単位アクセス部500は、頂点処理部30からのデータ読み出し要求に答えて画像メモリ8
    0上のデータを画像メモリ読み出し経路600を介して頂点処理部30に転送する機能を有する。

    【0113】図17における単位レンダリング処理部4
    00は、上記(1)の処理を実現する三角形ラスタライザ部410を有する。 この三角形ラスタライザ部410
    は、入力された三角形データから三角形の塗り潰しのためのピクセル単位の繰り返し処理を行い、単位アクセス部500を構成する画像メモリアドレス計算部510を使って画像メモリ80のメモリアドレスを指定し、画像メモリ80にピクセルデータを書き込む。 この際には、
    従来型アーキテクチャで用いられているスムーズ・シェーディング手法やテクスチュア・マッピング手法を適宜用いる。

    【0114】ピクセル単位のテクスチュア・マッピング処理では、繰り返し処理において画像メモリアドレス計算部510を使ってテクセルのメモリアドレスを指定し、画像メモリ80上のテクスチュアマップのテクセルデータを読み込む。

    【0115】次に、単位アクセス部500について説明する。 本実施形態では、三角形セットアップ処理を頂点処理部30で行う方法をとっているので、この単位アクセス部500は比較的単純な構成となり、図17に示すように画像メモリアドレス計算部510のみで実現される。

    【0116】すなわち、単位アクセス部500においては、頂点処理部30からの要求によって、画像メモリ8
    0上の指定された位置を画像メモリアドレス計算部51
    0を使ってメモリアドレスで指定し、画像メモリ80からデータを読み込んで頂点処理部30に返す。

    【0117】(頂点処理部30とレンダリング処理部4
    0/画像メモリアクセス部50との接続形態について)
    頂点処理部30と、図17に単位構成を示したレンダリング処理部40/画像メモリアクセス部50との接続形態については、幾つかの形態がある。 図18及び図19
    にその例を示す。

    【0118】図18に示す形態は、レンダリング処理部40及び画像メモリアクセス部50が頂点処理部30内の各演算部320,321,…,32Mと同じ個数の単位レンダリング処理部400,401,…,40M及び単位アクセス部500,501,…,50Mをそれぞれ有し、頂点処理部30からのデータを並列に処理する形態である。 画像メモリ80からのデータの読み出しも、
    頂点処理部30内の各演算部320,321,…,32
    Mと同じ個数の画像メモリ読み出し経路600,60
    1,…,60M及びこれらに挿入された単位キャッシュ700,701,…,70Mを介して並列に行われる。

    【0119】図19に示す形態は、レンダリング処理部/画像メモリアクセス部40/50が一つの単位レンダリング処理部/単位アクセス部400/500を有し、
    頂点処理部30からのデータを順次時分割で処理する形態である。 この場合には、演算部320,321,…,
    32Mから出力される三角形データは、三角形組み上げ部33を用いて三角形列に構成され、レンダリング処理部/画像メモリ40/50内の単位レンダリング処理部400に送られる。

    【0120】また、読み出し順序制御部/キャッシュ3
    4は、演算部320,321,…,32Mから同時に発生する画像メモリ80に対するデータの同時読み出し要求を順次読み出し要求に変換して、レンダリング処理部/画像メモリ40/50内の単位アクセス部500に送り、画像メモリ80から順次読み出されてきた画像データを蓄え、全てが揃った時点で演算部320,321,
    …,32Mに同時に転送する処理を行う。 従って、この構成では画像メモリ80のアクセスには時間がかかるが、レンダリング処理部/画像メモリ40/50の構成が簡単になるという利点がある。

    【0121】また、本実施形態ではキャッシュ70(単位キャッシュ700,701,…,70M)を画像メモリ読み出し経路60(600,601,…,60M)に備えるか、または読み出し順序制御部/キャッシュ34
    内に備えることにより、画像メモリ80に対するアクセスを減らすことができ、画像データの読み込み速度を上げることが可能となる。

    【0122】なお、キャッシュの位置は画像メモリ読み出し経路60(600,601,…,60M)や読み出し順序制御部/キャッシュ34の内部に限られるものではなく、例えば頂点処理部30や画像メモリアクセス部50の内部等、他の位置でも構わない。

    【0123】[第2の実施形態]図20は、本発明の第2の実施形態に係る描画演算装置を示している。 図2と同一部分に同一符号を付して説明すると、本実施形態では複数(N+1)個の頂点処理部30,31,…,3N
    と、同じくN+1個のレンダリング処理部/画像メモリアクセス部40/50,41/51,…,4N/5Nを有し、さらに形状分割部10の出力と頂点処理部30,
    31,…,3Nの入力とを任意に交換接続するための交換部20を備えている点が第1の実施形態と異なっている。

    【0124】各頂点処理部30,31,…,3Nは独立に動作し、互いに異なるプログラムを実行することができる。 また、各頂点処理部30,31,…,3N間に依存関係はないため、高速に動作する回路を設計することが容易になる。

    【0125】本実施形態においては、複数の頂点処理部30,31,…,3Nが同一個数の演算部を持つ必要は必ずしもない。 例えば、頂点処理部30,31,…,3
    Nの少なくとも一つが第1の実施形態で説明したような複数の演算部を持つ構成であり、他の少なくとも一つがライン型プリミティブ専用の2個の演算部を持つような構成であってもよいもよい。 その場合には、交換部20
    の制御に工夫が必要になる。

    【0126】本実施形態のように複数の頂点処理部3
    0,31,…,3Nを備えた構成によれば、単純に演算部を多く持つ一つの頂点処理部のみを備えた構成に比較して、より効率が向上する。

    【0127】例えば、幅の頂点数が少ない複数のメッシュが連続して形状分割部10から送られて来た場合を考える。 このような場合、第1の実施形態のように多数の演算部320,321,…,32Mを有する一つの頂点処理部30を用いた構成では、一つのメッシュについて幅の頂点数分の演算部しか有意な演算をせず、かつ、このメッシュの処理が終わるまで、次のメッシュの処理に移ることができない。

    【0128】これに対して、本実施形態では頂点処理部30,31,…,3Nのうちの一つの頂点処理部がある一つのメッシュの処理を行っていても、他の頂点処理部が次のメッシュの処理を行うことができるので、複数のメッシュに対して並列に演算が可能である。

    【0129】次に、本実施形態で新たに追加された交換部20について説明する。 図21に概略構成を示すように、交換部20は形状分割部10の出力と頂点処理部3
    0,31,…,3Nの入力との間の接続を形状分割部1
    0からの要求と頂点処理部30,31,…,3Nの動作状態に応じて切り替える。 図21において形状分割部1
    0からの出力線と頂点処理部30,31,…,3Nの入力線との交差部の白丸と黒丸で示すノードにスイッチが挿入され、黒丸で示すノードのスイッチがオンになっている。 これにより、この黒丸で示すノードを介して形状分割部10の出力と頂点処理部3Nの入力との間にデータ転送路が形成される。

    【0130】次に、図22に示すフローチャートを用いて、交換部20の処理の流れを説明する。 形状分割部1
    0から頂点処理部30〜4Nへの接続要求が起こるまで待機し(ステップS701)、形状分割部10から接続の切断要求をうけたなら(ステップS702)、接続を解除する(ステップS703)。 次に、頂点処理部3
    0,31,…,3Nのうちアイドル状態にあるもの(処理中でないもの)を探し、なければステップS702へ戻る(ステップS704)。 頂点処理部30,31,
    …,3Nに処理中でないものがあれば、形状分割部10
    の出力と処理中でない頂点処理部の入力との間のノードのスイッチをオンにして、両者を接続する(ステップS
    705)。

    【0131】[第3の実施形態]図23は、本発明の第3の実施形態に係る描画演算処理装置を示している。 図20と同一部分に同一符号を付して説明すると、本実施形態では複数(L+1)個の形状分割部10,…,1L
    と、これらの形状分割部10,…,1Lに入力を振り分ける入力振り分け部100を有する。

    【0132】入力振り分け部100は、複数の形状分割部10,…,1Lのうち処理を行っていないものを探し、その形状分割部に対して描画演算処理装置に入力されたデータ及びプログラムを送り込む。

    【0133】交換部21は、第2の実施形態における交換部20に複数の形状分割部10,…,1Lからの接続要求を制御できる機能を追加し、一つの形状分割部の出力と一つの頂点処理部の入力との間にデータ転送路を形成するものであり、図24に示すように形状分割部1
    0,…,1Lからの出力線と頂点処理部30,31,
    …,3Nの入力線との交差部の白丸と黒丸で示すノードにスイッチが挿入され、黒丸で示すノードのスイッチがオンになっている。 これにより図24の例では、黒丸で示すノードを介して形状分割部10の出力と頂点処理部3Nの入力との間、及び形状分割部1Lの出力と頂点処理部30の入力との間にそれぞれデータ転送路が形成される。

    【0134】形状分割部10,…,1LがSn個ある場合には、データ転送路としては同時に最大Sn個のデータ転送路を構成でき、形状分割部10,…,1Lを効率良く動作させることが可能となる。 交換部21の処理の流れとしては、先に説明した図22に示すフローチャートのステップS701,S702において、複数の形状分割部10,…,1Lからの接続要求及び切断要求の有無を検査するように変更すればよい。

    【0135】本実施形態において、複数の形状分割部1
    0,…,1Lは独立にプログラムを実行して独立に動作し、同一または異なるプログラムに従って、入力された形状プリミティブを分割する。 形状分割部10,…,1
    Lの一つの構成例としては、各形状分割部10,…,1
    Lが独立したインストラクション・メモリを持つ構成である。 形状分割部10,…,1Lの別の構成例としては、大型の共有プログラムメモリを持ち、各形状分割部10,…,1Lがインストラクション・キャッシュを持つ構成であり、プログラムメモリを効率的に持つことができる。

    【0136】第2の実施形態では、形状分割部10が一つであったため、一つの形状プリミティブの処理が終了するまで、次の形状プリミティブは処理できなかった。
    従って、複数の頂点処理部30,31,…,3Nの全てが動作しない場合がある。 これに対し、この第3の実施形態では複数の形状分割部10,…,1Lが並列に動作することで、単位時間当たりに頂点処理部30,31,
    …,3Nへ送ることができるメッシュデータが増えることにより、処理性能を上げることができる。

    【0137】また、ある形状分割部で分割演算に時間がかかる形状プリミティブを処理している場合、分割演算に時間がかからない後続の形状プリミティブを他の形状分割部が先に分割して頂点処理部に送ることで、さらに効率を上げることができる。

    【0138】

    【発明の効果】以上説明したように、本発明の描画演算処理装置によれば、形状プリミティブを複数のサブポリゴンに分割してサブポリゴンメッシュを生成する際の分割の細かさを任意に可変とすることにより、アプリケーション制作者が描画の速度と画質の制御を容易に行うことが可能となる。

    【0139】また、画像メモリに格納されたテクスチャアデータなどを用いたより高度な描画技法を頂点単位で用いることが可能であり、さらに効率よく頂点単位の処理を行うことができる。

    【0140】また、複数の頂点処理部を用いて複数のポリゴンメッシュに対する頂点処理を同時に行うことにより、頂点処理の能力を上げ、同じ時間内により高画質な画像の生成が可能となる。

    【0141】さらに、複数の形状分割部を用いて複数の形状プリミティブに対する分割処理を同時に行うことにより、形状プリミティブの処理能力を上げ、同じ時間内により高画質な画像の生成を可能とすることができる。

    【図面の簡単な説明】

    【図1】 本発明に係る描画演算処理装置が適用されるリアルタイム3次元コンピュータグラフィクスシステムの構成を示すブロック図

    【図2】 本発明の一実施形態に係る描画演算処理装置の構成を示すブロック図

    【図3】 描画演算処理装置内の画像メモリの構成を示すブロック図

    【図4】 描画演算処理装置内の形状分割部の構成を示すブロック図

    【図5】 形状分割部で四角形の形状プリミティブが複数のサブポリゴンメッシュに分割される様子を示す図

    【図6】 サブポリゴンメッシュがスクリーン座標への投影された様子とサブポリゴンメッシュに含まれるサブポリゴンの隣接関係とサブポリゴンの頂点及び頂点とサブポリゴンの対応について示す図

    【図7】 形状分割部での形状プリミティブの分割処理の流れを示すフローチャート

    【図8】 4×4のサブポリゴンメッシュと三角形列の関係を示す図

    【図9】 描画演算処理装置内の頂点処理部での頂点単位の処理の流れの一例を示すフローチャート

    【図10】 頂点処理部での頂点単位の処理の流れの他の例を示すフローチャート

    【図11】 頂点処理部での2次元画像処理の頂点単位の処理の流れの一例を示すフローチャート

    【図12】 頂点処理部の構成を示すブロック図

    【図13】 サブポリゴンメッシュの「行」を説明する図

    【図14】 一つのサブポリゴンメッシュに対する頂点処理部での処理の流れを示すフローチャート

    【図15】 一つのサブポリゴンの代表頂点と「左」
    「上」及び「左上」頂点について示す図

    【図16】 頂点処理部での頂点単位の法線ベクトル計算の流れの一例を示すフローチャート

    【図17】 描画演算処理装置内のレンダリング処理部及び画像メモリアクセス部の構成単位を示すブロック図

    【図18】 頂点処理部とレンダリング処理部及び画像メモリアクセス部の接続形態の一例を示すブロック図

    【図19】 頂点処理部とレンダリング処理部及び画像メモリアクセス部の接続形態の他の例を示すブロック図

    【図20】 本発明の第2の実施形態に係る描画演算処理装置の構成を示すブロック図

    【図21】 同実施形態に係る描画演算処理装置内の交換部の構成を示す図

    【図22】 図21の交換部の処理の流れを示すフローチャート

    【図23】 本発明の第3の実施形態に係る描画演算処理装置の構成を示すブロック図

    【図24】 同実施形態に係る描画演算処理装置内の交換部の構成を示すブロック図

    【符号の説明】

    10,1L…形状分割部 101…プロセッサコア 102…キャッシュ 103…プログラムメモリ 104…データメモリ 20,21…交換部 30,31,…,3N…頂点処理部 310…制御部 311…共有レジスタ群 312…データメモリ 313…プログラムメモリ 320,321,…,32M…演算部 3201,3211,…,32M1…ローカルレジスタ群 3202,3212,…,32M2…ローカルメモリ 40…レンダリング処理部 400,401,…,40M…単位レンダリング処理部 410…三角形ラスタライズ部 50…画像メモリアクセス部 500,501,…,50M…単位アクセス部 510…画像メモリアドレス計算部 60,600,601,…,60M…画像メモリ読み出し経路 70…キャッシュ 700,701,…,70M…単位キャッシュ 80…画像メモリ 801…画像表示用フレーム・バッファ 802…隠面消去用デプス・バッファ 803…ステンシル・バッファ 804…テクスチュア・マップ・メモリ 805…光源デプス・バッファ 806…レンダリング用フレーム・バッファ 90…画像出力部 100…入力振り分け部

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈