JP5216130B2 - A device to accelerate the processing of the extended primitive vertex cache - Google Patents

A device to accelerate the processing of the extended primitive vertex cache Download PDF

Info

Publication number
JP5216130B2
JP5216130B2 JP2011231190A JP2011231190A JP5216130B2 JP 5216130 B2 JP5216130 B2 JP 5216130B2 JP 2011231190 A JP2011231190 A JP 2011231190A JP 2011231190 A JP2011231190 A JP 2011231190A JP 5216130 B2 JP5216130 B2 JP 5216130B2
Authority
JP
Japan
Prior art keywords
primitive
vertex
size
extended
primitives
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011231190A
Other languages
Japanese (ja)
Other versions
JP2012014744A (en
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.)
Digital Media Professionals Inc
Original Assignee
Digital Media Professionals Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Media Professionals Inc filed Critical Digital Media Professionals Inc
Priority to JP2011231190A priority Critical patent/JP5216130B2/en
Publication of JP2012014744A publication Critical patent/JP2012014744A/en
Application granted granted Critical
Publication of JP5216130B2 publication Critical patent/JP5216130B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Description

本発明は,3次元コンピュータグラフィックスの分野に関する。より詳しく説明すると,本発明は,本明細書において拡張されたプリミティブと呼ばれる複雑な多くの頂点を有する幾何学的プリミティブのための情報処理をハードウェアにおいて高速に処理するための方法及びシステムに関する。   The present invention relates to the field of three-dimensional computer graphics. More particularly, the present invention relates to a method and system for processing information at high speed in hardware for geometric primitives with many complex vertices, referred to herein as extended primitives.

伝統的に、対話型コンピュータ図形は、複雑な幾何学的な形に近似して、ポイント、線、および三角形のような簡単な幾何学的なプリミティブを使用する。既存のコンピュータグラフィックスハードウェアは,そのような簡単なプリミティブ、特に三角形のメッシュの処理を高速化するように最適化されている。プリミティブの単純三角形は、3D表面のフラグメントの線形近似に使用することができる中で最も簡単な多角形である。様々な三角形、線、およびポイントでかなり複雑な形に近似することができる。現在既存のハードウェアの設計は大いに互いからそれらの系列でプリミティブの頂点を独自に処理する可能性の利益を得ることができる。   Traditionally, interactive computer graphics approximate simple complex geometric shapes and use simple geometric primitives such as points, lines, and triangles. Existing computer graphics hardware is optimized to speed up the processing of such simple primitives, especially triangular meshes. Primitive simple triangles are the simplest polygons that can be used for linear approximation of 3D surface fragments. Various triangles, lines, and points can be approximated to fairly complex shapes. Currently existing hardware designs can greatly benefit from the possibility of independently processing the vertices of primitives in their series from each other.

複雑な多頂点プリミティブの処理の必要性は3Dコンピュータグラフィックスの様々な領域に起こる。事実上、NURBSパッチとサブディビジョンサーフェスのような高次平面プリミティブで多くの複雑な形をモデルする。どちらの場合も、粗い制御メッシュと規則のセットは、滑らかできめ細かくかつ制御メッシュに影響することで容易に変形できるような形状を生成させるのに使用される。通常、パッチ自体はテッセレーションの過程を制御する追加情報と同様に制御メッシュの頂点の可変サイズセットによって形成される。ハードウェアでNURBSかサブディビジョンサーフェスパッチテッセレーションを有効にするのは対話的な3Dグラフィックスが大いに利益を得ることができる結果として、形状操作の格納、帯域幅要件、および単純さを大いに減少させる。もう1セットのアルゴリズムは一度に近似におけるただ一つの三角形より処理形のさらに複雑な一部分へのアクセスを必要とする。通常、三角形のいくらかの限られた近隣頂点へのアクセスがシルエット縁を検出するのに必要であり、メッシュ頂点での湾曲などについて計算する。   The need for complex multi-vertex primitive processing occurs in various areas of 3D computer graphics. In effect, many complex shapes are modeled with higher order plane primitives such as NURBS patches and subdivision surfaces. In either case, the coarse control mesh and rule set is used to generate a shape that is smooth, fine, and easily deformed by affecting the control mesh. Usually, the patch itself is formed by a variable size set of vertices of the control mesh, as well as additional information that controls the tessellation process. Enabling NURBS or subdivision surface patch tessellation in hardware greatly reduces shape manipulation storage, bandwidth requirements, and simplicity, as a result of which interactive 3D graphics can greatly benefit . Another set of algorithms requires access to a more complex part of the processing form than just a single triangle in the approximation at a time. Usually, access to some limited neighboring vertices of a triangle is necessary to detect silhouette edges, such as curvature at mesh vertices.

複雑なプリミティブの処理のサポートはいくつかの理由で既存の3Dグラフィックスアクセラレータ構造の中では難しい。アクセスが簡単な三角形のためだけに3つの頂点に制限されるとき、複雑なプリミティブの処理はすぐに、処理アルゴリズムのために複数の頂点への速いアクセスを必要とする。サブディビジョンサーフェスに使用されるものとNURBSパッチのようなプリミティブの複合体の頂点のための属性データがメモリの向こう側に点在する場合、アクセスはデータ転送におけるかなりのレイテンシをもたらすため処理アルゴリズムは低性能になるかもしれない。一度に単一の頂点を処理するために現在のプログラマブルアーキテクチャのジオメトリックパイプラインのプログラマブル処理要素を最適化する。そして、固定論理回路(いかなる他のプリミティブのタイプの上でも操作することができませんが、簡単なもの)で頂点の系列からプリミティブをアセンブリする。   Support for processing complex primitives is difficult among existing 3D graphics accelerator structures for several reasons. When access is limited to three vertices only for simple triangles, the processing of complex primitives immediately requires fast access to multiple vertices for processing algorithms. If the attribute data for the vertices of a complex of primitives such as those used for subdivision surfaces and NURBS patches are scattered across the memory, the processing algorithm can be used because access results in significant latency in data transfer. May be low performance. Optimize the programmable processing elements of the current programmable architecture's geometric pipeline to process a single vertex at a time. It then assembles primitives from a sequence of vertices with fixed logic (which can't be manipulated on any other primitive type, but simple).

パーソナルコンピュータとワークステーションに利用可能な3Dグラフィックスハードウェアアクセラレータのカーネル構造はいくつかの場合また、三角形、線、およびポイントのように簡単なプリミティブのリストの速い処理と表現で適応する。図1に、典型的な3Dグラフィックスハードウェアアクセルパイプラインの一部が示す。プリミティブのリストはインデックスバッファ1100と頂点バッファ1200によって説明される。通常、ホスト・マシンメモリ1000に記憶され、インデックスと頂点バッファの中身は図2Aと図2Bで例示される。図2Aの場合では、ことによるとある頂点を共有する1セットの三角形101が頂点バッファ1200とインデックスバッファ1100に連続して詰め込まれた1セットの頂点データによって表される。後者のコンテンツが頂点バッファのそばで頂点に参照をつけていて、インデックスバッファの三角形セット101、3位置の場合では、1100は三角形を定義する。次期3つの位置がセット101における次の三角形などを定義していて、頂点バッファ1200の中の頂点の大部分が再利用されるなら、どの点で、頂点バッファ1200の中の再利用された頂点が点を打たされた中詰めパターンでマークされる頂点データが通常インデックスバッファのインデックスよりはるかに多くの集積スペースを必要とするとき、三角形セットの代理はかなりコンパクトである場合がある。図2Bを参照して、表現は三角形片102の場合でさらに簡潔である。この場合、前の2つの頂点がインデックスバッファで参照をつけられている状態で取られた頂点は三角形を形成する。その結果、1つのインデックスだけが、最初のものが処理された後にさらなる三角形を定義するのに必要とされる。インデックスバッファの内容は、この場合1つの三角形あたりのインデックスリストの数に関してさらに効果的に三角形セットについて説明する。インデックスと頂点バッファを使用することで2つの頂点と1セットの先が1ポイントあたり1つの頂点で定義されている状態で1セットの線区分が定義した同様の方法を述べることができる。   The kernel structure of 3D graphics hardware accelerators available for personal computers and workstations also adapts in some cases with fast processing and representation of simple primitive lists such as triangles, lines, and points. FIG. 1 shows a portion of a typical 3D graphics hardware accelerator pipeline. The list of primitives is described by an index buffer 1100 and a vertex buffer 1200. Typically stored in the host machine memory 1000, the index and contents of the vertex buffer are illustrated in FIGS. 2A and 2B. In the case of FIG. 2A, possibly a set of triangles 101 sharing a vertex is represented by a set of vertex data continuously packed in the vertex buffer 1200 and the index buffer 1100. In the case where the latter content references vertices by the vertex buffer and the index buffer triangle set 101, position 3, 1100 defines a triangle. If the next three positions define the next triangle, etc. in set 101, and most of the vertices in vertex buffer 1200 are reused, at which point the reused vertex in vertex buffer 1200 Triangle set surrogates can be fairly compact when vertex data marked with a dotted padding pattern usually requires much more accumulated space than the index buffer. Referring to FIG. 2B, the representation is more concise in the case of the triangle piece 102. In this case, the vertices taken with the previous two vertices referenced in the index buffer form a triangle. As a result, only one index is needed to define further triangles after the first is processed. The contents of the index buffer describe the triangle set more effectively in this case with respect to the number of index lists per triangle. Using the index and vertex buffer, a similar method can be described in which a set of line segments is defined with two vertices and a set of tips defined by one vertex per point.

インデックスと頂点バッファを使用することで定義されたプリミティブのセットの処理を加速するために、頂点キャッシュ装置が用いられる。図1によると、インデックスバッファ1100の内容は、頂点バッファ1200を抽出するのに使用されるだけではなく、最近、同じインデックスがある頂点が処理されたかどうかまた検出するのに使用されて、キャッシュでまだ利用可能であるかもしれない。頂点キャッシュコントローラ2000は、インデックスバッファ1100の内容を取得し、それを分析する。初めはキャッシュが空であるので、頂点キャッシュコントローラはインデックスバッファ1100から第一の頂点キャッシュ3000に取得されたインデックスリストのための頂点データを含む頂点バッファ内容の配送を初期化する。通常、メモリアクセス潜在するペナルティを現在頂点キャッシュコントローラによってインデックスリストだけに処理されていない頂点データ対応を含むことができる比較的大きい連続したメモリブロック最小にする方法で頂点バッファから取得する。それにもかかわらず、それは第一の頂点キャッシュ3000でそれが後で分類調査されたインデックスリストによって使用されるかもしれないというので保持される。インデックスが第一の頂点に既にあるので頂点データが3000をキャッシュするなら、ホストメモリアクセスは全く実行されない。   A vertex cache device is used to accelerate the processing of a set of defined primitives by using an index and a vertex buffer. According to FIG. 1, the contents of the index buffer 1100 are not only used to extract the vertex buffer 1200, but are also used to detect if a vertex with the same index has recently been processed, in the cache. It may still be available. The vertex cache controller 2000 acquires the contents of the index buffer 1100 and analyzes it. Initially, since the cache is empty, the vertex cache controller initializes delivery of vertex buffer contents including vertex data for the index list obtained from the index buffer 1100 to the first vertex cache 3000. Typically, memory access potential penalties are obtained from the vertex buffer in a manner that minimizes a relatively large contiguous memory block that can contain vertex data correspondences that are not currently processed by the vertex cache controller only into the index list. Nevertheless, it is retained in the first vertex cache 3000 because it may be used later by the indexed index list. If the vertex data caches 3000 because the index is already at the first vertex, no host memory access is performed.

通常、第一の頂点キャッシュ3000に送られた頂点データは、変換される必要がある。
例えば、頂点の位置は、1個の座標系から別のものに変換される必要があることがある。頂点色は標準、位置などに基づいて計算される。頂点キャッシュコントローラ2000は頂点データの第一の頂点キャッシュから頂点処理装置4000までの配送を制御する。変換した頂点データを二次頂点キャッシュ5000に配送する。二次頂点キャッシュ5000から、変換した頂点データを用いて,頂点列から三角形、線、およびポイントのような固定セットのプリミティブを形成して、三角形セットアップ7000とラスタライザ8000が固定された処理パイプラインの残りにプリミティブをアセンブルし,固定プリミティブのアセンブリ6000に達する。インデックスが二次頂点キャッシュ5000でそれを提示するので、オーバーヘッドなしでいかなる他のものも変換した頂点データをプリミティブのアセンブリ6000に配送する。
Usually, the vertex data sent to the first vertex cache 3000 needs to be converted.
For example, vertex positions may need to be converted from one coordinate system to another. Vertex color is calculated based on standard, position, etc. The vertex cache controller 2000 controls the delivery of vertex data from the first vertex cache to the vertex processor 4000. The converted vertex data is delivered to the secondary vertex cache 5000. From the secondary vertex cache 5000, the transformed vertex data is used to form a fixed set of primitives, such as triangles, lines, and points, from the vertex sequence, and the processing pipeline with the triangle setup 7000 and rasterizer 8000 fixed. The remaining primitives are assembled and the fixed primitive assembly 6000 is reached. Since the index presents it in the secondary vertex cache 5000, it delivers the vertex data transformed to any other to the primitive assembly 6000 without overhead.

拡張プリミティブのハードウェアの加速している処理が特に複雑な形のモデルと画像分野にある状態で導入することができる利益のために、チップにおけるそのようなプリミティブの処理ができるハードウェアを設計するのに大きな努力がそそがれた。チップの上のサブディビジョンサーフェスとNURBS表面テッセレーションを含んでいて、それにもかかわらず、ほとんど問題の複雑なプリミティブの処理タスクに構造が捧げた完全に異なったハードウェアを紹介するか、既存の構造の中のプログラマブル要素の使用のために試みをした。簡単なプリミティブだけの定数と伝統的なアーキテクチャが、プリミティブ生成施設の不在のサポートでまだ制限されている。   Design hardware capable of processing such primitives on the chip for the benefit that accelerated processing of hardware for extended primitives can be introduced in particular in complex shaped models and image fields However, a great effort was intensified. Introducing completely different hardware, including subdivision surface on chip and NURBS surface tessellation, but nevertheless dedicated to the task of processing complex primitives in question or existing structures Attempted to use programmable elements in Simple primitive-only constants and traditional architectures are still limited by support for the absence of primitive generation facilities.

WO03/081528(特許文献1)には、それはいかなる他の目的のためにもそのハードウェアを再利用するか、または簡単なプリミティブの処理のために装置を共有する可能性とアプリケーションが複雑な構造を準備する必要性の不足がハードウェア処理に適したフォームで制御メッシュのための接続性情報について説明している状態でサブディビジョンサーフェスに制御メッシュの特別な記述を処理する専用ハードウェアユニットが開示されている。同様のアプローチは米国特許出願明細書2005/0012750(特許文献2)にも開示されており、NURBSパッチのハードウェアで加速している処理が実現されている。   WO 03/081528 describes a complex structure with the possibility of reusing its hardware for any other purpose or sharing devices for simple primitive processing. Dedicated hardware unit to process special description of control mesh on subdivision surface with a lack of need to prepare for, describing connectivity information for control mesh in a form suitable for hardware processing Has been. A similar approach is also disclosed in US Patent Application No. 2005/0012750 (Patent Document 2), which realizes accelerated processing with the hardware of the NURBS patch.

プログラマブル3D加速ハードウェアの導入で、それで複雑なプリミティブの処理を実行するのをいくつかの試みが行われた。それにもかかわらず、有効な実現は処理がまだ簡単なプリミティブだけにもかかわらず、どんなプリミティブの生成にも制限されていないとき施設が商業的に利用可能なハードウェアでは実現できていない。   With the introduction of programmable 3D acceleration hardware, some attempts were made to perform complex primitive processing with it. Nevertheless, an effective implementation has not been realized with commercially available hardware when the primitive is not limited to the generation of any primitive, even though it is still simple to process.

ランダムアクセス、頂点データに、特にサブディビジョンサーフェステッセレーションの場合における拡張プリミティブの処理に関する問題の1つは、必要な情報を処理アルゴリズムに提供することである。ランダムメモリアクセスは、現在既存のハードウェアで高価であって、処理パイプラインの限られた場所だけで可能である。現在既存のハードウェアで最も多能な能力はプログラマブルハードウェアで頂点かフラグメントプログラムで制御することができるメッシュ状のサンプリング抽出に関連する。メッシュ単位のランダムメモリアクセスの有用性のために、実現はメッシュに詰め込まれたメッシュ接続性情報を取得する。専用テッセレーションハードウェアの場合では、テッセレーションアルゴリズム実現に必要な情報の取得を許容する特別なメッシュ表現が、高い準備の欠点と共に使用されて、コストを維持している。ランダムなメモリアクセスができる伝統的アーキテクチャにおける現在の別の装置は、頂点キャッシュである。   One problem with processing extended primitives in the case of random access, vertex data, especially in the case of subdivision surface tessellation, is providing the necessary information to the processing algorithm. Random memory access is currently expensive with existing hardware and is possible only in limited places in the processing pipeline. The most versatile capability currently in existing hardware is related to mesh sampling that can be controlled by vertices or fragment programs with programmable hardware. For the usefulness of random memory access on a per-mesh basis, the implementation obtains mesh connectivity information packed into the mesh. In the case of dedicated tessellation hardware, special mesh representations that allow the acquisition of the information necessary to implement the tessellation algorithm are used with high preparation drawbacks to maintain cost. Another current device in traditional architectures that allows random memory access is the vertex cache.

WO03/081528パンフレットWO03 / 081528 brochure 米国特許出願明細書2005/0012750US Patent Application Specification 2005/0012750

本発明は,3次元コンピュータグラフィックスにおいて用いられるアルゴリズムなどにおける入力情報として用いられる,再分割表面パッチや,NURBSパッチ,隣接する三角形など,拡張された幾何学的プリミティブに関するチップ上のプロセッシングに関する問題を解決することを目的とする。そのようなアルゴリズムとして,4−3細分割スキームであるCatmull−Clarkループや,NURBS表面分割,シルエット発見,最も簡単な平面状の幾何学的プリミティブである三角形を構成するために3対状の頂点を要求するようなアルゴリズムなど,公知のコンピュータグラフィックスにおいて実装される様々なスキームを含む。   The present invention addresses on-chip processing related to extended geometric primitives such as subdivision surface patches, NURBS patches and adjacent triangles used as input information in algorithms used in 3D computer graphics. The purpose is to solve. Such algorithms include Catmull-Clark loop, which is a 4-3 subdivision scheme, NURBS surface segmentation, silhouette discovery, and triplet vertices to construct triangles, which are the simplest planar geometric primitives. Various schemes implemented in known computer graphics, such as algorithms that require

完全にチップ上で拡張された幾何学的プリミティブに関する情報処理を行うことは,複雑な幾何学的形状を迅速にレンダリングすることにつながる。さらには,コンピュータグラフィックスを用いてよりリアルな映像を得ることにつながり,三角形のような簡単なプリミティブを用いて直接に拡張されたプリミティブを得ることにもつながる。   Information processing on geometric primitives fully extended on chip leads to the rapid rendering of complex geometric shapes. Furthermore, it leads to obtaining more realistic images using computer graphics, and also to obtaining primitives that are directly extended using simple primitives such as triangles.

現在の3次元コンピュータグラフィックスにおけるプリミティブのサイズは,固定されている。例えば,三角形の場合には3つの頂点であり,直線の場合には2頂点であり,点の場合は1頂点である。一方,特に表面パッチの細分割における場合に用いられる,拡張されたプリミティブでは,プリミティブのサイズが任意のサイズであり得る。合理的な範囲での,最大範囲において,拡張されたプリミティブを用いる際には,チップ上で実現するために様々な頂点数のプリミティブが必要となる。   The size of primitives in current 3D computer graphics is fixed. For example, there are three vertices in the case of a triangle, two vertices in the case of a straight line, and one vertex in the case of a point. On the other hand, in the extended primitive used especially in the case of subdivision of the surface patch, the size of the primitive can be arbitrary. When using extended primitives in a reasonable range and at the maximum range, primitives with various numbers of vertices are required to be realized on the chip.

次なる問題は,特に拡張されたプリミティブを用いて情報を処理する際に用いられるランダムなメモリアクセスを達成する困難性である。プリミティブを構成する頂点データは,単純なプリミティブにおけると同様,記憶部において分散されて記憶されうる。ここで問題とされるのは,拡張されたプリミティブにおける頂点の数であり,それは通常より何倍か大きく,それに対応するだけの頂点データをフェッチするためにランダムにメモリにアクセスする必要が生ずることである。グラフィックス装置におけるランダムアクセスは,適切にキャッシングを行わなければ,重大な欠陥を生み出すために制限されており,通常は頂点キャッシュに関連した装置とテクスチャのサンプリングに関する装置に限って用いられている。   The next problem is the difficulty of achieving random memory access, particularly used when processing information using extended primitives. The vertex data constituting the primitive can be distributed and stored in the storage unit as in the simple primitive. The problem here is the number of vertices in the extended primitive, which is several times larger than usual, and it may be necessary to access memory randomly to fetch only the corresponding vertex data. It is. Random access in graphics devices is limited to creating serious defects if not properly cached, and is typically used only for devices related to vertex caches and texture sampling.

三角形のような簡単な幾何学的プリミティブのみをハードウェアを用いて効果的に利用すると,ゲート数を減らすことができなくなって,その結果,チップの構成を複雑にするという問題がある。拡張されたプリミティブを描画するための論理回路を単純なプリミティブ用の処理回路と別に設けることによっても,チップの構成を複雑にすることとなる。よって,単純なプリミティブと拡張されたプリミティブとを別々の処理回路ではなく,一つの処理系統で処理できれば,チップが複雑になるという問題を解決できる。   If only simple geometric primitives such as triangles are used effectively using hardware, the number of gates cannot be reduced, resulting in a problem of complicating the chip configuration. Even if the logic circuit for drawing the extended primitive is provided separately from the processing circuit for the simple primitive, the configuration of the chip is complicated. Therefore, if simple primitives and extended primitives can be processed by a single processing system instead of separate processing circuits, the problem that the chip becomes complicated can be solved.

さらに,拡張されたプリミティブを表現する際の問題がある。様々なタイプの拡張されたプリミティブに広く用いられるように,単純プリミティブ及び拡張されたプリミティブに対して,プロセッシングやAPI,すなわちアプリケーションプログラミングインターフェース,を統一するため,単純プリミティブにおけると同様に,記憶容量を軽減させ,データの転送速度を下げることが望まれる。以下では,本発明が上記の課題をどのようにして解決したのかについて説明する。   In addition, there are problems in expressing extended primitives. In order to unify the processing and APIs, ie application programming interfaces, for simple primitives and extended primitives as widely used for various types of extended primitives, the storage capacity is reduced as in simple primitives. It is desirable to reduce the data transfer rate. Hereinafter, how the present invention has solved the above-described problems will be described.

本発明は,基本的には,頂点にそれぞれインデックスを付して,そのインデックスをインデックスバッファに格納し,格納したインデックスを用いてプリミティブにおける頂点を表現した後,インデックスと関連する頂点情報を頂点バッファから読み出し,プリミティブの演算処理に用いる。さらに,通常のプリミティブは,三角形や四角形など定形のものを用いるが,本発明はこれら定形のものを用いつつも,頂点の数が4以上と通常より多いプリミティブをも用いる。このような頂点の数が可変で通常より多いプリミティブを可変サイズの拡張されたプリミティブとよぶ。本発明では,あるプリミティブに関する頂点情報が入力されると,そのプリミティブが通常のプリミティブか,可変サイズの拡張されたプリミティブかどうか判断する。この判断は,ひとつのプリミティブにおける頂点の数により容易に判断できる。そして,通常のプリミティブの場合は,通常と同様の装置を用いて通常と同様に演算処理を行ってもよい。一方,可変サイズの拡張されたプリミティブの場合は,中心となる多角形のインデックスを読みとり,その後中心となる三角形又は四角形に隣接する多角形のインデックスを読み取る。その上で,それらインデックスに関連する頂点データを取得し,プリミティブをアセンブルする演算処理を行う。本発明のシステムは,コンピュータから各種情報を受け取り,頂点に関する情報を変換する頂点エンジンと,頂点エンジンから変換された頂点情報などを受け取り,プリミティブをアセンブルするプリミティブエンジンとを具備する。そして,プリミティブエンジンによりアセンブルされたプリミティブは,ラスタライザによりラスタライズされ,3次元コンピュータグラフィックスなどとして,フレームバッファなどに格納され,モニタなどに描画される。頂点変換は,頂点に対する視点変換等の演算処理を意味する。プリミティブが,点であるか,線であるか,三角形であるか四角形以上の多角形であるか関係なしに,頂点情報に必要な演算処理を行う。プリミティブアセンブル(Primitive assemble)は,変換された個別の頂点を組み立ててプリミティブとすることを意味する。プリミティブアセンブル以後はプリミティブ毎に個別処理が行われる。本発明では,プリミティブが可変サイズを含んでもよい。プリミティブが三角形の場合のように,プリミティブサイズが3である場合は,インデックステーブルは3の倍数ごとにアクセスすればよい。そのため,装置は,3という数字を覚えているだけでよく,記述する必要は無い。しかし,本発明では,プリミティブサイズがプリミティブごとに変わりうるので,どこまでが次のプリミティブであるかわかりにくくなる。そこで,本発明では,常に次の何要素がプリミティブを構成するかわかるように記述することが好ましい。本発明では,プリミティブサイズをインデックステーブルに記述する。そして,本発明の好ましい態様である複数のインデックステーブルがある場合は,位置属性を含むインデックステーブルの中にプリミティブサイズを記述することが好ましい。   In the present invention, basically, an index is assigned to each vertex, the index is stored in the index buffer, the vertex in the primitive is expressed using the stored index, and the vertex information associated with the index is then displayed in the vertex buffer. Is used for primitive processing. Further, regular primitives such as triangles and quadrilaterals are used as normal primitives, but the present invention also uses primitives with more than four vertices, although these regular ones are used. Such primitives with a variable number of vertices and more than usual are called extended primitives of variable size. In the present invention, when vertex information related to a certain primitive is input, it is determined whether the primitive is a normal primitive or an extended primitive of variable size. This determination can be easily made based on the number of vertices in one primitive. In the case of a normal primitive, the arithmetic processing may be performed in the same manner as usual by using a device similar to the normal one. On the other hand, in the case of an extended primitive of variable size, the index of the polygon that becomes the center is read, and then the index of the polygon that is adjacent to the triangle or the rectangle that becomes the center is read. After that, the vertex data related to these indexes is acquired, and the arithmetic processing for assembling the primitive is performed. The system of the present invention includes a vertex engine that receives various types of information from a computer and converts information about vertices, and a primitive engine that receives vertex information converted from the vertex engine and assembles primitives. The primitive assembled by the primitive engine is rasterized by a rasterizer, stored as a three-dimensional computer graphics in a frame buffer or the like, and rendered on a monitor or the like. Vertex conversion means arithmetic processing such as viewpoint conversion for vertices. Regardless of whether the primitive is a point, a line, a triangle, or a polygon greater than a quadrangle, an arithmetic process necessary for vertex information is performed. Primitive assembly means that converted individual vertices are assembled into a primitive. After the primitive assembly, individual processing is performed for each primitive. In the present invention, the primitive may include a variable size. When the primitive size is 3, as in the case where the primitive is a triangle, the index table may be accessed every multiple of 3. Therefore, the device only needs to remember the number 3 and does not need to be described. However, in the present invention, since the primitive size can be changed for each primitive, it is difficult to understand how far the next primitive is. Therefore, in the present invention, it is preferable to always describe so that the following elements constitute the primitive. In the present invention, the primitive size is described in the index table. When there are a plurality of index tables that are a preferred aspect of the present invention, it is preferable to describe the primitive size in the index table including the position attribute.

より多くのオブジェクトを描画するために,頂点の数を減らすことが好ましい。たとえば,三角形のプリミティブごとに頂点を記述して隣接する2つの三角形を描画することを考える。第1の三角形は,頂点をvとして,(v,v,v:ただし,vは(x,y,z))から構成され,それぞれの頂点の色が,赤,白及び黄色とする。第1の三角形と隣接する第2の三角形は,p,及びpを共有するので(v,v,v:ただし,pは青)のように記述できる。すると,実際は頂点が4つしかないにもかかわらず,6つの頂点に関する記述が必要とされることとなる。すなわち,この方法は,簡単であるものの,n個の3角形を描画するために,3×n個の頂点に関する記述が必要となる。すなわち,記述しなければならない頂点数が多いので,多くのメモリを消費する。次に,三角形ストリップを使う場合について説明する。この描画方法は,第1のプリミティブの頂点に関する記述を行った後,次のプリミティブの記述を行う際に,共有する頂点に関する記述を利用するというものである。たとえば,プリミティブが三角形の場合,次の三角形は,前の三角形の2個の頂点を利用するという条件をつけて描画する。つまり、先に記述された三角形の頂点のうち先頭の頂点を除く頂点が次の三角形の2頂点となり,これと別の頂点を用いて,次の三角形を表現する。この方法では,メモリコストを大幅に軽減できる。しかしながら,依然としてn個の三角形を描画するために2×n個以上の頂点を記述する必要がある。 In order to draw more objects, it is preferable to reduce the number of vertices. For example, consider drawing a vertex adjacent to each triangle primitive and drawing two adjacent triangles. The first triangle is composed of (v 1 , v 2 , v 3 : where v m is (x m , y m , z m )), where the vertex is v m , and the color of each vertex is red , White and yellow. Since the second triangle adjacent to the first triangle shares p 2 and p 3 , it can be described as (v 2 , v 3 , v 4 : where p 4 is blue). Then, although there are actually only four vertices, a description about six vertices is required. That is, although this method is simple, a description of 3 × n vertices is required to draw n triangles. That is, since a large number of vertices have to be described, a large amount of memory is consumed. Next, a case where a triangle strip is used will be described. In this drawing method, after describing the vertex of the first primitive, the description about the shared vertex is used when the next primitive is described. For example, if the primitive is a triangle, the next triangle is drawn with the condition that two vertices of the previous triangle are used. That is, of the vertices of the triangle described above, the vertices excluding the top vertex are the two vertices of the next triangle, and the next triangle is expressed using another vertex. This method can greatly reduce the memory cost. However, it is still necessary to describe 2 × n or more vertices to draw n triangles.

本発明では,(v,v,v:ただし,vは(x,y,z))を表現するために,インデックステーブルを用いる,すなわち,インデックステーブルには,座標値ではなく単に(v,v,v)のような情報が格納され,この情報を用いて各頂点情報(例えば,vは(x,y,z)であり,赤という情報)を読み出す。すなわち,インデックステーブルには,v,v,vで1個の三角形を形成し,v,v,vで次の三角形を形成するように,インデックスを格納する。このように頂点エンジンの頂点バッファなどから頂点データを読み出すことができるインデックステーブルを用いるので,1個の頂点は1回記述すればよくなり、その結果、頂点の記述量が小さくて済む。一方,この方法では,インデックスを記述する必要がある。インデックステーブルの幅は、プリミティブによって異なり,プリミティブが三角形であれば3である。この方法では,一個の頂点が複数の三角形に共有されるため,ひとつの頂点に関する情報を繰り返し配送する必要がある。インデックステーブルは、通常は1個持つのが普通であり殆どの状況下で十分である。事実、OpenGL/ESインターフェースでは、インデックステーブルは1個だけ持つ。しかし頂点の属性、たとえばXYZ座標(位置属性)や色(頂点カラー属性)、テクスチャ座標(テクスチャ属性)それぞれに独立のインデックステーブルを持つインターフェースもある。そのようなインターフェースの有名な例としてはDirect3Dなどがあげられる。 In the present invention, an index table is used to express (v 1 , v 2 , v 3 : where v m is (x m , y m , z m )). Instead, information such as (v 1 , v 2 , v 3 ) is simply stored, and by using this information, each vertex information (for example, v 1 is (x 1 , y 1 , z 1 ) and is called red Information). That is, the index is stored in the index table so that one triangle is formed by v 1 , v 2 , v 3 and the next triangle is formed by v 2 , v 3 , v 4 . Since an index table that can read out vertex data from the vertex buffer or the like of the vertex engine is used in this way, one vertex only needs to be described once, and as a result, the amount of vertex description can be reduced. On the other hand, in this method, it is necessary to describe an index. The width of the index table differs depending on the primitive, and is 3 if the primitive is a triangle. In this method, since one vertex is shared by multiple triangles, it is necessary to repeatedly deliver information about one vertex. It is normal to have one index table, which is sufficient under most circumstances. In fact, the OpenGL / ES interface has only one index table. However, some interfaces have independent index tables for vertex attributes, such as XYZ coordinates (position attributes), colors (vertex color attributes), and texture coordinates (texture attributes). A famous example of such an interface is Direct3D.

本発明の要旨は,拡張された幾何学的プリミティブをプロセッシングできるようにするために,適切なグラフィックアクセレレータにおける頂点キャッシュ装置(vertex cache facilities)を用いることに関する。これは,従来技術に比べて追加された装置である,本発明において提案される拡張されたプリミティブのアッセンブルとプロセッシングを行うために用いられるプリミティブエンジン(プリミティブエンジン)と,拡張されたプリミティブを表現するために用いられるポリゴンメッシュを表現するための拡張されたインデックス/頂点バッファとを組み合わせて用いることにより達成される。   The subject matter of the present invention relates to the use of vertex cache facilities in a suitable graphics accelerator to allow processing of extended geometric primitives. This is a device added in comparison with the prior art, and represents the primitive engine (primitive engine) used for assembling and processing the extended primitive proposed in the present invention and the extended primitive. This is accomplished by using a combination of an extended index / vertex buffer to represent the polygon mesh used for the purpose.

本発明において,拡張されたプリミティブは,ポリゴンメッシュを表現するための拡張されたインデックス/頂点バッファに基づいて表現される。Direct3DやopenGLのような3次元グラフィックライブラリが現在あり、このような表現物を,ハードウェアを用いてポリゴンメッシュを迅速に処理する方法を提供している。表現過程において,頂点バッファは,プロセッシングされるポリゴンメッシュのそれぞれの頂点における頂点の属性(vertex attributes)を記憶し,一方,インデックスバッファの内容は,メッシュの接続情報を含む。インデックスバッファは,頂点バッファの内容を示すインデックス列を構成する頂点番号と関連した同じサイズのポリゴン列に関する記述を含む。あるポリゴンに属するインデックス列は,例えば頂点バッファにおける頂点データを参照することにより,そのポリゴンの頂点列を記述し,そして,ポリゴンにおける頂点の連続的な接続により形成されるポリゴンエッジ列を記述する。本発明においては,インデックスバッファは,ある決まったサイズの拡張されたプリミティブ列を記述するのと同じ方法のインデックスバッファを用いることができる。様々なサイズの拡張されたプリミティブを表現するため,プリミティブサイズとともに様々なサイズの拡張されたプリミティブを形成する頂点を参照する他のインデックスに前もってフィックスしておいたインデックス値を記憶する,インデックスバッファが用いられる。   In the present invention, the extended primitive is represented based on an extended index / vertex buffer for representing a polygon mesh. There are currently three-dimensional graphic libraries such as Direct3D and openGL, and a method for rapidly processing a polygon mesh using such a representation using hardware is provided. In the representation process, the vertex buffer stores vertex attributes at each vertex of the polygon mesh being processed, while the contents of the index buffer contain mesh connection information. The index buffer includes a description related to a polygon string of the same size associated with a vertex number constituting an index string indicating the contents of the vertex buffer. For example, an index string belonging to a polygon describes a vertex string of the polygon by referring to vertex data in the vertex buffer, and a polygon edge string formed by continuous connection of the vertices in the polygon. In the present invention, an index buffer can be used in the same way as an extended primitive sequence having a certain size. An index buffer that stores index values that have been previously fixed to other indices that reference the vertices that form the extended primitives of various sizes along with the primitive size to represent the extended primitives of various sizes Used.

そのように拡張されたプリミティブに関する演算処理を行うためにインデックスバッファ及び頂点バッファを改良することで,上述した問題を解決できる。拡張されたプリミティブやインデックスバッファのみに記憶されるインデックスを介した頂点リストにおける,付加的な頂点の数である頂点の数を特定しなければならないような,異なるサイズの固定サイズの拡張されたプリミティブや異なるサイズの可変サイズの拡張されたプリミティブを表現するのに十分である。サイズ,頂点リスト,及びある特別なタイプのプリミティブの形成は,プリミティブ形成アルゴリズムそのものによって行われ,それゆえ表現(representation)はプリミティブサイズによらない。これは,単純プリミティブの表現と同様である。グラフィックライブラリの観点からは,表現は,単純プリミティブの場合と同様であり,単純プリミティブ列を演算処理する場合に比べて拡張されたプリミティブ列を演算処理する場合であってもAPIに大きな変化は必要とされず,必要なメモリを軽減できる。   The problem described above can be solved by improving the index buffer and the vertex buffer in order to perform the arithmetic processing related to the extended primitive. Extended primitives of different sizes and fixed sizes that must specify the number of vertices, which is the number of additional vertices, in the vertex list via an index stored only in the extended primitive or index buffer Or enough to represent variable size extended primitives of different sizes. The creation of size, vertex list, and certain special types of primitives is done by the primitive creation algorithm itself, so the representation is independent of the primitive size. This is similar to the representation of simple primitives. From the point of view of the graphic library, the representation is the same as that for simple primitives, and even if the primitive sequence is expanded compared to the case of processing simple primitive sequences, a large change is required in the API. This reduces the required memory.

その表現により,頂点が頂点バッファに一度だけ格納されるようなプリミティブ間で頂点を共有するような場合においてメモリコストを軽減できる。単純プリミティブの場合と同様,インデックスを参照することは,ずっと少ないメモリ空間しか要求しない。   This representation can reduce memory costs when vertices are shared between primitives whose vertices are stored only once in the vertex buffer. As with simple primitives, referencing an index requires much less memory space.

本発明は,ハードウェアにより拡張されたプリミティブを迅速に演算処理するために,頂点キャッシュとプリミティブエンジンを組み合わせたものを用いる。頂点キャッシュは,直前に演算処理された頂点への短い待ち時間によるアクセスを可能とする。インデックスバッファ及び頂点バッファによる表現の場合は,頂点のインデックスがキャッシュタグとして用いられうる。それゆえ,頂点のインデックスがキャッシュ内のものと同じであれば,後者に格納されるものは,更なる演算処理のために用いられる。本発明は,好ましくは,頂点キャッシュを拡張されたプリミティブの演算処理のためにも用いる。   The present invention uses a combination of a vertex cache and a primitive engine in order to quickly compute a hardware extended primitive. The vertex cache enables access with a short waiting time to the vertex that has just been processed. In the case of the expression by the index buffer and the vertex buffer, the vertex index can be used as the cache tag. Therefore, if the vertex index is the same as that in the cache, the one stored in the latter is used for further computation. The present invention preferably also uses the vertex cache for arithmetic processing of extended primitives.

単純プリミティブと拡張されたプリミティブでは表現が類似しているので,拡張されたプリミティブにおいても単純プリミティブにおけると同様に直前に演算処理された頂点への待ち時間の短いアクセスにより頂点キャッシュを利用できる。これにより,拡張されたプリミティブの頂点データをフェッチする際に要求される沢山のランダムなアクセスによるパフォーマンスの劣化を解消できる。また,単純プリミティブと拡張されたプリミティブの演算処理において同じ頂点キャッシュのハードウェアを用いるので,ハードウェアサイズを軽減できる。また,頂点キャッシュを用いるので,拡張されたプリミティブの最大サイズに上限がなくなる。さらに,頂点キャッシュは固定サイズの拡張されたプリミティブにおける頂点にも,可変サイズの拡張されたプリミティブにおける頂点にも用いられる。しかしながら,演算処理を行う拡張されたプリミティブの最大サイズに合理的な上限が設けられる頂点キャッシュ中の頂点データを有するプリミティブを演算処理することで効果的な演算処理が可能となる。これにより,単純プリミティブより大きなサイズの固定サイズ又は可変サイズの拡張されたプリミティブを演算処理する際の問題を解決できることとなる。   Since simple primitives and extended primitives have similar expressions, vertex caches can be used for extended primitives with low latency access to vertices that have been processed immediately before, as in simple primitives. This eliminates performance degradation due to many random accesses required when fetching the extended primitive vertex data. Also, since the same vertex cache hardware is used in the arithmetic processing of simple primitives and extended primitives, the hardware size can be reduced. In addition, since the vertex cache is used, there is no upper limit on the maximum size of the extended primitive. In addition, the vertex cache is used for vertices in fixed size extended primitives as well as vertices in variable size extended primitives. However, effective arithmetic processing can be performed by performing arithmetic processing on primitives having vertex data in the vertex cache in which a reasonable upper limit is set on the maximum size of the extended primitive that performs arithmetic processing. As a result, it is possible to solve a problem in processing a fixed-size or variable-size extended primitive larger than a simple primitive.

本発明においては,拡張されたプリミティブのアッセンブル及び演算処理は,従来のハードウェアに付加されたモジュールであるプリミティブエンジンによって処理される。このモジュールは,入力情報を,頂点キャッシュから拡張されたプリミティブのそれぞれの頂点についての変換された頂点データの形式で受け取り,付加的に,キャッシュコントローラから可変サイズの拡張されたプリミティブに関するサイズ情報を受け取る。   In the present invention, the assembly and operation processing of the extended primitive are processed by a primitive engine which is a module added to conventional hardware. This module receives input information in the form of transformed vertex data for each vertex of the extended primitive from the vertex cache, and additionally receives size information about variable size extended primitives from the cache controller .

プリミティブエンジンは,拡張されたプリミティブの演算処理アルゴリズムを実行する。そのアルゴリズムは,拡張されたプリミティブの頂点列を解釈し,演算処理された結果を単純プリミティブの列として出力する。これにより以下の問題を解決できる。まずは,拡張されたプリミティブを演算処理する際の融通性(versatility)である。プリミティブエンジンにより制御されプログラマブルな場合は,どのような拡張されたプリミティブであっても,本発明により提案される拡張されたインデックスバッファ及び頂点バッファによる表現を用いることで,演算処理を実現でき,頂点データへの迅速なアクセスを行うことができる。頂点キャッシュへ直接接続するので,拡張されたプリミティブをアッセンブルし,演算処理するための頂点データを取得するための待ち時間の問題は大幅に軽減される。演算処理のためのパイプラインを再利用することや拡張されたプリミティブのチップ上で演算処理を行うこともこれに貢献する。拡張されたプリミティブに関する演算処理結果は,単純プリミティブ列であり演算処理パイプラインの結果により直接サポートされるので,ホストコンピュータへの演算処理結果を用いずに,拡張されたプリミティブ列が直接単純プリミティブ列へと変換されるので,チップ上のみでの演算処理を行うという問題を解決できる。   The primitive engine executes an extended primitive arithmetic processing algorithm. The algorithm interprets the extended primitive vertex sequence and outputs the computed result as a simple primitive sequence. This can solve the following problems. The first is versatility when processing extended primitives. In the case of being controlled and programmable by the primitive engine, any extended primitive can be realized by using the expression by the extended index buffer and the vertex buffer proposed by the present invention. Provides quick access to data. Since it connects directly to the vertex cache, the latency problem of assembling extended primitives and obtaining vertex data for processing is greatly reduced. Reusing the pipeline for arithmetic processing and performing arithmetic processing on the extended primitive chip also contribute to this. Since the operation result for the extended primitive is a simple primitive sequence and is directly supported by the result of the operation pipeline, the extended primitive sequence is directly used for the simple primitive sequence without using the operation result to the host computer. Therefore, the problem of performing arithmetic processing only on the chip can be solved.

拡張されたインデックス/頂点バッファ表現,単純プリミティブを演算処理する頂点キャッシュ論理回路に加えたわずかな修正と,プリミティブエンジンとを組み合わせて用いることで,固定サイズの拡張されたプリミティブ及び可変サイズの拡張されたプリミティブの演算処理を可能とし,NURBSテッセレーション(tessellation)など現状の3次元グラフィックハードウェアでは存在しない再分割表面レンダリングなどについての,チップ上での演算処理を可能とする。   By using a combination of extended index / vertex buffer representation, minor modifications to the vertex cache logic that computes simple primitives, and the primitive engine, fixed size extended primitives and variable size extended It is possible to perform arithmetic processing on a chip for subdivision surface rendering that does not exist in current three-dimensional graphics hardware such as NURBS tessellation.

図1は,頂点キャッシュ装置の従来におけるハードウェアアーキテクチャを示す。FIG. 1 shows a conventional hardware architecture of a vertex cache device. 図2Aは,三角形列をサンプリングするためのインデックス/頂点バッファのレイアウトを示す。図2Bは,三角形ストリップ列をサンプリングするためのインデックス/頂点バッファのレイアウトを示す。FIG. 2A shows an index / vertex buffer layout for sampling a triangle row. FIG. 2B shows the index / vertex buffer layout for sampling a triangle strip sequence. 図3は,本発明におけるアーキテクチャの頂点キャッシュを示す。FIG. 3 shows the vertex cache of the architecture in the present invention. 図4Aは,三角形とその近隣の固定サイズの拡張されたプリミティブを示す。図4Bは,三角形とその近隣の固定サイズの拡張されたプリミティブストリップ列を示す。図4Cは,三角形とその近隣の固定サイズの拡張されたプリミティブのインデックス/頂点バッファのレイアウトを示す。図4Dは,三角形とその近隣の固定サイズの拡張されたプリミティブストリップ列のインデックス/頂点バッファのレイアウトを示す。FIG. 4A shows a triangle and its neighboring fixed size extended primitives. FIG. 4B shows a triangle and its neighboring fixed-size extended primitive strip sequence. FIG. 4C shows a fixed size extended primitive index / vertex buffer layout of the triangle and its neighbors. FIG. 4D shows the index / vertex buffer layout of the triangle and its neighboring fixed-size extended primitive strip sequence. 図5Aは,三角形とその近隣の固定サイズの拡張されたプリミティブスファン列を示す。図5Bは,エッジベースのフラップのシルエットの構造を示す。図5Cは,三角形とその近隣の固定サイズの拡張されたプリミティブスファン列のインデックス/頂点バッファのレイアウトを示す。FIG. 5A shows a fixed-size extended primitive fan sequence around a triangle and its neighbors. FIG. 5B shows the silhouette structure of the edge-based flap. FIG. 5C shows the index / vertex buffer layout of a fixed-size extended primitive fan array of triangles and their neighbors. 図6Aは,可変サイズの拡張されたプリミティブを示す。図6Bは,可変サイズの拡張されたプリミティブによるCatmull−Clark再分割パッチを示す。図6Cは,可変サイズの拡張されたプリミティブによるCatmull−Clark再分割パッチのインデックス/頂点バッファのレイアウトを示す。FIG. 6A shows a variable-size extended primitive. FIG. 6B shows a Catmull-Clark subdivision patch with variable size extended primitives. FIG. 6C shows the index / vertex buffer layout of the Catmull-Clark subdivision patch with variable size extended primitives. 図7は,本発明により導入される頂点キャッシュ制御部, プリミティブエンジン及び固定サイズプリミティブ集積回路間の連絡通路を示す。FIG. 7 shows the communication path between the vertex cache controller, the primitive engine and the fixed size primitive integrated circuit introduced by the present invention. 図8Aは,シルエット検出と視覚化を行わない場合のレンダリング結果を示す。図8Bは,シルエット検出と視覚化を行った場合のレンダリング結果を示す。FIG. 8A shows a rendering result when silhouette detection and visualization are not performed. FIG. 8B shows a rendering result when silhouette detection and visualization are performed. 図9Aは,再分割を行わない場合のワイヤーフレーム形状のレンダリング結果を示す。図9Bは,再分割を行った場合のワイヤーフレーム形状のレンダリング結果を示す。FIG. 9A shows a rendering result of the wire frame shape when the re-division is not performed. FIG. 9B shows a rendering result of the wire frame shape when the re-division is performed. 図10Aは,再分割を行わない場合のワイヤーフレームのレンダリング結果を示し,ボックス内はメッシュの粗い要素を示す。図10Bは,再分割を行った場合のワイヤーフレームのレンダリング結果を示し,ボックス内は再分割中にスムージングを施されたメッシュの粗いエレメントを示す。FIG. 10A shows the rendering result of the wire frame when the subdivision is not performed, and the inside of the box shows the coarse elements of the mesh. FIG. 10B shows the rendering result of the wire frame when the subdivision is performed, and the inside of the box shows the coarse element of the mesh that is smoothed during the subdivision. 図11Aは,再分割を行わない場合のレンダリング像を示す。図11Bは,再分割を行った場合のレンダリング像を示す。FIG. 11A shows a rendered image when no re-division is performed. FIG. 11B shows a rendered image when re-division is performed.

101 単純三角形列
102 単純三角形ストリップ列
103 隣接するプリミティブを有する単純三角形
104 隣接するプリミティブを有する単純三角形ストリップ列
105 隣接するプリミティブファン列を有する単純三角形
106 Catmull−Clark 再分割表面パッチ群
107 Catmull−Clark 再分割表面パッチ群のモザイク
110-115
メッシュフラグメントの三角形
210 キャッシュデスティネーションマルチプレクサ
220 固定サイズプリミティブ集積回路ユニットソースマルチプレクサ
1000 ホストメモリ
1100 インデックスバッファ
1200 頂点バッファ
2000 頂点キャッシュ制御部
2100 頂点カウンタ
2300 頂点キャッシュ制御部とプリミティブエンジンとの間で頂点配送完了信号をやり取りする情報伝達パス
3000 頂点キャッシュ記憶部
4000 頂点処理ユニット
5000 第2の頂点キャッシュ記憶部
6000 固定サイズプリミティブ集積回路ユニット
7000 固定サイズプリミティブセットアップユニット
8000 プリミティブラステライザー
9000 プリミティブエンジン
9100 プリミティブサイズレジスタ
101 simple triangle row
102 simple triangle strip row
103 Simple triangle with adjacent primitives
104 Simple triangle strip sequence with adjacent primitives
105 Simple triangle with adjacent primitive fan train
106 Catmull-Clark subdivision surface patch group
107 Catmull-Clark Mosaic of subdivided surface patches
110-115
Mesh fragment triangle
210 Cache Destination Multiplexer
220 Fixed Size Primitive Integrated Circuit Unit Source Multiplexer
1000 host memory
1100 Index buffer
1200 vertex buffer
2000 Vertex cache controller
2100 vertex counter
2300 Information transfer path for exchanging vertex delivery completion signals between the vertex cache controller and the primitive engine
3000 vertex cache storage
4000 vertex processing units
5000 Second vertex cache storage
6000 fixed size primitive integrated circuit unit
7000 fixed size primitive setup unit
8000 Primitive Rasterizer
9000 primitive engine
9100 Primitive size register

以下,本発明の実施の形態について説明する。本発明は,基本的には,固定された又は可変の頂点数によって形成される複雑な幾何学的プリミティブ(拡張されたプリミティブともよぶ)のチップ上での処理に関する。   Hereinafter, embodiments of the present invention will be described. The present invention basically relates to on-chip processing of complex geometric primitives (also called extended primitives) formed by a fixed or variable number of vertices.

本発明の第1の側面は,単純プリミティブを記述するとともに,可変サイズの拡張されたプリミティブ列を,可変サイズの拡張されたプリミティブごとに4つ以上の頂点データを用いて記述する3次元コンピュータグラフィックスのための方法であって,複数の属性を含む頂点郡を保存でき,前記属性のバッファメモリ上の位置を,頂点列における頂点番号であるインデックスを整数倍した値と,属性のタイプを示す番号を用いてバイアスすることにより求めることができる頂点バッファを用いて,インデックスと属性のタイプを示す番号とを用いて,前記頂点バッファにおける,ある頂点の頂点属性のメモリ上の位置を特定する,頂点バッファの特定工程と,頂点列に関連して頂点バッファにおける頂点位置属性値列を格納し,可変サイズの拡張されたプリミティブのサイズをインデックスとして記憶し,前記固定サイズのプリミティブ列を,前記頂点列を用いて再構築できるようにし,前記可変サイズの拡張されたプリミティブ列を,プリミティブサイズをあわせて用いることにより再構築できるようにする,インデックスバッファにおけるインデックスを特定する,インデックスバッファの特定工程と,そして,前記工程で求められなかった残りの頂点属性について,可変サイズの拡張されたプリミティブであってもプリミティブサイズに関するインデックスを用いないことを除けば,頂点位置属性を求めると同様の方法によって,残留している全ての頂点属性を求める,複数のインデックスバッファの特定工程と,を有する方法に関する。本明細書において,拡張されたプリミティブは4つ以上の頂点を含んでもよく,頂点の数は,例えば,4,5,6,7,8,9又は10があげられる。   A first aspect of the present invention is a three-dimensional computer graphic that describes a simple primitive and describes a variable-size extended primitive sequence using four or more vertex data for each variable-size extended primitive. Can store a group of vertices containing multiple attributes, and indicates the position of the attribute in the buffer memory by multiplying the index that is the vertex number in the vertex sequence by an integer, and the type of the attribute Using a vertex buffer that can be determined by biasing with a number, using the index and a number indicating the type of attribute, identifying the position of the vertex attribute of a vertex in the vertex buffer in memory, Stores the vertex buffer attribute value sequence in the vertex buffer in relation to the specific process of the vertex buffer and the vertex sequence, variable size The size of the extended primitive is stored as an index, the fixed-size primitive sequence can be reconstructed using the vertex sequence, and the variable-size extended primitive sequence is used together with the primitive size. Primitives, even variable size extended primitives, for index buffer identification process, index buffer identification process, and remaining vertex attributes not found in the process The present invention relates to a method having a plurality of index buffer specifying steps for obtaining all remaining vertex attributes by a method similar to that for obtaining vertex position attributes except that no size-related index is used. In this specification, the extended primitive may include four or more vertices, and the number of vertices is, for example, 4, 5, 6, 7, 8, 9, or 10.

前記の方法は,前記固定サイズのプリミティブ列を前記頂点列を用いて再構築できるようにし,可変サイズの拡張されたプリミティブ列の場合はプリミティブサイズを用いることにより再構築できるように,頂点バッファにおける頂点位置属性の頂点列に対応したインデックス列を記憶するとともに,可変サイズの拡張されたプリミティブのサイズを前記インデックスバッファのインデックス値として記憶するインデックスバッファを特定する工程を含むので,いずれの固定サイズのそれを構成する頂点列から幾何学的プリミティブ列を再構築することができる。さらに,可変サイズの拡張されたプリミティブの頂点位置属性を参照するインデックス列の前にプリミティブサイズを含むことができるので,その方法は,そのサイズとそのサイズを形成する頂点列により再構築されうる可変サイズの拡張されたプリミティブを記述することができる。その方法は,さらに,残りの全ての頂点属性のために複数のインデックスバッファを特定する工程を含んでもよいので,それぞれの属性が自己のインデックスによりアドレスされ,それゆえ分離されたインデックスバッファが必要とされる場合,近隣の点など拡張されたプリミティブの頂点について全ての必要とされる頂点属性を特定することができる。   The method is such that the fixed size primitive sequence can be reconstructed using the vertex sequence, and in the case of variable size extended primitive sequences, it can be reconstructed using the primitive size. Since the index sequence corresponding to the vertex sequence of the vertex position attribute is stored, and the size of the variable-sized extended primitive is stored as the index value of the index buffer, the index buffer is specified. A geometric primitive sequence can be reconstructed from the vertex sequence that composes it. In addition, since the primitive size can be included before the index sequence that refers to the vertex position attribute of the variable size extended primitive, the method can be reconstructed by the size and the vertex sequence that forms the size. A size-extended primitive can be described. The method may further include identifying multiple index buffers for all remaining vertex attributes, so that each attribute is addressed by its own index, thus requiring a separate index buffer. If required, all required vertex attributes can be specified for extended primitive vertices, such as neighboring points.

本発明により導入された拡張されたプリミティブ列を特定するための方法の工程は,以下のメリットを有する。例えば,固定されたサイズ又は可変サイズの頂点列から再構築できるタイプなど,様々なタイプの拡張されたプリミティブを特定することができる。コンパクトインデックスにより参照されるプリミティブ列により共有される頂点として表現されることによりコンパクトになる。本方法は,三角形メッシュ/四角形メッシュを特定するための3次元グラフィックライブラリに用いられるインデックスバッファ/頂点バッファによる表現まで拡張されるので,拡張されたプリミティブ列及び三角形,四角形,線,点など単純プリミティブの列と比較して,拡張されたプリミティブ列を準備し複製するための応用のために,ライブラリAPIsをわずかに修正するだけですむ。各工程を以下に詳細に説明する。   The method steps for identifying extended primitive sequences introduced by the present invention have the following advantages. Various types of extended primitives can be identified, for example, types that can be reconstructed from fixed-size or variable-size vertex sequences. It becomes compact by being expressed as vertices shared by primitive sequences referenced by a compact index. Since this method is extended to the representation by the index buffer / vertex buffer used in the 3D graphic library for specifying the triangle mesh / rectangular mesh, simple primitives such as extended primitive sequences and triangles, rectangles, lines, points, etc. The library APIs need only be modified slightly for applications to prepare and duplicate extended primitive sequences. Each step will be described in detail below.

本方法は,固定されたサイズ又は可変サイズの拡張されたプリミティブ列を記述するために,単純プリミティブ列を表現するためのインデックス/頂点バッファを拡張する。本明細書において,単純プリミティブとは,三角形,四角形,線,点などコンピュータグラフィックスにおいて用いられる基本形状を意味する。そのようなプリミティブ列の演算処理は,openGLやDirect3Dなど3次元グラフィックライブラリにおいて通常最も大きな問題である。本明細書において,拡張されたプリミティブとは,4つ以上の頂点数を有する固定された数又は可変な数の頂点列により形成された幾何学的プリミティブを意味する。   The method extends the index / vertex buffer to represent simple primitive sequences to describe fixed size or variable size extended primitive sequences. In this specification, the simple primitive means a basic shape used in computer graphics such as a triangle, a quadrangle, a line, and a point. Such arithmetic processing of a primitive sequence is usually the biggest problem in a three-dimensional graphic library such as openGL and Direct3D. In this specification, the extended primitive means a geometric primitive formed by a fixed number or a variable number of vertex rows having four or more vertex numbers.

単純プリミティブを表現するためのインデックスバッファ/頂点バッファは,単純プリミティブがプリミティブを構成する頂点列として表現される単純プリミティブ列として表現されるものを意味する。頂点バッファは,コンピュータグラフィックスにおいて用いられる頂点属性の記憶装置を意味する。本明細書において,頂点属性は,プリミティブの頂点として用いられる4次元単一空間(homogeneous space)中の点と関連する属性を意味する。頂点属性の好ましい例は,空間内の点,色,テクスチャ座標,法線ベクトル,タンジェントベクトルなどを含む。属性は,スカラー,2つのコンポーネントベクトル,3つのコンポーネントベクトル,など様々な次元でありうるし,1バイト整数,2バイト整数,4バイト整数,4バイト浮動小数点など様々な値のタイプを取りうる。それぞれの属性の例は,その次元と値のタイプによって決めされるある固定されたメモリサイズの記憶装置を必要とする。頂点バッファを特定する方法は,同じ属性タイプの属性値がメモリ中に同じように配置されるような方法で,メモリ中に属性列を配置することを含む。それゆえ,頂点バッファ内のある属性の位置は,属性タイプと関連した列における位置と配置により容易にリカバーできる。従って,属性値は,その列における整数位置又はインデックスにより表すことができる。もしも全ての属性列が同じサイズを有するものであれば,当該列における頂点の数に関連して属性価の頂点列に由来する頂点のインデックス値は増加することとなる。そのような場合では,頂点列を特定することができ,それゆえ,インデックスバッファを用いずに単純プリミティブ列を特定できる。   The index buffer / vertex buffer for representing a simple primitive means that the simple primitive is represented as a simple primitive sequence represented as a vertex sequence constituting the primitive. The vertex buffer means a storage device for vertex attributes used in computer graphics. In this specification, the vertex attribute means an attribute related to a point in a four-dimensional homogeneous space used as a vertex of a primitive. Preferred examples of vertex attributes include points in space, colors, texture coordinates, normal vectors, tangent vectors, and the like. An attribute can have various dimensions such as a scalar, two component vectors, three component vectors, and can take various types of values such as a 1-byte integer, a 2-byte integer, a 4-byte integer, and a 4-byte floating point. Each attribute example requires a storage of a fixed memory size determined by its dimension and value type. A method for identifying a vertex buffer includes placing attribute strings in memory in such a way that attribute values of the same attribute type are similarly placed in memory. Therefore, the position of an attribute in the vertex buffer can be easily recovered by its position and placement in the column associated with the attribute type. Thus, an attribute value can be represented by an integer position or index in the column. If all the attribute columns have the same size, the index value of the vertex derived from the attribute value vertex sequence is increased in relation to the number of vertices in the column. In such a case, a vertex sequence can be specified, and therefore a simple primitive sequence can be specified without using an index buffer.

本明細書において,そのような状況は,「頂点バッファのみの表現」“vertex buffer-only representation”とよばれる。用語「インデックスバッファ」は,頂点属性インデックスと特定するための整数値の列を含むメモリ中のアレイを意味する。頂点列はそれに関連する頂点属性の全てのタイプのインデックス列のうち唯一のもののみを含む場合は,全ての頂点属性について頂点列を完全に記述するために,ひとつのインデックスバッファを特定すれば十分である。逆に,それぞれの頂点属性タイプが頂点列に関連して頂点インデックスの頂点属性に特異なものが存在する場合がある。そのような場合では,特定するためのインデックスバッファの数は,属性タイプの数と同じだけになる。頂点バッファとそれにおける全ての必要とされるインデックスアレイを有するインデックスバッファとを組み合わせることは,単純プリミティブの列により表現するインデックス/頂点バッファを形成することとなる。   In this specification, such a situation is referred to as a “vertex buffer-only representation”. The term “index buffer” means an array in memory that contains a sequence of integer values to identify a vertex attribute index. If a vertex sequence contains only one of all types of index sequences of its associated vertex attributes, it is sufficient to specify one index buffer to fully describe the vertex sequence for all vertex attributes It is. Conversely, there are cases where each vertex attribute type is unique to the vertex attribute of the vertex index in relation to the vertex sequence. In such cases, the number of index buffers to identify is only the same as the number of attribute types. Combining a vertex buffer with an index buffer with all the required index arrays in it forms an index / vertex buffer that is represented by a sequence of simple primitives.

頂点バッファを特定する工程は,上述したように,簡単なプリミティブ列におけるインテックスバッファ及び/又は頂点バッファのように各頂点に関連する頂点の属性(attributes)を特定するための工程である。   As described above, the step of specifying the vertex buffer is a step for specifying the vertex attributes associated with each vertex, such as the index buffer and / or the vertex buffer in a simple primitive sequence.

インデックスバッファを特定する工程は,頂点が拡張されたプリミティブを形成するために頂点位置の属性に関するインデックスを特定するための工程である。拡張されたプリミティブにおける様々な拡張されたサイズの属性のために,この工程は,頂点位置の特定のためのインデックスバッファ内のインデックス値によるプリミティブサイズを特定する工程を含む。可変サイズのプリミティブを用い頂点列がプリミティブを構成するものを実装する場合,この工程は,プリミティブごとにプリミティブサイズを特定することによる,拡張されたプリミティブ列を特定する工程を含んでも良い。本発明は,プリミティブのサイズと,プリミティブを形成できる頂点列と,頂点列の特定値とにより必要な情報の全てをそろえることができるような拡張されたプリミティブに用いることができる。   The step of specifying the index buffer is a step for specifying an index related to the attribute of the vertex position in order to form a primitive in which the vertex is extended. For the various extended size attributes in the extended primitive, this step includes specifying the primitive size by the index value in the index buffer for vertex position specification. If a variable-size primitive is used to implement a vertex sequence that constitutes a primitive, this step may include identifying an extended primitive sequence by specifying a primitive size for each primitive. The present invention can be used for an extended primitive in which all necessary information can be provided by the size of the primitive, the vertex sequence that can form the primitive, and the specific value of the vertex sequence.

本発明において,固定されたサイズの拡張されたプリミティブの例は,隣接を含む三角形“Triangle with Neighborhood”(TWN)プリミティブである。そのようなプリミティブは,三角形の各辺に隣接する3つの三角形を含むメッシュを構成するそれぞれの三角形を,3次元空間における三角形によって閉じた空間を構成するメッシュ(三角形が複数辺を共有することで連なってメッシュ状になったもの)において検討することで形成することができる。   In the present invention, an example of a fixed-size extended primitive is a triangle “Triangle with Neighborhood” (TWN) primitive that includes a neighbor. Such a primitive is a mesh that forms a space closed by triangles in a three-dimensional space (the triangles share multiple sides). It can be formed by studying in a continuous mesh).

図4(A)を参照して,上記を説明する。図4(A)は,三角メッシュの概念図である。図4(A)に示されるように,三角メッシュ上にフラグメント103が描画される。
頂点{v,v,v}によって形成される三角形に対しては,TWNプリミティブは,その三角形と,その三角形{v,v,v}の各辺{v, v}, {v, v}, {v, v}に隣接する三角形{v, v, v}, {v, v, v},{v, v, v}によって形成される。本明細書において,三角形{v, v, v}は,“中心”三角形とも呼ばれる。このようにTWNプリミティブを表現するために,全部で6個の頂点列が必要とされる。TWNプリミティブにおける頂点決定,すなわち,頂点位置間のマッピング方法とプリミティブ内での各頂点と他の頂点との接続関係の好ましい例は,たとえば以下のものがあげられる。頂点列{v, v, v}によって形成される三角形に隣接する三角形について,辺{v, v}, {v, v}, {v, v}に対応する頂点をv01, v12, v20(ただし,v01, v12, v20はそれぞれ中心三角形に隣接する三角形であって,上記の辺を共有する三角形の{v, v, v}以外の頂点)としたときに,TWNプリミティブを表現するための頂点列は,{v, v, v01, v, v20, v12}である。図4(A)に示される三角形{v, v, v}については,TWNプリミティブを表現するための頂点が{v, v, v, v, v, v}となる。すなわち,vjを,属性インデックスjを有する頂点位置とすると,中心三角形{v, v, v}のTWNプリミティブの特定インデックスの頂点位置列は,{2,1,0,3,4,5}となる。もしも,もともとのメッシュの端部が開いていれば,それらに隣接した少なくとも一つの三角形を隣接させることができ,もしもメッシュ中の全てのエッジが2つ以下の隣接する三角形しか有しない場合は,そのような全ての三角形に対して更にTWNプリミティブを生成できる。さらに,一つしか隣接する三角形を有しない辺に対しては,人工的に欠けた三角形を補うことも可能である。その一つの方法は,人工的に作られたオープンな辺の頂点を二度用いることによって,縮退された(degenerate)三角形を作ることである。上記と別の方法は,開端(open edge)とは反対位置にある中心三角形の頂点を用いる方法であり,その場合は三角形は縮退せずに中心三角形と(coincide)する。
The above will be described with reference to FIG. FIG. 4A is a conceptual diagram of a triangular mesh. As shown in FIG. 4A, the fragment 103 is drawn on the triangular mesh.
For a triangle formed by vertices {v 1 , v 2 , v 3 }, the TWN primitive is the triangle and each side {v 2 , v 1 } of the triangle {v 1 , v 2 , v 3 }. }, {v 1 , v 3 }, {v 3 , v 2 }, {v 0 , v 1 , v 2 }, {v 1 , v 5 , v 3 }, {v 2 , v 3 , v 4 }. In this specification, the triangles {v 1 , v 2 , v 3 } are also referred to as “center” triangles. In order to express the TWN primitive in this way, a total of 6 vertex sequences are required. Preferred examples of the vertex determination in the TWN primitive, that is, the mapping method between the vertex positions and the connection relation between each vertex in the primitive and other vertices are as follows. For triangles adjacent to the triangle formed by the vertex sequence {v 0 , v 1 , v 2 }, correspond to edges {v 0 , v 1 }, {v 1 , v 2 }, {v 2 , v 0 } The vertices are v 01 , v 12 , v 20 (where v 01 , v 12 , v 20 are triangles adjacent to the central triangle, respectively, and {v 0 , v 1 , v 2 of the triangle sharing the above-mentioned side] Vertices for expressing the TWN primitive are {v 0 , v 1 , v 01 , v 2 , v 20 , v 12 }. For the triangle {v 2 , v 1 , v 3 } shown in FIG. 4A, the vertices for expressing the TWN primitive are {v 2 , v 1 , v 0 , v 3 , v 4 , v 5 }. It becomes. That is, if vj is the vertex position having the attribute index j, the vertex position sequence of the specific index of the TWN primitive of the center triangle {v 2 , v 1 , v 3 } is {2,1,0,3,4, 5}. If the edges of the original mesh are open, then at least one triangle adjacent to them can be adjacent, and if all edges in the mesh have no more than two adjacent triangles, Further TWN primitives can be generated for all such triangles. Furthermore, for a side having only one adjacent triangle, an artificially missing triangle can be supplemented. One way is to create a degenerate triangle by using the artificially created open edge vertices twice. Another method is to use the vertex of the central triangle located at the opposite position from the open edge, in which case the triangle is not degenerated and coincide with the central triangle.

固定サイズの拡張されたプリミティブ列は,プリミティブ列におけるそれぞれのプリミティブの頂点列を連結(concatenate)することにより形成することができる。頂点位置の属性についてのインデックスバッファは,連結された列における頂点の頂点位置属性のインテックス列として表現することができる。TWNプリミティブについては,3つの好ましいプリミティブ列の表現方法がある。すなわち,別々のTWNプリミティブ列として表現するもの,TWNストリップとして表現するもの,及びTWNファンとして表現するものである。それらは,別々の中心三角形列に基づくもの,中心三角形のストリップに基づくもの,及び中心三角形のファンに基づくものである。 A fixed-size extended primitive sequence can be formed by concatenating the vertex sequences of each primitive in the primitive sequence. The index buffer for vertex position attributes can be expressed as an intex sequence of vertex position attributes of vertices in the concatenated sequence. For TWN primitives, there are three preferred primitive string representation methods. That is, what is expressed as a separate TWN primitive sequence, what is expressed as a TWN strip, and what is expressed as a TWN fan. They are based on separate central triangle rows, based on central triangle strips, and based on central triangle fans.

セパレートされたTWNプリミティブ列は,それぞれの三角形に対するTWNプリミティブを中心三角形とし,それぞれの生成されたTWNプリミティブに対する頂点を(concatenate)することにより,設計できる。図4(A)では,中心三角形{v, v, v}と{v, v, v}からなる列により形成されるTWNプリミティブのフラグメント(fragment)を図示している。対応する頂点は{v, v, v, v, v, v, v, v, v, v, v, v}であり,対応する頂点位置の属性に対応するインデックス列は図4(C)に示されるように{2,1,0,3,4,5,3,1,2,5,6,7}.である。 Separated TWN primitive sequences can be designed by concatenating the vertices for each generated TWN primitive with the TWN primitive for each triangle as the central triangle. FIG. 4A illustrates a TWN primitive fragment formed by a sequence of central triangles {v 2 , v 1 , v 3 } and {v 3 , v 1 , v 5 }. The corresponding vertices are {v 2 , v 1 , v 0 , v 3 , v 4 , v 5 , v 3 , v 1 , v 2 , v 5 , v 6 , v 7 }, and the corresponding vertex position attributes The index string corresponding to is {2,1,0,3,4,5,3,1,2,5,6,7}. As shown in FIG.

TWNストリップは,三角形ストリップにより構成することができる。三角形ストリップにおいて,2つの連続する三角形が2つの頂点を共有するという事実により,それぞれのプリミティブにつき2つの頂点のみによりストリップにおける第2の又は次のTWNプリミティブを定義付けることができる。本発明において,頂点列{v, v, v, v, v, v,…}によって形成される三角形ストリップ,{v, v, v, v, vv5,…}辺に沿ってその辺に対して反対側にある三角形ストリップに隣接する三角形に隣接する三角形の頂点列{v01, v02, v13, v24, v35,…}によって形成される三角形ストリップに対して,TWBストリップにより定義される頂点列は以下のようになる。すなわち,{v, v, v01, v, v02, v, v13, v, v24, v, v35,…}であって,最初の6個の頂点列は,最初のTWNプリミティブを定義するものであり,次の2つずつの頂点は,それに続くTWNプリミティブをあらわすものである。図4(B)では,2つの三角形{v, v, v}と{v, v, v}により構成される三角形ストリップ104によるメッシュフラグメントが表現されている。このストリップは,4つの長さの頂点列{v, v, v, v}により形成することができる。図4(B)の例では,TWNストリップを定義する2つのTWNプリミティブは,{v, v, v, v, v, v, v, v}となり,それに対応する頂点位置の特定に対するインデックス列は,図4(D)に示されるように{2,1,0,3,4,5,7,6}となる。 A TWN strip can be composed of a triangular strip. In the triangle strip, the fact that two consecutive triangles share two vertices allows the second or next TWN primitive in the strip to be defined by only two vertices for each primitive. In the present invention, triangular strips formed by vertex rows {v 0 , v 1 , v 2 , v 3 , v 4 , v 5 ,...}, {V 0 v 1 , v 0 v 2 , v 1 v 3 , v 2 v 4 , v 3 v 5,...} along the side of the triangle adjacent to the triangle strip on the opposite side of the side, the vertex row {v 01 , v 02 , v 13 , v 24 , For the triangle strip formed by v 35 ,...}, the vertex sequence defined by the TWB strip is: That is, {v 0 , v 1 , v 01 , v 2 , v 02 , v 3 , v 13 , v 4 , v 24 , v 5 , v 35 , ...}, and the first six vertex rows are , Define the first TWN primitive, and the next two vertices represent the following TWN primitive. In FIG. 4B, a mesh fragment is represented by a triangle strip 104 composed of two triangles {v 2 , v 1 , v 3 } and {v 3 , v 1 , v 5 }. This strip can be formed by four length vertex sequences {v 2 , v 1 , v 3 , v 5 }. In the example of FIG. 4B, two TWN primitives that define a TWN strip are {v 2 , v 1 , v 0 , v 3 , v 4 , v 5 , v 7 , v 6 }, and correspond to them. The index string for specifying the vertex position is {2,1,0,3,4,5,7,6} as shown in FIG.

TWNストリップと同様にして,TWNファンも三角形ファンから形成することができる。TWNファンによっても,相当する中心となる三角形ファン列のTWNプリミティブ列を表現するために必要とされるインデックスバッファの数を軽減することができる。本発明において,三角形ファンは,頂点列{v, v, v, v, v, v,…}と,{v, v, v, v, v,…}辺に沿って,その辺の反対側の頂点における三角形ファンにおける三角形に隣接する三角形の頂点{v01, v12, v23, v34, v45,…}により形成することができる。TWNファンを定義づける頂点列は,{v, v, v01, v, v12, v, v23, v, v34, v, v45,…}で表され,最初の6つの頂点は最初のTWNプリミティブ を意味し,続く2つごとの頂点は,連続するTWNプリミティブを定義するものである。ここで,最初の6つの頂点列がTWNストリップの場合と異なることに留意されたい。図5(A)は,三角形ファン105を構成する2つの三角形{v, v, v}と{v, v, v}とによるメッシュフラグメントを示す。このファンは,長さが4の頂点列{v, v, v, v}により表現することができる。図5(A)に示される本発明においては,2つのTWNプリミティブによるTWNファンの頂点列は{v, v, v, v, v, v, v, v}となり,それに対応する頂点位置の属性に対するインデックス列は図5(C)に示されるように{2,1,0,3,5,4,6,7}となる。 Similar to the TWN strip, the TWN fan can also be formed from a triangular fan. Also with the TWN fan, it is possible to reduce the number of index buffers required for expressing the TWN primitive string of the triangle fan string corresponding to the center. In the present invention, the triangular fan has a vertex sequence {v 0 , v 1 , v 2 , v 3 , v 4 , v 5 ,...} And {v 0 v 1 , v 1 v 2 , v 2 v 3 , v 3 v 4 , v 4 v 5 ,...} Along the edge, the vertex of the triangle adjacent to the triangle {v 01 , v 12 , v 23 , v 34 , v 45 , v 45 , v ...}. The vertex sequence that defines the TWN fan is represented by {v 0 , v 1 , v 01 , v 2 , v 12 , v 3 , v 23 , v 4 , v 34 , v 5 , v 45 ,. The six vertices in the mean the first TWN primitive, and every two vertices that follow define a continuous TWN primitive. Note that the first six vertex rows are different from the TWN strip. FIG. 5A shows a mesh fragment by two triangles {v 2 , v 1 , v 3 } and {v 2 , v 3 , v 4 } constituting the triangle fan 105. This fan can be expressed by a vertex sequence {v 1 , v 2 , v 3 , v 4 } having a length of 4. In the present invention shown in FIG. 5A, the vertex sequence of the TWN fan by the two TWN primitives is {v 2 , v 1 , v 0 , v 3 , v 5 , v 4 , v 6 , v 7 }. , The index string corresponding to the attribute of the vertex position corresponding thereto is {2,1,0,3,5,4,6,7} as shown in FIG.

可変サイズの拡張されたプリミティブの好ましい例は,カトマル−クラーク(Catmull−Clark)の細分割パッチプリミティブ(CCSP)を含む。本発明において,CCSPは,それぞれのポリゴンにおいて,4つと異なる隣接するエッジと異なる番号のひとつ以上の頂点を有する四角形メッシュにより表現されるポリゴンから構成される。Catmull−Clarkの再分割による四角形メッシュという観点から,4つと異なる隣接するエッジと異なる番号のひとつ以上の頂点(a vertex with a number of
adjacent edges being different from four)は,イレギュラーな頂点とよばれる。また,ある頂点に隣接するエッジの数は,頂点価(a valence of vertex)とよばれる。つまり,頂点価が4以外の場合は,Catmull−Clarkの再分割の観点からするとイレギュラーな頂点とみなされる。CCSPプリミティブは,四角形における各頂点と,それら四角形の各頂点を共有するポリゴンにおける隣接する全ての頂点とによって形成される。CCSPプリミティブにおいて,その中心に位置する四角形を中心四角形とよぶ。もしもイレギュラー頂点の頂点値が存在する場合,中心四角形は,メッシュにおける他の四角形と異なり,中心四角形の周囲の四角形や,CCSPプリミティブにおける頂点の数も変化する。CCSPプリミティブでは,イレギュラーな頂点価に関連する頂点の数は,VをCCSPプリミティブにおける頂点の数とし,Vをイレギュラーな頂点の頂点価とすると,N=2*V+8のように表すことができる。なお,この場合においてVに所定数を乗算することをスケーリング,2をスケールとよび,8など所定の数を加えることをバイアスとよぶ。
A preferred example of a variable size extended primitive includes the Catmul-Clark subdivision patch primitive (CCSP). In the present invention, the CCSP is composed of polygons each represented by a quadrilateral mesh having four or more adjacent edges and one or more vertices having different numbers. From the point of view of a quadrilateral mesh by Catmull-Clark subdivision, a vertex with a number of adjacent edges that differ from four and a number of vertices
Adjacent edges being different from four) are called irregular vertices. The number of edges adjacent to a vertex is called a valence of vertex. That is, when the vertex value is other than 4, it is regarded as an irregular vertex from the viewpoint of Catmull-Clark subdivision. A CCSP primitive is formed by vertices in a rectangle and all adjacent vertices in a polygon sharing each vertex of the rectangle. In the CCSP primitive, a rectangle located at the center is called a center rectangle. If vertex values of irregular vertices exist, the center rectangle is different from other rectangles in the mesh, and the number of vertices around the center rectangle and the CCSP primitive also change. In the CCSP primitive, the number of vertices related to the irregular vertex value is expressed as N = 2 * V + 8, where V is the number of vertices in the CCSP primitive and V is the vertex value of the irregular vertex. be able to. In this case, multiplying V by a predetermined number is called scaling, 2 is called scale, and adding a predetermined number such as 8 is called bias.

サイズが知られているので,CCSPプリミティブは,連続する頂点列における頂点間にマッピングされる頂点列(sequence)によって表現することができ,それによりCCSPプリミティブの位置が決定される。本発明の好ましい態様では,頂点列(sequence)とマッピングは以下のように形成される。四角形のメッシュについては,CCSPプリミティブは,頂点{v, v, v, v}を有しており,それらは四角形の辺(v, v, v, v)をそれぞれ形成する。なお,イレギュラーな頂点がもしあればvである。CCSPプリミティブを記述する頂点列は以下のように形成される。まず,四角形の頂点は,番号順{v, v, v, v}に並べられる。その後,例えば,vとvとのメッシュを構成する四角形に属する,vを共有する隣接する辺の頂点が選択される。六番目は,vと同じ辺上にあり,vと同じ四角形状の頂点である。残りの隣接する頂点は,以下の規則に従って選択される。隣接するある頂点が選択された後に,以前に選択された辺を共有するように次の頂点が選択される。図6(A)に示されるように,制御メッシュ(106)のフラグメントは,2つの隣接するCCSPプリミティブ{v, v, v, v10}及び{v, v10, v16, v15}を中心四角形として記述される。頂点vは,頂点価が5のイレギュラーな頂点である。最初のプリミティブ及び第2のプリミティブを記述する頂点列は,それぞれ{v, v, v, v10, v, v, v, v, v, v, v, v11, v17, v16, v15, v14, v13, v12}と{v, v10, v16, v15, v, v, v, v11, v17, v21, v20, v19, v18, v14, v13, v12, v, v}である。本発明において,CCSPプリミティブの頂点位置の属性(attribute)を示すインデックスは,頂点位置の属性を示すインデックスを含むインデックスバッファにおいてCCSPプリミティブとともに前もって決定されている。すなわち,図6(A)に示される2つのCCSPプリミティブにおける頂点郡の内容として,図6(C)に示されるように,インデックスバッファ1200(または頂点バッファ1100)は{18,9,5,6,10,8,4,0,1,2,3,7,11,17,16,15,14,13,12,18,9,10,16,15,5,6,7,11,17,21,20,19,18,14,13,12,8,4}を記憶する。 Since the size is known, a CCSP primitive can be represented by a vertex sequence that is mapped between vertices in successive vertex sequences, thereby determining the position of the CCSP primitive. In a preferred embodiment of the present invention, the vertex sequence and mapping are formed as follows. For square meshes, the CCSP primitive has vertices {v 0 , v 1 , v 2 , v 3 }, which are square edges (v 0 v 1 , v 1 v 2 , v 2 v 3 , v 3 v 0 ), respectively. If there is an irregular vertex, it is v 0 . Vertex sequences describing CCSP primitives are formed as follows. First, the quadrangular vertices are arranged in the order of numbers {v 0 , v 1 , v 2 , v 3 }. Thereafter, for example, the vertices of adjacent sides that share v 0 and belong to the quadrangle constituting the mesh of v 0 and v 1 are selected. The sixth is on the same side as v 1 and the same vertex as v 0 . The remaining adjacent vertices are selected according to the following rules: After an adjacent vertex is selected, the next vertex is selected to share the previously selected edge. As shown in FIG. 6 (A), fragments of the control mesh (106), two adjacent CCSP primitive {v 9, v 5, v 6, v 10} and {v 9, v 10, v 16, v 15 } is described as the center rectangle. The vertex v 9 is an irregular vertex having a vertex value of 5. Vertex sequences describing the first and second primitives are {v 9 , v 5 , v 6 , v 10 , v 8 , v 4 , v 0 , v 1 , v 2 , v 3 , v 7 , respectively. v 11 , v 17 , v 16 , v 15 , v 14 , v 13 , v 12 } and {v 9 , v 10 , v 16 , v 15 , v 5 , v 6 , v 7 , v 11 , v 17 , v 17 , v 21, v is 20, v 19, v 18, v 14, v 13, v 12, v 8, v 4}. In the present invention, the index indicating the attribute of the vertex position of the CCSP primitive is determined together with the CCSP primitive in the index buffer including the index indicating the attribute of the vertex position. That is, as the contents of the vertex groups in the two CCSP primitives shown in FIG. 6A, the index buffer 1200 (or vertex buffer 1100) is {18, 9, 5, 6 as shown in FIG. 6C. , 10,8,4,0,1,2,3,7,11,17,16,15,14,13,12,18,9,10,16,15,5,6,7,11,17 , 21, 20, 19, 18, 14, 13, 12, 8, 4}.

残りの頂点属性についてのインデックスバッファ列を特定する工程は,頂点の全ての属性を参照するために同じインデックスが用いられないように別のインデックスが要求されるように頂点属性が特定される工程である。この場合において,頂点は属性インデックスの組によって形成され,そのインデックスは,頂点の異なる属性に関連するインデックスである。上記が当てはまらない場合,全ての頂点属性は,頂点位置属性に相当する一つのインデックスによって特定されうる。そうでなければ,全ての頂点属性を特定するためにインデックスバッファの組は特定されなければならない。頂点位置属性に関するインデックスバッファはプリミティブサイズを含むので,上述したように可変なサイズの拡張されたプリミティブを扱う場合は特別な扱いがなされる。他のインデックスバッファは,プリミティブサイズに関する情報を持たず,可変サイズのプリミティブを表現する場合に頂点位置属性のものと比べて小さい長さとすることができる。本発明では,ある頂点に対する頂点属性のインデックスは以下のように決められる。固定サイズの拡張された属性の場合,i番目の位置のインデックスバッファ価はNを頂点列の長さとして,iは0以上N未満であるインデックスバッファ中のi番目頂点のインデックス列に由来するすべての属性の価となる。サイズが可変な拡張されたプリミティブの場合は,状況がより複雑となる。可変サイズの拡張されたプリミティブ列を表現するための頂点列を連結することにより形成される頂点列については,i番目の頂点のインデックス列は,頂点位置属性を示すインデックスバッファ中の(i+N−1)番目の価と他のインデックスバッファのi番目の価とに基づいて形成され,ここで,Nはプリミティブ数の初期値を1として,i番目の頂点が含むプリミティブの数である。 The process of identifying the index buffer sequence for the remaining vertex attributes is the process of identifying the vertex attributes such that another index is required so that the same index is not used to refer to all attributes of the vertex. is there. In this case, the vertices are formed by a set of attribute indices, which are indices associated with the different attributes of the vertices. If the above is not true, all vertex attributes can be identified by one index corresponding to the vertex position attribute. Otherwise, a set of index buffers must be specified to specify all vertex attributes. Since the index buffer related to the vertex position attribute includes the primitive size, as described above, special handling is performed when handling an extended primitive of a variable size. Other index buffers do not have information about the primitive size, and can have a smaller length than that of the vertex position attribute when expressing variable-size primitives. In the present invention, the index of the vertex attribute for a certain vertex is determined as follows. For extended attributes of fixed size, the index buffer value at the i th position is all derived from the index column of the i th vertex in the index buffer where N is the length of the vertex column and i is greater than or equal to 0 and less than N The value of the attribute. For extended primitives of variable size, the situation is more complicated. For vertex sequences formed by concatenating vertex sequences to represent variable-size extended primitive sequences, the index sequence of the i-th vertex is (i + N i − in the index buffer indicating the vertex position attribute). 1) It is formed based on the i th value and the i th value of another index buffer, where N i is the number of primitives included in the i th vertex, where the initial value of the number of primitives is 1.

本発明の第二の側面は,頂点キャッシュ(頂点バッファ)を用いて,固定サイズ又は可変サイズの拡張されたプリミティブを高速に処理するための方法であって,頂点位置属性のインデックスバッファから,可変サイズのプリミティブのプリミティブサイズをフェッチングし,前記プリミティブサイズを特定の回路か又は拡張されたプリミティブアセンブリを処理できるようにプログラマブルにされた演算装置であるプリミティブエンジンに配送する工程と,頂点キャッシュから頂点データを得られない場合は,頂点キャッシュにおける拡張されたプリミティブの頂点についての頂点データをフェッチし,変換して,蓄積する工程と,拡張されたプリミティブのアセンブリと演算処理のために,変換された頂点をプリミティブエンジンへ配送する工程と,プリミティブエンジンにおいて,拡張されたプリミティブをアセンブリし,演算処理する工程と,プリミティブエンジンにおける拡張されたプリミティブの演算処理により得られる固定サイズの単純プリミティブをプリミティブラスタライズのためのパイプラインを経由して固定サイズのプリミティブ集積回路へ配送する工程と,を含む。 A second aspect of the present invention is a method for processing fixed-size or variable-size extended primitives at high speed using a vertex cache (vertex buffer). Fetching the primitive size of a primitive of size and delivering the primitive size to a primitive engine, a computing device programmable to process a particular circuit or extended primitive assembly; and vertex data from a vertex cache Otherwise, the vertex data for the extended primitive vertices in the vertex cache is fetched, converted, stored, and the converted vertices for assembly and operation of the extended primitive To the primitive engine And a process for assembling and processing the extended primitive in the primitive engine, and a simple primitive of a fixed size obtained by the operation processing of the extended primitive in the primitive engine via the pipeline for primitive rasterization. And delivering to a fixed-size primitive integrated circuit.

本方法は,固定されたサイズ又は可変なサイズの拡張されたプリミティブのプロセッシングを実装するための拡張された3次元コンピュータグラフィックスの高速ハードウェアにおける頂点キャッシュ装置を拡張することに基づくものである。本明細書において,頂点キャッシュ装置(vertex cache facility)は,インデックスや頂点バッファからの価を用いて特定された簡単なプリミティブの列を高速にプロセッシングすることを達成するためのシステムを意味する。本明細書において頂点キャッシュ装置の機能は,インデックス/頂点バッファからの価を用いて特定された頂点列を横断(掃引)し,プロセッシングを行う頂点列における対応する頂点の属性列を決定する。頂点キャッシュ記憶部(ストア)としての,頂点キャッシュ装置における記憶部における入手可能な属性と同じ列の頂点かどうか決める。インデックスバッファからサンプリングされた頂点属性インデックスに従って頂点バッファから頂点属性値をサンプリングするか,もしも頂点が頂点キャッシュになく,頂点キャッシュ記憶部に記憶されている場合は,頂点バッファを順次生成しても良い。頂点変換についての属性値に基づいてアセンブルされた頂点を送り,そして付加的に,変形結果を頂点キャッシュの記憶部に記憶する。変換された頂点を,インデックス/頂点バッファにより表現される単純プリミティブ列を表現するために,固定サイズプリミティブ集積回路装置へ配送する。頂点変換を加速するか,又は,頂点データが頂点キャッシュに存在する場合,頂点バッファをサンプリングする必要をなくし,頂点を再度変換する必要をなくするために,変換された頂点を固定サイズプリミティブ集積回路装置へ配送してもよい。実装した態様に応じて付加的な装置を適宜具備しても良い。固定されたプリミティブアセンブル装置(固定されたプリミティブアセンブル装置)との用語は,頂点列から単純なプリミティブを集めて再構築することを実現するシステムを意味する。本明細書において,プリミティブを集めること(assembling of primitive)は,プリミティブを再構築するために必要な全ての情報を集めること,例えば,更に処理を行うためにプリミティブにおける全ての頂点についての情報を蓄積することを意味する。例えば,別々の三角形列の場合は,各々の三角形に存在する3つの頂点列が必要な情報に相当する。同様にして,別々の線については,その線を構成する2つの連続する頂点がそれに相当する。三角形ストリップの場合は,最初の三角形の3つの頂点と,隣接する三角形の頂点列がそれに相当する。固定されたプリミティブアセンブル装置は,演算処理され,配送されるプリミティブのタイプに応じた頂点列を,単純プリミティブを演算処理するのみのラスタライズパイプラインに送れるよう単純プリミティブの状態に戻す。 The method is based on extending a vertex cache device in high speed hardware of extended 3D computer graphics to implement fixed size or variable size extended primitive processing. In this specification, a vertex cache facility refers to a system for achieving high-speed processing of a sequence of simple primitives specified using an index or a value from a vertex buffer. In this specification, the function of the vertex cache device traverses (sweeps) the specified vertex sequence using the value from the index / vertex buffer, and determines the attribute sequence of the corresponding vertex in the vertex sequence to be processed. It is determined whether the vertex is the same column as the attribute available in the storage unit in the vertex cache device as the vertex cache storage unit (store). Sample vertex attribute values from the vertex buffer according to the vertex attribute index sampled from the index buffer, or if the vertex is not in the vertex cache and is stored in the vertex cache store, the vertex buffer may be generated sequentially . The assembled vertex is sent based on the attribute value for the vertex transformation, and additionally, the transformation result is stored in the storage part of the vertex cache. The transformed vertices are delivered to a fixed size primitive integrated circuit device to represent a simple primitive sequence represented by an index / vertex buffer. In order to accelerate vertex transformations or if vertex data is present in the vertex cache, the transformed vertices are fixed-size primitive integrated circuits to eliminate the need to sample the vertex buffer and eliminate the need to transform the vertices again. You may deliver to an apparatus. Additional devices may be provided as appropriate depending on the mounted mode. The term fixed primitive assembler (fixed primitive assembler) refers to a system that implements collecting and reconstructing simple primitives from a sequence of vertices. In this document, assembling of primitives means collecting all the information necessary to reconstruct the primitive, eg, storing information about all vertices in the primitive for further processing. It means to do. For example, in the case of separate triangle rows, three vertex rows existing in each triangle correspond to necessary information. Similarly, for separate lines, two consecutive vertices constituting the line correspond to it. In the case of a triangle strip, the three vertices of the first triangle and the vertex sequence of adjacent triangles correspond to this. The fixed primitive assembly unit is processed and returns the vertex sequence corresponding to the type of delivered primitive to the state of the simple primitive so that it can be sent to a rasterization pipeline that only processes simple primitives.

本発明の第2の側面にかかる方法は,様々な面で頂点キャッシュ装置を拡張する。第一に,本発明の第2の側面によれば,可変サイズの拡張されたプリミティブをフェッチするために新たなロジック回路が必要となる。次に,頂点キャッシュ装置と固定されたプリミティブアセンブル装置との間で機能するプリミティブエンジン(拡張されたプリミティブに関する情報をアッセンブルし,処理するための別個の装置)との情報交換をもたらす。 The method according to the second aspect of the present invention extends the vertex cache device in various aspects. First, according to the second aspect of the present invention, a new logic circuit is required to fetch variable-size extended primitives. It then provides information exchange with the primitive engine (separate device for assembling and processing information about extended primitives) that functions between the vertex cache device and the fixed primitive assembly device.

その方法は,頂点位置属性についてインデックスバッファからプリミティブのサイズをフェッチする工程を含むので,本発明の第1の側面による方法を用いて表現された可変サイズの拡張されたプリミティブの頂点列をプロセッシングするために用いることができる。頂点キャッシュにおける拡張されたプリミティブの頂点データをフェッチし,移送し,そして蓄積する工程により,頂点の属性値から頂点をアッセンブルすることができ,頂点を移送することができ,そして,同じ頂点を後に参照する場合は迅速に取戻しが行われ,頂点キャッシュストアに頂点を記憶することができる。この工程は,拡張されたプリミティブ列や単純プリミティブ列がプロセッシングされるか否かに拘わらず同様である。この方法は,移送された頂点をプリミティブエンジンに配送する工程,プリミティブエンジンにおいて拡張されたプリミティブのプロセッシングを行う工程,及びプロセッシングされた結果を単純プリミティブ列の形で残りのプロセッシングパイプラインに配送する工程をも含む。最初の工程について検討すると,その工程により拡張されたプリミティブをアッセンブルするための必要な情報や,プリミティブエンジンを駆動するプロセッシングアルゴリズムが供給される、そして,プリミティブの干渉が無かったかのような場合におけると同様のプロセッシングを行うために出力結果が配送される。組み合わせることで,以下のようなメリットがある。頂点キャッシュにおいて頂点データをフェッチし,配送し,そして蓄積する工程は,単純プリミティブを処理するのであっても,拡張されたプリミティブ列を処理するのであっても実質的には同様であるので,この方法は,インデックスバッファからフェッチされた属性インデックスに関連した属性から拡張されたプリミティブの頂点をアセンブルするための頂点バッファへのランダムなアクセスを特に特別な方法を用いずに実現することができる。先に説明したと同じ理由で,頂点データをフェッチし,配送し,そして蓄積する工程に用いられるほとんどの論理回路は,単純プリミティブの演算処理と拡張されたプリミティブの演算処理とで共用することができ,拡張されたプリミティブの処理を実現するために実装される論理回路のハードウェアコストを軽減することができる。頂点キャッシュを用いることは,プリミティブエンジンの頂点データを拡張されたプリミティブのアセンブル及び演算処理アルゴリズムへと配送する際の待ち時間を軽減することになる。これにより,拡張されたプリミティブの演算処理に関するパフォーマンスが向上することとなる。インデックスバッファから可変サイズのプリミティブのプリミティブサイズをフェッチングする工程とそれをプリミティブエンジンへ配送する工程と,拡張されたプリミティブをアセンブルし,演算処理するために変換された頂点をプリミティブエンジンへ配送する工程は,プリミティブエンジン上で,本発明の第一の側面により導入された方法を用いて拡張されたプリミティブを演算処理するために必要な全ての情報を配送することを可能とする。プリミティブエンジンによって演算処理された拡張されたプリミティブの出力は,単純プリミティブのものと同様な方法により達成され,拡張されたプリミティブの演算処理を行うためにプリミティブ演算処理用のパイプラインは特に修正する必要がない。さらに,単純プリミティブ列の処理は,単純プリミティブ列の演算処理による変換された頂点は,頂点キャッシュからプリミティブエンジンによりバイパスされる残りの演算処理パイプラインへと直接配送される。この方法は,単純プリミティブ列を演算処理することに比べて追加となるような付加を何ら要求しない。 Since the method includes fetching the size of the primitive from the index buffer for the vertex position attribute, the variable size extended primitive vertex sequence expressed using the method according to the first aspect of the present invention is processed. Can be used for The process of fetching, transporting, and accumulating extended primitive vertex data in the vertex cache can assemble vertices from vertex attribute values, transport vertices, and later transfer the same vertices When referencing, the retrieval is performed quickly and the vertex can be stored in the vertex cache store. This process is the same regardless of whether the extended primitive sequence or simple primitive sequence is processed. The method includes delivering the transferred vertices to a primitive engine, processing the extended primitives in the primitive engine, and delivering the processed results in the form of simple primitives to the rest of the processing pipeline. Is also included. Examining the first step provides the necessary information to assemble the primitive extended by that step, the processing algorithm that drives the primitive engine, and as if there was no primitive interference The output result is delivered for processing. There are the following merits by combining. The process of fetching, delivering and storing vertex data in the vertex cache is substantially the same whether processing simple primitives or extended primitive sequences, so this The method can achieve random access to the vertex buffer to assemble vertices of primitives extended from attributes associated with the attribute index fetched from the index buffer without using any special method. For the same reason as explained above, most logic circuits used in the process of fetching, distributing and storing vertex data can be shared between simple primitive processing and extended primitive processing. In addition, the hardware cost of the logic circuit implemented to realize the extended primitive processing can be reduced. Using a vertex cache reduces the latency when delivering primitive engine vertex data to extended primitive assembly and processing algorithms. As a result, the performance related to the operation processing of the extended primitive is improved. Fetching the primitive size of a variable-size primitive from the index buffer, delivering it to the primitive engine, assembling the extended primitive, and delivering the transformed vertices to the primitive engine for processing On the primitive engine, it is possible to deliver all the information necessary to compute the extended primitive using the method introduced by the first aspect of the present invention. Output of extended primitives processed by the primitive engine is achieved in a manner similar to that of simple primitives, and the pipeline for primitive operations needs to be particularly modified to perform the processing of extended primitives. There is no. Further, in the processing of the simple primitive sequence, the vertex converted by the arithmetic processing of the simple primitive sequence is directly delivered from the vertex cache to the remaining arithmetic processing pipeline bypassed by the primitive engine. This method does not require any additional additions compared to processing simple primitive sequences.

頂点位置属性のインデックスバッファから,可変サイズのプリミティブのプリミティブサイズをフェッチングし,前記プリミティブサイズを特定の回路か又は拡張されたプリミティブアセンブリを処理できるようにプログラマブルにされた演算装置であるプリミティブエンジンに配送する工程は,以下のような内容である。すなわち,頂点位置属性のインデックスバッファからプリミティブサイズを取り戻す工程である。本発明の第1の側面と関連して求められた拡張されたプリミティブを表現するために可変サイズの拡張されたプリミティブをそこに位置させるものである。プリミティブサイズは,拡張されたプリミティブの演算処理において必要とされるかもしれないので,プリミティブエンジンへと配送される。 Fetch primitive size of variable-size primitive from index buffer of vertex position attribute, and deliver the primitive size to primitive engine, which is a programmable arithmetic unit that can process a specific circuit or extended primitive assembly The process to be performed is as follows. That is, it is a step of retrieving the primitive size from the index buffer of the vertex position attribute. In order to represent the extended primitive determined in connection with the first aspect of the present invention, a variable-size extended primitive is located therein. The primitive size is delivered to the primitive engine as it may be needed in the processing of the extended primitive.

本発明においては,プリミティブサイズに関する情報が,頂点位置属性のインデックスバッファにおけるプリミティブの頂点に関する情報よりも先行する。プリミティブサイズのフェッチングが終わった結果として,後者がプリミティブに関するほかのどの情報にも先駆けてプリミティブエンジンへと配送される。プリミティブサイズを知ることは,次の可変サイズのプリミティブの始まりに関する頂点位置属性のインデックスアレイのオフセットを決めることができ,それにより,前記インデックスは次のプリミティブのサイズ情報を含むこととなる。プリミティブサイズは,可変サイズのプリミティブに関する演算処理を始めることができる状態とするためにも必要とされる。後者は,プリミティブサイズによって制御される全てのプリミティブの頂点をプリミティブエンジンが得た後に終えられる。この工程は,可変サイズの拡張されたプリミティブを実現する場合にのみ必要とされる工程である。他のプリミティブの演算処理を行う場合は,この工程を省略できる。 In the present invention, the information regarding the primitive size precedes the information regarding the vertex of the primitive in the index buffer of the vertex position attribute. As a result of the primitive size fetching, the latter is delivered to the primitive engine ahead of any other information about the primitive. Knowing the primitive size can determine the offset of the index array of vertex position attributes with respect to the beginning of the next variable size primitive, so that the index contains the size information of the next primitive. The primitive size is also needed to be able to begin operations on variable-size primitives. The latter ends after the primitive engine has obtained the vertices of all primitives controlled by the primitive size. This step is required only when realizing a variable-size extended primitive. This step can be omitted when performing arithmetic processing of other primitives.

頂点キャッシュから頂点データを得られない場合は,頂点キャッシュにおける拡張されたプリミティブの頂点についての頂点データをフェッチし,変換して,蓄積する工程は,以下のような工程である。上述したように,頂点キャッシュ装置により頂点キャッシュにおいて,フェッチし,変換して,蓄積される工程である。頂点キャッシュ装置は,拡張されたプリミティブの演算処理を行うものではないので,この工程の処理は,頂点キャッシュ装置に関して単純プリミティブであっても固定されたサイズの拡張されたプリミティブ列の処理であっても変わらない。それゆえ,単純プリミティブの演算処理と,拡張されたプリミティブの演算処理を行うための回路など装置面でシェアすることができる。この工程は,頂点キャッシュに既に必要な頂点情報が蓄積されている場合は,省略することができる。この工程は,インデックスバッファ/頂点バッファが拡張されたプリミティブ列を表現する場合でも行われる。そのような場合,頂点属性インデックスがインデックスバッファからサンプリングされる。また,頂点バッファが固定サイズの拡張されたプリミティブのみを表現する場合,頂点属性インデックスは,順番に生成される。 If the vertex data cannot be obtained from the vertex cache, the process of fetching, converting, and storing the vertex data of the extended primitive vertex in the vertex cache is as follows. As described above, this is a process of fetching, converting, and accumulating in the vertex cache by the vertex cache device. Since the vertex cache device does not perform processing of the extended primitive, the processing of this step is processing of an extended primitive sequence having a fixed size even if it is a simple primitive with respect to the vertex cache device. Will not change. Therefore, it is possible to share in terms of devices such as a circuit for performing simple primitive calculation processing and extended primitive calculation processing. This step can be omitted if necessary vertex information is already stored in the vertex cache. This process is performed even when the index buffer / vertex buffer represents an extended primitive sequence. In such a case, the vertex attribute index is sampled from the index buffer. Also, when the vertex buffer represents only fixed size extended primitives, vertex attribute indexes are generated in order.

可変サイズの拡張されたプリミティブを演算処理する場合はプリミティブサイズをフェッチングする工程では,もし異なる頂点属性の別々のインデックスバッファが用いられる場合はプリミティブの頂点データをフェッチングする工程を修正する必要が生じうる。その理由は,頂点位置属性のインデックスバッファの長さの相違と,他の全ての属性列を記述するインデックスバッファはプリミティブサイズに関する情報を含んでおり,その長さはプリミティブ列の数だけ他のインデックスバッファよりも大きいからである。ある頂点について頂点データをフェッチングする工程は,問題とされている頂点に対応するそれぞれの頂点属性のインデックス列を形成する必要がある。異なる頂点属性のための分離されたインデックスアレイや,固定サイズのプリミティブ,又は単純プリミティブ列を演算処理する場合は,このフォーメーションが,頂点の位置に対応した全てのインデックスバッファの位置をサンプリングすることにより行われる。可変サイズの拡張されたプリミティブ列を演算処理する場合は,このフォーメーションは以下のように修正される。すなわち,頂点位置属性以外の全ての属性についてのインデックス値が,頂点位置によって決められるインデックスバッファの位置をサンプリングすることにより得られるが,頂点位置属性のインデックスが他の属性のものと現在演算処理を行っている以前のプリミティブの数を足したものにより得られる位置の頂点位置属性のインデックスバッファにより得られる。この工程は,可変サイズの拡張されたプリミティブ列を,インデックスバッファ及び頂点バッファを用いるもので,前記本発明の第1の側面により導入されるものである。 When computing variable size extended primitives, fetching primitive size may require modification of fetching primitive vertex data if separate index buffers with different vertex attributes are used . The reason is that the index buffer length difference of the vertex position attribute and the index buffer describing all other attribute columns contain information about the primitive size, and the length is the number of other index columns. This is because it is larger than the buffer. The process of fetching vertex data for a vertex needs to form an index string for each vertex attribute corresponding to the vertex in question. When processing separate index arrays for different vertex attributes, fixed-size primitives, or simple primitive sequences, this formation will sample all index buffer positions corresponding to vertex positions. Done. When computing variable-size extended primitive sequences, this formation is modified as follows: In other words, the index values for all attributes other than the vertex position attribute are obtained by sampling the index buffer position determined by the vertex position. Obtained by the index buffer of the vertex position attribute of the position obtained by adding the number of previous primitives being performed. This step uses the index buffer and the vertex buffer for the variable-size extended primitive sequence, and is introduced according to the first aspect of the present invention.

拡張されたプリミティブのアセンブリと演算処理のために,変換された頂点をプリミティブエンジンへ配送する工程は,入力された頂点情報を拡張されたプリミティブのアセンブルと演算処理を行うためのプリミティブエンジンによるアルゴリズムへと配送するための工程である。本発明においては,この工程は,固定されたプリミティブアセンブル装置の代わりに,頂点キャッシュからの変換された頂点が配送されるプリミティブエンジンを選択することにより達成される。本明細書においては,“プリミティブエンジン”という語は,以下により,拡張されたプリミティブの演算処理を実現するための固定回路又はプログラマブルシステムを意味する。可変サイズの拡張されたプリミティブの場合は,プリミティブサイズに関する情報を受け取って内部に記憶するプリミティブの頂点に関する情報を蓄積する。蓄積されたプリミティブに関する情報に基づいてプリミティブを再構築する。可変サイズの拡張されたプリミティブを演算処理した結果,固定されたプリミティブアセンブル装置によってアクセスできる単純プリミティブ列となるようなアルゴリズムに従って,プリミティブを再構築する演算処理を行う。 The process of delivering the converted vertices to the primitive engine for extended primitive assembly and computation is to convert the input vertex information to an algorithm by the primitive engine for assembling and computing the extended primitive. It is a process for delivering. In the present invention, this step is accomplished by selecting a primitive engine to which the transformed vertices from the vertex cache are delivered instead of a fixed primitive assembler. In this specification, the term “primitive engine” means a fixed circuit or a programmable system for realizing the operation processing of an extended primitive by the following. In the case of a variable-size extended primitive, information on the primitive size is received and stored on the primitive vertex stored therein. Reconstruct primitives based on information about the accumulated primitives. Arithmetic processing for reconstructing primitives is performed according to an algorithm that results in a simple primitive sequence that can be accessed by a fixed primitive assembling device as a result of arithmetic processing of extended primitives of variable size.

プリミティブエンジンにおける拡張されたプリミティブの演算処理により得られる固定サイズの単純プリミティブをプリミティブラスタライズのためのパイプラインを経由して固定サイズのプリミティブ集積回路へ配送する工程は,以下の工程を含む。固定されたプリミティブアセンブル装置により処理できる形式とされた拡張されたプリミティブを配送する工程である。本発明において,この配送は,頂点キャッシュ装置により単純プリミティブ列が処理された場合に変換された頂点が頂点キャッシュから固定されたプリミティブアッセンブル装置へと直接配送されるのとまさに同じ方法で配送される。従って,固定されたプリミティブアセンブル装置を修正する必要はなく,拡張されたプリミティブの演算処理を行えるようにするためにラスタライゼーションパイプラインも修正する必要がない。   The process of delivering a fixed-size simple primitive obtained by the operation processing of the extended primitive in the primitive engine to the fixed-size primitive integrated circuit via the pipeline for primitive rasterization includes the following steps. Delivering extended primitives that are formatted to be processed by a fixed primitive assembling device. In the present invention, this delivery is delivered in exactly the same way that the transformed vertices are delivered directly from the vertex cache to the fixed primitive assembler when a simple primitive sequence is processed by the vertex cache device. . Therefore, there is no need to modify the fixed primitive assembly device, and there is no need to modify the rasterization pipeline in order to be able to perform extended primitive operations.

プリミティブエンジンにおいて,拡張されたプリミティブをアセンブルし,演算処理する工程は,プリミティブエンジンにより所定のアルゴリズムを実装し,これを用いて拡張されたプリミティブに関する演算処理を行うための工程である。プリミティブエンジンによって実現される固定サイズの拡張されたプリミティブを演算処理するアルゴリズムの好ましい例は,以下のものがあげられるが,これに限定されるものではない。すなわち,メッシュシルエットの検出と視覚化を実現するためにTWNプリミティブ列を演算処理するというものである。本明細書において,メッシュシルエットは,一方が視点方向を向き他方がそうではない方向を向いている1組の三角形によって共有されるトライアングル辺の集合を意味する。メッシュシルエットを視覚化するとは,メッシュをレンダリングする際に,シルエットエッジを視覚的に強調する方法を意味する。シルエットを検出し,視覚化するためのアルゴリズムの概要は以下のとおりである。TWNプリミティブのための頂点データを蓄積する。中心三角形と隣接する三角形の方向を決定する。この工程は,部分的に並行して行われても良い。そして,中心三角形の三つの辺のそれぞれから三角形の方向を比較することでシルエットエッジを検出する。検出されたシルエットエッジの四角形フラップを生成し,ラスタライズのためにそれを配送する。次のプリミティブについて同様の処理を行う。プリミティブサイズが固定されているので,プリミティブサイズをフェッチする工程は行う必要がない。   In the primitive engine, the process of assembling and calculating the extended primitive is a process for implementing a predetermined algorithm using the primitive engine and performing an arithmetic process on the extended primitive. Preferred examples of algorithms for processing fixed-size extended primitives implemented by the primitive engine include, but are not limited to, the following. In other words, the TWN primitive sequence is processed in order to realize detection and visualization of the mesh silhouette. In this specification, a mesh silhouette means a set of triangle sides shared by a set of triangles, one facing the viewpoint direction and the other facing the other direction. Visualizing a mesh silhouette means a method of visually enhancing silhouette edges when rendering a mesh. The outline of the algorithm for detecting and visualizing silhouettes is as follows. Accumulate vertex data for TWN primitives. Determine the direction of the triangle adjacent to the central triangle. This process may be performed partially in parallel. A silhouette edge is detected by comparing the directions of the triangles from each of the three sides of the central triangle. Generate a rectangular flap of the detected silhouette edge and deliver it for rasterization. The same processing is performed for the next primitive. Since the primitive size is fixed, it is not necessary to perform the process of fetching the primitive size.

TWNストリップやTWNファンの場合は,ストリップ/ファンにおいて最初とそれ以降のプリミティブは異なる方法で蓄積される。最初のプリミティブは,プリミティブに関する演算処理が始まる前に,6つの頂点を必要とする。第2及びそれ以降のプリミティブは,既に蓄積された頂点を利用することができるので,さらなる2つの頂点のみを要求する。分離されたTWNプリミティブ列の場合は,第2以降のプリミティブであっても,最初のプリミティブと同様に頂点データが蓄積される。 In the case of a TWN strip or TWN fan, the first and subsequent primitives in the strip / fan are stored differently. The first primitive requires six vertices before the operation on the primitive begins. The second and subsequent primitives require only two additional vertices since they can make use of already stored vertices. In the case of the separated TWN primitive sequence, vertex data is accumulated in the same way as the first primitive even for the second and subsequent primitives.

図4(B)示されるように,それぞれ頂点列{v,
, v} と {v, v, v}により構成される2つの中心三角形111及び113に相当するTWNプリミティブストリップは,図4(D)に示されるように{2,1,0,3,4,5,7,6}で示される頂点位置属性列に相当するインデックスバッファのコンテンツとして表現される。頂点キャッシュ装置はインデックスバッファからインデックスに相当する頂点を読み出して,プリミティブエンジンに伝える。たとえば,頂点キャッシュ装置から,プリミティブエンジンに伝えられる第6番目の頂点は,インデックス価5に相当するものである。プリミティブエンジンが,中心三角形111と隣接する三角形110,112,及び113についての全ての頂点に関する情報を入手すれば,プリミティブエンジンはTWNストリップ列における最初の三角形の方向やシルエット辺などを検出し始めることができる。三角形の方向の計算は,システム座標における三角形の頂点位置のx,y,wにより構成される3つのコンポーネントベクトルからなる3つの内積によるスカラーにより評価され,以下のマトリックスにより評価される。
As shown in FIG. 4B, each of the vertex sequences {v 2 ,
TWN primitive strips corresponding to the two central triangles 111 and 113 constituted by v 1 , v 3 } and {v 3 , v 1 , v 5 } are {2,1 as shown in FIG. , 0,3,4,5,7,6} is represented as the contents of the index buffer corresponding to the vertex position attribute sequence indicated by. The vertex cache device reads out the vertex corresponding to the index from the index buffer and transmits it to the primitive engine. For example, the sixth vertex transmitted from the vertex cache device to the primitive engine corresponds to an index value of 5. If the primitive engine obtains information about all vertices for the triangle 101, 112, and 113 adjacent to the center triangle 111, the primitive engine will begin to detect the direction of the first triangle, silhouette edge, etc. in the TWN strip sequence. Can do. The calculation of the direction of the triangle is evaluated by a scalar by three inner products composed of three component vectors constituted by x, y, and w of the vertex position of the triangle in the system coordinates, and is evaluated by the following matrix.

Figure 0005216130
Figure 0005216130

ここで,下付の0,1,及び2は,それぞれ三角形における第1,第2及び第3の頂点を意味する。このサインが辺を共有する2つの三角形と異なる場合は,この辺はシルエットである。それゆえ,シルエット辺を決定するために,TWNプリミティブの中心三角形と,3つの隣接する三角形の4つの評価が必要となる。 Here, the subscripts 0, 1, and 2 mean the first, second, and third vertices in the triangle, respectively. If this sign is different from two triangles sharing an edge, the edge is a silhouette. Therefore, four evaluations of the central triangle of the TWN primitive and three adjacent triangles are required to determine the silhouette side.

シルエット辺を検出するために,観察者の視野方向と垂直な方向,すなわち視点座標におけるZ軸の方向の長方形のフラップ(flap)を構成する余分な幾何学図形が設計され,それは対象物の外側に伸びる。その対象物の外側の方向は,頂点キャッシュ装置からプリミティブエンジンへは頂点が運ばれた後に入手することができる他の頂点の属性とそのメッシュの各々の頂点における法線ベクトルにより表現される法線方向に変換される。例えば,そのシルエット辺を構成する第1及び第2の頂点は,x0,y0,z0,w0視点座標系及びx1,y1,z1,w1視点座標系においてv及びvと命名され,それぞれに関連して法線ベクトルn0及びn1を有する。生成したフラップは,視点座標系において以下の座標値を有する頂点により表現される長方形である{x0,y0,z0,w0},
{x1,y1,z1,w1}, {x1+offsetX*n1x*w1,y1+offsetY*n1y,z1,w1},及び{x0+offsetX*n0x,y0+offsetY*n0y,z0,w0}。このようにして得られたフラップは,観察者との距離によらずスクリーン空間において一定の幅を有するようにして生成される。図5(B)は,係数offsetXと係数offsetYとが同じ値であり,n0zとn1zとが0である場合における,そのようなフラップの構成を示す図である。
In order to detect the silhouette edges, an extra geometric figure is designed that forms a rectangular flap in the direction perpendicular to the observer's field of view, i.e. in the direction of the Z axis in the view coordinates, which is outside the object. To grow. The direction outside the object is the normal represented by the attributes of the other vertices that can be obtained after the vertices are transported from the vertex cache unit to the primitive engine and the normal vector at each vertex of the mesh. Converted to direction. For example, the first and second vertices of the silhouette edges, v 0 and at x 0, y 0, z 0 , w 0 viewpoint coordinate system and x 1, y 1, z 1, w 1 viewpoint coordinate system v 1, with normal vectors n 0 and n 1 associated with each. The generated flap is a rectangle represented by vertices having the following coordinate values in the viewpoint coordinate system {x 0 , y 0 , z 0 , w 0 },
{x 1 , y 1 , z 1 , w 1 }, {x 1 + offset X * n 1x * w 1 , y 1 + offset Y * n 1y , z 1 , w 1 }, and {x 0 + offset X * n 0x , y 0 + offset Y * n 0y , z 0 , w 0 }. The flaps thus obtained are generated so as to have a certain width in the screen space regardless of the distance to the observer. FIG. 5 (B) is the same value as the coefficient offset X and the coefficient offset Y, in the case where the n 0z and n 1z is 0, is a diagram showing a configuration of such flaps.

次のプリミティブのために,頂点キャッシュ装置からインデックス値が7と6である2つの頂点が配送され,それによりさらに2つの三角形115及び114が定義される。この情報により,ストリップにおける第2の三角形のシルエット計算を行うことができる。ただし,以前求めた4つの頂点が再び用いられることに留意しなければならない。さらに,三角形の方向を計算することにより,2つの三角形が再び用いられることとなる。すなわち,一つは問題となる三角形であり,もうひとつは隣接する三角形である。図4Bに示される場合では,それら2つの三角形はそれぞれ113と111である。この方法によれば,シルエットを検出するアルゴリズムを実装する際の計算コストを大きく軽減できる。シルエット辺において重複した幾何学的フラップが生成する事態を防止するため,例えば,観察者に面する方向などある三角形のある方向のTWNプリミティブとなるようにフラップが生成されなければならない。そのほかのプリミティブは,無視することができる。 For the next primitive, two vertices with index values 7 and 6 are delivered from the vertex cache unit, thereby further defining two triangles 115 and 114. With this information, the silhouette calculation of the second triangle in the strip can be performed. However, it should be noted that the previously obtained four vertices are used again. Furthermore, by calculating the direction of the triangle, two triangles will be used again. One is the triangle in question and the other is the adjacent triangle. In the case shown in FIG. 4B, the two triangles are 113 and 111, respectively. According to this method, the calculation cost for implementing an algorithm for detecting silhouettes can be greatly reduced. In order to prevent the occurrence of overlapping geometric flaps at the silhouette sides, the flaps must be generated to be TWN primitives in a certain triangle direction, for example, the direction facing the viewer. Other primitives can be ignored.

最後に,それぞれのプロセッシングされたTWNプリミティブについて,プリミティブエンジンが単純な固定サイズのプリミティブを出力することもできる。シルエット検出アルゴリズムや視覚化アルゴリズムの特別な場合においては,その出力は,不変な中心三角形と,シルエット辺を形成する幾何学的フラップを構成する2つの三角形とを含む。フラップについて,アルゴリズムを実装するに当たり,いくつかの属性は変化されうる。例えば,色は,黒い外観を形成する場合は,黒のものに置き換えられる。出力された三角形は,頂点キャッシュ装置から直接配送されたかのように,固定されたプリミティブアセンブル装置へと配送され,処理される。 Finally, for each processed TWN primitive, the primitive engine can also output a simple fixed size primitive. In the special case of silhouette detection and visualization algorithms, the output includes an invariant central triangle and two triangles that form the geometric flap that forms the silhouette edge. For flaps, some attributes can be changed in implementing the algorithm. For example, the color is replaced with a black one if it forms a black appearance. The output triangles are delivered to the fixed primitive assembler and processed as if delivered directly from the vertex cache unit.

プリミティブエンジンが,可変サイズの拡張されたプリミティブを処理することを実現するためのアルゴリズムの例としてCatmull−Clark再分割法を実装するものがあげられるが,これに限定されない。同様に,他の再分割スキーム,例えばループ再分割スキームや,4−3再分割スキームなどを実現できる。Catmull−Clark,CC,再分割法は,複数の工程からなり,荒いメッシュから,滑らかで細かな碁盤目状のメッシュを生成し,各工程はひとつ前の工程で得られたメッシュを再分割する工程である。すなわち,再帰的な方法で基本メッシュにある規則を当てはめて細かくする。その規則は,その前の工程で得られたメッシュのそれぞれの面について新たな頂点を生成し,前の工程で得られたメッシュのそれぞれの辺について新たな頂点を生成し,前の工程での位置に関してメッシュの頂点位置を再配置する。上記の3つのいずれの場合も,次の工程のメッシュの頂点位置は,それが属する辺や面と隣接するものの頂点の線形結合に限られる。より具体的に説明すると,面点(face points)は,もとの頂点の面の位置の平均に位置する。辺点(edge point)の位置は,もとの辺の中心位置の平均,及び2つの新しく隣接する面点の平均として計算される。前工程からの頂点は,以下の式で示されるように位置される。S’=(Q + 2R + S(n-3)) /n。ここで,S’は,頂点の最新の位置であり,Qは,その頂点の周辺に位置する新たな面点の平均値であり, Rは前記頂点を共有する辺の中点の平均値であり,Sは前の工程での頂点位置であり,そしてnは頂点を共有する辺の数,すなわち頂点価である。 An example of an algorithm for realizing that the primitive engine processes variable-size extended primitives includes, but is not limited to, an implementation of the Catmull-Clark subdivision method. Similarly, other subdivision schemes, such as a loop subdivision scheme or a 4-3 subdivision scheme, can be realized. Catmull-Clark, CC, subdivision method consists of multiple steps, generates a smooth and fine grid-like mesh from a rough mesh, and each step subdivides the mesh obtained in the previous step It is a process. In other words, the rules in the basic mesh are applied in a recursive manner and refined. The rule generates a new vertex for each face of the mesh obtained in the previous step, a new vertex for each side of the mesh obtained in the previous step, and Rearrange mesh vertex positions with respect to position. In any of the above three cases, the vertex position of the mesh in the next process is limited to the linear combination of the vertices of the adjacent side or face to which the mesh belongs. More specifically, the face points are located at the average of the positions of the original vertex faces. The position of the edge point is calculated as the average of the center position of the original side and the average of two newly adjacent face points. The vertices from the previous process are positioned as shown in the following equation. S ′ = (Q + 2R + S (n−3)) / n. Where S ′ is the latest position of the vertex, Q is the average value of the new face points located around the vertex, and R is the average value of the midpoints of the edges sharing the vertex. Yes, S is the vertex position in the previous step, and n is the number of edges sharing the vertex, ie the vertex value.

次の再分割工程において頂点位置を計算するために必要とされる頂点の数は,辺の頂点は6,面の頂点は4と固定される。一方,前の工程からの頂点の位置を決めるためには,再配置される1つの隣接したものに属する全ての頂点に関する情報が必要となる。頂点のある隣接するものは,それとメッシュ面を共有する全ての頂点によって形成される。図6(A),図6(B)及び図6(C)に示される場合では,基本メッシュ106における頂点vの隣接するものは,頂点v13, v12, v, v, v, v, v10, v16, v15及びv14により形成され,その価は5である。頂点の価は,任意の価を取ることができ,したがって,再分割ルールを実行する場合,隣接における多数の頂点の数に関する情報を必要とする。しかしながら,実際は,最大の頂点価を限定することができ,ある計上を再分割するために特にぎりぎりまで制限されない状態で再分割ルールを実装することができる。 The number of vertices required to calculate the vertex position in the next subdivision step is fixed to 6 for the side vertices and 4 for the face. On the other hand, in order to determine the positions of the vertices from the previous process, information on all the vertices belonging to one adjacent object to be rearranged is required. A neighbor with vertices is formed by all vertices that share a mesh face with it. FIG. 6 (A), the in case of shown in FIG. 6 (B) and FIG. 6 (C) is adjacent ones of the vertex v 9 in base mesh 106, vertex v 13, v 12, v 8 , v 4, v 5 , v 6 , v 10 , v 16 , v 15 and v 14 , the value of which is 5. Vertex values can take any value, so when executing a subdivision rule, information about the number of vertices in the neighborhood is needed. However, in practice, the maximum vertex value can be limited, and a subdivision rule can be implemented with no particular limit to subdivide a certain account.

CCスキームを全てのメッシュに用いることもできるが,パッチごとに異なるルールを用いることもできる。再分割表面パッチは,その面のひとつの隣接するものに属する頂点列としての基本メッシュの面から外れるように形成されうる。すなわち,再分割ルールがひとつの隣接するものに限定されるので,面頂点のある隣接するものの集まりは,面そのものの頂点を含む。CC再分割を2工程行った後に,再分割されたメッシュにおける全ての面は,長方形であり,面についてひとつ異常のイレギュラーな頂点がなくなることが知られている。基本となる面は,そのようにして設計しうるが,同じ結果を得るためにただ1つのCC再分割工程を行えばよい。いずれにせよ,一般的なCCスキームを失うことなく面ごとのイレギュラーな頂点を1つ以上有するイレギュラーな長方形でないように形成されるパッチの再分割を考慮することができる。本発明の第1の側面において記載したCCSPプリミティブは,上記の要件を満たし,基本メッシュの四角形郡に相当するCCSPプリミティブ郡によりCC再分割が実現できる。 The CC scheme can be used for all meshes, but different rules can be used for each patch. The subdivision surface patch can be formed so as to deviate from the face of the basic mesh as a row of vertices belonging to one neighbor of the face. That is, since the subdivision rule is limited to one adjacent one, the collection of adjacent ones with surface vertices includes the vertices of the surface itself. It is known that after performing CC subdivision two steps, all the faces in the subdivided mesh are rectangular and there is no abnormal irregular vertex on the face. The basic surface can be designed in that way, but only one CC subdivision process needs to be performed to achieve the same result. In any case, subdivision of patches formed to be not irregular rectangles with one or more irregular vertices per face without losing the general CC scheme can be considered. The CCSP primitive described in the first aspect of the present invention satisfies the above-described requirements, and CC subdivision can be realized by the CCSP primitive group corresponding to the square group of the basic mesh.

図6を参照して,インデックス/頂点バッファからCCSPプリミティブを形成する方法や,プリミティブエンジンにおいてCC再分割を行うアルゴリズムについて説明する。図6(A)は,中心四角形{v, v, v, v10}及び{v, v10, v16, v15}により形成され頂点価5のイレギュラーな頂点vを共有する2つの隣接するCCSPプリミティブ列を有する基本となる制御メッシュ106を示す図である。頂点位置属性のインデックス列を含むインデックスバッファは以下のとおりである。{18,9,5,6,10,8,4,0,1,2,3,7,11,17,16,15,14,13,12,18,9,10,16,15,5,6,7,11,17,21,20,19,18,14,13,12,8,4}。そして,CCSP列の処理は以下のとおりである。プリミティブサイズをフェッチングする工程は,頂点位置属性のインデックス群における最初の位置からプリミティブサイズの値18を取り戻し,それをプリミティブエンジンに配送する,頂点キャッシュ装置により実行される。頂点キャッシュ装置は,18個の頂点を頂点位置属性のインデックスに従ってプリミティブエンジンに配送する。頂点v12に相当するプリミティブの最後の頂点がプリミティブエンジンに配送されると,CCSPプリミティブの演算処理が始まる。プリミティブサイズ,頂点列を入手できるようになっているので,プリミティブエンジンにより実装されるアルゴリズムにより本発明の第1の側面によって導入された記述方法によりCCSPプリミティブを再構築できる。プリミティブを再構築した後は,再分割を行うための全ての情報が入手されているので,再構築されたCCSPプリミティブは,Catmull−Clark再分割表面(Jeffrey Bloz and Peter Schroder, in Proceedings of the Web 3D 2002 Symposium (WEB3D−02), pages 11−18, New York, February 24−28, 2002, ACM Press)などのパッチごとの再分割アルゴリズムにより再分割することができる。用いられた再分割スキームは,モザイクメッシュ(107)の断片として描画されるように演算処理されたCCSPプリミティブの中心四角形の細かなモザイク(tessellation)に相当する四角形の組となる。その得られた四角形のそれぞれは,さらに演算処理を施し,ラスタライズするために二つの三角形に分割され,固定されたプリミティブアセンブル装置へと配送される。これらの工程は,次のCCSPプリミティブの演算処理のために繰り返される。 With reference to FIG. 6, a method for forming a CCSP primitive from an index / vertex buffer and an algorithm for performing CC subdivision in the primitive engine will be described. FIG. 6A shows an irregular vertex v 9 having a vertex value of 5 formed by the center squares {v 9 , v 5 , v 6 , v 10 } and {v 9 , v 10 , v 16 , v 15 }. FIG. 3 is a diagram illustrating a basic control mesh 106 having two adjacent CCSP primitive sequences to share. The index buffer including the index column of the vertex position attribute is as follows. {18,9,5,6,10,8,4,0,1,2,3,7,11,17,16,15,14,13,12,18,9,10,16,15,5 , 6,7,11,17,21,20,19,18,14,13,12,8,4}. The processing of the CCSP sequence is as follows. The step of fetching the primitive size is performed by a vertex cache device that retrieves the primitive size value 18 from the first position in the vertex position attribute index group and delivers it to the primitive engine. The vertex cache device delivers 18 vertices to the primitive engine according to the vertex position attribute index. When the last vertex of the primitive corresponding to the vertex v 12 is delivered to the primitive engine, processing the CCSP primitive begins. Since the primitive size and the vertex sequence can be obtained, the CCSP primitive can be reconstructed by the description method introduced by the first aspect of the present invention by the algorithm implemented by the primitive engine. After reconstructing the primitive, all the information for performing the re-segmentation is obtained, so the reconstructed CCSP primitive is the Catmull-Clark re-segmentation surface (Jeffrey Bloz and Peter Schroder, in Proceedings of the Web). 3D 2002 Symposium (WEB3D-02), pages 11-18, New York, February 24-28, 2002, ACM Press), and the like. The subdivision scheme used is a set of rectangles corresponding to a fine tessellation of the center rectangle of the CCSP primitive that has been processed to be rendered as a fragment of the mosaic mesh (107). Each of the obtained rectangles is further processed and divided into two triangles for rasterization and delivered to a fixed primitive assembler. These steps are repeated for the processing of the next CCSP primitive.

本発明の第3の側面は,本発明の第2の側面にかかる方法を用いて,固定サイズのプリミティブ又は可変サイズのプリミティブ列を処理する本発明の第1の側面に係る処理方法を実現するためのシステムに関する。 The third aspect of the present invention realizes the processing method according to the first aspect of the present invention for processing a fixed-size primitive or a variable-size primitive sequence by using the method according to the second aspect of the present invention. For the system.

図3に示されるように,本発明の第3の側面に係るシステムは,拡張されたプリミティブを処理するために,従来技術の頂点処理に関する工程を変化するようにされている。インデックスバッファ1100に記憶され,生成されるインデックスにしたがって,頂点バッファ1200からの頂点データをフェッチし,頂点処理ユニット4000に頂点データを変換する。変換された頂点データは,プリミティブエンジン9000に配送され,ここで拡張されたプリミティブのアセンブル(assemble)や処理が行われる。プリミティブエンジン9000で拡張されたプリミティブのアセンブル処理によって発生した単純プリミティブは,固定されたプリミティブを処理する集積回路6000のような残りの処理パイプラインへと配送される。このような工程は,拡張されたプリミティブを処理する際にのみ特に有効である。単純プリミティブを処理する場合は,前記の第2の工程がなく,転送された頂点は固定されたプリミティブを処理する集積回路6000に直接配送されればよい。そして,固定されたプリミティブを処理する集積回路6000は,例えば,図1に示されるような公知のものを適宜採用すればよい。 As shown in FIG. 3, the system according to the third aspect of the present invention is adapted to change the process related to the prior art vertex processing in order to process the extended primitives. According to the index stored in the index buffer 1100 and generated, the vertex data from the vertex buffer 1200 is fetched, and the vertex data is converted to the vertex processing unit 4000. The converted vertex data is delivered to the primitive engine 9000, where the extended primitive is assembled and processed. Simple primitives generated by the assembly process of primitives extended by the primitive engine 9000 are delivered to the remaining processing pipelines such as the integrated circuit 6000 that processes fixed primitives. Such a process is particularly useful only when processing extended primitives. When processing a simple primitive, there is no second step as described above, and the transferred vertex may be directly delivered to the integrated circuit 6000 that processes the fixed primitive. As the integrated circuit 6000 for processing fixed primitives, for example, a known circuit as shown in FIG.

図3に示されるように,本発明のシステムの具体例としては,以下のモジュールを含むシステムがあげられる。すなわち,本発明のシステムは,頂点キャッシュ制御部, VCC, 2000,第1の頂点キャッシュ記憶部, PVC, 3000,第2の頂点キャッシュ記憶部, SVC, 5000,1又は複数の頂点処理ユニット, VPU, 4000,プリミティブエンジン, PE, 9000,及び固定サイズプリミティブ集積回路, FPA, 6000である。残りのパイプラインは,三角形のように単純プリミティブの固定された列の処理を実現する固定サイズプリミティブセットアップユニット 7000 及びラステライザー 8000を具備するシステムに関する。 As shown in FIG. 3, a specific example of the system of the present invention is a system including the following modules. That is, the system of the present invention includes a vertex cache control unit, VCC, 2000, first vertex cache storage unit, PVC, 3000, second vertex cache storage unit, SVC, 5000, one or more vertex processing units, VPU 4000, Primitive Engine, PE, 9000, and Fixed Size Primitive Integrated Circuit, FPA, 6000. The remaining pipeline relates to a system comprising a fixed size primitive setup unit 7000 and a rasterizer 8000 that implements processing of a fixed sequence of simple primitives such as triangles.

図3には,上記のシステムと情報の授受や処理を行う他のユニットを示していない。それは簡潔にするためと,本発明に特徴のあるものにアッセンブルするためである。具体的に記載を省略したものとして,ホストCPUやホストメモリ,三角形のラスタライズ用パイプラインなどがある。それらの相互の情報授受は,本発明との関係で必要な範囲で説明を行う。上記したモジュールにおいては,プリミティブエンジンと可変サイズの拡張されたプリミティブを処理することに関する頂点キャッシュ制御部の論理回路を適宜修正し,その他は公知のものを適宜用いることができる。すなわち,上記以外のモジュールは,点,線,三角形など単純固定サイズのプリミティブの処理を実現するためには,現在の3次元コンピュータグラフィックスにおいて用いられているものと類似したものを適宜採用することができる。 FIG. 3 does not show other units that exchange information and process information with the above system. This is for the sake of brevity and assembling what is characteristic of the present invention. Specifically omitted are a host CPU, a host memory, a triangular rasterization pipeline, and the like. The mutual exchange of information will be described to the extent necessary in relation to the present invention. In the above-described module, the logic circuit of the vertex cache control unit related to processing of the primitive engine and the variable-size extended primitive can be modified as appropriate, and the others can be used as appropriate. In other words, modules other than those described above should appropriately adopt modules similar to those used in current three-dimensional computer graphics in order to implement simple fixed-size primitives such as points, lines, and triangles. Can do.

頂点キャッシュ制御部,VCC,2000は,以下の処理を行う。インデックスバッファの内容を解析する。PVC3000とSVC5000の状態に従って,インデックスバッファ1100からフェッチされた頂点インデックスにしたがって,PVC3000の頂点バッファの内容をフェッチする。頂点データの頂点ごとの処理を実行するために,PVC3000からVPU(s)4000へ伝えられる頂点データを制御する。VPU(s)4000からSVC5000へと伝えられうる転送された頂点データの蓄積を制御する。プリミティブの種類(可変なサイズの拡張されたプリミティブかどうか)に応じて,SVC5000の内容を,PE9000又はFPA6000に配送する(具体的には,プリミティブの種類を判断し,プリミティブが可変なサイズの拡張されたプリミティブであればSVC5000の内容を,PE9000に配送する)。可変なサイズの拡張されたプリミティブを処理する場合は,PE9000にプリミティブのサイズに関する情報を配送する。PE9000に,プリミティブのサイズに関する情報と,全てのプリミティブの頂点に関する頂点データが配送された後には,可変なサイズの拡張されたプリミティブに関する処理を始める可能性があることを伝える。上記のとおり,本発明の好ましい態様は,プリミティブサイズはPE9000にのみ配送される。さらに,SVCの内容はPEに配送され,PE9000に,プリミティブのサイズに関する情報と,全てのプリミティブの頂点に関する頂点データが配送された後には,可変なサイズの拡張されたプリミティブに関する処理を始める可能性があることを伝えられる。インデックスバッファを解析する工程も,本発明に特有の工程であり,プリミティブサイズの抽出や,可変サイズの拡張されたプリミティブの処理に関連するものである。他の処理工程は,単純プリミティブに行われている公知の処理工程を適宜採用することができる。 The vertex cache control unit, VCC, 2000 performs the following processing. Analyzes the contents of the index buffer. The contents of the vertex buffer of the PVC 3000 are fetched according to the vertex index fetched from the index buffer 1100 according to the state of the PVC 3000 and the SVC 5000. In order to execute processing for each vertex of the vertex data, the vertex data transmitted from the PVC 3000 to the VPU (s) 4000 is controlled. Controls the accumulation of transferred vertex data that can be communicated from the VPU (s) 4000 to the SVC 5000. The contents of the SVC 5000 are delivered to the PE 9000 or the FPA 6000 depending on the type of primitive (whether it is an extended primitive of variable size) (specifically, the type of primitive is determined, and the size of the primitive is variable) If it is a primitive, the contents of the SVC 5000 are delivered to the PE 9000). When processing an extended primitive with a variable size, information on the size of the primitive is delivered to PE 9000. The PE 9000 is informed that there is a possibility that processing regarding the extended primitive of variable size may be started after the information regarding the size of the primitive and the vertex data regarding the vertices of all the primitives are delivered. As described above, in the preferred embodiment of the present invention, the primitive size is delivered only to PE9000. In addition, the contents of the SVC are delivered to the PE, and after the information about the size of the primitive and the vertex data about the vertices of all the primitives are delivered to the PE 9000, it is possible to start processing on the extended primitive of variable size I can tell you that there is. The process of analyzing the index buffer is also a process unique to the present invention, and is related to the extraction of primitive sizes and the processing of extended primitives of variable sizes. As other processing steps, known processing steps performed on simple primitives can be appropriately employed.

第1の頂点キャッシュ記憶部PVCは,ホストメモリから連続的に大量の頂点バッファからの情報が伝えられてキャッシュされる場所である。PVCは,頂点ごとのプロセッシング(per-vertex processing)において,配送されなかった頂点データがVPU(s)に配送されるように貯蔵するものとしても機能する。比較的大きく連続的なメモリブロックに対して,配送されなかった頂点データによりPVCが埋められることにより,メモリ移送に関して待ち時間の問題を軽減できる。また,PVCとVPU(s)が物理的,又は電気的に近くに設けられることにより,PVC中に配送されておらず処理されなければならない頂点データがある場合の移送のための待ち時間を軽減できる。 The first vertex cache storage unit PVC is a place where information from a large number of vertex buffers is continuously transmitted from the host memory and cached. The PVC also functions to store vertex data that has not been delivered to VPU (s) in per-vertex processing. By filling the PVC with non-delivered vertex data for a relatively large continuous memory block, the latency problem with respect to memory transfer can be reduced. Also, PVC and VPU (s) are physically or electrically located close together to reduce the waiting time for transport when there is vertex data that is not delivered in the PVC and must be processed. it can.

頂点処理ユニットVPU(s)は,ある固定された機能を達成するモジュールであるか,例えば,OpenGL及び/又はDirect3D 3D graphics APIsなどに基づく頂点処理を実行できるようにプログラマブルなモジュールであっても良い。VPU(s)は,位置,色,テキスト座標など様々な移送されなかった頂点属性を入力として受け取り,位置,色,テキスト座標,視点ベクトルなど移送される頂点の様々な属性を生成する。入力と出力の数や次元,すなわち入力と出力の頂点情報のフォーマットは異なっても良い。VPU(s)は,PVCから情報を受け取り,その出力をSVCへと伝える。 The vertex processing unit VPU (s) may be a module that achieves a certain fixed function, or may be a programmable module that can execute vertex processing based on, for example, OpenGL and / or Direct3D 3D graphics APIs. . VPU (s) receives as input various vertex attributes that have not been transferred such as position, color, and text coordinates, and generates various attributes of the transferred vertex such as position, color, text coordinates, and viewpoint vector. The number and dimensions of the input and output, that is, the format of the vertex information of the input and output may be different. VPU (s) receives information from the PVC and communicates its output to the SVC.

プリミティブエンジンPEは拡張されたプリミティブに関する情報処理を行うためのある固定された機能を実現するモジュールか,又はプログラマブルなモジュールである。PEを固定された機能を実現するモジュールとして実装することは,高いパフォーマンスを持って,限られた機能を実現するといった用途には有効である。PEをプログラマブルなモジュールとして実現することは,拡張されたプリミティブを処理するアルゴリズムに選択の自由度を与えることができるので,好ましい。拡張されたプリミティブを処理するモードにおいて,PEは,SVCから移送された頂点に関する出力を受け取り,プリミティブをアッセンブルし,プリミティブに関する処理を行って,FPAが理解できる単純プリミティブの列として出力する。PEは,本発明に独特なモジュールである。一方,プログラマブルなモジュールとして実装する場合は,単純なプリミティブ列の形で得られる拡張されたプリミティブについての演算結果をFPAに移送するように制御する機能を付加するほかは,プログラマブルなVPU(s)と多くの機能ロジックを共用するなど,プログラマブルなVPU(s)と同様の機能を有すればよい。PEは,FPAの場合と同様に,SVCとVCCから入力情報を受け取る。PEと他の装置との主な違いは,拡張されたプリミティブサイズの情報と,可変サイズの拡張されたプリミティブを処理する際には拡張されたプリミティブの全ての頂点を配送するための頂点データを配送したことについての通知信号の授受が必要であることに起因する。VCCは,以下に説明されるように頂点データのためにプリミティブサイズに関する情報をPEに伝えるために同じデータチャネルを用いる。   The primitive engine PE is a module that realizes a certain fixed function for performing information processing on the extended primitive, or a programmable module. Mounting a PE as a module that realizes a fixed function is effective for a purpose of realizing a limited function with high performance. Realizing PE as a programmable module is preferable because it gives the algorithm for processing extended primitives a degree of freedom of selection. In the extended primitive processing mode, the PE receives the output for the vertices transferred from the SVC, assembles the primitive, performs the processing for the primitive, and outputs it as a sequence of simple primitives understood by the FPA. PE is a module unique to the present invention. On the other hand, when implemented as a programmable module, a programmable VPU (s) is added except that a function for controlling the operation result of the extended primitive obtained in the form of a simple primitive sequence is transferred to the FPA. It is only necessary to have the same function as the programmable VPU (s), such as sharing many functional logics. The PE receives input information from the SVC and the VCC as in the case of the FPA. The main differences between PE and other devices are the extended primitive size information and the vertex data for delivering all the vertices of the extended primitive when processing variable size extended primitives. This is because it is necessary to send and receive a notification signal about delivery. The VCC uses the same data channel to convey information about the primitive size to the PE for vertex data as described below.

最後に,SVCから配送された頂点列から固定サイズプリミティブ集積回路は,点,線及び三角形といった単純プリミティブのアッセンブルを行うための固定された機能を有するモジュールである。SVCは,点,線,ラインループ,三角形,三角形ストリップ,及び三角形ファンといった,openGLやDirect3Dといった最近の3DグラフィックAPIsに用いることができるプリミティブの集合を実現する。拡張されたプリミティブをプロセッシングする場合は,FPAはPEから入力情報を受け取るが,PEが,移送された頂点に関する情報の授受についてのプロトコルとして,SVCやVCCがFPAへの頂点データ移送を行うためのものと同じものを用いるために,このモジュールにとって情報源は完全に透明であっても良い。   Finally, the fixed-size primitive integrated circuit from the vertex sequence delivered from the SVC is a module having a fixed function for assembling simple primitives such as points, lines, and triangles. SVC implements a collection of primitives that can be used in modern 3D graphics APIs such as openGL and Direct3D, such as points, lines, line loops, triangles, triangle strips, and triangle fans. When processing extended primitives, the FPA receives input information from the PE, but the PE or SVC can transfer vertex data to the FPA as a protocol for transferring information about the transferred vertices. The source may be completely transparent to this module in order to use the same thing.

頂点キャッシュ制御部は,チップ上のすべてのプリミティブ処理を制御する。頂点キャッシュ制御部は,プリミティブのための頂点データがPVC及びSVCに記憶された情報を用いて,インデックスバッファに記憶された情報を介して間接的に参照される場合において,インデックスバッファ及び頂点バッファの処理を加速することができる。また,頂点キャッシュ制御部は,プリミティブのための頂点データがPVCを用いて頂点バッファ内の頂点データ列によって形成される場合は,頂点バッファのみを参照することにより,処理を加速できる。VCCは,固定されたサイズのプリミティブを処理するモードと,拡張されたサイズのプリミティブを処理するモードの2つのモードを,プリミティブに応じて演算処理する。VCCの演算処理は,単純プリミティブや固定されたサイズの拡張されたプリミティブの演算処理する場合と同様の処理が行われる。   The vertex cache control unit controls all primitive processing on the chip. The vertex cache control unit uses the information stored in the PVC and the SVC to indirectly reference the vertex data for the primitive through the information stored in the index buffer. Processing can be accelerated. Further, when the vertex data for the primitive is formed by the vertex data string in the vertex buffer using PVC, the vertex cache control unit can accelerate the processing by referring only to the vertex buffer. The VCC performs arithmetic processing of two modes, a mode for processing primitives having a fixed size and a mode for processing primitives having an extended size, in accordance with the primitives. The VCC calculation process is the same as the calculation process for a simple primitive or a fixed-size extended primitive.

最初に,現在処理する頂点に対応する頂点属性インデックスセットの演算処理を行うために,移送されなかった頂点に関する頂点データをロードして,VPU(s)に送る。もしも,現在サンプルされたSVCから頂点属性インデックス列に相当する移送された頂点がなく,PVCにも移送されていない頂点データがない場合は,VCCは,ホストメモリからPVCへと頂点バッファに記憶される内容の塊をアップロードする。その塊は,PVCの空いているスペースを用いて質問とされるインデックス列に関する頂点データを含んでいるか,そこに前から記憶されている使用されていないデータを上書きする。その塊は,他のインデックスの頂点データを含んでいてもよく,それゆえその塊はPVCに存在するのであれば更に利用されても良い。PVCにおいて頂点データが利用可能となると,ラウンドロビン(round-robin)方式か又は他の方法により,VCCはVPU(s)への配送を始める。もし変換された頂点データが,SVCには存在せず,PVCに移送されないものが存在する場合は,VCCはホストメモリにアクセスせずにVPU(s)からPVCへの頂点データの移送を始める。このため,ホストメモリへのアクセス時間を削減できる。このようにして,PVCは,移送されない頂点データに関する演算処理をする処理速度を向上させることにつながる。   First, in order to perform the calculation processing of the vertex attribute index set corresponding to the currently processed vertex, the vertex data relating to the vertex that has not been transferred is loaded and sent to the VPU (s). If there are no transferred vertices corresponding to the vertex attribute index string from the currently sampled SVC and there is no transferred vertex data in the PVC, the VCC is stored in the vertex buffer from the host memory to the PVC. Upload a chunk of content. The chunk contains, or overwrites, unused data previously stored in the PVC containing the vertex data for the index sequence that is queried using the vacant space of the PVC. The chunk may contain other index vertex data, and therefore the chunk may be further utilized if present in the PVC. When vertex data becomes available in the PVC, the VCC begins delivery to the VPU (s), either by a round-robin scheme or other methods. If the converted vertex data does not exist in the SVC and there is something that is not transferred to the PVC, the VCC starts transferring the vertex data from the VPU (s) to the PVC without accessing the host memory. For this reason, the access time to the host memory can be reduced. In this way, PVC leads to an improvement in processing speed for performing arithmetic processing on vertex data that is not transferred.

ホストメモリにおいて異なる頂点属性の記憶位置は,異なるスペーシングと属性サイズのために,好ましくは,分散配置される。VCCは,そのような分散された頂点属性からのVPUへの入力データをアッセンブルする。具体的な実装では,VPUへの入力は4つのコンポーネントのフローティングベクターであり,それぞれの頂点に関する入力データはそのようなベクトルのいくつかにまたがることができる。VCCは,必要なタイプの変換処理を行うことで,分散された頂点属性から入力データのアッセンブルを行う。例えば,2バイトの整数値を浮動小数点のものに変換し,パッキング属性をそのコンフィグレーションに応じて4つのベクトルに変換する。例えば,2セットの2つのコンポーネントテクスチャー座標属性は,4つのコンポーネント入力ベクトルへ変換される。そして,VPUが動作可能な時間に沢山の入力データとして移送される。   The storage locations of different vertex attributes in the host memory are preferably distributed for different spacing and attribute sizes. The VCC assembles input data to the VPU from such distributed vertex attributes. In a specific implementation, the input to the VPU is a four component floating vector, and the input data for each vertex can span several such vectors. The VCC assembles input data from distributed vertex attributes by performing a necessary type of conversion process. For example, a 2-byte integer value is converted into a floating-point number, and the packing attribute is converted into four vectors according to the configuration. For example, two sets of two component texture coordinate attributes are converted into four component input vectors. Then, it is transferred as a lot of input data during the time when the VPU can operate.

頂点データに関する演算処理を終えて,1つ又はいくつかのVPS(s)が利用可能な状態となった際には,移送されるべき次の頂点に関する入力がVPUに4つのコンポーネントの浮動小数点ベクトル(4 component floating point
vectors)として配送される。ある数のベクトルを受け取った後に,VPUは頂点に関する演算処理を始める。その数は,頂点ごとの属性の数や,それらのパッキングに依存し,VPUを経て決定される。VPUが移送を終えると,VPUは,4つのコンポーネントの浮動小数点ベクトルをSVCへと出力する。いくつかのVPUが並行して動作するときは,VCCは頂点列を表現するためのVPUがSVCへアクセスすることを管理する。移送された頂点のフォーマット,すなわち,属性の数や出力ベクターへのパッキングは,入力されたものと異なるものであっても良い。
When processing on the vertex data is completed and one or several VPS (s) is available, the input for the next vertex to be transferred is input to the VPU as a four-component floating point vector. (4 component floating point
vectors). After receiving a certain number of vectors, the VPU starts processing on the vertices. The number depends on the number of attributes for each vertex and their packing, and is determined through VPU. When the VPU finishes the transfer, the VPU outputs the four component floating point vectors to the SVC. When several VPUs operate in parallel, the VCC manages that the VPU for representing the vertex sequence accesses the SVC. The format of the transferred vertices, ie the number of attributes and the packing into the output vector, may be different from the one entered.

SVCの貯蔵エンティティも4つのコンポーネントの浮動小数点ベクトルである。それ故,それぞれの移送されたベクトルは,SVCへの入力列によって占められる。
実際の態様においては,SVCは,単にFIFOキューを行い,移送されたデータを最近処理された頂点へと移送する際にFIFOがオーバーフローした場合には,最も古いデータを急いで出力する。勿論,LRU(least recently used)のようなその他の方法をSVCが格納することを妨げるものではない。本発明の本質は,そのような些細な事柄とは関係ないところにある。
The SVC storage entity is also a four component floating point vector. Therefore, each transferred vector is occupied by an input string to the SVC.
In an actual embodiment, the SVC simply performs a FIFO queue and rushes out the oldest data if the FIFO overflows when transferring the transferred data to the recently processed vertex. Of course, this does not prevent the SVC from storing other methods such as LRU (least recently used). The essence of the present invention is not related to such a trivial matter.

単純プリミティブ列の演算処理においては,移送された頂点データは,頂点列の順番に応じてSVCからFPAへと配送される。FPAは,所定の数の4コンポーネントベクターをSVCから受け取った場合に,頂点演算を始めるようにされている。所定の数は,移送された頂点についてVPUが出力したベクトルの数と等しい。FPAは,移送された頂点列から三角形をアッセンブルし,そしてラスタライズ処理のためにラスタライゼーションパイプラインへと配送される。   In the operation processing of the simple primitive sequence, the transferred vertex data is delivered from the SVC to the FPA according to the order of the vertex sequence. The FPA starts vertex calculation when a predetermined number of four-component vectors are received from the SVC. The predetermined number is equal to the number of vectors output by the VPU for the transferred vertices. The FPA assembles triangles from the transferred vertex sequence and delivers them to the rasterization pipeline for rasterization processing.

拡張されたプリミティブの演算処理はPEにおいてなされるので,変換された頂点データは,最初にPEへ送られる。PEも,固定されたサイズのプリミティブの演算処理と,可変サイズの拡張されたプリミティブの演算処理という,主に2つの演算モードを有する。固定サイズのプリミティブの演算モードにおいて,PEは,FPAと同様にSVCから所定の数の4つのコンポーネントベクトルを受けると,頂点の演算処理を開始する。拡張されたプリミティブの演算処理結果は,単純なプリミティブの列からなる形式で,PEからFPAへと配送される。PEから出力される単純なプリミティブの列は,単純プリミティブの頂点列として再現可能な形式で実現され,プリミティブ列は4つのコンポーネントベクトルをもって表現される。これは,VCC,PVC,VPUs,SVC,FPAなど単純プリミティブの演算処理に用いられる多くのハードウェアは,PEに拡張されたプリミティブ処理のための演算処理機構を付加するのみで,拡張されたプリミティブを処理する際にも再利用できることを意味する。更に,ホストメモリに格納される頂点属性に関しては,単純プリミティブの演算処理と同程度しか頂点キャッシュを利用しないので,拡張されたプリミティブの演算処理を迅速に行うことができ,その結果,拡張されたプリミティブに関するチップ上での迅速な演算処理を実現できる。   Since the operation processing of the extended primitive is performed in the PE, the converted vertex data is first sent to the PE. The PE also has two main operation modes: a fixed size primitive calculation process and a variable size extended primitive calculation process. In the fixed-size primitive calculation mode, when the PE receives a predetermined number of four component vectors from the SVC, similarly to the FPA, the PE starts the vertex calculation process. The operation result of the extended primitive is delivered from the PE to the FPA in the form of a simple sequence of primitives. A simple primitive sequence output from the PE is realized in a format reproducible as a vertex sequence of simple primitives, and the primitive sequence is represented by four component vectors. This is because most hardware used for arithmetic processing of simple primitives such as VCC, PVC, VPUs, SVC, and FPA only adds an arithmetic processing mechanism for primitive processing extended to PE, This means that it can be reused when processing. Furthermore, with respect to vertex attributes stored in the host memory, the vertex cache is used only to the same extent as the computation processing of simple primitives, so that the computation processing of extended primitives can be performed quickly, and as a result, it has been expanded. It is possible to realize quick calculation processing on the chip regarding the primitive.

固定サイズの拡張されたプリミティブを処理するモードにおいて,PEはそれぞれの頂点データを受け取った後,すなわち,特定の数の4つのベクトルをSVCから受け取った後に演算処理アルゴリズムを実行する。演算処理アルゴリズムは,受け取った頂点データの蓄積を管理するとともに,固定サイズの拡張されたプリミティブを頂点列から再構築した瞬間やその演算処理が簡潔された瞬間を検出する。   In the mode of processing fixed-size extended primitives, the PE executes an arithmetic processing algorithm after receiving each vertex data, that is, after receiving a specific number of four vectors from the SVC. The arithmetic processing algorithm manages the accumulation of received vertex data and detects the moment when a fixed-size extended primitive is reconstructed from a vertex sequence and the moment when the arithmetic processing is simplified.

固定サイズの拡張されたプリミティブを演算処理する際のひとつの好ましい動作システム例は,TWNプリミティブ列を演算処理するモードであり,それは上述した固定サイズの拡張されたプリミティブの演算処理にしたがって行われる。TWNプリミティブの列は,中心三角形列の中のひとつと同様の空間的な整合性を有する。しかしながら,プリミティブのサイズは,単なる三角形の2倍であるから,キャッシュサイズがキャッシュヒットレートが中心三角形列の演算処理のものと同様に刷るために,2次的キャッシュのサイズを大きくしなければならない。   One preferred operating system for processing fixed size extended primitives is the mode of processing TWN primitive sequences, which is performed according to the fixed size extended primitive processing described above. The TWN primitive sequence has the same spatial consistency as one of the central triangle sequences. However, since the size of the primitive is twice that of a simple triangle, the size of the secondary cache must be increased in order for the cache size to be printed in the same way as that of the arithmetic processing with the cache hit rate being the central triangle row. .

TWNプリミティブの列は,頂点データのフェッチング,移送,及びキャッシングに関して,単純プリミティブの列と同様の演算処理が行われる。相違点は,変換された頂点データの送り先がFPAではなくPEであるという点である。そして,変換された頂点データは,入力された頂点の順にSVCからPEへとひとつひとつ配送される。   The TWN primitive column is subjected to the same arithmetic processing as the simple primitive column with respect to fetching, transporting, and caching of vertex data. The difference is that the destination of the converted vertex data is PE, not FPA. The converted vertex data is delivered one by one from the SVC to the PE in the order of the input vertices.

可変サイズの拡張されたプリミティブの演算処理を行うために,VCCの論理回路は,本発明において,以下の手段を提供するように修正される。すなわち,インデックスバッファの内容を正確に解析して,プリミティブを形成する頂点の頂点位置属性の頂点属性インデックスからプリミティブサイズを分離する手段,PEへとプリミティブサイズに関する情報を配送する手段,及び,これから処理を行う,まだ配送されていない可変サイズの拡張されたプリミティブの頂点の数を計測して,PEへ伝えるとともに,プリミティブに関する演算処理を始めさせるために頂点データの配送が終わったことをPEへと知らしめる手段,である。この修正は,本発明の特有のものである。VCCの残りの機能は固定されたサイズのプリミティブを演算処理するものをそのまま用いることができ,したがって固定されたサイズのプリミティブを演算処理するための機能をそのまま用いることができる。   In order to perform operations on extended primitives of variable size, the VCC logic circuit is modified in the present invention to provide the following means. That is, means for accurately analyzing the contents of the index buffer, separating the primitive size from the vertex attribute index of the vertex position attribute of the vertex forming the primitive, means for delivering information about the primitive size to the PE, and processing from now on The number of vertices of extended primitives of variable size that have not yet been delivered is counted and communicated to the PE, and the delivery of vertex data is completed to the PE to start the processing related to the primitive. It is a means to inform. This modification is unique to the present invention. The remaining functions of VCC can be used as they are for arithmetic processing of fixed-size primitives, and therefore functions for arithmetic processing of fixed-size primitives can be used as they are.

具体的な具現例では,頂点位置属性のためのインデックスバッファ中のプリミティブの初めのインデックスは,VCC論理回路の可変サイズの拡張されたプリミティブ演算処理のモードにおいてそのサイズを決定する。図7に基づいて説明すると,VCC2000は,その内部にある頂点カウンター2100を初期化し,次のプリミティブの始まりを検出するために次に処理をされるインデックスごとにカウンター値を減らす。プリミティブの演算処理においてPEが利用可能となっているので,サイズは,拡張されたプリミティブを形成するための頂点列の頂点属性がSVCから配送されると同じパスを用いてPE内のプリミティブサイズレジスタ9100へと配送される。プリミティブサイズレジスタ9100は,PE内のプリミティブ演算処理アルゴリズムによりアクセスできるように実装され,頂点列を用いてプリミティブを再構築できるようにされている。   In a specific implementation, the initial index of the primitive in the index buffer for the vertex position attribute determines its size in the VCC logic circuit's variable size extended primitive operation mode. Referring to FIG. 7, the VCC 2000 initializes the vertex counter 2100 therein, and decreases the counter value for each index processed next in order to detect the start of the next primitive. Since PE is available in the primitive calculation process, the size is the same as the primitive size register in the PE using the same path as the vertex attribute of the vertex sequence for forming the extended primitive is delivered from the SVC. Delivered to 9100. The primitive size register 9100 is mounted so that it can be accessed by a primitive arithmetic processing algorithm in the PE, and a primitive can be reconstructed using a vertex sequence.

プリミティブサイズに関する情報がPEからVCCへと配送されるので,VCCがSVCからPEへと変換された頂点データを送り始めることができることとなる。頂点データのフェッチング,移送及びSVCへの配送に関する演算処理は,固定プリミティブのものと同様である。頂点の配送指令は,サイズ情報を含む最初のインデックスに続くインデックスバッファに記憶されるインデックス列により決められる。PEにプリミティブを演算処理するためのアルゴリズムは,頂点情報を蓄積し,VCCの頂点カウンター2100の数値を減らすために,それぞれの頂点の属性列がPEへと配送された後となるように実装される。カウンターが0になったときは,全ての頂点データがPEへと配送されたことを意味し,その旨の通知の信号が接続2300を介して,VCCからPEへと配送される。接続2300を介して信号を受領すると,PEは内部でのプリミティブ演算処理を始める。システムオペレーションのひとつの好ましい例は,基本となるCCSPプリミティブ列として記述されるコントロールメッシュから再分割表面を発生させるためのCCSPプリミティブ列に関する処理を行うことである。演算処理は,可変サイズの拡張されたプリミティブの演算処理にしたがって行われる。CCSPプリミティブ列との空間的な整合性(Spatial coherency)は極めて高い。実際に,イレギュラーな頂点以外の隣接するパッチの演算処理において,CCSPプリミティブは16個の頂点のうち12個もの頂点を共有することができ,したがって次のCCSPプリミティブを演算処理するために4つのみの頂点を加える演算処理を行い,SVCへと配送すればよい。このようにして,拡張されたプリミティブを演算処理するための頂点キャッシュの使用は,データのアクセスコストを大幅に軽減し,パッチの近隣における再分割パッチのチップ上での演算処理を実現できることとなる。図6に示される例では,全てで22個の頂点のうち14個を共有する連続する2つのパッチであり,SVCのヒット率は,約64%であり,より長い列の場合はより高くなると考えられる。そのような大きなプリミティブに関する処理を行うために,頂点キャッシュやインデックスバッファ/頂点バッファを用いなければ,頂点処理のために,極めて大きなメモリコストが必要となると考えられる。   Since the information regarding the primitive size is delivered from the PE to the VCC, the VCC can start sending the vertex data converted from the SVC to the PE. Arithmetic processing related to the fetching, transfer and delivery of vertex data to the SVC is the same as that of the fixed primitive. The vertex delivery command is determined by an index string stored in the index buffer following the first index including size information. The algorithm for computing primitives in the PE is implemented so that vertex information is accumulated and the attribute sequence of each vertex is delivered to the PE in order to reduce the value of the VCC vertex counter 2100. The When the counter reaches 0, this means that all vertex data has been delivered to the PE, and a notification signal to that effect is delivered from the VCC to the PE via the connection 2300. When a signal is received via connection 2300, the PE begins internal primitive processing. One preferred example of system operation is to perform processing on a CCSP primitive sequence to generate a subdivision surface from a control mesh described as a basic CCSP primitive sequence. The arithmetic processing is performed according to the arithmetic processing of the variable-size extended primitive. Spatial coherency with the CCSP primitive sequence is extremely high. In fact, in the computation of adjacent patches other than irregular vertices, the CCSP primitive can share as many as 12 vertices out of 16 vertices, and therefore 4 to compute the next CCSP primitive. It is sufficient to perform an arithmetic process for adding only the vertex and deliver it to the SVC. In this way, the use of a vertex cache to compute extended primitives significantly reduces data access costs and allows computation on the chip of subdivision patches in the vicinity of the patch. . In the example shown in FIG. 6, there are two consecutive patches that share 14 of the 22 vertices, and the SVC hit rate is about 64%, which is higher for longer sequences. Conceivable. If a vertex cache or index buffer / vertex buffer is not used to perform processing related to such a large primitive, it is considered that extremely large memory costs are required for vertex processing.

上述のような接続2300から信号を受領して処理を行うCCSPプリミティブの再分割パッチの場合は,演算処理に必要な全ての情報はPEに配送されているので,PEがCatmull−Clark再分割表面アルゴリズム(Jeffrey Bolz and Peter Schroder, in Proceedings
of the Web3D 2002
Symposium (WEB3D-02))や,the Web3D 2002 Symposium (WEB3D-02), pages 11-18, New York,
February 24 28
2002, ACM Press,に開示された演算処理や他のパッチごとの再分割アルゴリズムに従って,CCSPプリミティブの中心四角形に含まれる再分割メッシュを作成し始めることができる。再分割パッチの演算処理の結果は,他の拡張されたプリミティブと同様に,入力情報に応じて,三角形や,FPAにおける三角形ストリップ,などとされる。本発明の別の側面は,上記のようなシステムを集積回路において実現するものであり,固定された又は可変サイズの拡張されたプリミティブをオンチップで演算処理できるものである。また,そのような集積回路を含むグラフィックカードや,そのような集積回路を含むビデオゲーム装置をも提供する。
In the case of a CCSP primitive subdivision patch that receives and processes a signal from the connection 2300 as described above, since all information necessary for the arithmetic processing is delivered to the PE, the PE is a Catmull-Clark subdivision surface. Algorithm (Jeffrey Bolz and Peter Schroder, in Proceedings
of the Web3D 2002
Symposium (WEB3D-02)), the Web3D 2002 Symposium (WEB3D-02), pages 11-18, New York,
February 24 28
The subdivision mesh included in the center rectangle of the CCSP primitive can be started in accordance with the arithmetic processing disclosed in 2002, ACM Press, and other subdivision algorithms for each patch. The result of the calculation processing of the subdivided patch is a triangle, a triangle strip in the FPA, or the like according to the input information, like other extended primitives. Another aspect of the present invention realizes the above-described system in an integrated circuit, and can process fixed or variable-sized extended primitives on-chip. A graphic card including such an integrated circuit and a video game device including such an integrated circuit are also provided.

本発明は,Catmull−Clark再分割スキームによって生成された再分割表面の高速な処理を実現するために,上記のような集積回路を用いるシステムに関する。本発明の拡張されたプリミティブを演算処理するための装置は,リアルタイムレンダリングのインタラクティブな3次元コンピュータグラフィックスに用いることができる。その3次元コンピュータグラフィックスとして,同時にポリゴンのメッシュの多数の頂点にアクセスするためのアルゴリズムを実装するとともに,NURBSパッチによる碁盤の目や再分割された表面により表現された複雑な幾何学的な形状のリアルタイムなレンダリングに関するものがあげられる。   The present invention relates to a system using an integrated circuit as described above to realize high-speed processing of a subdivision surface generated by the Catmull-Clark subdivision scheme. The apparatus for computing extended primitives of the present invention can be used for interactive 3D computer graphics for real-time rendering. As 3D computer graphics, an algorithm for accessing multiple vertices of a polygon mesh at the same time is implemented, and a complex geometric shape expressed by a grid of NURBS patches and a subdivided surface. For real-time rendering.

例えば,そのような装置は,3次元画像を視覚化する3次元コンピュータグラフィックスにおけるハードウェアアクセレータカード,パーソナルデジタルアシスタンス,ビデオゲーム装置,カーナビゲーションシステムなどに用いることができる。   For example, such a device can be used for a hardware accelerator card, a personal digital assistance, a video game device, a car navigation system, etc. in 3D computer graphics for visualizing a 3D image.

これらの画像は,株式会社デジタルメディアプロフェッショナルのPICAとして知られるエミュレーターに本発明の装置を実装させて,各種3次元コンピュータグラフィックス画像を得た。図8A,図8B,図9A,図9B,図10A,図10B,図11A及び図11Bは,本発明の装置を用いて得られた画像結果を示す。図8Aと図8Bとは,シルエットの方向を比較し,視覚化の可否を検討するものであり,図8Aは視覚化できず,図8Bは視覚化できたものである。例えば,マンガのキャラクタをアニメーションするといった形状のアウトラインを強調する必要があるような用途には,図8Bに示されるようなシルエットによる視覚化を用いることができる。   These images were obtained by mounting the apparatus of the present invention on an emulator known as PICA of Digital Media Professional Inc. to obtain various three-dimensional computer graphics images. 8A, 8B, 9A, 9B, 10A, 10B, 11A and 11B show the image results obtained using the apparatus of the present invention. FIG. 8A and FIG. 8B compare the silhouette directions and examine the possibility of visualization. FIG. 8A cannot be visualized, and FIG. 8B can be visualized. For example, a silhouette visualization as shown in FIG. 8B can be used for an application where it is necessary to emphasize the outline of a shape such as animating a manga character.

図9Aと図9Bとは,本発明における再分割を行う前後の簡単なディスクのような形状のものをレンダリングした図を示す。図9Aは,もとの荒いメッシュを用いたものを示し,図9Bは,再分割過程においてポリ銀を追加して再分割したメッシュを用いたものを示す。図10Aと図10Bとは,図9A及び図9Bに比べてより複雑な形状のものに再分割を行ったものを示す図である。図11A,図11Bは,それぞれワイヤーフレームを除いた図10Aと図10Bのシェーディングに関する。本発明は,頂点キャッシュによりアクセレートされ,再分割アルゴリズムをオンチップで実装できる。よって,本発明は,ビデオゲームで重要な特徴である単純なメッシュに基づいて再分割を行うことにより得られる複雑な形状について実時間での発生や視覚化を行うことができることとなる。   FIG. 9A and FIG. 9B show a rendered version of a simple disc-like shape before and after re-division in the present invention. FIG. 9A shows the one using the original rough mesh, and FIG. 9B shows the one using the mesh that is subdivided by adding polysilver in the subdivision process. FIG. 10A and FIG. 10B are diagrams showing re-division into a more complicated shape as compared with FIG. 9A and FIG. 9B. 11A and 11B relate to the shading in FIGS. 10A and 10B, respectively, excluding the wire frame. The present invention is accelerated by the vertex cache and can implement the subdivision algorithm on-chip. Therefore, according to the present invention, it is possible to generate and visualize in real time a complex shape obtained by performing subdivision based on a simple mesh that is an important feature in video games.

本発明の拡張されたプリミティブを演算処理する装置は,リアルタイム3次元コンピュータグラフィックスの分野などで利用されうる。
The apparatus for processing the extended primitive of the present invention can be used in the field of real-time three-dimensional computer graphics.

Claims (9)

頂点キャッシュ制御部を備えるコンピュータシステムにより,3次元コンピュータグラフィックスにおいて,頂点キャッシュを用いて,固定サイズの単純プリミティブ列,及び固定サイズの拡張された又は可変サイズの拡張されたプリミティブ列の演算処理を行うための方法であって,
前記頂点キャッシュ制御部が,前記単純プリミティブ列及び前記拡張されたプリミティブ列を記憶するインデックスバッファの内容を解析して,プリミティブの種類に応じて,プリミティブが前記可変サイズの拡張されたプリミティブであるか否かを判断する解析工程と,
前記頂点キャッシュ制御部が,前記解析工程において,プリミティブが前記可変サイズの拡張されたプリミティブであると判断した場合に,前記可変サイズの拡張されたプリミティブのプリミティブサイズを頂点位置属性のインデックスバッファからフェッチングし,前記可変サイズの拡張されたプリミティブのプリミティブサイズを,前記可変サイズの拡張されたプリミティブのアッセンブル及び演算処理を行うユニットであるプリミティブエンジンへ配送する工程と,
頂点キャッシュから頂点データがなくなった際には,前記頂点キャッシュ制御部が,前記拡張されたプリミティブの頂点に関する頂点データを前記頂点キャッシュへフェッチし,頂点データを変換し,そして蓄積する工程と,
前記拡張されたプリミティブアッセンブル及び演算処理を行うために前記頂点キャッシュ制御部が,変換された頂点データを前記プリミティブエンジンへ配送する工程と,
前記プリミティブエンジンが,前記拡張されたプリミティブアッセンブル及び演算処理する工程と,
前記プリミティブエンジンが,前記拡張されたプリミティブの演算処理によって生じる固定サイズの単純プリミティブを,プリミティブのラスタライズ用パイプラインへ出力する工程と,
前記頂点キャッシュ制御部が,前記解析工程において,プリミティブが前記単純プリミティブであると判断した場合には,前記単純プリミティブを,前記プリミティブのラスタライズ用パイプラインへ配送する工程
を含む方法。
By using a vertex cache in a 3D computer graphics computer system with a vertex cache control unit, it is possible to perform arithmetic processing of fixed-size simple primitive sequences and fixed-size extended or variable-size extended primitive sequences. A way to do,
The vertex cache control unit analyzes the contents of an index buffer that stores the simple primitive sequence and the extended primitive sequence, and determines whether the primitive is the variable size extended primitive according to the type of the primitive. An analysis process for determining whether or not,
When the vertex cache controller determines in the analyzing step that the primitive is the extended primitive of the variable size, the primitive size of the extended primitive of the variable size is fetched from the index buffer of the vertex position attribute. And delivering the primitive size of the variable-size extended primitive to a primitive engine that is a unit for assembling and calculating the variable-size extended primitive;
When there is no vertex data from the vertex cache, the vertex cache control unit fetches vertex data related to the vertices of the extended primitive into the vertex cache, converts the vertex data, and stores the vertex data;
To perform assembling and processing of the extended primitives, wherein the vertex cache control unit, a step of delivering the transformed vertex data to the primitive engine,
The primitive engine, comprising the steps of assembling and processing of the extended primitives,
The primitive engine, a simple primitives fixed size caused by the processing of the extended primitives, and outputting the rasterized pipeline primitives,
A method including the step of delivering the simple primitive to a pipeline for rasterizing the primitive when the vertex cache control unit determines that the primitive is the simple primitive in the analyzing step .
前記可変サイズの拡張されたプリミティブのプリミティブサイズを頂点位置属性のインデックスバッファからフェッチングする工程は,
可変サイズの拡張されたプリミティブの頂点についての頂点位置属性列を記述するインデックスバッファへアクセスすることと,プリミティブを形成する頂点を参照する次のNインデックスとともに,そのプリミティブに関する最初のインデックス値を取り戻すことにより行われ,
ここで,Nはi番目のプリミティブの取り戻された値を示し,前記インデックスバッファにおけるそれより前のプリミティブのサイズ位置に続いて,次のプリミティブのサイズはNi+1番目の位置に格納される,
請求項1に記載の方法。
Fetching the primitive size of the variable size extended primitive from the index buffer of the vertex position attribute,
Access the index buffer that describes the vertex position attribute sequence for a vertex of a variable-size extended primitive, and retrieve the first index value for that primitive, along with the next Ni index that references the vertex forming the primitive Is done by
Here, N i indicates the retrieved value of the i th primitive, and the size of the next primitive is stored in the N i + 1 th position following the size position of the previous primitive in the index buffer.
The method of claim 1.
前記頂点キャッシュから頂点データがなくなった際には,拡張されたプリミティブの頂点に関する頂点データを前記頂点キャッシュへフェッチし,頂点データを変換し,そして蓄積する工程は,
固定サイズの拡張されたプリミティブの場合には,固定サイズの拡張されたプリミティブ又は頂点バッファに記憶されるものを整列することにより示される頂点バッファから行われ,
可変サイズの拡張されたプリミティブの演算を行う場合には,頂点バッファ内の内容を参照することにより関係しない頂点位置属性のインデックスを含むインデックスバッファのプリミティブと関連する最初のインデックスを有する固定サイズの拡張されたプリミティブ又は可変サイズの拡張されたプリミティブの場合は,1又は複数のインデックスバッファから選択された列の頂点バッファから行われる,
請求項1に記載の方法。
When there is no more vertex data from the vertex cache, the steps of fetching vertex data relating to the vertices of the extended primitive to the vertex cache, converting the vertex data, and storing are as follows:
In the case of fixed-size extended primitives, this is done from the vertex buffer indicated by aligning the fixed-size extended primitives or those stored in the vertex buffer;
When performing operations on variable-size extended primitives, fixed-size extensions with the first index associated with the primitive in the index buffer, including the index of the vertex position attribute that is not relevant by referring to the contents in the vertex buffer In the case of a selected primitive or a variable-size extended primitive, from the vertex buffer of the column selected from one or more index buffers,
The method of claim 1.
3次元コンピュータグラフィックスにおいて,頂点キャッシュを用いて,固定サイズの単純プリミティブ列及び,固定サイズの拡張された又は可変サイズの拡張されたプリミティブ列の演算処理を行うシステムであって,
最近用いられた頂点バッファの部分にアクセスでき,前記頂点バッファから頂点データを取得するための初期頂点バッファストア(PVC)と,
前記初期頂点バッファストア(PVC)から得られた前記頂点データを移送するための1つ又は複数の頂点プロセッシングユニット(VPU)と,
前記頂点プロセッシングユニット(VPU)により最近処理された変換された頂点データにアクセスするための第2の頂点キャッシュストア(SVC)と,
前記第2の頂点キャッシュストア(SVC)から配送された前記頂点データによりアセンブルされる単純及び拡張されたプリミティブの蓄積処理及び演算処理を行い,前記演算処理の演算結果は一連の単純プリミティブとなるプリミティブエンジン(PE)と,
前記一連の単純プリミティブから一連の固定サイズの単純プリミティブを収集し,そして,前記一連の固定サイズの単純プリミティブをフラグメントにラスタライズし,プロセッシングパイプラインへ前記フラグメントを出力するためのラスタライザと,
頂点キャッシュ制御部(VCC)と,を具備し,
前記頂点キャッシュ制御部(VCC)は,
前記単純プリミティブ列及び前記拡張されたプリミティブ列を記憶するインデックスバッファにアクセスして,前記インデックスバッファの内容を解析し,プリミティブの種類に応じて,プリミティブが前記可変サイズの拡張されたプリミティブであるか否かを判断し,
前記可変サイズの拡張されたプリミティブを処理する際には,前記可変サイズの拡張されたプリミティブのプリミティブサイズに関する情報を前記プリミティブエンジン(PE)に伝え,
前記初期頂点バッファストア(PVC)が前記頂点バッファから頂点データを取得することを制御し,
前記初期頂点バッファストア(PVC)に蓄積された頂点データの収集を制御するとともに,移送された頂点データが前記初期頂点バッファストア(PVC)から喪失した場合は,移送のために前記頂点プロセッシングユニット(VPU)へ収集された頂点データを移送するように制御し,そして,
前記単純プリミティブ及び前記拡張されたプリミティブに関する情報を収集すると共にそれらの処理を行うために,前記第2の頂点キャッシュストア(SVC)から前記プリミティブエンジン(PE)へ頂点データが配送されることを制御する,
システム。
In 3D computer graphics, a system that performs processing of a fixed-size simple primitive sequence and a fixed-size extended or variable-size extended primitive sequence using a vertex cache ,
An initial vertex buffer store (PVC) for accessing a portion of the recently used vertex buffer and obtaining vertex data from the vertex buffer;
One or more vertex processing units (VPUs) for transporting the vertex data obtained from the initial vertex buffer store (PVC);
A second vertex cache store (SVC) for accessing transformed vertex data recently processed by the vertex processing unit (VPU);
Primitives for storing and calculating simple and extended primitives assembled by the vertex data delivered from the second vertex cache store (SVC), and for the calculation result of the calculation processing to be a series of simple primitives An engine (PE),
A rasterizer for collecting a series of fixed-size simple primitives from the series of simple primitives, rasterizing the series of fixed-size simple primitives into fragments, and outputting the fragments to a processing pipeline;
A vertex cache control unit (VCC),
The vertex cache control unit (VCC)
By accessing the index buffer for storing the simple primitive sequence and the extended primitives column, analyzes the contents of the index buffer, depending on the type of primitive, or primitives are extended primitives of said variable size Determine whether or not
When processing an extended primitives of the variable size, conveys information about the extended primitive size of primitives of said variable size to the primitive engine (PE),
Controlling the initial vertex buffer store (PVC) to obtain vertex data from the vertex buffer;
Controls the collection of vertex data stored in the initial vertex buffer store (PVC) and if the transferred vertex data is lost from the initial vertex buffer store (PVC), the vertex processing unit ( Control to transfer the collected vertex data to the VPU), and
To perform these processes as well as collect information about the simple primitives and the extended primitive control that vertex data is delivered the second vertex cache store from (SVC) to the primitive engine (PE) Do,
system.
可変サイズの拡張されたプリミティブの演算処理を行う場合に,プリミティブエンジンへプリミティブサイズを配送する工程は,前記プリミティブを形成する頂点を形成するためにプリミティブエンジンへと変換された頂点データも配送される,
請求項4に記載のシステム。
When processing variable-sized extended primitives, the process of delivering the primitive size to the primitive engine also delivers the vertex data converted to the primitive engine to form the vertices forming the primitive. ,
The system according to claim 4.
前記頂点キャッシュ制御(VCC)が固定サイズの単純プリミティブ及び,固定サイズの拡張された又は可変サイズの拡張されたプリミティブの処理するように設計されており,
前記固定サイズの単純プリミティブの処理モード固定サイズの単純プリミティブの演算処理及び,固定サイズの拡張された又は可変サイズの拡張されたプリミティブの演算処理に用いられ,
一方,可変サイズの拡張されたプリミティブの演算処理モードは可変サイズの拡張されたプリミティブの演算処理に用いられる,
請求項4に記載のシステム。
The vertex cache controller (VCC) simple primitives and fixed size, and is designed to handle the extended primitives that expanded or variable size of a fixed size,
The fixed-size simple primitive processing mode is used for fixed-size simple primitive arithmetic processing and fixed-size extended or variable- size extended primitive arithmetic processing.
On the other hand, the variable-size extended primitive calculation mode is used for variable-size extended primitive calculation processing.
The system according to claim 4.
請求項4に記載のシステムを含み、一連の固定されたサイズの拡張されたプリミティブは一連の可変サイズの拡張されたプリミティブの演算処理を行うための集積回路。   5. An integrated circuit comprising the system of claim 4, wherein the series of fixed size extended primitives operates on a series of variable size extended primitives. 請求項7に記載の集積回路を具備するグラフィックスカード。   A graphics card comprising the integrated circuit according to claim 7. 請求項7に記載の集積回路を具備するビデオゲームマシーン。   A video game machine comprising the integrated circuit according to claim 7.
JP2011231190A 2006-11-01 2011-10-20 A device to accelerate the processing of the extended primitive vertex cache Active JP5216130B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011231190A JP5216130B2 (en) 2006-11-01 2011-10-20 A device to accelerate the processing of the extended primitive vertex cache

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006297590 2006-11-01
JP2006297590 2006-11-01
JP2011231190A JP5216130B2 (en) 2006-11-01 2011-10-20 A device to accelerate the processing of the extended primitive vertex cache

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008541994A Division JP4913823B2 (en) 2006-11-01 2007-10-31 A device to accelerate the processing of the extended primitive vertex cache

Publications (2)

Publication Number Publication Date
JP2012014744A JP2012014744A (en) 2012-01-19
JP5216130B2 true JP5216130B2 (en) 2013-06-19

Family

ID=39343949

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008541994A Active JP4913823B2 (en) 2006-11-01 2007-10-31 A device to accelerate the processing of the extended primitive vertex cache
JP2011231190A Active JP5216130B2 (en) 2006-11-01 2011-10-20 A device to accelerate the processing of the extended primitive vertex cache

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008541994A Active JP4913823B2 (en) 2006-11-01 2007-10-31 A device to accelerate the processing of the extended primitive vertex cache

Country Status (2)

Country Link
JP (2) JP4913823B2 (en)
WO (1) WO2008053597A1 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2930483C (en) 2005-12-09 2017-11-07 Fallbrook Intellectual Property Company Llc Continuously variable transmission
EP1811202A1 (en) 2005-12-30 2007-07-25 Fallbrook Technologies, Inc. A continuously variable gear transmission
WO2009065055A2 (en) 2007-11-16 2009-05-22 Fallbrook Technologies Inc. Controller for variable transmission
JP5616333B2 (en) * 2008-05-29 2014-10-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated System, method and computer program for plane filling engines using geometry shaders
JP5670723B2 (en) * 2010-12-27 2015-02-18 株式会社ディジタルメディアプロフェッショナル Image processing device
EP2518445B1 (en) 2011-04-29 2019-02-27 Harman Becker Automotive Systems GmbH Database for a navigation device, method of outputting a three-dimensional representation of a terrain and method of generating a database
US10047861B2 (en) 2016-01-15 2018-08-14 Fallbrook Intellectual Property Company Llc Systems and methods for controlling rollback in continuously variable transmissions
US10023266B2 (en) 2016-05-11 2018-07-17 Fallbrook Intellectual Property Company Llc Systems and methods for automatic configuration and automatic calibration of continuously variable transmissions and bicycles having continuously variable transmissions
US10510181B2 (en) * 2017-06-27 2019-12-17 Samsung Electronics Co., Ltd. System and method for cache management using a cache status table
JP7182863B2 (en) 2017-11-02 2022-12-05 キヤノン株式会社 Information generation device, information processing device, control method, program, and data structure
US11215268B2 (en) 2018-11-06 2022-01-04 Fallbrook Intellectual Property Company Llc Continuously variable transmissions, synchronous shifting, twin countershafts and methods for control of same
US11174922B2 (en) 2019-02-26 2021-11-16 Fallbrook Intellectual Property Company Llc Reversible variable drives and systems and methods for control in forward and reverse directions
CN111047503B (en) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 Attribute storage and assembly optimization circuit of vertex array class command
CN113868280B (en) * 2021-11-25 2022-03-25 芯和半导体科技(上海)有限公司 Parameterized unit data updating method and device, computer equipment and storage medium
CN115599491A (en) * 2022-12-14 2023-01-13 西安纽扣软件科技有限公司(Cn) SVG vector diagram display method, device, equipment and storage medium
CN115829825B (en) * 2023-01-10 2023-05-05 南京砺算科技有限公司 Loading control method of primitive data, graphic processor, equipment and storage medium

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842004A (en) * 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
CN102842145B (en) * 2000-03-31 2016-08-24 英特尔公司 Tiled graphics architecture
US6741249B1 (en) * 2002-03-20 2004-05-25 Electronics Arts, Inc. Method and system for generating subdivision surfaces in real-time
US7209137B2 (en) * 2002-09-12 2007-04-24 International Business Machines Corporation Efficient triangular shaped meshes
JP4479957B2 (en) * 2003-07-18 2010-06-09 パナソニック株式会社 Curved surface subdivision device
US7439983B2 (en) * 2005-02-10 2008-10-21 Sony Computer Entertainment Inc. Method and apparatus for de-indexing geometry

Also Published As

Publication number Publication date
WO2008053597A1 (en) 2008-05-08
JPWO2008053597A1 (en) 2010-02-25
JP2012014744A (en) 2012-01-19
JP4913823B2 (en) 2012-04-11

Similar Documents

Publication Publication Date Title
JP5216130B2 (en) A device to accelerate the processing of the extended primitive vertex cache
US10600241B2 (en) Method and apparatus for rendering a computer generated image
JP4639232B2 (en) Improved scalability in fragment shading pipeline
Sen et al. Shadow silhouette maps
US6232981B1 (en) Method for improving texture locality for pixel quads by diagonal level-of-detail calculation
US20050093872A1 (en) Method for compressing data in a bit stream or bit pattern
US20190347757A1 (en) Graphics processing
US9218686B2 (en) Image processing device
JP2005100177A (en) Image processor and its method
US20180082399A1 (en) Primitive shader
TWI708208B (en) Graphics processing systems
US10943389B2 (en) Removing or identifying overlapping fragments after z-culling
US7616202B1 (en) Compaction of z-only samples
Ramanarayanan et al. Feature-based textures
US10796483B2 (en) Identifying primitives in input index stream
KR20120034293A (en) Method and apparatus for processing vertex
JP2005100176A (en) Image processor and its method
JP3892016B2 (en) Image processing apparatus and image processing method
EP4123106A1 (en) Image processing device, image processing method, and image processing program
US10062206B2 (en) Parallel micropolygon rasterizers
Liu et al. Accelerating volume raycasting using proxy spheres
Ivo et al. Improved silhouette rendering and detection of splat-based models
KR100868396B1 (en) Graphic processing system and method for subdividing geometry images
US20220245883A1 (en) Method and system of decoupled object space shading
Liu et al. Fast isosurface rendering on a GPU by cell rasterization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130206

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130301

R150 Certificate of patent or registration of utility model

Ref document number: 5216130

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250