WO2008053597A1 - Device for accelerating the processing of extended primitive vertex cache - Google Patents

Device for accelerating the processing of extended primitive vertex cache Download PDF

Info

Publication number
WO2008053597A1
WO2008053597A1 PCT/JP2007/001196 JP2007001196W WO2008053597A1 WO 2008053597 A1 WO2008053597 A1 WO 2008053597A1 JP 2007001196 W JP2007001196 W JP 2007001196W WO 2008053597 A1 WO2008053597 A1 WO 2008053597A1
Authority
WO
WIPO (PCT)
Prior art keywords
vertex
primitive
size
extended
index
Prior art date
Application number
PCT/JP2007/001196
Other languages
French (fr)
Japanese (ja)
Inventor
Kozakov Maxim
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 JP2008541994A priority Critical patent/JP4913823B2/en
Publication of WO2008053597A1 publication Critical patent/WO2008053597A1/en

Links

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

Definitions

  • the present invention relates to the field of three-dimensional computer graphics. More specifically, the present invention provides a method and a method for processing information in a hardware at high speed for a geometric primitive having many vertices called a primitive extended in the specification. About the system.
  • Another set of algorithms requires access to a more complex part of the processed form than just a single triangle in the approximation at a time.
  • access to some limited neighboring vertices of the triangle is necessary to detect the silhouette edges, and computes the curvature at the mesh vertices and so on.
  • FIG. 1 shows a portion of a typical 3D graphics hardware asset pipeline.
  • the list of primitives is described by an index buffer 1100 and a vertex buffer 1200.
  • index buffer 1100 Usually stored in the host machine memory 1000, the contents of the index and vertex buffer are illustrated in Figure 2A and Figure 2B.
  • a set of triangles 101 possibly sharing a vertex, is represented by a set of vertex data that is successively packed into the vertex / buffer 1200 and index buffer 1100.
  • position 3, 1100 defines a triangle.
  • Next 3 positions in set 101 If the majority of the vertices in the vertex / buffer 1200 are reused, at which point the reused vertex in the vertex buffer 1200 hits the point Triangle set surrogates can be quite compact when vertex data marked with a padded fill pattern usually requires much more accumulated space than the index buffer index. Referring to FIG. 2B, the representation is even more concise with the triangle strip 102 case. In this case, 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 in this case describe the triangle set more effectively in terms of the number of index lists per triangle. Describe the same method defined by one set of line segments, with two vertices and one set point defined by one vertex per point using an index and a vertex buffer. Can do.
  • a vertex cache device is used to accelerate the processing of a set of primitives defined using indices and vertices / buffers.
  • the contents of index buffer 1 100 are not only used to extract vertex buffer 1200, but also recently used to detect if vertices with the same index have been processed. May still be available in the cache.
  • the vertex cache controller 2000 gets the contents of the index buffer 1 100 and analyzes it. Initially the cache is empty, so the vertex cache controller will deliver vertex buffer contents containing vertex data for index squirrel obtained from index buffer 1 100 to first vertex cache 3000. Is initialized.
  • 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 only by the index list by the vertex cache controller. Nevertheless, it is the first vertex cache 3000 and it was later indexed. Retained because it may be used by Sir Xuris. Since the index is already at the first vertex, if the vertex data caches 3000, no host memory access is performed.
  • 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 sent to the secondary vertex cache 5000.
  • As Index presents it in the secondary vertex cache 5000, it delivers the vertex data transformed by any other without overheading to the primitive assembly 6000.
  • Patent Document 1 W003 / 081 528 pamphlet
  • Patent Document 2 US Patent Application Specification 2005/001 2750
  • the present invention relates to an algorithm used in three-dimensional computer graphics.
  • the purpose is to solve on-chip processing problems related to extended geometric primitives such as subdivision surface patches, NURBS patches, and adjacent triangles used as input information in rhythms.
  • extended geometric primitives such as subdivision surface patches, NURBS patches, and adjacent triangles used as input information in rhythms.
  • Such algorithms include Gatmu l ⁇ G lark loop, which is a 4_3 subdivision scheme, NURBS surface segmentation, silhouette discovery, and the simplest geometric geometric primitive to construct a triangle 3 It includes various schemes implemented in known computer graphics, such as algorithms that require paired vertices.
  • the size of primitives in current 3D computer graphics is fixed. For example, a triangle has three vertices, a straight line has two vertices, and a point has one vertex.
  • the primitive size can be any size, especially for extended primitives used in subdivision of surface patches. When using extended primitives within a reasonable range, the maximum number of vertices is required to be implemented on the chip.
  • the next problem is the difficulty in achieving random memory access, especially when processing information using extended primitives.
  • the vertex data composing the primitive can be distributed and stored in the storage unit as in simple primitives.
  • the problem here is the number of vertices in the extended primitive, which is several times larger than usual, and it is necessary to access the memory randomly to fetch the corresponding vertex data. It happens. Random access in graphics devices is limited to produce serious defects if not properly cached Normally, it is used only for devices related to vertex caches and devices related to texture sampling.
  • the present invention assigns an index to each vertex, stores the index in the index buffer, expresses the vertex in the primitive using the stored index, and then associates the index with the index.
  • Vertex information is read from the vertex buffer and used for primitive processing.
  • regular primitives such as triangles and quadrilaterals are used as regular primitives, but the present invention also uses primitives with four or more vertices than usual, while using these regular ones.
  • Such primitives with a variable number of vertices and more than usual are called variable-size extended primitives.
  • vertex information about a primitive is input, it is determined whether the primitive is a normal primitive or an extended primitive of variable size.
  • the system of the present invention includes a vertex engine that receives various information from a computer and converts information related to vertices, and a primitive engine that receives vertex information converted from the vertex engine and assembles primitives.
  • the primitives assembled by the primitive engine are rasterized by the rasterizer, stored as 3D computer graphics in a frame buffer, and rendered on the monitor.
  • 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 more than a quadrangle, the necessary arithmetic processing is performed on the vertex information.
  • Primitive assembly means that the transformed individual vertices are assembled into a primitive. After primitive assembly, individual processing is performed for each primitive.
  • the primitive may include a variable size. If the primitive size is 3, such as when the primitive is a triangle, the index table needs to be accessed every multiple of 3.
  • the device only needs to remember the number 3 and does not need to be described.
  • the primitive size can be changed for each primitive, it is difficult to know 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.
  • the primitive size is described in the index table.
  • v m (V 1, V 2, v 3: However, v m is (x m, y m, z m)) consist of, the color of each vertex, red , White and yellow.
  • the second triangle adjacent to the first triangle is
  • the vertices excluding the first vertex become the two vertices of the next triangle, and the next triangle is expressed using another vertex.
  • This method can significantly reduce memory costs. However, it is still necessary to describe 2 X n or more vertices to draw n triangles.
  • V 3 in V 3 to form a single triangle, so as to form a next triangle in V 2, V 3, V 4, and stores the index.
  • an index table that can read vertex data from the vertex buffer of the vertex engine is used.
  • index The width of the tableable depends 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. An index table is usually one, and is sufficient for most situations. 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 Direct 3D.
  • the gist of the present invention is to use a vertex cache fac iliti es 3 ⁇ 4: in a suitable graphics selector to enable processing of extended geometric primitives. About talking.
  • This is an added device compared to the conventional technology, and includes a primitive engine (primitive engine) used for assembling and processing the extended primitive proposed in the present invention, and an extended primitive. Achieved by using in combination with an extended index / vertex buffer to represent the polygon mesh used to represent
  • the extended primitive is expressed based on the extended index / vertex / kuffer for expressing the polygon mesh.
  • 3D graphic libraries such as Direct3D and openGL, and they provide a method for quickly processing polygon meshes using such hardware.
  • the vertex buffer stores the vertex attributes (vertex attributes) at each vertex of the polygon mesh to be processed, while the contents of the index buffer contain mesh connection information.
  • the index buffer contains a description of the polygon array of the same size associated with the vertex numbers that make up the index string indicating the contents of the vertex buffer.
  • an index sequence belonging to a polygon is By referring to the vertex data, the vertex sequence of the polygon is described, and then the polygon edge sequence formed by the continuous connection of the vertices in the polygon is described.
  • the index buffer can use an index buffer in the same way as an extended primitive sequence of a certain size.
  • a buffer is used.
  • a fixed-size extended size of different size that must specify the number of vertices, which is the number of additional vertices, in the vertex list via the extended primitives and indexes stored only in the index buffer. It is sufficient to represent primitives and 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 not dependent on the primitive size. This is the same as the representation of simple primitives. From the point of view of the graphic library, the representation is the same as for simple primitives, and even if the primitive sequence is expanded compared to the simple primitive sequence, the API will not change significantly. It is not required and can reduce the required memory.
  • a combination of a vertex cache and a primitive engine is used in order to quickly compute a hardware-extended primitive.
  • the vertex cache allows access to vertices that have been processed immediately before with a short waiting time.
  • the vertex index can be used as a 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 processing.
  • the present invention preferably uses the vertex cache for arithmetic processing of extended primitives.
  • the extended primitives can also have a low-latency access to the vertices that were processed immediately before, as in simple primitives. Available. This eliminates the performance degradation caused by the many random accesses required when fetching the extended primitive vertex data.
  • the same vertex cache hardware is used in the processing of simple primitives and extended primitives, the hardware size can be reduced. Also, since the vertex cache is used, there is no upper limit on the maximum size of the extended primitive.
  • the vertex cache is used for vertices in fixed-size extended primitives as well as vertices in variable-size extended primitives.
  • the extended primitive assembly and processing are processed by the primitive engine, which is a module added to the conventional hardware.
  • This module converts the input information into a transformed vertex map for each vertex of the primitive extended from the vertex cache. In addition, it receives size information about variable-size extended primitives from the cache controller.
  • 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.
  • the first is versatility when processing extended primitives. If it is controlled and programmable by the primitive engine, any extended primitive can be implemented using the expression by the extended index buffer and vertex buffer proposed by the present invention. , It allows quick access to vertex data. Since it is directly connected to the vertex cache, the latency problem of assembling extended primitives and acquiring vertex data for processing is greatly reduced. Reuse of the pipeline for arithmetic processing and arithmetic processing on the extended primitive chip also contribute to this.
  • 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 without using the operation result to the host computer. Since it is converted into a column, the problem of performing arithmetic processing only on the chip can be solved.
  • the fixed index can be expanded by using an extended index / vertex / buffer expression, a minor modification to the vertex cache logic that computes simple primitives, and the primitive engine.
  • the primitive engine On the chip, such as subdivision surface rendering that does not exist in the current 3D graphics hardware such as NURBS tessellation. It is possible to perform the arithmetic processing.
  • Figure 1 shows the conventional hardware architecture of the vertex cache device. Indicates
  • Fig. 2A shows the index / vertex / buffer layout for sampling a sequence of triangles.
  • Figure 2B shows the layout of the index / vertex buffer for sampling the triangle strip sequence.
  • FIG. 3 shows a vertex cache of the architecture in the present invention.
  • Figure 4A shows a triangle and its neighboring fixed-size extended primitives.
  • Figure 4B shows a fixed-size extended primitive strip sequence around a triangle and its neighbors.
  • Fig. 4G shows the index / vertex / uffer layout of the triangle and its neighboring fixed-size extended primitives.
  • Figure 4D shows the index / vertex buffer layout of a triangle and its neighboring fixed-size extended primitive strip sequence.
  • Figure 5A shows the triangle and its neighboring fixed-size extended primitive Suan sequence.
  • Fig. 5B shows the structure of the edge-based flap Siletsu.
  • Fig. 5G shows the index / vertex / uffer layout of the triangle and its neighboring fixed-size extended primitive Suan sequences.
  • Figure 6A shows a variable-size extended primitive.
  • Fig. 6B shows a Gatmu I-Clark subdivision patch with extended primitives of variable size.
  • FIG. 6G shows the layout of the Gatmu l I-Clark subdivision / tach index / vertex buffer with variable-size extended primitives.
  • FIG. 7 shows a communication path between the vertex cache control unit, the primitive engine, and the fixed size primitive integrated circuit introduced by the present invention.
  • FIG. 8B shows the rendering results when siletto detection and visualization are performed.
  • FIG. 9A shows the rendering results of the wire-one frame shape without re-segmentation.
  • Fig. 9B shows the rendering results for the wire-frame shape when subdivision is performed.
  • Fig. 10A Fig. 1 OA shows the result of rendering one wire frame without re-segmentation, and the inside of the box shows the coarse elements of the mesh.
  • Fig. 10B Fig. 1 OB shows the rendering result of the wire-one frame when subdivision is performed, and the inside of the box shows the coarse mesh elements that are smoothed during subdivision.
  • Fig. 11A shows the rendered image without subdivision.
  • Fig. 11B shows the rendered image when subdivision is performed.
  • the present invention basically relates to the processing of on-chip complex geometric primitives (also called extended primitives) formed by a fixed or variable number of vertices.
  • the first aspect of the present invention describes simple primitives and also describes variable-size extended primitive sequences using four or more vertex data for each variable-size extended primitive.
  • a method for two-dimensional computer graphics which can store a vertex group including a plurality of attributes.
  • the position of the attribute in the buffer memory is obtained by multiplying the index that is the vertex number in the vertex sequence by an integer, and the attribute Using the vertex / queffer that can be obtained by biasing with the number indicating the type, using the index and the number indicating the attribute type, in the vertex attribute memory of the vertex in the vertex buffer Specify the position of the vertex buffer, and the vertex position attribute value sequence in the vertex / uffer in relation to the vertex sequence
  • the variable size extended primitive size 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 stored.
  • extended primitives may contain more than four vertices.
  • the number of vertices is 4, 5, 6, 7, 8, 9, or 10.
  • the above-described method is such that the fixed-size primitive sequence can be reconstructed by using the vertex sequence, and in the case of a variable-size extended primitive sequence, it can be reconstructed by using the primitive size.
  • the method can be reconstructed by the size and the vertex sequence that forms the size. Can describe variable size extended primitives.
  • the method may further include the step of identifying multiple index buffers for all remaining vertex attributes, so that each attribute is addressed by its own index, and therefore a separate index buffer is used. If required, all required vertex attributes can be specified for extended primitive vertices, such as neighboring points.
  • the steps of the method for specifying an extended primitive sequence introduced by the present invention have the following merits.
  • Various types of extended primitives can be identified, for example, types that can be reconstructed from fixed-size or variable-sized vertex sequences. Referenced by the compact index It becomes compact by being expressed as vertices shared by primitive sequences. This method is used to identify triangle / quadrature meshes.
  • the method extends the index / top buffer to represent simple primitive sequences to describe fixed-size or variable-size extended primitive sequences.
  • simple primitives refer to basic shapes used in computer graphics, such as triangles, rectangles, lines, and points.
  • Such processing of primitive sequences is usually the biggest problem in 3D graphic libraries such as open G L and di rec t 3D.
  • the extended primitive means a geometric primitive formed by a fixed number or a variable number of vertex sequences having four or more vertex numbers.
  • An index buffer / vertex buffer for representing a simple primitive means that a simple primitive is represented as a simple primitive sequence represented as a vertex sequence constituting the primitive.
  • Vertex buffer means a storage device of vertex attributes used in computer graphics.
  • the vertex attribute means an attribute associated with 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 so on. Attributes can be of various dimensions, such as scalars, two component vectors, three component vectors, and various values such as 1-byte integer, 2-byte integer, 4-byte integer, 4-byte floating point, etc. Can take a type.
  • Each attribute example requires a fixed memory size storage device determined by its dimension and value type.
  • the method of identifying a point buffer includes placing attribute strings in memory in such a way that attribute values of the same attribute type are placed in memory in the same way. 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.
  • attribute values can be represented by integer positions or indexes in the column. If all attribute columns have the same size, the vertex index value derived from the attribute value vertex sequence will increase in relation to the number of vertices in the sequence. 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 “ver tex buffer-on ly represent” on.
  • An array in memory that contains a sequence of integer values to identify. If a vertex sequence contains only one of all types of index sequences of its associated vertex attributes, specify one index buffer to fully describe the vertex sequence for all vertex attributes It is enough. Conversely, there may be cases where each vertex attribute type is related to the vertex sequence and is unique to the vertex index of the vertex index. In such cases, the number of index buffers to identify is only the same as the number of attribute types. Combining vertices / queffers with an index buffer with all the required index arrays in it forms an index / vertex / queffer that is represented by a sequence of simple primitives.
  • the process of specifying the vertex buffer is to specify the vertex attributes (attr i butes) associated with each vertex, such as the intex buffer and / or vertex / kuffa in a simple primitive sequence, as described above. Process.
  • 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.
  • this step includes the step of specifying the primitive size according to the index value in the index buffer for specifying the vertex position. 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 the primitive size for each primitive.
  • the present invention can be used for an extended primitive that can gather all necessary information by the size of the primitive, the vertex sequence that can form the primitive, and the specific value of the vertex sequence.
  • an example of a fixed-size extended primitive is a triangle “Triangle with Neighborhood” (TWN) primitive that includes a neighbor.
  • TWN triangle with Neighborhood
  • Such a primitive is a mesh that consists of a triangle containing three triangles adjacent to each side of the triangle. Can be formed by studying in a continuous mesh)
  • Figure 4 (A) is a conceptual diagram of a triangular mesh. As shown in Fig. 4 (A), fragment 103 is drawn on the triangular mesh.
  • vertex sequence ⁇ is a mapping method between vertex positions and the connection relationship between each vertex in the primitive and other vertices.
  • the vertex sequence for expressing the TWN primitive is ⁇ ⁇ 0 , ⁇ ,, v 01 , v 2 , v 20 , v 12 ⁇ .
  • the vertices for expressing the TWN primitive are ⁇ 2 , ⁇ ,, Vo, v 3 , v 4 , v 5 ⁇ .
  • V is a vertex position having the attribute index j
  • the vertex position sequence of the specific index of the TWN primitive of the central triangle ⁇ v 2 , V,, v 3 ⁇ is ⁇ 2, 1,0,3,4 , 5 ⁇ .
  • One way is to make a degenerate triangle by using the artificially created open edge vertices twice.
  • Another method is to use the vertex of the central triangle at the opposite position to the open edge. In this case, the triangle does not degenerate and becomes a central triangle.
  • a fixed-size extended primitive sequence can be formed by concatenating the vertex sequence 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 the vertices in the concatenated sequence.
  • TWN primitives there are three preferred methods for representing primitive sequences. In other words, 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 primitive sequences can be designed by concatenate the vertices for each generated TWN primitive with the TWN primitive for each triangle as the central triangle.
  • Fig. 4 (A In), the central triangle ⁇ v ­ 2, ⁇ ,, v 3 ⁇ and ⁇ v ­ 3, ⁇ ,, v 5 ⁇ depicts a fragment of TWN primitives formed by rows consisting of (fragment).
  • the corresponding vertices are ⁇ 2 , ⁇ ,, v 0 , v 3 , v 4 , v 5 , v 3 , v,, v 2 , v 5 , v 6 , v 7 ⁇ , and the corresponding vertex position attributes
  • the index sequence corresponding to is ⁇ 2, 1,0,3,4,5,3, 1,2,5,6,7 ⁇ ⁇ as shown in FIG.
  • a TWN strip can be composed of a triangular strip.
  • the vertex sequence ⁇ 0 , ⁇ ,, v 2 , v 3 , v 4 , v 5 ,-"n is a triangular strip formed by this, ⁇ v ­ 0 v ,, v 0 v 2 , v, v 3 , v 2 v 4 , v 3 v 5 , ⁇ Vertical row of triangles adjacent to the triangle adjacent to the triangle strip on the opposite side along the side ⁇ v 01 , v 02 , v 13 , v 24 , v 35 , "'n For a triangle strip formed by this, the vertex sequence defined by the ⁇ strip is That is, ⁇ 0 , V ,, v 01 ,
  • a mesh fragment is represented by a triangle strip 104 consisting of two triangles ⁇ v ­ 2 , ⁇ , v 3 ⁇ and ⁇ v ­ 3 , ⁇ , v 5 ⁇ . Yes.
  • This strip can be formed by four length vertex sequences ⁇ v ­ 2 , V 1, v 3 , v 5 ⁇ .
  • the two TWN primitives that define the TWN strip are ⁇ 2 , ⁇ ,, v 0 , v 3 , v 4 , v 5 , v 7 , v 6 ⁇ , and correspond to them.
  • the index sequence for specifying the vertex position is ⁇ 2, 1,0,3,4,5,7,6 ⁇ .
  • TWN fans can also be formed from triangular fans.
  • a TWN fan can also reduce the number of index buffers required to represent the TWN primitive sequence of the triangle fan sequence that is the corresponding center.
  • the triangular fan has a vertex sequence ⁇ 0 , ⁇ ,, ⁇ 2 , ⁇ 3 , ⁇ 4 , ⁇ 5 , ⁇ , and ⁇ v & shy ⁇ v ', ⁇ , ⁇ 2 , ⁇ 2 ⁇ 3 , ⁇ 3 ⁇ 4 , ⁇ 4 ⁇ 5 , It can be formed by triangular vertices ⁇ v 01 , v 12 , v 23 , v 34 , v 45 , ⁇ adjacent to the triangle in the triangular fan at the opposite vertex of the side.
  • Vertex string characterizing define TWN fan is represented by ⁇ V 0, V ,, Voi, V 2, V, 2, V 3, V 23, V 4, V 34, V 5, V 45, ⁇ ,
  • the first six vertices mean the first TWN primitive, and every second vertice defines a consecutive TWN primitive. Note that the first six vertices are different from the TWN strip.
  • FIG. 5 (A) two triangles constituting the triangle fan 1 05 shows a mesh fragments by the;; ⁇ 2, v 3, v 4 v & shy ⁇ ⁇ v & shy 2, v ,, v 3 ⁇ and.
  • This fan can be expressed by a vertex sequence ⁇ v & shy ⁇ v ⁇ vj of length 4.
  • FIG. 5 (A) two triangles constituting the triangle fan 1 05 shows a mesh fragments by the;; ⁇ 2, v 3, v 4 v & shy ⁇ ⁇ v & shy 2, v ,, v 3 ⁇ and.
  • This fan can be expressed
  • the vertex sequence of the TWN fan by two TWN primitives is ⁇ 2 , ⁇ ,, Vo, v 3 , v 5 , v 4 , v 6 , v 7 ⁇
  • the index sequence for the attribute of the corresponding vertex position is ⁇ 2, 1,0,3,5,4, 6,7 ⁇ as shown in Fig. 5 (G).
  • variable-size extended primitives include the Gatmul ⁇ Glark subdivision patch primitive (GGSP).
  • CCS P is composed of polygons represented by a quadrilateral mesh having one or more vertices with different edges and different numbers in each polygon. From the viewpoint of a quadrilateral mesh by Gatmul ⁇ Glark subdivision, one vertex with a number of adjacent edges being different from four is called an irregular vertex. It is released. The number of edges adjacent to a vertex is called a valence of vertex. In other words, vertex vertices other than 4 are considered irregular vertices from the viewpoint of Gatmul ⁇ Glark subdivision.
  • a GGSP primitive is formed by vertices in a rectangle and all adjacent vertices in a polygon that shares the vertices of the rectangle.
  • the rectangle located at the center is called the center square. If there are vertex values for irregular vertices, the center rectangle differs from other rectangles in the mesh, and the number of vertices in the GGS P primitive also change around the center rectangle.
  • a CCS P primitive can be represented by a sequence of vertices that are mapped between vertices in a sequence of vertices, thereby determining the position of the CCS P primitive.
  • the vertex sequence and mapping are formed as follows.
  • the CCS P primitive has vertices ⁇ , ⁇ ,, v 2 , v 3 ⁇ , which are square edges (VoV ,, v, v 2 , v 2 v 3 ,
  • Vertex sequences describing CCS P primitives are formed as follows: First
  • the vertices of adjacent sides that share v 0 and belong to the quadrangle that makes up the mesh are selected.
  • the sixth is on the same side as V, and is the same rectangular vertex as v 0
  • the fragment of the control mesh (106) consists of two adjacent CCS P primitives ⁇ v 9 , v 5 , v 6 , v 10 ⁇ and ⁇ v 9 , v 10 , v 16 , v 15 ⁇ is described as the center rectangle.
  • Vertex v 9 is an irregular vertex with a vertex value of 5.
  • the vertex sequences describing the first and second primitive are ⁇ 9 , ⁇ 5 , ⁇ 6 , ⁇ , ⁇ , ⁇ 8 , ⁇ 4 , ⁇ 0 , ⁇ , ⁇ 2 , ⁇ 3 , ⁇ 7 > , ⁇ ,,, ⁇ 17, ⁇ 16 , ⁇ 15, ⁇ 14, ⁇ 13, ⁇ 12 ⁇ and ⁇ 9, ⁇ 10
  • the index indicating the CCS ⁇ primitive vertex position attribute is determined in advance with the CCS P primitive in the index buffer containing the index indicating the vertex position attribute.
  • the contents of the vertex groups in the two CCS P primitives shown in Fig. 6 (A) are the index buffers 1 200 (or the top) as shown in Fig. 6 (C).
  • Point buffer 1 1 0 0) is (18, 9, 5, 6, 10, 8, 4, 0, 1, 2, 3, 7, 1 1, 1 7, 1 6, 15, 14, 13, 12, 18, 9, 10, 1 6, 15, 5, 6, 7, 1 1, 1 7, 21, 20, 1 9, 18, 14, 13, 12, 8, 4 ⁇
  • the process of identifying the index buffer sequence for the remaining vertex attributes is to identify the vertex attribute so that a different index is required so that the same index is not used to refer to all attributes of the vertex.
  • the vertices are formed by a set of attribute indexes, which are the indices associated with the different attributes of the vertices. If the above is not true, all vertex attributes can be specified 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 for the vertex position attribute includes the primitive size, special handling is used when handling extended primitives of variable size as described above.
  • index buffers do not have information about the primitive size, and can be of a length smaller than that of the vertex position attribute when representing variable-size primitives.
  • the index of the vertex attribute for a vertex is determined as follows. For extended attributes of fixed size, the index buffer value at the i-th position is 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. This is the value of all the attributes you want. In the case of extended primitives of variable size, the situation becomes more complex.
  • the index sequence of the i-th vertex is (( i + N; _ 1) is formed based on the i th value of the other index buffer and the i th vertex, where i is the initial value of the number of primitives. The number of primitives.
  • the 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).
  • Variable size pre from buffer Etching the primitive's primitive size and delivering the primitive size to a primitive circuit, a processor that is programmable to process a specific circuit or extended primitive assembly; If the data is not available, the vertex data for the extended primitive vertices in the vertex cache is fetched, converted, stored, and converted for assembly and operation of the extended primitive.
  • a vertex cache facility means a system for achieving high-speed processing of a simple sequence of primitives specified using a value from an index or vertex buffer. To do.
  • 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. Determine whether the vertex is in the same column as the available attribute in the storage unit in the vertex cache device as the top cache storage unit (store).
  • a vertex buffer is generated sequentially. May be.
  • the assembled vertex is sent based on the attribute value for vertex transformation, and additionally the transformation result is stored in the vertex cache storage.
  • Strange The converted vertices are delivered to a fixed-size primitive integrated circuit device to represent a simple primitive sequence represented by an index / vertex buffer. If the vertex transformation is accelerated, or if the vertex data is in the vertex cache, the transformed vertex is fixed-size primitive integrated circuit to eliminate the need to sample the vertex buffer and eliminate the need to transform the vertex again.
  • the term fixed primitive assembler means a system that collects and reconstructs simple primitives from a sequence of vertices.
  • collecting primitives means gathering all the information needed to reconstruct a primitive, for example, all of the primitives for further processing. It means that information about vertices is accumulated. For example, in the case of separate triangle rows, the three vertex rows that exist in each triangle correspond to the necessary information. Similarly, for separate lines, it corresponds to two consecutive vertices that make up the line. In the case of a triangle strip, it corresponds to the three vertices of the first triangle and the vertices of adjacent triangles.
  • the fixed primitive assembler is processed and returns the sequence of vertices according to the type of primitive delivered to the state of the simple primitive so that it can be sent to a raster pipeline that only processes simple primitives. .
  • the method according to the second aspect of the present invention extends the vertex cache device in various aspects.
  • a new logic circuit is required to fetch a variable-size extended primitive. It then exchanges information with the primitive engine (a separate device for assembling and processing information about extended primitives) that functions between the vertex cache unit and the fixed primitive assembly unit.
  • the method includes fetching the size of the primitive from the index buffer for the vertex position attribute, the vertex of the variable-size extended primitive expressed using the method according to the first aspect of the present invention is used.
  • Process column Can be used for sshing.
  • 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 When referring to, 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.
  • This method involves delivering the transferred vertices to the primitive engine, processing the primitives extended in the primitive engine, and processing the processed results in the form of a simple primitive sequence for the rest of the processing pipeline.
  • the process of fetching, distributing and storing vertex data in the vertex cache is substantially the same whether processing simple primitives or extended primitive sequences.
  • This method allows random access to vertices / buffers to assemble vertices of extended primitives from attributes related to attribute indexes fetched from the index buffer without using any special method. be able to.
  • most of the logic circuits used in the process of fetching, distributing, and storing vertex data must be shared between simple primitive processing and extended primitive processing. Therefore, 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 the extended primitive assembly and processing algorithm. As a result, The performance related to the operation processing of the extended primitive will be improved.
  • the primitive size of a variable-size primitive is fetched from the index buffer of the vertex position attribute, and the primitive size is programmed by an arithmetic unit that can be processed in a specific circuit or an extended primitive assembly.
  • the process of delivering to a primitive engine is as follows. In other words, it is the process of retrieving the primitive size from the index buffer of the vertex position attribute.
  • a variable-size extended primitive is positioned there. The primitive size is delivered to the primitive engine as it may be needed in the processing of the extended primitive.
  • the information about the primitive size precedes the information about the vertex of the primitive in the index buffer of the vertex position attribute.
  • the latter Any other information about the limit is delivered to the primitive engine ahead of it. Knowing the primitive size can determine the index array offset of the vertex position attribute with respect to the beginning of the next variable-size primitive, so that the index contains the size information of the next primitive. It will be.
  • 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 top of all primitives controlled by the primitive size. This step is only required when implementing variable size extended primitives. This step can be omitted when computing other primitives.
  • the vertex data about the vertex of the extended primitive in the vertex cache is fetched, converted, and stored. is there. As described above, this is the process of fetching, converting, and storing in the vertex cache by the vertex cache device. Since the vertex cache device does not perform the operation processing of the extended primitive, the processing of this process is performed on the extended primitive sequence of a fixed size even if it is a simple primitive with respect to the vertex cache device. Even if it is processing, it does not change. Therefore, it is possible to share on the device side such as a circuit for performing simple primitive calculation processing and extended primitive calculation processing. This step can be omitted if the vertex information is already stored in the vertex cache.
  • the vertex attribute index is sampled from the index buffer. Also, when the vertex buffer represents only fixed-size extended primitives, the vertex attribute index is generated in order.
  • the process of fetching the primitive size may require separate indexing for different vertex attributes. If a data buffer is used, the process of fetching primitive vertex data may need to be modified. The reason is that the index buffer that describes the length of the index buffer for the vertex position attribute and the index buffer that describes all other attribute columns contain information about the primitive size, and the length is the number of primitive columns. This is because it is larger than other index buffers.
  • the process of fetching vertex data for a vertex needs to form an index sequence 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 is the position of all index buffers corresponding to the vertex positions.
  • this formation is modified as follows.
  • the index values for all attributes other than the vertex position attribute are obtained by sampling the position of the index buffer determined by the vertex position, but the index of the vertex position attribute is the same as that of the other attributes. Obtained by the index buffer of the vertex position attribute of the position obtained by adding the number of previous primitives being processed.
  • This process uses an index buffer and a vertex buffer for an extended primitive string of variable size, and is introduced according to the first aspect of the present invention.
  • the process of delivering the converted vertex to the primitive engine for the assembly and operation of the extended primitive is the primitive engine for assembling and calculating the input primitive information. It is a process for delivering to the algorithm by. 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.
  • the term “primitive engine” is used to realize the processing of extended primitives by Means a fixed circuit or programmable system.
  • extended primitives of variable size information on primitive vertices that are received and stored internally are stored. Reconstruct primitives based on information about accumulated primitives. Arithmetic processing is performed to reconstruct primitives according to an algorithm that results in a simple primitive sequence that can be accessed by a fixed primitive assembly 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. Including. This is the process of delivering extended primitives that are formatted for processing by a fixed primitive assembly device. In the present invention, this delivery is performed in the same way as when the converted vertex is directly delivered from the vertex cache to the fixed assembly device when a simple primitive sequence is processed by the vertex cache device. Is done. Therefore, it is not necessary to modify the rasterization pipeline in order to be able to perform operations on extended primitives, rather than having to modify fixed primitive assembly devices.
  • the process of assembling and processing the extended primitive is a process for implementing a predetermined algorithm using the primitive engine and performing an arithmetic process on the extended primitive using the algorithm.
  • Preferred examples of algorithms for processing fixed-size extended primitives implemented by the primitive engine include, but are not limited to:
  • the TWN primitive sequence is processed to realize detection and visualization of mesh series.
  • mesh silhouette means a set of triangle edges shared by a set of triangles, one facing the view direction and the other facing the other direction.
  • Visualize mesh silhouette Optimized means a way to visually enhance the silhouette edge when rendering a mesh.
  • the outline of the algorithm for detecting and visualizing silhouettes is as follows. Stores vertex data for TWN primitives.
  • the first and subsequent primitives are stored differently in the strip / fan.
  • the first primitive requires six vertices before the operation on the primitive begins.
  • the second and subsequent primitives can use already stored vertices, so only two more vertices are required.
  • vertex data is accumulated in the same way as the first primitive even for the second and subsequent primitives.
  • the TWN primitive strip to be used is the contents of the index buffer corresponding to the vertex position attribute sequence indicated by ⁇ 2, 1, 0,3, 4,5, 7,6 ⁇ .
  • the vertex cache device reads the vertex corresponding to the index from the index buffer and transmits it to the primitive engine.
  • the sixth vertex transmitted from the vertex cache device to the primitive engine is equivalent to an index value of 5.
  • the primitive engine obtains information about all vertices for the center triangle 1 1 1 and the adjacent triangles 1 1 0, 1 1 2, and 1 1 3, the primitive engine will get the first triangle in the TWN strip sequence. It is possible to start detecting the side of the straight line.
  • the calculation of the direction of the triangle is evaluated by a scalar consisting of three inner products consisting of three component vectors consisting of X, y, and w at the vertex position of the triangle in system coordinates. Is done.
  • 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 that share an edge, the edge is a silhouette. Therefore, four evaluations of the TWN primitive center triangle and three adjacent triangles are required to determine the silhouette edge.
  • an extra geometric figure that forms a rectangular flap in the direction perpendicular to the observer's visual field direction that is, the direction of the axis of the eye at the viewpoint coordinates. It extends outside the object.
  • the direction outside the object is 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 vectors at each vertex of the mesh. Converted to normal direction.
  • the first and second vertices that make up the Silette edge are V in the Xo, y 0 , Zo, Wo viewpoint coordinate system and x,, ⁇ , ⁇ , w, viewpoint coordinate system.
  • the generated flap is a rectangle represented by vertices with the following coordinate values in the viewpoint coordinate system: ⁇ xo, y 0 , zo, wol, ⁇ ,, y, ⁇ ,, w, ⁇ , ⁇ x! + offsetx + ri! x + w ,, y, + offset Y * n 1y , ⁇ ,, w, ⁇ , and ⁇ x 0 + offset x * n 0x , y 0 + offset Y * n 0y , Zo, Wol o
  • FIG. 5 (B) is the same value as the coefficient offset x and the coefficient offset Y, if the the n 0z and n 1z 0 It is a figure which shows the structure of such a flap.
  • the vertex cache unit delivers two vertices with index values 7 and 6, thereby defining two more triangles 1 1 5 and 1 1 4.
  • the silhouette of the second triangle in the strip can be calculated.
  • the two triangles will be used again. That is, one is the triangle in question and the other is the adjacent triangle. In the case shown in Figure 4B, the two triangles are 1 1 3 and 1 1 1 respectively.
  • This method can greatly reduce the computational cost of implementing an algorithm for silhouette detection. In order to prevent the occurrence of overlapping geometric flaps on the side of the silhouette, for example, the flap must be generated to be a T W N primitive in a certain direction of a triangle, such as the direction facing the viewer. Other primitives can be ignored.
  • the primitive engine can also output a simple fixed-size primitive.
  • the output includes an invariant central triangle and two triangles that form the geometric flap that forms the silhouette edge.
  • flaps some attributes can be changed to implement the algorithm. For example, if the color forms a black appearance, it is replaced with a black one.
  • the output triangle is delivered to the fixed primitive assembler and processed as if it had been delivered directly from the vertex cache unit.
  • Gatmu l ⁇ G lark, CC, subdivision method consists of multiple processes, A smooth and fine grid-like mesh is generated from the menu, and each process is a process of subdividing the mesh obtained in the previous 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 process, generates a new vertex for each side of the mesh obtained in the previous process, and Rearrange mesh vertex positions with respect to position.
  • the vertex position of the mesh in the next process is limited to the linear combination of the vertices that are adjacent to the side or face to which it belongs. More specifically, the face point (fac e po i nts) is located at the average position of the face of the original vertex. The position of an edge point is calculated as the average of the center position of the original edge and the average of two new adjacent face points.
  • the vertices from the previous process are positioned as shown in the following equation.
  • S ' (Q + 2R + S (n-3)) / n.
  • Q is the average value of new face points located around the vertex
  • R is the average value of the midpoints of the edges sharing the vertex.
  • S is the vertex position in the previous process
  • n is the number of edges sharing the vertex, that is, the vertex value.
  • the number of vertices required to calculate the vertex position in the next subdivision step is fixed to 6 for the edge vertex and 4 for the face.
  • information on all vertices belonging to one adjacent object to be rearranged is required.
  • a neighbor with vertices is formed by all vertices that share a mesh surface with it. In case of the shown in FIG. 6 (A), FIG.
  • the adjacent ones of the vertex v 9 in the base mesh 1 0 6, vertex v 13, v, 2, v 8, v 4, v 5, v 6 , v, o, is formed by v 16, v 15 and v 14, its value is 5.
  • the value of the vertices can be arbitrary, 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 the subdivision rule can be implemented without being particularly limited to subdivide a certain account.
  • the CC scheme can be used for all meshes, but different for each patch.
  • the following rules can also be used.
  • a subdivision surface patch can be formed to deviate from the face of the basic mesh as a sequence of vertices belonging to one neighbor of the face. In other words, since the subdivision rule is limited to one adjacent object, the collection of adjacent objects with face vertices includes the vertices of the face itself. After two CC subdivisions, all faces in the subdivision mesh are rectangular and it is known that there is no abnormal irregular vertex on the face.
  • the basic surface can be designed that way, but only one CC subdivision process needs to be performed to achieve the same result.
  • FIG. 6 shows an irregular vertex v 9 with a vertex value of 5 formed by the central squares ⁇ v 9 , v 5 , v 6 , v 10 ⁇ and ⁇ v 9 , v 10 , v 16 , v 15 ⁇ .
  • FIG. 11 is a diagram showing a basic control mesh 106 having two adjacent CCS P primitive sequences to be shared.
  • the index buffer that contains the index column of the vertex position attribute is as follows.
  • the processing of the CCSP sequence is as follows.
  • the process 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 unit delivers 18 vertices to the primitive engine according to the vertex position attribute index.
  • the CCS P 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 rebuilding the primitive, all the information for performing the subdivision is available, so the reconstructed CCS P primitive is the Gat mult Glark subdivision surface (Jeffrey Bolz and Peter
  • the subdivision scheme used is a set of quadrilaterals that correspond to the fine tessellation of the central quadrilateral of the C C S P primitive that has been processed to be rendered as a fragment of the mosaic mesh (107).
  • Each of the resulting squares is further processed and divided into two triangles for rasterization and delivered to a fixed primitive assembler. These steps are repeated for the next CCS P primitive computation.
  • a third aspect of the present invention is a processing method according to the first aspect of the present invention in which a fixed-size primitive or a variable-size primitive sequence is processed using the method according to the second aspect of the present invention. It is related with the system for realizing.
  • the system according to the third aspect of the present invention is configured to change the processes related to the vertex processing of the prior art in order to process the extended primitive.
  • the vertex data from the vertex buffer 1 200 is fetched according to the index stored in the index buffer 1 1 00 and generated, 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 (ass emb I e) and processed.
  • Simple primitives generated by the Primitive Engine 9000 extended primitive assembly process are a collection of fixed primitives. Delivered to the rest of the processing pipeline, such as product circuit 6 0 0 0. Such a process is particularly useful only when processing extended primitives.
  • the transferred vertex from the second step may be directly delivered to the integrated circuit 600 that processes the fixed primitive.
  • the integrated circuit 6 0 0 0 that processes the fixed primitive, for example, a known circuit as shown in FIG.
  • 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, VGG, 2000, first vertex cache storage unit, PVG, 3000, second vertex cache storage unit, SVG, 5000, one or more vertex processing units, VPU, 4000, primitive engine, PE, 9000, and fixed size primitive integration circuit, FPA, 6000.
  • the remaining pipeline relates to a system with a fixed size primitive set unit 7000 and a rasterizer 8000 that implements processing of fixed rows of simple primitives like triangles.
  • 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. Specific examples of omitting the descriptions include host CPU host memory and triangular rasterization pipeline. Information exchange between them will be explained to the extent necessary in relation to the present invention.
  • the logic circuit of the vertex cache control unit for processing the primitive engine and the variable-size extended primitive can be modified as appropriate, and other known ones can be used as appropriate.
  • modules other than those mentioned above should be adopted as appropriate in order to realize simple fixed-size primitives such as dots, lines, and triangles, as used in current 3D computer graphics. Can do.
  • the vertex cache control unit VCC, 2 0 0 0, performs the following processing. Analyzes the contents of the index buffer. Vertex index fetched from index buffer 1 1 0 0 according to the state of PVC 3 0 0 0 and SVC 5 0 0 0 Fetch the contents of the vertex buffer of PVC3000 according to In order to execute the 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 transmitted from the VPU (s) 4000 to the S VC5000.
  • the contents of SVC5000 are sent to PE 9000 or FPA 6000 according to the type of primitive (whether it is an extended primitive of variable size) (specifically, the type of primitive is determined and the primitive is variable) If the primitive is extended in size, the contents of S VC 5000 are delivered to PE 9 000).
  • extended primitives of variable size deliver information about the size of the primitive to the P9000. Inform PE 9000 that after primitive size information and vertex data for all primitive vertices has been delivered, it may begin processing for variable-size extended primitives.
  • the preferred embodiment of the present invention is that primitive sizes are only delivered to PE 9000.
  • the contents of the SVC are delivered to the PE, and after the information about the size of the primitive and the vertex data for all primitive vertices is delivered to the PE 9000, the variable primitive is about the extended primitive. Informed that there is a possibility of starting processing.
  • the process of analyzing the index buffer is also a process peculiar to the present invention, and is related to the extraction of the primitive size and the processing of the extended primitive of the variable size. As other processing steps, known processing steps performed on simple primitives can be adopted as appropriate.
  • the first vertex cache storage unit PVC is a place where information from a large number of vertices / buffers is continuously transferred from the host memory and cached.
  • the PVC functions even if it stores the vertex data that was not processed by VP U (s) for the per-vertex processing. .
  • the PVC is filled with undelivered vertex data, so that Can reduce the problem of waiting time.
  • the PVC and VPU (s) are physically or electrically located close to each other, so that there is a waiting time for transport when there is vertex data that is not delivered in the PVC and must be processed. Can be reduced.
  • the vertex processing unit VPU (s) is a module that achieves a certain fixed function, eg, O p e n G L and / or D i e c t 3 D
  • VPU receives various non-transferred vertex attributes such as position, color, and text coordinates as input, and generates various attributes of transferred vertices such as position, color, text coordinates, and viewpoint vector.
  • the number and dimensions of inputs and outputs, that is, the format of input and output vertex information, may be different.
  • VPU (s) receives information from the PVC and passes the output to the SVC.
  • the primitive engine PE is a module that implements a fixed function for performing information processing related to an extended primitive, or a programmable module.
  • Implementing PE as a module that realizes a fixed function is effective for applications that achieve high performance and limited functions. Realizing PE as a programmable module is preferable because it gives the algorithm for processing extended primitives a degree of choice.
  • the PE receives the output about the vertices transferred from the SVC, assembles the primitive, processes the primitive, and outputs it as a sequence of simple primitives that the FPA can understand.
  • PE is a module unique to the present invention.
  • PE when implemented as a programmable module, in addition to adding a function to control the operation result of the extended primitive obtained in the form of a simple primitive sequence to be transferred to the FPGA, it is programmable. It only needs to have the same functions as programmable VP U (s), such as sharing many functional logics with VP U (s).
  • PE is F
  • input information is received from S VC and VCC.
  • the main differences between PE and other devices are the information on the extended primitive size and the vertex data to deliver 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.
  • the fixed-size primitive integration circuit from the vertex sequence delivered from the SVC is a module that has a fixed function for assembling simple primitives such as points, lines, and triangles.
  • SVC implements a set of primitives that can be used for modern 3D graphics APIs such as openGL and direct3D, such as points, lines, line loops, triangles, triangle strips, and triangle fans.
  • 3D graphics APIs such as openGL and direct3D, such as points, lines, line loops, triangles, triangle strips, and triangle fans.
  • “8 is the input to receive input information from £”, “ ⁇ ”, and SVC and VCC are the vertices to FPA as the protocol for transferring information about transferred vertices.
  • the source of information may be completely transparent to this module in order to use the same one for data transfer.
  • 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.
  • the point buffer processing can be accelerated.
  • the vertex cache control unit can accelerate processing by referencing only the vertex buffer when the vertex data for the primitive is formed by the vertex data string in the vertex buffer using PVC.
  • VCC operates in two modes depending on the primitive: a mode for processing fixed-size primitives and a mode for processing extended-size primitives. VCC processing is done for simple primitives and extended primitives of fixed size The same processing as in the case is performed.
  • the vertex data related to the vertex that was not transferred is loaded and sent to the VPU (s). If there is no vertex data transferred from the currently sampled SVC to the PVC with the transferred vertex corresponding to the vertex attribute index string, the VCC is transferred from the host memory to the PVC as a vertex buffer. Upload a chunk of content to be stored. The chunk contains vertex data about the index sequence that is queried using the empty space in the PVC, or overwrites the unused data previously stored there. The chunk may contain vertex data from other indices. If the chunk exists in the PVC, it may be used further.
  • VCC When vertex data becomes available in P V C, O begins delivery to R (s), either by the round-robin method or by other methods. If there is a converted vertex data force ⁇ , which does not exist in the SVC and is not transferred to the PVC, VCC transfers the vertex data from VP U (s) to the PVC without accessing the host memory. Begin. For this reason, the access time to the host memory can be reduced. In this way, PVC leads to an improvement in the processing speed for processing the vertex data that is not transferred.
  • 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.
  • the input to the VPU is a floating vector of 4 components, and the input data for each vertex can span several such vectors.
  • the VCC assembles the input data from the distributed vertex attributes by performing the necessary type of conversion processing. For example, a 2-byte integer value is converted to a floating-point number, and the packing attribute is converted to 4 vectors according to the configuration. For example, two sets of two component textures and one coordinate attribute are four components. Converted to input vector. It is transferred as a lot of input data when the VPU can operate.
  • the input for the next vertex to be transferred is input to the VPU.
  • the VPU After receiving a certain number of vectors, the VPU starts processing on the vertices. The number depends on the number of attributes per vertex and their packing, and is determined via VPU.
  • the VPU finishes the transfer, the VPU outputs the four component floating-point vectors to the SVC.
  • the VCC manages that the V PU for representing the vertex sequence accesses the SVC.
  • the format of the transferred vertices, ie the number of attributes and the packing to the output vector, may be different from the input.
  • the storage entity of the SVC is also a four component floating point vector. Therefore, each transferred vector is occupied by an input string to the SVC.
  • the SVC simply performs the FI FO queue, and if the FI FO overflows when transferring the transferred data to the recently processed vertex, the oldest data is quickly output.
  • SVC simply performs the FI FO queue, and if the FI FO overflows when transferring the transferred data to the recently processed vertex, the oldest data is quickly output.
  • LRU least recently used
  • the transferred vertex data is delivered from the SVC to the FPA according to the order of the vertex sequence.
  • the FPA starts the vertex operation 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.
  • the converted vertex data is first sent to the PE.
  • the PE also has two main operation modes: fixed-size primitive arithmetic processing and variable-size extended primitive arithmetic processing.
  • the PE starts vertex processing when it receives a predetermined number of four component vectors from the SVC, as in the FPA.
  • the result of the extended primitive processing is delivered from P F to FPA in the form of a simple sequence of primitives.
  • the sequence of simple primitives output from the PE is realized in a format that can be reproduced as the vertex sequence of simple primitives, and the primitive sequence is represented by four component vectors.
  • most hardware used for arithmetic processing of simple primitives such as VCC, PVC, VPUs, SVC, and FPA is expanded by adding an arithmetic processing mechanism for primitive processing extended to PE. This means that it can be reused when processing primitives.
  • vertex caches are used only to the same extent as simple primitives, so that the extended primitives can be processed quickly. It is possible to realize a rapid calculation process on the chip for the primitives that have been processed.
  • the PE executes the arithmetic algorithm after receiving each vertex data, that is, after receiving a specific number of four vectors from the SVC. To do.
  • the computation algorithm manages the accumulation of received vertex data, and detects the moment when the fixed-size extended primitive is reconstructed from the vertex sequence and the moment when the computation is simplified.
  • TWN primitive sequences which is the above-mentioned fixed-size extended primitives. This is done according to the calculation process.
  • the sequence of TWN primitives is the same as one of the central triangle sequences Spatial consistency.
  • the cache size is the same as that of the computation processing of the central triangle sequence with the cache hit level as the size of the secondary cache. Must be increased.
  • the T W N primitive sequence is processed in the same way as the simple primitive sequence for vertex data fetching, transport, and caching. The difference is that the destination of the converted vertex data is not PE but PE.
  • the converted vertex data is delivered from S V C to PE one by one in the order of the input vertices.
  • the V C C 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 and 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 Measure the number of vertices of extended primitives of variable size that have not yet been delivered, and send them to the PE, and the delivery of vertex data has been completed in order to start the primitive processing. Is a means of making PE known. This modification is unique to the present invention. The remaining functions of V CC can be used as they are for processing fixed-size primitives. Therefore, the functions for processing fixed-size primitives can be used as they are.
  • the first index of the primitive in the index buffer for the vertex position attribute is its size in the VCC logic circuit's extended primitive arithmetic processing mode.
  • VCC 2 0 0 0 initializes the vertex counter 1 2 0 0 inside it, and counts for each index processed next to detect the start of the next primitive. Reduce one price. Since PE is available for primitive processing, the size is extended When the vertex attribute of the vertex sequence to form the ive is delivered from the SVC, it is delivered to the primitive size register 9100 in the PE using the same path.
  • the primitive size register 9100 is implemented so that it can be accessed by the primitive arithmetic processing algorithm in the PE, and the primitive can be reconstructed using the vertex sequence.
  • the VCC can start sending vertex data converted from the SVC to the PE.
  • the processing for vertex data fetching, transport, and delivery to the SVC is the same as for fixed primitives.
  • Vertex delivery commands are determined by the index string stored in the index buffer following the first index containing size information.
  • the algorithm for computing the primitives in the PE accumulates vertex information and reduces the value of the VCC vertex counter 210 0 after each vertex attribute sequence is delivered to the PE. To be implemented. When the counter reaches 0, it 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 connection 2300. When a signal is received via connection 2300, the PE begins internal primitive processing.
  • One preferred example of a system operation is to perform processing on a CCS P primitive sequence to generate a subdivision surface from a control mesh described as a basic CCS P primitive sequence.
  • Arithmetic processing is performed according to the arithmetic processing of extended primitives of variable size. Spatial coherency with the CCS P primitive column is extremely high. In fact, in the calculation of adjacent patches other than irregular vertices, CCS P primitives can share as many as 12 vertices out of 16 vertices, and therefore to process the next GGSP primitive. It is only necessary to perform arithmetic processing that adds only four vertices to and deliver it to the SVC.
  • the use of a vertex cache to compute the extended primitives greatly reduces the data access costs, and the subdivision patch chip in the vicinity of the patch. It is possible to realize arithmetic processing on the network.
  • the SVC hit rate is about 64%, which is higher for longer sequences. It is considered to be. If a vertex cache or index buffer / vertex / buffer is not used to perform processing related to such large primitives, a very large memory cost will be required for vertex processing.
  • ACM Press can start to create subdivided meshes contained in the center rectangle of CCS P primitives according to the algorithm and other subdivided algorithms for each patch.
  • the result of the subdivision patch operation processing is a triangle, a triangle strip in FPA, etc., depending on the input information.
  • Another aspect of the present invention is to realize the above-described system in an integrated circuit, which can perform fixed-type or variable-size extended primitives on-chip.
  • the present invention relates to a system using an integrated circuit as described above in order to realize high-speed processing of a subdivision surface generated by the Gatmul ⁇ Glark subdivision scheme.
  • the apparatus for processing the extended primitive of the present invention can be used for interactive 3D computer graphics for real-time rendering.
  • 3D computer graphics Implements an algorithm for accessing multiple vertices of a polygon mesh at the same time, and for real-time rendering of complex geometric shapes represented by grid eyes and subdivided surfaces using NURBS patches. Something related to it.
  • such a device includes a hard-work selection card in 3D computer graphics for visualizing a 3D image, a personal digital assistance, a video game device, a force navigation system, etc. Can be used for
  • FIG. 8A, FIG. 8B, FIG. 9A, FIG. 9B, FIG. 10A, FIG. 10B, FIG. 11A, and FIG. 11B are image results obtained using the apparatus of the present invention. Indicates. Figures 8A and 8B compare the direction of the silhouette and examine the possibility of visualization. Figure 8A cannot be visualized, and Figure 8B can be visualized. For example, for animation applications where it is necessary to emphasize the shape of the contour line when animating a manga character, visualization using a silhouette as shown in Fig. 8B can be used.
  • FIGS. 9A and 9B show a rendering of a simple disk-like shape before and after re-division in the present invention.
  • Figure 9A shows the one using the original rough mesh
  • Figure 9B shows the one using the mesh subdivided by adding polysilver in the subdivision process.
  • Figures 10-8 and 1OB are figures showing re-division into a more complicated shape compared to Figures 9A and 9B.
  • Figures 11A and 11B relate to the shading of Figures 10A and 10B, respectively, excluding one wire frame.
  • the present invention is accelerated by the vertex cache and can implement the subdivision algorithm on-chip. Therefore, the present invention provides real-time generation and visualization of complex shapes obtained by subdivision based on simple meshes, which is an important feature in video games. Can be performed.
  • the extended primitive processing apparatus of the present invention can be used in the field of real-time 3D computer graphics.

Abstract

To solve problems with the on-chip processing of extended geometrical primitives such as a re-divided surface patch, a NURBS patch, an adjoining triangle, which are used as the input information in the algorithm to be used in three-dimensional computer graphics. The problems are solved by a system to be used in the three-dimensional computer graphics, such as the system including a primary vertex cache store (PVC), a vertex processing unit (VPU), a second vertex cache store (SVC), a primitive engine (PE), a fixed primitive assembly (FPA) and a vertex cache control (VCC).

Description

明 細 書  Specification
拡張されたプリミティブの頂点キヤッシュの処理を加速する装置 技術分野  Equipment for accelerating processing of extended primitive vertex caches
[0001 ] 本発明は, 3次元コンピュータグラフィックスの分野に関する。 より詳し く説明すると, 本発明は, 本明細書において拡張されたプリミティブと呼ば れる複雑な多くの頂点を有する幾何学的プリミティブのための情報処理をハ 一ドウエアにおいて高速に処理するための方法及びシステムに関する。  [0001] The present invention relates to the field of three-dimensional computer graphics. More specifically, the present invention provides a method and a method for processing information in a hardware at high speed for a geometric primitive having many vertices called a primitive extended in the specification. About the system.
背景技術  Background art
[0002] 伝統的に、 対話型コンピュータ図形は、 複雑な幾何学的な形に近似して、 ポイント、 線、 および三角形のような簡単な幾何学的なプリミティブを使用 する。 既存のコンピュータグラフィックスハードウェアは, そのような簡単 なプリミティブ、 特に三角形のメッシュの処理を高速化するように最適化さ れている。 プリミティブの単純三角形は、 3D表面のフラグメン卜の線形近似 に使用することができる中で最も簡単な多角形である。 様々な三角形、 線、 およびポイントでかなり複雑な形に近似することができる。 現在既存のハー ドゥエァの設計は大いに互いからそれらの系列でプリミティブの頂点を独自 に処理する可能性の利益を得ることができる。  [0002] 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 to linearly approximate a 3D surface fragment. 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 primitive vertices in their sequence from each other.
[0003] 複雑な多頂点プリミティブの処理の必要性は 3Dコンピュータグラフィック スの様々な領域に起こる。 事実上、 NURBSパッチとサブディビジョンサ一フエ スのような高次平面プリミティブで多くの複雑な形をモデルする。 どちらの 場合も、 粗い制御メッシュと規則のセットは、 滑らかできめ細かくかつ制御 メッシュに影響することで容易に変形できるような形状を生成させるのに使 用される。 通常、 パッチ自体はテツセレ一シヨンの過程を制御する追加情報 と同様に制御メッシュの頂点の可変サイズセッ卜によって形成される。 ハ一 ドウエアで NURBSかサブディビジョンサ一フェスパッチテツセレ一シヨンを有 効にするのは対話的な 3Dグラフィックスが大いに利益を得ることができる結 果として、 形状操作の格納、 帯域幅要件、 および単純さを大いに減少させる 。 もう 1セッ卜のアルゴリズムは一度に近似におけるただ一つの三角形より処 理形のさらに複雑な一部分へのアクセスを必要とする。 通常、 三角形のいく らかの限られた近隣頂点へのァクセスがシルェット縁を検出するのに必要で あり、 メッシュ頂点での湾曲などについて計算する。 [0003] The need for processing complex multi-vertex primitives occurs in various areas of 3D computer graphics. In effect, it models many complex shapes 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 in the control mesh, as well as additional information that controls the process of tessellation. Enabling NURBS or subdivision surface patch selection in hardware results in interactive 3D graphics that can greatly benefit from storage of shape operations, bandwidth requirements, And greatly reduce simplicity . Another set of algorithms requires access to a more complex part of the processed form than just a single triangle in the approximation at a time. Usually, access to some limited neighboring vertices of the triangle is necessary to detect the silhouette edges, and computes the curvature at the mesh vertices and so on.
[0004] 複雑なプリミティブの処理のサボ一トはいくつかの理由で既存の 3Dグラフ ィックスァクセラレータ構造の中では難しい。 アクセスが簡単な三角形のた めだけに 3つの頂点に制限されるとき、 複雑なプリミティブの処理はすぐに、 処理アルゴリズムのために複数の頂点への速いアクセスを必要とする。 サブ ディビジョンサ一フェスに使用されるものと NURBSパッチのようなプリミティ ブの複合体の頂点のための属性データがメモリの向こう側に点在する場合、 アクセスはデータ転送におけるかなりのレイテンシをもたらすため処理アル ゴリズムは低性能になるかもしれない。 一度に単一の頂点を処理するために 現在のプログラマブルアーキテクチャのジオメ トリックパイプラインのプロ グラマブル処理要素を最適化する。 そして、 固定論理回路(いかなる他のプリ ミティブのタイプの上でも操作することができませんが、 簡単なもの)で頂点 の系列からプリミティブをアセンブリする。  [0004] The support of processing complex primitives is difficult in existing 3D graphics accelerator structures for several reasons. When primitives are limited to three vertices only for simple triangles, processing of complex primitives immediately requires fast access to multiple vertices for processing algorithms. If attribute data for vertices of primitive complexes such as those used for subdivision surfaces and NURBS patches are interspersed across the memory, access will result in significant latency in data transfer Processing algorithms may have poor performance. Optimizes the programmable processing elements of the current pipeline 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).
[0005] パーソナルコンピュータとワークステ一ションに利用可能な 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セッ卜の線区分が定義した同様の方法を述べるこ とができる。 [0005] The kernel structure of 3D graphics hardware accelerators available for personal computers and workstations is also often faster for processing lists of simple primitives such as triangles, lines, and points. Adapt with expression. Figure 1 shows a portion of a typical 3D graphics hardware asset pipeline. The list of primitives is described by an index buffer 1100 and a vertex buffer 1200. Usually stored in the host machine memory 1000, the contents of the index and vertex buffer are illustrated in Figure 2A and Figure 2B. In the case of FIG. 2A, a set of triangles 101, possibly sharing a vertex, is represented by a set of vertex data that is successively packed into the vertex / buffer 1200 and 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. Next 3 positions in set 101 If the majority of the vertices in the vertex / buffer 1200 are reused, at which point the reused vertex in the vertex buffer 1200 hits the point Triangle set surrogates can be quite compact when vertex data marked with a padded fill pattern usually requires much more accumulated space than the index buffer index. Referring to FIG. 2B, the representation is even more concise with the triangle strip 102 case. In this case, 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 in this case describe the triangle set more effectively in terms of the number of index lists per triangle. Describe the same method defined by one set of line segments, with two vertices and one set point defined by one vertex per point using an index and a vertex buffer. Can do.
インデックスと頂点/くッファを使用することで定義されたプリミティブの セットの処理を加速するために、 頂点キャッシュ装置が用いられる。 図 1によ ると、 インデックスバッファ 1 100の内容は、 頂点バッファ 1200を抽出するの に使用されるだけではなく、 最近、 同じインデックスがある頂点が処理され たかどうかまた検出するのに使用されて、 キャッシュでまだ利用可能である かもしれない。 頂点キャッシュコントローラ 2000は、 インデックスバッファ 1 100の内容を取得し、 それを分析する。 初めはキャッシュが空であるので、 頂 点キヤッシュコント口一ラはィンデックスバッファ 1 100から第一の頂点キヤ ッシュ 3000に取得されたィンデックスリス卜のための頂点データを含む頂点 バッファ内容の配送を初期化する。 通常、 メモリアクセス潜在するペナルテ ィを現在頂点キャッシュコントローラによってインデックスリストだけに処 理されていない頂点データ対応を含むことができる比較的大きい連続したメ モリブロック最小にする方法で頂点バッファから取得する。 それにもかかわ らず、 それは第一の頂点キャッシュ 3000でそれが後で分類調査されたインデ ックスリス卜によって使用されるかもしれないというので保持される。 イン デックスが第一の頂点に既にあるので頂点データが 3000をキャッシュするな ら、 ホストメモリアクセスは全く実行されない。 A vertex cache device is used to accelerate the processing of a set of primitives defined using indices and vertices / buffers. According to Figure 1, the contents of index buffer 1 100 are not only used to extract vertex buffer 1200, but also recently used to detect if vertices with the same index have been processed. May still be available in the cache. The vertex cache controller 2000 gets the contents of the index buffer 1 100 and analyzes it. Initially the cache is empty, so the vertex cache controller will deliver vertex buffer contents containing vertex data for index squirrel obtained from index buffer 1 100 to first vertex cache 3000. Is initialized. 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 only by the index list by the vertex cache controller. Nevertheless, it is the first vertex cache 3000 and it was later indexed. Retained because it may be used by Sir Xuris. Since the index is already at the first vertex, if the vertex data caches 3000, no host memory access is performed.
[0007] 通常、 第一の頂点キャッシュ 3000に送られた頂点データは、 変換される必 要がある。 [0007] Normally, the vertex data sent to the first vertex cache 3000 needs to be converted.
例えば、 頂点の位置は、 1個の座標系から別のものに変換される必要があるこ とがある。 頂点色は標準、 位置などに基づいて計算される。 頂点キャッシュ コントロ一ラ 2000は頂点データの第一の頂点キヤッシュから頂点処理装置 400 0までの配送を制御する。 変換した頂点データを二次頂点キヤッシュ 5000に配 送する。 二次頂点キャッシュ 5000から、 変換した頂点データを用いて, 頂点 列から三角形、 線、 およびボイントのような固定セットのプリミティブを形 成して、 三角形セットアップ 7000とラスタライザ 8000が固定された処理パイ プラインの残りにプリミティブをアセンブルし, 固定プリミティブのァセン ブリ 6000に達する。 ィンデックスが二次頂点キヤッシュ 5000でそれを提示す るので、 オーバーへッドなしでいかなる他のものも変換した頂点データをプ リミティブのアセンブリ 6000に配送する。  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 sent to the secondary vertex cache 5000. A processing pipeline with fixed triangle setup 7000 and rasterizer 8000, using the converted vertex data from secondary vertex cache 5000 to form a fixed set of primitives such as triangles, lines, and points from the vertex column Assemble primitives to the rest of the and reach fixed primitive assembly 6000. As Index presents it in the secondary vertex cache 5000, it delivers the vertex data transformed by any other without overheading to the primitive assembly 6000.
[0008] 拡張プリミティブのハードウエアの加速している処理が特に複雑な形のモ デルと画像分野にある状態で導入することができる利益のために、 チップに おけるそのようなプリミティブの処理ができるハードウエアを設計するのに 大きな努力がそそがれた。 チップの上のサブディビジョンサ一フェスと NURBS 表面テツセレ一シヨンを含んでいて、 それにもかかわらず、 ほとんど問題の 複雑なプリミティブの処理タスクに構造が捧げた完全に異なったハードゥエ ァを紹介するか、 既存の構造の中のプログラマブル要素の使用のために試み をした。 簡単なプリミティブだけの定数と伝統的なアーキテクチャが、 プリ ミティブ生成施設の不在のサボ一卜でまだ制限されている。  [0008] Because of the benefits that accelerated processing of hardware for extended primitives can be introduced, especially in complex forms and in the image field, processing of such primitives on a chip is possible. A great effort has been put in designing the hardware. Introducing a completely different harddua that includes a subdivision surface on chip and NURBS surface tessellation, yet nevertheless devoted to the structure of the most complex complex processing tasks, Attempts were made to use programmable elements in existing structures. Simple primitive constants and traditional architectures are still limited in the absence of primitive generation facilities.
[0009] W003/081528 (特許文献 1 ) には、 それはいかなる他の目的のためにもその ハードウエアを再利用するか、 または簡単なプリミティブの処理のために装 置を共有する可能性とアプリケーションが複雑な構造を準備する必要性の不 足がハードウエア処理に適したフォームで制御メッシュのための接続性情報 について説明している状態でサブディビジョンサ一フェスに制御メッシュの 特別な記述を処理する専用ハードウェアュニッ卜が開示されている。 同様の アプローチは米国特許出願明細書 2005/001 2750 (特許文献 2 ) にも開示され ており、 NURBS/ ツチのハードウヱァで加速している処理が実現されている。 [0009] In W003 / 081528, it describes the possibility of reusing its hardware for any other purpose, or sharing the device for simple primitive processing and applications. There is no need to prepare complex structures A dedicated hardware unit is disclosed that processes a special description of the control mesh at the subdivision surface with the foot describing connectivity information for the control mesh in a form suitable for hardware processing. . A similar approach is also disclosed in US Patent Application Specification 2005/001 2750 (Patent Document 2), where accelerated processing is achieved with NURBS / Tuch hardware.
[001 0] プログラマブル 3D加速ハードウェアの導入で、 それで複雑なプリミティブ の処理を実行するのをいくつかの試みが行われた。 それにもかかわらず、 有 効な実現は処理がまだ簡単なプリミティブだけにもかかわらず、 どんなプリ ミティブの生成にも制限されていないとき施設が商業的に利用可能なハード ウェアでは実現できていない。  [001 0] With the introduction of programmable 3D acceleration hardware, several attempts were made to perform complex primitive processing with it. Nevertheless, an effective implementation is not possible with commercially available hardware when the facility is not limited to the generation of any primitives, even though the primitives are still simple to process.
[001 1 ] ランダムアクセス、 頂点データに、 特にサブディビジョンサ一フェステツ セレ一シヨンの場合における拡張プリミティブの処理に関する問題の 1つは、 必要な情報を処理アルゴリズムに提供することである。 ランダムメモリアク セスは、 現在既存のハードウェアで高価であって、 処理パイプラインの限ら れた場所だけで可能である。 現在既存のハードウエアで最も多能な能力はプ ログラマブルハ一ドウエアで頂点かフラグメントプログラムで制御すること ができるメッシュ状のサンプリング抽出に関連する。 メッシュ単位のランダ ムメモリアクセスの有用性のために、 実現はメッシュに詰め込まれたメッシ ュ接続性情報を取得する。 専用テツセレ一シヨンハ一ドウヱァの場合では、 テツセレーシヨンアルゴリズム実現に必要な情報の取得を許容する特別なメ ッシュ表現が、 高い準備の欠点と共に使用されて、 コストを維持している。 ランダムなメモリアクセスができる伝統的ァ一キテクチヤにおける現在の別 の装置は、 頂点キャッシュである。  [001 1] One of the problems with processing of extended primitives in random access, vertex data, particularly in the case of subdivision surface selection, is to provide the necessary information to the processing algorithm. Random memory access is currently expensive on existing hardware and is possible only in limited locations in the processing pipeline. The most versatile capability of existing hardware is related to mesh sampling that can be controlled by a vertex or fragment program in programmable hardware. For the usefulness of random memory access on a per-mesh basis, the realization obtains mesh connectivity information packed into the mesh. In the case of dedicated tessellation hardware, special mesh expressions that allow the acquisition of the information necessary to implement the tetsu selection algorithm are used with high preparation flaws to maintain costs. Another current device in traditional architectures that allows random memory access is the vertex cache.
[001 2] 特許文献 1 : W003/081 528パンフレツ ト  [001 2] Patent Document 1: W003 / 081 528 pamphlet
特許文献 2:米国特許出願明細書 2005/001 2750  Patent Document 2: US Patent Application Specification 2005/001 2750
発明の開示  Disclosure of the invention
発明が解決しょうとする課題  Problems to be solved by the invention
[001 3] 本発明は, 3次元コンピュータグラフィックスにおいて用いられるァルゴ リズムなどにおける入力情報として用いられる, 再分割表面パッチや, NURBS パッチ, 隣接する三角形など, 拡張された幾何学的プリミティブに関するチ ップ上のプロセッシングに関する問題を解決することを目的とする。 そのよ うなアルゴリズムとして, 4 _ 3細分割スキームである Gatmu l卜 G l arkループ や, NURBS表面分割, シルエット発見, 最も簡単な平面状の幾何学的プリミテ イブである三角形を構成するために 3対状の頂点を要求するようなアルゴリ ズムなど, 公知のコンピュータグラフィックスにおいて実装される様々なス キームを含む。 [001 3] The present invention relates to an algorithm used in three-dimensional computer graphics. The purpose is to solve on-chip processing problems related to extended geometric primitives such as subdivision surface patches, NURBS patches, and adjacent triangles used as input information in rhythms. Such algorithms include Gatmu l 卜 G lark loop, which is a 4_3 subdivision scheme, NURBS surface segmentation, silhouette discovery, and the simplest geometric geometric primitive to construct a triangle 3 It includes various schemes implemented in known computer graphics, such as algorithms that require paired vertices.
[0014] 完全にチップ上で拡張された幾何学的プリミティブに関する情報処理を行 うことは, 複雑な幾何学的形状を迅速にレンダリングすることにつながる。 さらには, コンピュータグラフィックスを用いてよりリアルな映像を得るこ とにつながり, 三角形のような簡単なプリミティブを用いて直接に拡張され たプリミティブを得ることにもつながる。  [0014] Performing information processing on geometric primitives fully expanded 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.
[0015] 現在の 3次元コンピュータグラフィックスにおけるプリミティブのサイズ は, 固定されている。 例えば, 三角形の場合には 3つの頂点であり, 直線の 場合には 2頂点であり, 点の場合は 1頂点である。 一方, 特に表面パッチの 細分割における場合に用いられる, 拡張されたプリミティブでは, プリミテ イブのサイズが任意のサイズであり得る。 合理的な範囲での, 最大範囲にお いて, 拡張されたプリミティブを用いる際には, チップ上で実現するために 様々な頂点数のプリミティブが必要となる。  [0015] The size of primitives in current 3D computer graphics is fixed. For example, a triangle has three vertices, a straight line has two vertices, and a point has one vertex. On the other hand, the primitive size can be any size, especially for extended primitives used in subdivision of surface patches. When using extended primitives within a reasonable range, the maximum number of vertices is required to be implemented on the chip.
[001 6] 次なる問題は, 特に拡張されたプリミティブを用いて情報を処理する際に 用いられるランダムなメモリアクセスを達成する困難性である。 プリミティ ブを構成する頂点データは,単純なプリミティブにおけると同様, 記憶部にお いて分散されて記憶されうる。 ここで問題とされるのは, 拡張されたプリミ ティブにおける頂点の数であり, それは通常より何倍か大きぐ それに対応 するだけの頂点データをフェッチするためにランダムにメモリにアクセスす る必要が生ずることである。 グラフィックス装置におけるランダムアクセス は, 適切にキャッシングを行わなければ, 重大な欠陥を生み出すために制限 されており, 通常は頂点キャッシュに関連した装置とテクスチャのサンプリ ングに関する装置に限って用いられている。 [001 6] The next problem is the difficulty in achieving random memory access, especially when processing information using extended primitives. The vertex data composing the primitive can be distributed and stored in the storage unit as in simple primitives. The problem here is the number of vertices in the extended primitive, which is several times larger than usual, and it is necessary to access the memory randomly to fetch the corresponding vertex data. It happens. Random access in graphics devices is limited to produce serious defects if not properly cached Normally, it is used only for devices related to vertex caches and devices related to texture sampling.
[001 7] 三角形のような簡単な幾何学的プリミティブのみをハ一ドウエアを用いて 効果的に利用すると, ゲート数を減らすことができなくなって, その結果, チップの構成を複雑にするという問題がある。 拡張されたプリミティブを描 画するための論理回路を単純なプリミティブ用の処理回路と別に設けること によっても, チップの構成を複雑にすることとなる。 よって, 単純なプリミ ティブと拡張されたプリミティブとを別々の処理回路ではなぐ 一つの処理 系統で処理できれば, チップが複雑になるという問題を解決できる。  [001 7] If only simple geometric primitives such as triangles are used effectively with hardware, the number of gates cannot be reduced, resulting in a complicated chip configuration. There is. Even if the logic circuit for drawing extended primitives is provided separately from the processing circuit for simple primitives, the configuration of the chip is complicated. Therefore, if simple primitives and extended primitives can be processed by a single processing system that is not handled by separate processing circuits, the problem of complex chips can be solved.
[0018] さらに, 拡張されたプリミティブを表現する際の問題がある。 様々なタイ プの拡張されたプリミティブに広く用いられるように, 単純プリミティブ及 び拡張されたプリミティブに対して, プロセッシングや AP I , すなわちアプリ ケ一シヨンプログラミングインタ一フェース, を統一するため, 単純プリミ ティブにおけると同様に, 記憶容量を軽減させ, データの転送速度を下げる ことが望まれる。 以下では, 本発明が上記の課題をどのようにして解決した のかについて説明する。  [0018] Furthermore, there are problems in expressing extended primitives. In order to unify the processing and API, that is, the application programming interface, for simple primitives and extended primitives to be widely used for various types of extended primitives, As in the case of the Tive, it is desirable to reduce the storage capacity and reduce the data transfer rate. The following describes how the present invention solves the above problems.
課題を解決するための手段  Means for solving the problem
[001 9] 本発明は, 基本的には, 頂点にそれぞれインデックスを付して, そのイン デックスをインデックスバッファに格納し, 格納したインデックスを用いて プリミティブにおける頂点を表現した後, インデックスと関連する頂点情報 を頂点バッファから読み出し, プリミティブの演算処理に用いる。 さらに, 通常のプリミティブは, 三角形や四角形など定形のものを用いるが, 本発明 はこれら定形のものを用いつつも, 頂点の数が 4以上と通常より多いプリミテ イブをも用いる。 このような頂点の数が可変で通常より多いプリミティブを 可変サイズの拡張されたプリミティブとよぶ。 本発明では, あるプリミティ ブに関する頂点情報が入力されると, そのプリミティブが通常のプリミティ ブか, 可変サイズの拡張されたプリミティブかどうか判断する。 この判断は , ひとつのプリミティブにおける頂点の数により容易に判断できる。 そして , 通常のプリミティブの場合は, 通常と同様の装置を用いて通常と同様に演 算処理を行ってもよい。 一方, 可変サイズの拡張されたプリミティブの場合 は, 中心となる多角形のインデックスを読みとり, その後中心となる三角形 又は四角形に隣接する多角形のインデックスを読み取る。 その上で, それら インデックスに関連する頂点データを取得し, プリミティブをアセンブルす る演算処理を行う。 本発明のシステムは, コンピュータから各種情報を受け 取り, 頂点に関する情報を変換する頂点エンジンと, 頂点エンジンから変換 された頂点情報などを受け取り, プリミティブをアセンブルするプリミティ ブエンジンとを具備する。 そして, プリミティブエンジンによりアセンブル されたプリミティブは, ラスタライザによりラスタライズされ, 3次元コン ピュータグラフィックスなどとして フレームバッファなどに格納され, モ ニタなどに描画される。 頂点変換は, 頂点に対する視点変換等の演算処理を 意味する。 プリミティブが, 点であるか, 線であるか, 三角形であるか四角 形以上の多角形であるか関係なしに, 頂点情報に必要な演算処理を行う。 プ リミティブアセンブル (Pr i m i t i ve Assemb l e) は, 変換された個別の頂点を 組み立ててプリミティブとすることを意味する。 プリミティブアセンブル以 後はプリミティブ毎に個別処理が行われる。 本発明では, プリミティブが可 変サイズを含んでもよい。 プリミティブが三角形の場合のように, プリミテ イブサイズが 3である場合は, インデックステーブルは 3の倍数ごとにァク セスすればよい。 そのため, 装置は, 3という数字を覚えているだけでよく , 記述する必要は無い。 しかし, 本発明では, プリミティブサイズがプリミ ティブごとに変わりうるので, どこまでが次のプリミティブであるかわかり にくくなる。 そこで, 本発明では, 常に次の何要素がプリミティブを構成す るかわかるように記述することが好ましい。 本発明では, プリミティブサイ ズをインデックステーブルに記述する。 そして, 本発明の好ましい態様であ る複数のインデックステーブルがある場合は, 位置属性を含むインデックス テーブルの中にプリミティブサイズを記述することが好ましい。 [001 9] Basically, the present invention assigns an index to each vertex, stores the index in the index buffer, expresses the vertex in the primitive using the stored index, and then associates the index with the index. Vertex information is read from the vertex buffer and used for primitive processing. Furthermore, regular primitives such as triangles and quadrilaterals are used as regular primitives, but the present invention also uses primitives with four or more vertices than usual, while using these regular ones. Such primitives with a variable number of vertices and more than usual are called variable-size extended primitives. In the present invention, when vertex information about a primitive is input, it is determined whether the primitive is a normal primitive or an extended primitive of variable size. This judgment can be easily made by the number of vertices in one primitive. And In the case of ordinary primitives, computation processing may be performed in the same way as usual using the same equipment as usual. On the other hand, in the case of extended primitives 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. Then, the vertex data related to these indexes is acquired, and the arithmetic processing to assemble the primitives is performed. The system of the present invention includes a vertex engine that receives various information from a computer and converts information related to vertices, and a primitive engine that receives vertex information converted from the vertex engine and assembles primitives. The primitives assembled by the primitive engine are rasterized by the rasterizer, stored as 3D computer graphics in a frame buffer, and rendered on the monitor. 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 more than a quadrangle, the necessary arithmetic processing is performed on the vertex information. Primitive assembly means that the transformed individual vertices are assembled into a primitive. After primitive assembly, individual processing is performed for each primitive. In the present invention, the primitive may include a variable size. If the primitive size is 3, such as when the primitive is a triangle, the index table needs to 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 know 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 which is 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の三角形は, 頂点を vmとして, (V 1 , V 2, v 3 :ただし, v mは (xm, y m, z m) ) から構成され, それぞれの 頂点の色が, 赤, 白及び黄色とする。 第 1の三角形と隣接する第 2の三角形はIn order to draw more objects, it is preferable to reduce the number of vertices. That's right. For example, consider describing two vertices by describing a vertex for each triangle primitive. The first triangle, the vertex as v m, (V 1, V 2, v 3: However, v m is (x m, y m, z m)) consist of, the color of each vertex, red , White and yellow. The second triangle adjacent to the first triangle is
, P 2, 及び P 3を共有するので (V 2, V 3, V 4 :ただし, P 4は青) のよう に記述できる。 すると, 実際は頂点が 4つしかないにもかかわらず, 6つの 頂点に関する記述が必要とされることとなる。 すなわち, この方法は, 簡単 であるものの, n個の 3角形を描画するために, 3 xn個の頂点に関する記述が 必要となる。 すなわち, 記述しなければならない頂点数が多いので, 多くの メモリを消費する。 次に, 三角形ストリップを使う場合について説明する。 この描画方法は, 第 1のプリミティブの頂点に関する記述を行った後, 次のプ リミティブの記述を行う際に, 共有する頂点に関する記述を利用するという ものである。 たとえば, プリミティブが三角形の場合, 次の三角形は, 前の 三角形の 2個の頂点を利用するという条件をつけて描画する。 つまり、 先に 記述された三角形の頂点のうち先頭の頂点を除く頂点が次の三角形の 2頂点と なり, これと別の頂点を用いて, 次の三角形を表現する。 この方法では, メ モリコストを大幅に軽減できる。 しかしながら, 依然として n個の三角形を 描画するために 2 X n個以上の頂点を記述する必要がある。 Since share P 2, and P 3 (V 2, V 3 , V 4: However, P 4 blue) can be written as. Then, although there are actually only 4 vertices, a description about 6 vertices is required. In other words, although this method is simple, a description of 3 xn vertices is required to draw n triangles. In other words, since there are many vertices that must be described, a large amount of memory is consumed. Next, the case of using a triangle strip is explained. In this drawing method, after describing the vertex of the first primitive, the description of the shared vertex is used when describing the next primitive. For example, if the primitive is a triangle, the next triangle is drawn with the condition that it uses the two vertices of the previous triangle. In other words, of the vertices of the triangle described earlier, the vertices excluding the first vertex become the two vertices of the next triangle, and the next triangle is expressed using another vertex. This method can significantly reduce memory costs. However, it is still necessary to describe 2 X n or more vertices to draw n triangles.
本発明では, ( V -, , V 2, v 3 :たたし, v mは 、xm, y m, z m) ) 現するために, インデックステーブルを用いる, すなわち, インデックステ —ブルには, 座標値ではなく単に (V 1, v 2, v 3) のような情報が格納され , この情報を用いて各頂点情報 (例えば, V 1¾ (X 1, y i, Z 1) であり, 赤という情報) を読み出す。 すなわち, インデックステ一ブルには, V 1 , VIn the present invention, (V-,, V 2 , v 3 : However, v m is x m , y m , z m )) Is not a coordinate value, but simply stores information such as ( V 1 , v 2 , v 3 ). Using this information, each vertex information (for example, V 1 ¾ ( X 1 , yi , Z 1 ) , Red). In other words, the index Te one table, V 1, V
2, V 3で 1個の三角形を形成し, V 2, V 3, V 4で次の三角形を形成するよう に, インデックスを格納する。 このように頂点エンジンの頂点バッファなど から頂点データを読み出すことができるインデックステーブルを用いるので2, in V 3 to form a single triangle, so as to form a next triangle in V 2, V 3, V 4, and stores the index. In this way, an index table that can read vertex data from the vertex buffer of the vertex engine is used.
, 1個の頂点は 1回記述すればよくなり、 その結果、 頂点の記述量が小さく て済む。 一方, この方法では,インデックスを記述する必要がある。 インデッ クステ一ブルの幅は、 プリミティブによって異なり, プリミティブが三角形 であれば 3である。 この方法では, 一個の頂点が複数の三角形に共有される ため, ひとつの頂点に関する情報を繰り返し配送する必要がある。 インデッ クステーブルは、 通常は 1個持つのが普通であり殆どの状況下で十分である 。 事実、 OpenGL/ES インタ一フェースでは、 インデックステーブルは 1個だ け持つ。 しかし頂点の属性、 たとえば XYZ座標 (位置属性) や色 (頂点カラー 属性) 、 テクスチャ座標 (テクスチャ属性) それぞれに独立のインデックス テーブルを持つインタ一フェースもある。 そのようなインタ一フェースの有 名な例としては D i r ect3Dなどがあげられる。 , One vertex only needs to be described once, and as a result, the amount of description of the vertex is small. On the other hand, this method requires an index to be described. Index The width of the tableable depends 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. An index table is usually one, and is sufficient for most situations. 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 Direct 3D.
[0022] 本発明の要旨は, 拡張された幾何学的プリミティブをプロセッシングでき るようにするために, 適切なグラフィックァクセレレ一タにおける頂点キヤ ッシュ装置 (vertex cache fac i l i t i es) ¾:用しゝることに関する。 これは, 従 来技術に比べて追加された装置である, 本発明において提案される拡張され たプリミティブのアッセンブルとプロセッシングを行うために用いられるプ リミティブエンジン (プリミティブエンジン) と, 拡張されたプリミティブ を表現するために用いられるポリゴンメッシュを表現するための拡張された ィンデックス/頂点バッファとを組み合わせて用いることにより達成される [0022] The gist of the present invention is to use a vertex cache fac iliti es ¾: in a suitable graphics selector to enable processing of extended geometric primitives. About talking. This is an added device compared to the conventional technology, and includes a primitive engine (primitive engine) used for assembling and processing the extended primitive proposed in the present invention, and an extended primitive. Achieved by using in combination with an extended index / vertex buffer to represent the polygon mesh used to represent
[0023] 本発明において, 拡張されたプリミティブは, ポリゴンメッシュを表現す るための拡張されたィンデックス/頂点/くッファに基づいて表現される。 D i r ect3Dや openGLのような 3次元グラフィックライブラリが現在あり、 このよう な表現物を, ハードウエアを用いてポリゴンメッシュを迅速に処理する方法 を提供している。 表現過程において, 頂点バッファは, プロセッシングされ るポリゴンメッシュのそれぞれの頂点における頂点の属性 (vertex attr i but es) を記憶し, 一方, インデックスバッファの内容は, メッシュの接続情報 を含む。 インデックスバッファは, 頂点バッファの内容を示すインデックス 列を構成する頂点番号と関連した同じサイズのポリゴン列に関する記述を含 む。 あるポリゴンに属するインデックス列は, 例えば頂点バッファにおける 頂点データを参照することにより, そのポリゴンの頂点列を記述し, そして , ポリゴンにおける頂点の連続的な接続により形成されるポリゴンエツジ列 を記述する。 本発明においては, インデックスバッファは, ある決まったサ ィズの拡張されたプリミティブ列を記述するのと同じ方法のインデックスバ ッファを用いることができる。 様々なサイズの拡張されたプリミティブを表 現するため, プリミティブサイズとともに様々なサイズの拡張されたプリミ ティブを形成する頂点を参照する他のインデックスに前もってフィックスし ておいたインデックス値を記憶する, インデックスバッファが用いられる。 [0023] In the present invention, the extended primitive is expressed based on the extended index / vertex / kuffer for expressing the polygon mesh. There are currently 3D graphic libraries such as Direct3D and openGL, and they provide a method for quickly processing polygon meshes using such hardware. In the representation process, the vertex buffer stores the vertex attributes (vertex attributes) at each vertex of the polygon mesh to be processed, while the contents of the index buffer contain mesh connection information. The index buffer contains a description of the polygon array of the same size associated with the vertex numbers that make up the index string indicating the contents of the vertex buffer. An index sequence belonging to a polygon is By referring to the vertex data, the vertex sequence of the polygon is described, and then the polygon edge sequence formed by the continuous connection of the vertices in the polygon is described. In the present invention, the index buffer can use an index buffer in the same way as an extended primitive sequence of a certain size. An index that stores an index value that has been fixed in advance to other indexes that refer to vertices that form an extended primitive of various sizes together with the primitive size to represent the extended primitives of various sizes. A buffer is used.
[0024] そのように拡張されたプリミティブに関する演算処理を行うためにインデ ックスバッファ及び頂点バッファを改良することで, 上述した問題を解決で きる。 拡張されたプリミティブやインデックスバッファのみに記憶されるィ ンデックスを介した頂点リス卜における, 付加的な頂点の数である頂点の数 を特定しなければならないような, 異なるサイズの固定サイズの拡張された プリミティブや異なるサイズの可変サイズの拡張されたプリミティブを表現 するのに十分である。 サイズ, 頂点リスト, 及びある特別なタイプのプリミ ティブの形成は, プリミティブ形成アルゴリズムそのものによって行われ, それゆえ表現 (representat i on) はプリミティブサイズによらない。 これは , 単純プリミティブの表現と同様である。 グラフィックライブラリの観点か らは, 表現は, 単純プリミティブの場合と同様であり, 単純プリミティブ列 を演算処理する場合に比べて拡張されたプリミティブ列を演算処理する場合 であっても A P Iに大きな変化は必要とされず, 必要なメモリを軽減できる  [0024] The above-mentioned problems can be solved by improving the index buffer and the vertex buffer in order to perform arithmetic processing related to such extended primitives. A fixed-size extended size of different size that must specify the number of vertices, which is the number of additional vertices, in the vertex list via the extended primitives and indexes stored only in the index buffer. It is sufficient to represent primitives and 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 not dependent on the primitive size. This is the same as the representation of simple primitives. From the point of view of the graphic library, the representation is the same as for simple primitives, and even if the primitive sequence is expanded compared to the simple primitive sequence, the API will not change significantly. It is not required and can reduce the required memory.
[0025] その表現により, 頂点が頂点バッファに一度だけ格納されるようなプリミ ティブ間で頂点を共有するような場合においてメモリコストを軽減できる。 単純プリミティブの場合と同様, インデックスを参照することは, ずっと少 ないメモリ空間しか要求しない。 [0025] With this representation, memory costs can be reduced when vertices are shared among primitives whose vertices are stored only once in the vertex buffer. As with simple primitives, referencing an index requires much less memory space.
[0026] 本発明は, ハードウエアにより拡張されたプリミティブを迅速に演算処理 するために, 頂点キャッシュとプリミティブエンジンを組み合わせたものを 用いる。 頂点キャッシュは, 直前に演算処理された頂点への短い待ち時間に よるアクセスを可能とする。 インデックスバッファ及び頂点バッファによる 表現の場合は, 頂点のインデックスがキャッシュタグとして用いられうる。 それゆえ, 頂点のインデックスがキャッシュ内のものと同じであれば, 後者 に格納されるものは, 更なる演算処理のために用いられる。 本発明は, 好ま しくは, 頂点キャッシュを拡張されたプリミティブの演算処理のためにも用 いる。 [0026] In the present invention, a combination of a vertex cache and a primitive engine is used in order to quickly compute a hardware-extended primitive. Use. The vertex cache allows access to vertices that have been processed immediately before with a short waiting time. In the case of the representation by index buffer and vertex buffer, the vertex index can be used as a 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 processing. The present invention preferably uses the vertex cache for arithmetic processing of extended primitives.
[0027] 単純プリミティブと拡張されたプリミティブでは表現が類似しているので , 拡張されたプリミティブにおいても単純プリミティブにおけると同様に直 前に演算処理された頂点への待ち時間の短いアクセスにより頂点キャッシュ を利用できる。 これにより, 拡張されたプリミティブの頂点データをフェツ チする際に要求される沢山のランダムなアクセスによるパフォーマンスの劣 化を解消できる。 また, 単純プリミティブと拡張されたプリミティブの演算 処理において同じ頂点キャッシュのハ一ドウエアを用いるので, ハ一ドゥエ ァサイズを軽減できる。 また, 頂点キャッシュを用いるので, 拡張されたプ リミティブの最大サイズに上限がなくなる。 さらに, 頂点キャッシュは固定 サイズの拡張されたプリミティブにおける頂点にも, 可変サイズの拡張され たプリミティブにおける頂点にも用いられる。 しかしながら, 演算処理を行 う拡張されたプリミティブの最大サイズに合理的な上限が設けられる頂点キ ャッシュ中の頂点データを有するプリミティブを演算処理することで効果的 な演算処理が可能となる。 これにより, 単純プリミティブより大きなサイズ の固定サイズ又は可変サイズの拡張されたプリミティブを演算処理する際の 問題を解決できることとなる。  [0027] Since simple primitives and extended primitives have similar representations, the extended primitives can also have a low-latency access to the vertices that were processed immediately before, as in simple primitives. Available. This eliminates the performance degradation caused by the many random accesses required when fetching the extended primitive vertex data. In addition, since the same vertex cache hardware is used in the processing of simple primitives and extended primitives, the hardware size can be reduced. Also, 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 is possible by performing arithmetic processing on primitives that have vertex data in the vertex cache where a reasonable upper limit is set for the maximum size of the extended primitive that performs arithmetic processing. This solves the problem of processing fixed-size or variable-size extended primitives larger than simple primitives.
発明の効果  The invention's effect
[0028] 本発明においては, 拡張されたプリミティブのアッセンブル及び演算処理 は, 従来のハ一ドウエアに付加されたモジュールであるプリミティブェンジ ンによって処理される。 このモジュールは, 入力情報を, 頂点キャッシュか ら拡張されたプリミティブのそれぞれの頂点についての変換された頂点デ一 タの形式で受け取り, 付加的に, キャッシュコントローラから可変サイズの 拡張されたプリミティブに関するサイズ情報を受け取る。 [0028] In the present invention, the extended primitive assembly and processing are processed by the primitive engine, which is a module added to the conventional hardware. This module converts the input information into a transformed vertex map for each vertex of the primitive extended from the vertex cache. In addition, it receives size information about variable-size extended primitives from the cache controller.
[0029] プリミティブエンジンは, 拡張されたプリミティブの演算処理アルゴリズ ムを実行する。 そのアルゴリズムは, 拡張されたプリミティブの頂点列を解 釈し, 演算処理された結果を単純プリミティブの列として出力する。 これに より以下の問題を解決できる。 まずは, 拡張されたプリミティブを演算処理 する際の融通性 (versat i l i ty) である。 プリミティブエンジンにより制御さ れプログラマブルな場合は, どのような拡張されたプリミティブであっても , 本発明により提案される拡張されたインデックスバッファ及び頂点バッフ ァによる表現を用いることで, 演算処理を実現でき, 頂点データへの迅速な アクセスを行うことができる。 頂点キャッシュへ直接接続するので, 拡張さ れたプリミティブをアッセンブルし, 演算処理するための頂点データを取得 するための待ち時間の問題は大幅に軽減される。 演算処理のためのパイブラ ィンを再利用することや拡張されたプリミティブのチップ上で演算処理を行 うこともこれに貢献する。 拡張されたプリミティブに関する演算処理結果は , 単純プリミティブ列であり演算処理パイプラインの結果により直接サポー 卜されるので, ホストコンピュータへの演算処理結果を用いずに, 拡張され たプリミティブ列が直接単純プリミティブ列へと変換されるので, チップ上 のみでの演算処理を行うという問題を解決できる。  [0029] 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. If it is controlled and programmable by the primitive engine, any extended primitive can be implemented using the expression by the extended index buffer and vertex buffer proposed by the present invention. , It allows quick access to vertex data. Since it is directly connected to the vertex cache, the latency problem of assembling extended primitives and acquiring vertex data for processing is greatly reduced. Reuse of the pipeline for arithmetic processing and 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 without using the operation result to the host computer. Since it is converted into a column, the problem of performing arithmetic processing only on the chip can be solved.
[0030] 拡張されたインデックス/頂点/くッファ表現, 単純プリミティブを演算処 理する頂点キャッシュ論理回路に加えたわずかな修正と, プリミティブェン ジンとを組み合わせて用いることで, 固定サイズの拡張されたプリミティブ 及び可変サイズの拡張されたプリミティブの演算処理を可能とし, N U R B Sテツセレ一シヨン (tesse l l at i on) など現状の 3次元グラフィックハード ゥエアでは存在しない再分割表面レンダリングなどについての, チップ上で の演算処理を可能とする。  [0030] The fixed index can be expanded by using an extended index / vertex / buffer expression, a minor modification to the vertex cache logic that computes simple primitives, and the primitive engine. On the chip, such as subdivision surface rendering that does not exist in the current 3D graphics hardware such as NURBS tessellation. It is possible to perform the arithmetic processing.
図面の簡単な説明  Brief Description of Drawings
[0031 ] [図 1 ]図 1は, 頂点キャッシュ装置の従来におけるハードウェアァ一キテクチ ャを示す。 [0031] [Figure 1] Figure 1 shows the conventional hardware architecture of the vertex cache device. Indicates
[図 2A]図 2 Aは, 三角形列をサンプリングするためのインデックス/頂点/く ッファのレイァゥトを示す。  [Fig. 2A] Fig. 2A shows the index / vertex / buffer layout for sampling a sequence of triangles.
[図 2B]図 2 Bは, 三角形ストリップ列をサンプリングするためのインデック ス/頂点バッファのレイァゥトを示す。  [Figure 2B] Figure 2B shows the layout of the index / vertex buffer for sampling the triangle strip sequence.
[図 3]図 3は, 本発明におけるァーキテクチャの頂点キヤッシュを示す。  [FIG. 3] FIG. 3 shows a vertex cache of the architecture in the present invention.
[図 4A]図 4 Aは, 三角形とその近隣の固定サイズの拡張されたプリミティブ を示す。 [Figure 4A] Figure 4A shows a triangle and its neighboring fixed-size extended primitives.
[図 4B]図 4 Bは, 三角形とその近隣の固定サイズの拡張されたプリミティブ ストリップ列を示す。  [Figure 4B] Figure 4B shows a fixed-size extended primitive strip sequence around a triangle and its neighbors.
[図 4G]図 4 Cは, 三角形とその近隣の固定サイズの拡張されたプリミティブ のインデックス/頂点/くッファのレイアウトを示す。  [Fig. 4G] Fig. 4C shows the index / vertex / uffer layout of the triangle and its neighboring fixed-size extended primitives.
[図 4D]図 4 Dは, 三角形とその近隣の固定サイズの拡張されたプリミティブ ストリップ列のインデックス/頂点バッファのレイァゥトを示す。  [Figure 4D] Figure 4D shows the index / vertex buffer layout of a triangle and its neighboring fixed-size extended primitive strip sequence.
[図 5A]図 5 Aは, 三角形とその近隣の固定サイズの拡張されたプリミティブ スフアン列を示す。 [Figure 5A] Figure 5A shows the triangle and its neighboring fixed-size extended primitive Suan sequence.
[図 5B]図 5 Bは, エッジベースのフラップのシルエツ卜の構造を示す。  [Fig. 5B] Fig. 5B shows the structure of the edge-based flap Siletsu.
[図 5G]図 5 Cは, 三角形とその近隣の固定サイズの拡張されたプリミティブ スフアン列のインデックス/頂点/くッファのレイアウトを示す。  [Fig. 5G] Fig. 5C shows the index / vertex / uffer layout of the triangle and its neighboring fixed-size extended primitive Suan sequences.
[図 6A]図 6 Aは, 可変サイズの拡張されたプリミティブを示す。  [Figure 6A] Figure 6A shows a variable-size extended primitive.
[図 6B]図 6 Bは, 可変サイズの拡張されたプリミティブによる Gatmu l I -C l ark 再分割パッチを示す。  [Fig. 6B] Fig. 6B shows a Gatmu I-Clark subdivision patch with extended primitives of variable size.
[図 6G]図 6 Cは, 可変サイズの拡張されたプリミティブによる Gatmu l I -C l ark 再分割/ ツチのインデックス/頂点バッファのレイアウトを示す。  [Fig. 6G] Fig. 6C shows the layout of the Gatmu l I-Clark subdivision / tach index / vertex buffer with variable-size extended primitives.
[図 7]図 7は, 本発明により導入される頂点キャッシュ制御部, プリミティブ エンジン及び固定サイズプリミティブ集積回路間の連絡通路を示す。 [FIG. 7] FIG. 7 shows a communication path between the vertex cache control unit, the primitive engine, and the fixed size primitive integrated circuit introduced by the present invention.
[図8 図8八は, シルエツト検出と視覚化を行わない場合のレンダリング結 果を示す。 [図 8B]図 8 Bは, シルエツト検出と視覚化を行った場合のレンダリング結果 を示す。 [Figure 8 Figure 8-8 shows the rendering results without the detection and visualization of silhouettes. [Fig. 8B] Fig. 8B shows the rendering results when siletto detection and visualization are performed.
[図 9A]図 9 Aは, 再分割を行わない場合のワイヤ一フレーム形状のレンダリ ング結果を示す。  [Fig. 9A] Fig. 9A shows the rendering results of the wire-one frame shape without re-segmentation.
[図 9B]図 9 Bは, 再分割を行った場合のワイヤ一フレーム形状のレンダリン グ結果を示す。  [Fig. 9B] Fig. 9B shows the rendering results for the wire-frame shape when subdivision is performed.
[図 10A]図 1 OAは, 再分割を行わない場合のワイヤ一フレームのレンダリン グ結果を示し, ボックス内はメッシュの粗い要素を示す。  [Fig. 10A] Fig. 1 OA shows the result of rendering one wire frame without re-segmentation, and the inside of the box shows the coarse elements of the mesh.
[図 10B]図 1 O Bは, 再分割を行った場合のワイヤ一フレームのレンダリング 結果を示し, ボックス内は再分割中にスム一ジングを施されたメッシュの粗 いエレメントを示す。 [Fig. 10B] Fig. 1 OB shows the rendering result of the wire-one frame when subdivision is performed, and the inside of the box shows the coarse mesh elements that are smoothed during subdivision.
[図 11A]図 1 1 Aは, 再分割を行わない場合のレンダリング像を示す。  [Fig. 11A] Fig. 11A shows the rendered image without subdivision.
[図 11B]図 1 1 Bは, 再分割を行った場合のレンダリング像を示す。 [Fig. 11B] Fig. 11B shows the rendered image when subdivision is performed.
符号の説明 Explanation of symbols
101 単純三角形列 101 simple triangle row
102 単純三角形ストリップ列  102 simple triangle strip row
103 隣接するプリミティブを有する単純三角形  103 Simple triangle with adjacent primitives
104 隣接するプリミティブを有する単純三角形ストリップ列  104 Simple triangle strip sequence with adjacent primitives
105 隣接するプリミティブファン列を有する単純三角形  105 Simple triangle with adjacent primitive fan train
106 Gatmul卜 Glark 再分割表面パッチ群  106 Gatmul 卜 Glark Subdivided surface patches
107 Gatmul卜 Glark 再分割表面パッチ群のモザイク  107 Gatmul 卜 Glark Mosaic of subdivided surface patches
110-115 メッシュフラグメントの三角形 110-115 mesh fragment triangle
210 キャッシュデスティネーションマルチプレクサ  210 Cache Destination Multiplexer
220 固定サイズプリミティブ集積回路ュニットソースマルチプレクサ 220 Fixed Size Primitive Integrated Circuit Unit Source Multiplexer
1000 ホストメモリ 1000 host memory
1100 インデックスバッファ  1100 Index buffer
1200 頂点バッファ  1200 vertex buffer
2000 頂点キャッシュ制御部 2100 頂点カウンタ 2000 Vertex cache controller 2100 vertex counter
2300 頂点キャッシュ制御部とプリミティブエンジンとの間で頂点配送完了 信号をやり取りする情報伝達パス  2300 Information transfer path for exchanging vertex delivery completion signals between the vertex cache controller and the primitive engine
3000 頂点キャッシュ記憶部  3000 vertex cache storage
4000 頂点処理ュニット  4000 vertex processing unit
5000 第 2の頂点キヤッシュ記憶部  5000 Second vertex cache storage
6000 固定サイズプリミティブ集積回路ュニット  6000 fixed size primitive integrated circuit unit
7000 固定サイズプリミティブセットアツプュニット  7000 fixed size primitive set up unit
8000 プリミティブラステライザ一  8000 Primitive Rasterizer
9000 プリミティブエンジン  9000 primitive engine
9100 プリミティブサイズレジスタ  9100 Primitive size register
発明を実施するための最良の形態  BEST MODE FOR CARRYING OUT THE INVENTION
[0033] 以下, 本発明の実施の形態について説明する。 本発明は, 基本的には, 固定 された又は可変の頂点数によって形成される複雑な幾何学的プリミティブ ( 拡張されたプリミティブともよぶ) のチップ上での処理に関する。  Hereinafter, embodiments of the present invention will be described. The present invention basically relates to the processing of on-chip complex geometric primitives (also called extended primitives) formed by a fixed or variable number of vertices.
[0034] 本発明の第 1の側面は, 単純プリミティブを記述するとともに, 可変サイズ の拡張されたプリミティブ列を, 可変サイズの拡張されたプリミティブごと に 4つ以上の頂点データを用いて記述する 3次元コンピュータグラフィック スのための方法であって, 複数の属性を含む頂点郡を保存でき, 前記属性の バッファメモリ上の位置を, 頂点列における頂点番号であるインデックスを 整数倍した値と, 属性のタイプを示す番号を用いてバイアスすることにより 求めることができる頂点/くッファを用いて, インデックスと属性のタイプを 示す番号とを用いて, 前記頂点バッファにおける, ある頂点の頂点属性のメ モリ上の位置を特定する, 頂点バッファの特定工程と, 頂点列に関連して頂 点/くッファにおける頂点位置属性値列を格納し, 可変サイズの拡張されたプ リミティブのサイズをインデックスとして記憶し, 前記固定サイズのプリミ ティブ列を, 前記頂点列を用いて再構築できるようにし, 前記可変サイズの 拡張されたプリミティブ列を, プリミティブサイズをあわせて用いることに より再構築できるようにする, インデックスバッファにおけるインデックス を特定する, インデックスバッファの特定工程と, そして, 前記工程で求め られなかった残りの頂点属性について, 可変サイズの拡張されたプリミティ ブであってもプリミティブサイズに関するインデックスを用いないことを除 けば, 頂点位置属性を求めると同様の方法によって, 残留している全ての頂 点属性を求める, 複数のインデックスバッファの特定工程と, を有する方法 に関する。 本明細書において, 拡張されたプリミティブは 4つ以上の頂点を含 んでもよぐ 頂点の数は, 例えば, 4, 5, 6, 7, 8, 9又は 10があげられる。 [0034] The first aspect of the present invention describes simple primitives and also describes variable-size extended primitive sequences using four or more vertex data for each variable-size extended primitive. A method for two-dimensional computer graphics, which can store a vertex group including a plurality of attributes. The position of the attribute in the buffer memory is obtained by multiplying the index that is the vertex number in the vertex sequence by an integer, and the attribute Using the vertex / queffer that can be obtained by biasing with the number indicating the type, using the index and the number indicating the attribute type, in the vertex attribute memory of the vertex in the vertex buffer Specify the position of the vertex buffer, and the vertex position attribute value sequence in the vertex / uffer in relation to the vertex sequence The variable size extended primitive size 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 stored. , Using the primitive size together The index buffer identification process, the index buffer identification process, and the remaining vertex attributes that were not found in the above process, even with variable size extended primitives This method relates to a method having a plurality of index buffer specifying steps for obtaining all remaining vertex attributes in the same manner as the vertex position attribute is obtained except that the index relating to the primitive size is not used. In this specification, extended primitives may contain more than four vertices. For example, the number of vertices is 4, 5, 6, 7, 8, 9, or 10.
[0035] 前記の方法は, 前記固定サイズのプリミティブ列を前記頂点列を用いて再 構築できるようにし, 可変サイズの拡張されたプリミティブ列の場合はプリ ミティブサイズを用いることにより再構築できるように, 頂点バッファにお ける頂点位置属性の頂点列に対応したインデックス列を記憶するとともに, 可変サイズの拡張されたプリミティブのサイズを前記ィンデックスバッファ のインデックス値として記憶するインデックスバッファを特定する工程を含 むので, いずれの固定サイズのそれを構成する頂点列から幾何学的プリミテ イブ列を再構築することができる。 さらに, 可変サイズの拡張されたプリミ ティブの頂点位置属性を参照するインデックス列の前にプリミティブサイズ を含むことができるので, その方法は, そのサイズとそのサイズを形成する 頂点列により再構築されうる可変サイズの拡張されたプリミティブを記述す ることができる。 その方法は, さらに, 残りの全ての頂点属性のために複数 のインデックスバッファを特定する工程を含んでもよいので, それぞれの属 性が自己のインデックスによりアドレスされ, それゆえ分離されたインデッ クスバッファが必要とされる場合, 近隣の点など拡張されたプリミティブの 頂点について全ての必要とされる頂点属性を特定することができる。  [0035] The above-described method is such that the fixed-size primitive sequence can be reconstructed by using the vertex sequence, and in the case of a variable-size extended primitive sequence, it can be reconstructed by using the primitive size. , Storing an index sequence corresponding to the vertex sequence of the vertex position attribute in the vertex buffer, and identifying an index buffer that stores the size of the variable-sized extended primitive as the index value of the index buffer. Therefore, the geometric primitive sequence can be reconstructed from the vertex sequences that compose any fixed size. 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. Can describe variable size extended primitives. The method may further include the step of identifying multiple index buffers for all remaining vertex attributes, so that each attribute is addressed by its own index, and therefore a separate index buffer is used. If required, all required vertex attributes can be specified for extended primitive vertices, such as neighboring points.
[0036] 本発明により導入された拡張されたプリミティブ列を特定するための方法 の工程は, 以下のメリットを有する。 例えば, 固定されたサイズ又は可変サ ィズの頂点列から再構築できるタイプなど, 様々なタイプの拡張されたプリ ミティブを特定することができる。 コンパク トインデックスにより参照され るプリミティブ列により共有される頂点として表現されることによりコンパ ク トになる。 本方法は, 三角形メッシュ/四角形メッシュを特定するための[0036] The steps of the method for specifying an extended primitive sequence introduced by the present invention have the following merits. Various types of extended primitives can be identified, for example, types that can be reconstructed from fixed-size or variable-sized vertex sequences. Referenced by the compact index It becomes compact by being expressed as vertices shared by primitive sequences. This method is used to identify triangle / quadrature meshes.
3次元グラフィックライブラリに用いられるインデックスバッファ /頂点/く ッファによる表現まで拡張されるので, 拡張されたプリミティブ列及び三角 形, 四角形, 線, 点など単純プリミティブの列と比較して, 拡張されたプリ ミティブ列を準備し複製するための応用のために, ライブラリ A P I sをわ ずかに修正するだけですむ。 各工程を以下に詳細に説明する。 Since it is extended to the index buffer / vertex / buffer representation used in the 3D graphic library, it can be expanded and compared with simple primitive columns such as triangles, rectangles, lines, and points. Only a few modifications to the library API s are needed for applications to prepare and duplicate mitigation sequences. Each step will be described in detail below.
[0037] 本方法は, 固定されたサイズ又は可変サイズの拡張されたプリミティブ列 を記述するために, 単純プリミティブ列を表現するためのインデックス/頂 点バッファを拡張する。 本明細書において, 単純プリミティブとは, 三角形 , 四角形, 線, 点などコンピュータグラフィックスにおいて用いられる基本 形状を意味する。 そのようなプリミティブ列の演算処理は, open G Lや d i rec t 3 Dなど 3次元グラフィックライブラリにおいて通常最も大きな問題である 。 本明細書において, 拡張されたプリミティブとは, 4つ以上の頂点数を有 する固定された数又は可変な数の頂点列により形成された幾何学的プリミテ ィブを意味する。 [0037] The method extends the index / top buffer to represent simple primitive sequences to describe fixed-size or variable-size extended primitive sequences. In this specification, simple primitives refer to basic shapes used in computer graphics, such as triangles, rectangles, lines, and points. Such processing of primitive sequences is usually the biggest problem in 3D graphic libraries such as open G L and di rec t 3D. In this specification, the extended primitive means a geometric primitive formed by a fixed number or a variable number of vertex sequences having four or more vertex numbers.
[0038] 単純プリミティブを表現するためのインデックスバッファ/頂点バッファ は, 単純プリミティブがプリミティブを構成する頂点列として表現される単 純プリミティブ列として表現されるものを意味する。 頂点バッファは, コン ピュータグラフィックスにおいて用いられる頂点属性の記憶装置を意味する 。 本明細書において, 頂点属性は, プリミティブの頂点として用いられる 4 次元単一空間 (homogeneous space) 中の点と関連する属性を意味する。 頂点 属性の好ましい例は, 空間内の点, 色, テクスチャ座標, 法線ベク トル, タ ンジェントベク トルなどを含む。 属性は, スカラー, 2つのコンポーネント ベク トル, 3つのコンポーネントベク トル, など様々な次元でありうるし, 1バイ ト整数, 2バイ ト整数, 4バイ ト整数, 4バイ ト浮動小数点など様々 な値のタイプを取りうる。 それぞれの属性の例は, その次元と値のタイプに よって決めされるある固定されたメモリサイズの記憶装置を必要とする。 頂 点バッファを特定する方法は, 同じ属性タィプの属性値がメモリ中に同じよ うに配置されるような方法で, メモリ中に属性列を配置することを含む。 そ れゆえ, 頂点バッファ内のある属性の位置は, 属性タイプと関連した列にお ける位置と配置により容易にリカバーできる。 従って, 属性値は, その列に おける整数位置又はインデックスにより表すことができる。 もしも全ての属 性列が同じサイズを有するものであれば, 当該列における頂点の数に関連し て属性価の頂点列に由来する頂点のインデックス値は増加することとなる。 そのような場合では, 頂点列を特定することができ, それゆえ, インデック スバッファを用いずに単純プリミティブ列を特定できる。 [0038] An index buffer / vertex buffer for representing a simple primitive means that a simple primitive is represented as a simple primitive sequence represented as a vertex sequence constituting the primitive. Vertex buffer means a storage device of vertex attributes used in computer graphics. In this specification, the vertex attribute means an attribute associated with 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 so on. Attributes can be of various dimensions, such as scalars, two component vectors, three component vectors, and various values such as 1-byte integer, 2-byte integer, 4-byte integer, 4-byte floating point, etc. Can take a type. Each attribute example requires a fixed memory size storage device determined by its dimension and value type. Summit The method of identifying a point buffer includes placing attribute strings in memory in such a way that attribute values of the same attribute type are placed in memory in the same way. 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, attribute values can be represented by integer positions or indexes in the column. If all attribute columns have the same size, the vertex index value derived from the attribute value vertex sequence will increase in relation to the number of vertices in the sequence. In such a case, a vertex sequence can be specified, and therefore a simple primitive sequence can be specified without using an index buffer.
[0039] 本明細書において, そのような状況は, 「頂点バッファのみの表現」 "ver tex buffer-on l y representat i on とよはれる。 用詰 「イン丁ックスハツフ ァ」 は, 頂点属性インデックスと特定するための整数値の列を含むメモリ中 のアレイを意味する。 頂点列はそれに関連する頂点属性の全てのタイプのィ ンデックス列のうち唯一のもののみを含む場合は, 全ての頂点属性について 頂点列を完全に記述するために, ひとつのインデックスバッファを特定すれ ば十分である。 逆に, それぞれの頂点属性タイプが頂点列に関連して頂点ィ ンデックスの頂点属性に特異なものが存在する場合がある。 そのような場合 では, 特定するためのインデックスバッファの数は, 属性タイプの数と同じ だけになる。 頂点/くッファとそれにおける全ての必要とされるインデックス アレイを有するインデックスバッファとを組み合わせることは, 単純プリミ ティブの列により表現するインデックス/頂点/くッファを形成することとな る。  [0039] In this specification, such a situation is called “vertex buffer-only representation” “ver tex buffer-on ly represent” on. An array in memory that contains a sequence of integer values to identify. If a vertex sequence contains only one of all types of index sequences of its associated vertex attributes, specify one index buffer to fully describe the vertex sequence for all vertex attributes It is enough. Conversely, there may be cases where each vertex attribute type is related to the vertex sequence and is unique to the vertex index of the vertex index. In such cases, the number of index buffers to identify is only the same as the number of attribute types. Combining vertices / queffers with an index buffer with all the required index arrays in it forms an index / vertex / queffer that is represented by a sequence of simple primitives.
[0040] 頂点バッファを特定する工程は, 上述したように, 簡単なプリミティブ列 におけるインテックスバッファ及び/又は頂点/くッファのように各頂点に関 連する頂点の属性 (attr i butes) を特定するための工程である。  [0040] The process of specifying the vertex buffer is to specify the vertex attributes (attr i butes) associated with each vertex, such as the intex buffer and / or vertex / kuffa in a simple primitive sequence, as described above. Process.
[0041 ] インデックスバッファを特定する工程は, 頂点が拡張されたプリミティブ を形成するために頂点位置の属性に関するインデックスを特定するためのェ 程である。 拡張されたプリミティブにおける様々な拡張されたサイズの属性 のために,この工程は, 頂点位置の特定のためのインデックスバッファ内のィ ンデックス値によるプリミティブサイズを特定する工程を含む。 可変サイズ のプリミティブを用い頂点列がプリミティブを構成するものを実装する場合 , この工程は, プリミティブごとにプリミティブサイズを特定することによ る, 拡張されたプリミティブ列を特定する工程を含んでも良い。 本発明は, プリミティブのサイズと, プリミティブを形成できる頂点列と, 頂点列の特 定値とにより必要な情報の全てをそろえることができるような拡張されたプ リミティブに用いることができる。 [0041] 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. Various extended size attributes on extended primitives For this reason, this step includes the step of specifying the primitive size according to the index value in the index buffer for specifying the vertex position. 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 the primitive size for each primitive. The present invention can be used for an extended primitive that can gather all necessary information by the size of the primitive, the vertex sequence that can form the primitive, and the specific value of the vertex sequence.
[0042] 本発明において, 固定されたサイズの拡張されたプリミティブの例は, 隣 接を含む三角形 "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 consists of a triangle containing three triangles adjacent to each side of the triangle. Can be formed by studying in a continuous mesh)
[0043] 図 4 (A) を参照して, 上記を説明する。 図 4 (A) は, 三角メッシュの 概念図である。 図 4 (A) に示されるように, 三角メッシュ上にフラグメン ト 1 03が描画される。 [0043] The above is described with reference to Fig. 4 (A). Figure 4 (A) is a conceptual diagram of a triangular mesh. As shown in Fig. 4 (A), fragment 103 is drawn on the triangular mesh.
頂点 {ν,, ν2, ν3}によって形成される三角形に対しては, TWNプリミティブ は, その三角形と, その三角形 {ν,, ν2, ν3}の各辺 {v2, vj, {ν,, ν3}, {ν3, ν2}に 隣接する三角形 {ν。, ν,, ν2} , {ν,, ν5, ν3} , Vertices {ν ,, ν 2, ν 3 } with respect to the triangle formed by the TWN primitive, and the triangle, the triangle {ν ,, ν 2, ν 3 } sides {v 2, vj of, The triangle {ν, adjacent to {ν ,, ν 3 }, {ν 3 , ν 2 }. , Ν ,, ν 2 }, {ν ,, ν 5 , ν 3 },
2, ν3, ν4}によって形成される。 本明細書において, 三角形 {ν,, ν2, ν3}は, " 中心" 三角形とも呼ばれる。 このように TWNプリミティブを表現するため に, 全部で 6個の頂点列が必要とされる。 TWNプリミティブにおける頂点決 定, すなわち, 頂点位置間のマッビング方法とプリミティブ内での各頂点と 他の頂点との接続関係の好ましい例は, たとえば以下のものがあげられる。 頂点列 {ν。, ν,, ν2}によって形成される三角形に隣接する三角形について, 辺 {ν0 , V,} , {ν,, ν2} , {ν2, VQ}に対応する頂点を ν01, 12, V20 け:丁:し, V01, V,2, ν20は それぞれ中心三角形に隣接する三角形であって, 上記の辺を共有する三角形 の {ν0, ν,, v2}以外の頂点) としたときに, TWNプリミティブを表現するため の頂点列は, {ν0, ν,, v01, v2, v20, v12}である。 図 4 (A) に示される三角形 {v2, v, , ν3}については, TWNプリミティブを表現するための頂点が {ν2, ν,, Vo, v3, v4, v5}となる。 すなわち, V」を, 属性インデックス j を有する頂点位置とすると , 中心三角形 {v2, V, , v3}の T W Nプリミティブの特定ィンデックスの頂点位置 列は, {2, 1,0,3,4,5}となる。 もしも, もともとのメッシュの端部が開いてい れば, それらに隣接した少なくとも一つの三角形を隣接させることができ, もしもメッシュ中の全てのエッジが 2つ以下の隣接する三角形しか有しない 場合は, そのような全ての三角形に対して更に TWNプリミティブを生成で きる。 さらに, 一つしか隣接する三角形を有しない辺に対しては, 人工的に 欠けた三角形を補うことも可能である。 その一つの方法は, 人工的に作られ たオープンな辺の頂点を二度用いることによって, 縮退された (degenerate ) 三角形を作ることである。 上記と別の方法は, 開端 (open edge) とは反対 位置にある中心三角形の頂点を用いる方法であり, その場合は三角形は縮退 せずに中心三角形と (coincide) する。 formed by {ν 2 , ν 3 , ν 4 }. In this specification, the triangle {ν ,, ν 2 , ν 3 } is also called the “center” triangle. In this way, a total of 6 vertex sequences are required to represent the TWN primitive. Preferred examples of vertex determination in TWN primitives, that is, the mapping method between vertex positions and the connection relationship between each vertex in the primitive and other vertices are as follows. Vertex sequence {ν. For triangles adjacent to the triangle formed by the ν ,, ν 2}, sides {ν 0, V,}, {ν ,, ν 2}, {ν 2, V Q} vertices corresponding to [nu 01, 12, V20 K: Ding: Shi, V 01 , V, 2, ν 20 Each of the triangles adjacent to the central triangle, and the triangles other than (ν 0 , ν ,, v 2 } of the triangle sharing the above-mentioned side), the vertex sequence for expressing the TWN primitive is { ν 0 , ν,, v 01 , v 2 , v 20 , v 12 }. For the triangle {v 2 , v,, ν 3 } shown in Fig. 4 (A), the vertices for expressing the TWN primitive are {ν 2 , ν ,, Vo, v 3 , v 4 , v 5 }. Become. That is, if “V” is a vertex position having the attribute index j, the vertex position sequence of the specific index of the TWN primitive of the central triangle {v 2 , V,, v 3 } is {2, 1,0,3,4 , 5}. If the edges of the original mesh are open, 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. In addition, for a side that has only one adjacent triangle, an artificially missing triangle can be compensated. One way is to make a degenerate triangle by using the artificially created open edge vertices twice. Another method is to use the vertex of the central triangle at the opposite position to the open edge. In this case, the triangle does not degenerate and becomes a central triangle.
[0044] 固定サイズの拡張されたプリミティブ列は, プリミティブ列におけるそれ ぞれのプリミティブの頂点列を連結 (concatenate) することにより形成する ことができる。 頂点位置の属性についてのインデックスバッファは, 連結さ れた列における頂点の頂点位置属性のィンテックス列として表現することが できる。 TWNプリミティブについては, 3つの好ましいプリミティブ列の 表現方法がある。 すなわち, 別々の TWNプリミティブ列として表現するも の, TWNストリップとして表現するもの, 及び TWNファンとして表現す るものである。 それらは, 別々の中心三角形列に基づくもの, 中心三角形の ストリップに基づくもの, 及び中心三角形のファンに基づくものである。  [0044] A fixed-size extended primitive sequence can be formed by concatenating the vertex sequence 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 the vertices in the concatenated sequence. For TWN primitives, there are three preferred methods for representing primitive sequences. In other words, 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.
[0045] セパレートされた TWNプリミティブ列は, それぞれの三角形に対する T WNプリミティブを中心三角形とし, それぞれの生成された TWNプリミテ イブに対する頂点を (concatenate) することにより, 設計できる。 図 4 (A ) では, 中心三角形 {v­2, ν,, v3}と {v­3, ν,, v5}からなる列により形成さ れる TWNプリミティブのフラグメント (fragment) を図示している。 対応する 頂点は {ν2, ν,, v0, v3, v4, v5, v3, v,, v2, v5, v6, v7}であり, 対応する頂点位置の属性 に対応するインデックス列は図 4 (G)に示されるように {2, 1,0,3,4,5,3, 1,2,5 ,6,7}·である。 [0045] Separated TWN primitive sequences can be designed by concatenate the vertices for each generated TWN primitive with the TWN primitive for each triangle as the central triangle. Fig. 4 (A In), the central triangle {v ­ 2, ν ,, v 3} and {v ­ 3, ν ,, v 5} depicts a fragment of TWN primitives formed by rows consisting of (fragment). The corresponding vertices are {ν 2 , ν,, v 0 , v 3 , v 4 , v 5 , v 3 , v,, v 2 , v 5 , v 6 , v 7 }, and the corresponding vertex position attributes The index sequence corresponding to is {2, 1,0,3,4,5,3, 1,2,5,6,7} · as shown in FIG.
[0046] TWNストリップは, 三角形ストリップにより構成することができる。 三角形 ストリップにおいて, 2つの連続する三角形が 2つの頂点を共有するという 事実により, それぞれのプリミティブにつき 2つの頂点のみによりストリッ プにおける第 2の又は次の TWNプリミティブを定義付けることができる。 本発 明において, 頂点列 {ν0, ν,, v2, v3, v4, v5, -"nこよって形成される三角形ストリッ プ, {v­0v,, v0v2, v,v3, v2v4, v3v5,■■■}辺に沿ってその辺に対して反対側にある 三角形ストリップに隣接する三角形に隣接する三角形の頂点列 {v01, v02, v13, v24, v35, "'nこよって形成される三角形ストリップに対して, 懼ストリップにより 定義される頂点列は以下のようになる。 すなわち, {ν0, V,, v01, v2, v02, v3, v13, v4, v24, v5, v35,■■■}であって, 最初の 6個の頂点列は, 最初の TWNプリミティブを 定義するものであり, 次の 2つずつの頂点は, それに続く TWNプリミティ ブをあらわすものである。 図 4 (B) では, 2つの三角形 {v­2, ν,, v3}と {v ­3, ν,, v5}により構成される三角形ストリップ 1 04によるメッシュフラグ メントが表現されている。 このストリップは, 4つの長さの頂点列 {v­2, V 1,v3,v5}により形成することができる。 図 4 (B) の例では, TWNストリツ プを定義する 2つの TWNプリミティブは, {ν2, ν,, v0, v3, v4, v5, v7, v6}となり, それに対応する頂点位置の特定に対するインデックス列は, 図 4 (D) に示さ れるように {2, 1,0,3,4,5,7,6}となる。 [0046] 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, the vertex sequence {ν 0 , ν ,, v 2 , v 3 , v 4 , v 5 ,-"n is a triangular strip formed by this, {v ­ 0 v ,, v 0 v 2 , v, v 3 , v 2 v 4 , v 3 v 5 , ■■■} Vertical row of triangles adjacent to the triangle adjacent to the triangle strip on the opposite side along the side {v 01 , v 02 , v 13 , v 24 , v 35 , "'n For a triangle strip formed by this, the vertex sequence defined by the 懼 strip is That is, {ν 0 , V ,, v 01 , v 2 , v 02 , v 3 , v 13 , v 4 , v 24 , v 5 , v 35 , ■■■}, the first 6 vertices The sequence defines the first TWN primitive, and the next two vertices represent the TWN primitive that follows it. In Fig. 4 (B), a mesh fragment is represented by a triangle strip 104 consisting of two triangles {v ­ 2 , ν, v 3 } and {v ­ 3 , ν, v 5 }. Yes. This strip can be formed by four length vertex sequences {v ­ 2 , V 1, v 3 , v 5 }. In the example of Fig. 4 (B), the two TWN primitives that define the TWN strip are {ν 2 , ν ,, v 0 , v 3 , v 4 , v 5 , v 7 , v 6 }, and correspond to them. As shown in Fig. 4 (D), the index sequence for specifying the vertex position is {2, 1,0,3,4,5,7,6}.
[0047] TWNストリップと同様にして, TWNファンも三角形ファンから形成す ることができる。 TWNファンによっても, 相当する中心となる三角形ファ ン列の T W Nプリミティブ列を表現するために必要とされるインデックスバ ッファの数を軽減することができる。 本発明において, 三角形ファンは, 頂 点列 {ν0, ν,, ν2, ν3, ν4, ν5,■■■}と, {v&shy^v', ν,ν2, ν2ν3, ν3ν4, ν4ν5,■■■}辺に沿って, その辺の反対側の頂点における三角形ファンにおける三角形に隣接する三角 形の頂点 {v01, v12, v23, v34, v45,■■■}により形成することができる。 TWNファンを 定義づける頂点列は, {V0, V,, Voi, V2, V,2, V3, V23, V4, V34, V5, V45, ■■■}で表され, 最初 の 6つの頂点は最初の TWNプリミティブ を意味し, 続く 2つごとの頂点は , 連続する TWNプリミティブを定義するものである。 ここで, 最初の 6つ の頂点列が TWNストリップの場合と異なることに留意されたい。 図 5 (A ) は, 三角形ファン 1 05を構成する 2つの三角形 {v­2, v,,v3}と {v­2 , v3, v4}とによるメッシュフラグメントを示す。 このファンは, 長さが 4の頂 点列 {v&shy^^v^vjにより表現することができる。 図 5 (A) に示される 本発明においては, 2つの TWNプリミティブによる TWNファンの頂点列 は {ν2, ν,, Vo, v3, v5, v4, v6, v7}となり , それに対応する頂点位置の属性に対するィ ンデックス列は図 5 (G)に示されるように {2, 1,0,3,5,4, 6,7}となる。 [0047] Similar to TWN strips, TWN fans can also be formed from triangular fans. A TWN fan can also reduce the number of index buffers required to represent the TWN primitive sequence of the triangle fan sequence that is the corresponding center. In the present invention, the triangular fan has a vertex sequence {ν 0 , ν ,, ν 2 , ν 3 , ν 4 , ν 5 , ■■■}, and {v & shy ^ v ', ν, ν 2 , ν 2 ν 3 , ν 3 ν 4 , ν 4 ν 5 , It can be formed by triangular vertices {v 01 , v 12 , v 23 , v 34 , v 45 , ■■■} adjacent to the triangle in the triangular fan at the opposite vertex of the side. Vertex string characterizing define TWN fan is represented by {V 0, V ,, Voi, V 2, V, 2, V 3, V 23, V 4, V 34, V 5, V 45, ■■■} , The first six vertices mean the first TWN primitive, and every second vertice defines a consecutive TWN primitive. Note that the first six vertices are different from the TWN strip. FIG. 5 (A), two triangles constituting the triangle fan 1 05 shows a mesh fragments by the;; {2, v 3, v 4 v & shy} {v & shy 2, v ,, v 3} and. This fan can be expressed by a vertex sequence {v & shy ^^ v ^ vj of length 4. In the present invention shown in FIG. 5 (A), the vertex sequence of the TWN fan by two TWN primitives is {ν 2 , ν ,, Vo, v 3 , v 5 , v 4 , v 6 , v 7 }, The index sequence for the attribute of the corresponding vertex position is {2, 1,0,3,5,4, 6,7} as shown in Fig. 5 (G).
可変サイズの拡張されたプリミティブの好ましい例は, カ トマル一クラ一 ク (Gatmul卜 G lark) の細分割パッチプリミティブ (GGSP) を含む。 本発明に おいて, CCS Pは, それぞれのポリゴンにおいて, 4つと異なる隣接する エッジと異なる番号のひとつ以上の頂点を有する四角形メッシュにより表現 されるポリゴンから構成される。 Gatmul卜 Glarkの再分割による四角形メッシ ュという観点から, 4つと異なる隣接するエッジと異なる番号のひとつ以上 の頂点 (a vertex with a number of adjacent edges being different from four) は, イレギュラーな頂点とよばれる。 また, ある頂点に隣接するエツ ジの数は, 頂点価 (a valence of vertex) とよばれる。 つまり, 頂点価が 4 以外の場合は, Gatmul卜 Glarkの再分割の観点からするとイレギュラーな頂点 とみなされる。 GGSPプリミティブは, 四角形における各頂点と, それら四角 形の各頂点を共有するポリゴンにおける隣接する全ての頂点とによって形成 される。 GGSPプリミティブにおいて, その中心に位置する四角形を中心四角 形とよぶ。 もしもイレギュラー頂点の頂点値が存在する場合, 中心四角形は , メッシュにおける他の四角形と異なり, 中心四角形の周囲の四角形や, GGS Pプリミティブにおける頂点の数も変化する。 GGSPプリミティブでは, ィレギ ユラ一な頂点価に関連する頂点の数は, Vを GGSPプリミティブにおける頂点の 数とし, Vをイレギュラーな頂点の頂点価とすると, N=2*V+8のように表すこ とができる。 なお, この場合において Vに所定数を乗算することをスケ一リン グ, 2をスケールとよび, 8など所定の数を加えることをバイアスとよぶ。 サイズが知られているので, CCS Pプリミティブは, 連続する頂点列に おける頂点間にマッピングされる頂点列 (sequence) によって表現すること ができ, それにより CCS Pプリミティブの位置が決定される。 本発明の好 ましい態様では, 頂点列 (sequence) とマッピングは以下のように形成され る。 四角形のメッシュについては, CCS Pプリミティブは, 頂点 {νο,ν,, v2, v3 }を有しており, それらは四角形の辺 (VoV,, v,v2, v2v3, Preferred examples of variable-size extended primitives include the Gatmul 卜 Glark subdivision patch primitive (GGSP). In the present invention, CCS P is composed of polygons represented by a quadrilateral mesh having one or more vertices with different edges and different numbers in each polygon. From the viewpoint of a quadrilateral mesh by Gatmul 卜 Glark subdivision, one vertex with a number of adjacent edges being different from four is called an irregular vertex. It is released. The number of edges adjacent to a vertex is called a valence of vertex. In other words, vertex vertices other than 4 are considered irregular vertices from the viewpoint of Gatmul 卜 Glark subdivision. A GGSP primitive is formed by vertices in a rectangle and all adjacent vertices in a polygon that shares the vertices of the rectangle. In the GGSP primitive, the rectangle located at the center is called the center square. If there are vertex values for irregular vertices, the center rectangle differs from other rectangles in the mesh, and the number of vertices in the GGS P primitive also change around the center rectangle. In the GGSP primitive, The number of vertices related to the irregular vertex value can be expressed as N = 2 * V + 8, where V is the number of vertices in the GGSP primitive and V is the vertex value of the irregular vertex. . 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. Since the size is known, a CCS P primitive can be represented by a sequence of vertices that are mapped between vertices in a sequence of vertices, thereby determining the position of the CCS P primitive. In a preferred embodiment of the invention, the vertex sequence and mapping are formed as follows. For quadrilateral meshes, the CCS P primitive has vertices {νο, ν ,, v 2 , v 3 }, which are square edges (VoV ,, v, v 2 , v 2 v 3 ,
v3v0) をそれぞれ形成する。 なお, イレギュラーな頂点がもしあれば V。である 。 CCS Pプリミティブを記述する頂点列は以下のように形成される。 まずv 3 v 0 ) respectively. V if there are irregular vertices. Is. Vertex sequences describing CCS P primitives are formed as follows: First
, 四角形の頂点は, 番号順 {Vo.V,, V2, V3}に並べられる。 その後, 例えば, V0と V, The vertices of the rectangle are arranged in numerical order {Vo.V ,, V 2 , V 3 }. Then, for example, V 0 and V
,とのメッシュを構成する四角形に属する, v0を共有する隣接する辺の頂点が 選択される。 六番目は, V,と同じ辺上にあり, v0と同じ四角形状の頂点であるThe vertices of adjacent sides that share v 0 and belong to the quadrangle that makes up the mesh are selected. The sixth is on the same side as V, and is the same rectangular vertex as v 0
。 残りの隣接する頂点は, 以下の規則に従って選択される。 隣接するある頂 点が選択された後に, 以前に選択された辺を共有するように次の頂点が選択 される。 図 6 (A) に示されるように, 制御メッシュ (1 06) のフラグメ ントは, 2つの隣接する CCS Pプリミティブ {v9,v5, v6, v10}及び {v9,v10, v16, v15 }を中心四角形として記述される。 頂点 v9は, 頂点価が 5のイレギュラーな頂 点である。 最初のプリミティブ及び第 2のプリミティブを記述する頂点列は , それぞれ {ν9, ν5, ν6, ν,ο, ν8, ν4, ν0, ν,, ν2, ν3, ν7, ν,,, ν17, ν16, ν15, ν14, ν13, ν12}と {ν9, ν10 . 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), the fragment of the control mesh (106) consists of two adjacent CCS P primitives {v 9 , v 5 , v 6 , v 10 } and {v 9 , v 10 , v 16 , v 15 } is described as the center rectangle. Vertex v 9 is an irregular vertex with a vertex value of 5. The vertex sequences describing the first and second primitive are {ν 9 , ν 5 , ν 6 , ν, ο, ν 8 , ν 4 , ν 0 , ν, ν 2 , ν 3 , ν 7 > , ν ,,, ν 17, ν 16 , ν 15, ν 14, ν 13, ν 12} and {ν 9, ν 10
, ν16, ν15, V5, V6, V7, V„, ν17, V21, V20, ν19, ν18, ν14, ν13, ν12, V8, V4}である。 本発明におい て, CCS Ρプリミティブの頂点位置の属性 (attribute) を示すインデック スは, 頂点位置の属性を示すィンデックスを含むィンデックスバッファにお いて CCS Pプリミティブとともに前もって決定されている。 すなわち, 図 6 (A) に示される 2つの CCS Pプリミティブにおける頂点郡の内容とし て, 図 6 (C) に示されるように, インデックスバッファ 1 200 (または頂 点バッファ 1 1 0 0 )は {18, 9, 5, 6, 10, 8, 4, 0, 1 , 2, 3, 7, 1 1 , 1 7, 1 6, 15, 14, 13, 12, 18, 9, 10, 1 6, 15, 5, 6, 7, 1 1 , 1 7, 21 , 20, 1 9, 18, 14, 13, 12, 8, 4}を記憶する。 , ν 16 , ν 15 , V 5 , V 6 , V 7 , V „, ν 17 , V 21 , V 20 , ν 19 , ν 18 , ν 14 , ν 13 , ν 12 , V 8 , V 4 } In the present invention, the index indicating the CCS 頂点 primitive vertex position attribute is determined in advance with the CCS P primitive in the index buffer containing the index indicating the vertex position attribute. The contents of the vertex groups in the two CCS P primitives shown in Fig. 6 (A) are the index buffers 1 200 (or the top) as shown in Fig. 6 (C). Point buffer 1 1 0 0) is (18, 9, 5, 6, 10, 8, 4, 0, 1, 2, 3, 7, 1 1, 1 7, 1 6, 15, 14, 13, 12, 18, 9, 10, 1 6, 15, 5, 6, 7, 1 1, 1 7, 21, 20, 1 9, 18, 14, 13, 12, 8, 4}
[0050] 残りの頂点属性についてのインデックスバッファ列を特定する工程は, 頂 点の全ての属性を参照するために同じインデックスが用いられないように別 のインデックスが要求されるように頂点属性が特定される工程である。 この 場合において, 頂点は属性インデックスの組によって形成され, そのインデ ックスは, 頂点の異なる属性に関連するインデックスである。 上記が当ては まらない場合, 全ての頂点属性は, 頂点位置属性に相当する一つのインデッ クスによって特定されうる。 そうでなければ, 全ての頂点属性を特定するた めにインデックスバッファの組は特定されなければならない。 頂点位置属性 に関するインデックスバッファはプリミティブサイズを含むので, 上述した ように可変なサイズの拡張されたプリミティブを扱う場合は特別な扱いがな される。 他のインデックスバッファは, プリミティブサイズに関する情報を 持たず, 可変サイズのプリミティブを表現する場合に頂点位置属性のものと 比べて小さい長さとすることができる。 本発明では, ある頂点に対する頂点 属性のインデックスは以下のように決められる。 固定サイズの拡張された属 性の場合, i番目の位置のインデックスバッファ価は Nを頂点列の長さとして , iは 0以上 N未満であるインデックスバッファ中の i番目頂点のインデック ス列に由来するすべての属性の価となる。 サイズが可変な拡張されたプリミ ティブの場合は, 状況がより複雑となる。 可変サイズの拡張されたプリミテ イブ列を表現するための頂点列を連結することにより形成される頂点列につ いては, i番目の頂点のインデックス列は, 頂点位置属性を示すインデック スバッファ中の( i + N; _ 1 )番目の価と他のィンデックスバッファの i番目 の価とに基づいて形成され, ここで, N iはプリミティブ数の初期値を 1 とし て, i番目の頂点が含むプリミティブの数である。  [0050] The process of identifying the index buffer sequence for the remaining vertex attributes is to identify the vertex attribute so that a different index is required so that the same index is not used to refer to all attributes of the vertex. Process. In this case, the vertices are formed by a set of attribute indexes, which are the indices associated with the different attributes of the vertices. If the above is not true, all vertex attributes can be specified 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 for the vertex position attribute includes the primitive size, special handling is used when handling extended primitives of variable size as described above. Other index buffers do not have information about the primitive size, and can be of a length smaller than that of the vertex position attribute when representing variable-size primitives. In the present invention, the index of the vertex attribute for a vertex is determined as follows. For extended attributes of fixed size, the index buffer value at the i-th position is 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. This is the value of all the attributes you want. In the case of extended primitives of variable size, the situation becomes more complex. 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; _ 1) is formed based on the i th value of the other index buffer and the i th vertex, where i is the initial value of the number of primitives. The number of primitives.
[0051 ] 本発明の第二の側面は, 頂点キャッシュ (頂点バッファ) を用いて, 固定 サイズ又は可変サイズの拡張されたプリミティブを高速に処理するための方 法であって, 頂点位置属性のインデックスバッファから, 可変サイズのプリ ミティブのプリミティブサイズをフエッチングし, 前記プリミティブサイズ を特定の回路か又は拡張されたプリミティブァセンブリを処理できるように プログラマブルにされた演算装置であるプリミティブエンジンに配送するェ 程と, 頂点キャッシュから頂点データを得られない場合は, 頂点キャッシュ における拡張されたプリミティブの頂点についての頂点データをフェッチし , 変換して, 蓄積する工程と, 拡張されたプリミティブのアセンブリと演算 処理のために, 変換された頂点をプリミティブエンジンへ配送する工程と, プリミティブエンジンにおいて, 拡張されたプリミティブをアセンブリし, 演算処理する工程と, プリミティブエンジンにおける拡張されたプリミティ ブの演算処理により得られる固定サイズの単純プリミティブをプリミティブ ラスタライズのためのパイプラインを経由して固定サイズのプリミティブ集 積回路へ配送する工程と, を含む。 [0051] The 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). Variable size pre from buffer Etching the primitive's primitive size and delivering the primitive size to a primitive circuit, a processor that is programmable to process a specific circuit or extended primitive assembly; If the data is not available, the vertex data for the extended primitive vertices in the vertex cache is fetched, converted, stored, and converted for assembly and operation of the extended primitive. Delivering vertices to the primitive engine, assembling and processing extended primitives in the primitive engine, and simple fixed-size simple processes obtained by the extended primitive arithmetic processing in the primitive engine. Delivering the limit via a primitive rasterization pipeline to a fixed-size primitive integration circuit.
本方法は, 固定されたサイズ又は可変なサイズの拡張されたプリミティブ のプロセッシングを実装するための拡張された 3次元コンピュータグラフィ ックスの高速/、一ドウエアにおける頂点キヤッシュ装置を拡張することに基 づくものである。 本明細書において, 頂点キャッシュ装置 (vertex cache fa c i l i ty) は, インデックスや頂点バッファからの価を用いて特定された簡単 なプリミティブの列を高速にプロセッシングすることを達成するためのシス テムを意味する。 本明細書において頂点キャッシュ装置の機能は, インデッ クス/頂点バッファからの価を用いて特定された頂点列を横断 (掃引) し, プロセッシングを行う頂点列における対応する頂点の属性列を決定する。 頂 点キャッシュ記憶部 (ストア) としての, 頂点キャッシュ装置における記憶 部における入手可能な属性と同じ列の頂点かどうか決める。 インデックスバ ッファからサンプリングされた頂点属性ィンデックスに従って頂点/くッファ から頂点属性値をサンプリングするか, もしも頂点が頂点キヤッシュになく , 頂点キャッシュ記憶部に記憶されている場合は, 頂点バッファを順次生成 しても良い。 頂点変換についての属性値に基づいてアセンブルされた頂点を 送り, そして付加的に, 変形結果を頂点キャッシュの記憶部に記憶する。 変 換された頂点を, インデックス/頂点バッファにより表現される単純プリミ ティブ列を表現するために, 固定サイズプリミティブ集積回路装置へ配送す る。 頂点変換を加速するか, 又は, 頂点データが頂点キャッシュに存在する 場合, 頂点バッファをサンプリングする必要をなくし, 頂点を再度変換する 必要をなくするために, 変換された頂点を固定サイズプリミティブ集積回路 装置へ配送してもよい。 実装した態様に応じて付加的な装置を適宜具備して も良い。 固定されたプリミティブアセンブル装置 (固定されたプリミティブ アセンブル装置) との用語は, 頂点列から単純なプリミティブを集めて再構 築することを実現するシステムを意味する。 本明細書において, プリミティ ブを集めること (assemb l i ng of pr i m i t i ve) は, プリミティブを再構築する ために必要な全ての情報を集めること, 例えば, 更に処理を行うためにプリ ミティブにおける全ての頂点についての情報を蓄積することを意味する。 例 えば, 別々の三角形列の場合は, 各々の三角形に存在する 3つの頂点列が必 要な情報に相当する。 同様にして, 別々の線については, その線を構成する 2つの連続する頂点がそれに相当する。 三角形ストリップの場合は, 最初の 三角形の 3つの頂点と, 隣接する三角形の頂点列がそれに相当する。 固定さ れたプリミティブアセンブル装置は, 演算処理され, 配送されるプリミティ ブのタイプに応じた頂点列を, 単純プリミティブを演算処理するのみのラス タラィズパイプラインに送れるよう単純プリミティブの状態に戻す。 The method is based on an extended 3D computer graphics high speed / extend vertex cache device in one piece of software to implement fixed size or variable size extended primitive processing. It is. In this specification, a vertex cache facility means a system for achieving high-speed processing of a simple sequence of primitives specified using a value from an index or vertex buffer. To do. 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. Determine whether the vertex is in the same column as the available attribute in the storage unit in the vertex cache device as the top cache storage unit (store). Sample vertex attribute values from vertices / buffers according to the vertex attribute index sampled from the index buffer, or if the vertices are not in the vertex cache and are stored in the vertex cache storage, a vertex buffer is generated sequentially. May be. The assembled vertex is sent based on the attribute value for vertex transformation, and additionally the transformation result is stored in the vertex cache storage. Strange The converted vertices are delivered to a fixed-size primitive integrated circuit device to represent a simple primitive sequence represented by an index / vertex buffer. If the vertex transformation is accelerated, or if the vertex data is in the vertex cache, the transformed vertex is fixed-size primitive integrated circuit to eliminate the need to sample the vertex buffer and eliminate the need to transform the vertex 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) means a system that collects and reconstructs simple primitives from a sequence of vertices. In this specification, collecting primitives means gathering all the information needed to reconstruct a primitive, for example, all of the primitives for further processing. It means that information about vertices is accumulated. For example, in the case of separate triangle rows, the three vertex rows that exist in each triangle correspond to the necessary information. Similarly, for separate lines, it corresponds to two consecutive vertices that make up the line. In the case of a triangle strip, it corresponds to the three vertices of the first triangle and the vertices of adjacent triangles. The fixed primitive assembler is processed and returns the sequence of vertices according to the type of primitive delivered to the state of the simple primitive so that it can be sent to a raster pipeline that only processes simple primitives. .
[0053] 本発明の第 2の側面にかかる方法は, 様々な面で頂点キャッシュ装置を拡 張する。 第一に, 本発明の第 2の側面によれば, 可変サイズの拡張されたプ リミティブをフェッチするために新たなロジック回路が必要となる。 次に, 頂点キャッシュ装置と固定されたプリミティブァセンブル装置との間で機能 するプリミティブエンジン (拡張されたプリミティブに関する情報をアツセ ンブルし, 処理するための別個の装置) との情報交換をもたらす。  [0053] 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 a variable-size extended primitive. It then exchanges information with the primitive engine (a separate device for assembling and processing information about extended primitives) that functions between the vertex cache unit and the fixed primitive assembly unit.
[0054] その方法は, 頂点位置属性についてインデックスバッファからプリミティ ブのサイズをフェッチする工程を含むので, 本発明の第 1の側面による方法 を用いて表現された可変サイズの拡張されたプリミティブの頂点列をプロセ ッシングするために用いることができる。 頂点キャッシュにおける拡張され たプリミティブの頂点データをフェッチし, 移送し, そして蓄積する工程に より, 頂点の属性値から頂点をアッセンブルすることができ, 頂点を移送す ることができ, そして, 同じ頂点を後に参照する場合は迅速に取戻しが行わ れ, 頂点キャッシュストアに頂点を記憶することができる。 この工程は, 拡 張されたプリミティブ列ゃ単純プリミティブ列がプロセッシングされるか否 かに拘わらず同様である。 この方法は, 移送された頂点をプリミティブェン ジンに配送する工程, プリミティブエンジンにおいて拡張されたプリミティ ブのプロセッシングを行う工程, 及びプロセッシングされた結果を単純プリ ミティブ列の形で残りのプロセッシングパイプラインに配送する工程をも含 む。 最初の工程について検討すると, その工程により拡張されたプリミティ ブをアッセンブルするための必要な情報や, プリミティブエンジンを駆動す るプロセッシングアルゴリズムが供給される、 そして, プリミティブの干渉 が無かつたかのような場合におけると同様のプロセッシングを行うために出 力結果が配送される。 組み合わせることで, 以下のようなメリツ卜がある。 頂点キャッシュにおいて頂点データをフェッチし, 配送し, そして蓄積する 工程は, 単純プリミティブを処理するのであっても, 拡張されたプリミティ ブ列を処理するのであっても実質的には同様であるので, この方法は, イン デックスバッファからフェッチされた属性ィンデックスに関連した属性から 拡張されたプリミティブの頂点をァセンブルするための頂点/くッファへのラ ンダムなアクセスを特に特別な方法を用いずに実現することができる。 先に 説明したと同じ理由で, 頂点データをフェッチし, 配送し, そして蓄積する 工程に用いられるほとんどの論理回路は, 単純プリミティブの演算処理と拡 張されたプリミティブの演算処理とで共用することができ, 拡張されたプリ ミティブの処理を実現するために実装される論理回路のハードウ Iアコスト を軽減することができる。 頂点キャッシュを用いることは, プリミティブェ ンジンの頂点データを拡張されたプリミティブのアセンブル及び演算処理ァ ルゴリズムへと配送する際の待ち時間を軽減することになる。 これにより, 拡張されたプリミティブの演算処理に関するパフォーマンスが向上すること となる。 インデックスバッファから可変サイズのプリミティブのプリミティ ブサイズをフェツチングする工程とそれをプリミティブェンジンへ配送する 工程と, 拡張されたプリミティブをアセンブルし, 演算処理するために変換 された頂点をプリミティブエンジンへ配送する工程は, プリミティブェンジ ン上で, 本発明の第一の側面により導入された方法を用いて拡張されたプリ ミティブを演算処理するために必要な全ての情報を配送することを可能とす る。 プリミティブエンジンによって演算処理された拡張されたプリミティブ の出力は, 単純プリミティブのものと同様な方法により達成され, 拡張され たプリミティブの演算処理を行うためにプリミティブ演算処理用のパイプラ インは特に修正する必要がない。 さらに, 単純プリミティブ列の処理は, 単 純プリミティブ列の演算処理による変換された頂点は, 頂点キャッシュから プリミティブエンジンによりバイパスされる残りの演算処理パイプラインへ と直接配送される。 この方法は, 単純プリミティブ列を演算処理することに 比べて追加となるような付加を何ら要求しない。 [0054] Since the method includes fetching the size of the primitive from the index buffer for the vertex position attribute, the vertex of the variable-size extended primitive expressed using the method according to the first aspect of the present invention is used. Process column Can be used for sshing. 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 When referring to, 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. This method involves delivering the transferred vertices to the primitive engine, processing the primitives extended in the primitive engine, and processing the processed results in the form of a simple primitive sequence for the rest of the processing pipeline. This includes the process of delivering to the factory. Considering the first process, the necessary information for assembling the primitives extended by the process, the processing algorithm that drives the primitive engine, and the presence of primitive interference are provided. The output result is delivered for the same processing as in. In combination, there are the following Merits. The process of fetching, distributing and storing vertex data in the vertex cache is substantially the same whether processing simple primitives or extended primitive sequences. This method allows random access to vertices / buffers to assemble vertices of extended primitives from attributes related to attribute indexes fetched from the index buffer without using any special method. be able to. For the same reason as described above, most of the logic circuits used in the process of fetching, distributing, and storing vertex data must be shared between simple primitive processing and extended primitive processing. Therefore, 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 the extended primitive assembly and processing algorithm. As a result, The performance related to the operation processing of the extended primitive will be improved. The steps of fetching the primitive size of a variable-size primitive from the index buffer and delivering it to the primitive engine, assembling the extended primitive, and delivering the converted vertex to the primitive engine for processing Makes it possible to deliver on the primitive engine all the information necessary to compute the primitives extended 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 processing needs to be particularly modified to perform the processing of extended primitives. There is no. Furthermore, in the processing of simple primitive sequences, the vertices converted by simple primitive sequence processing are directly delivered from the vertex cache to the rest of the processing pipeline bypassed by the primitive engine. This method does not require any additional additions compared to processing simple primitive sequences.
[0055] 頂点位置属性のインデックスバッファから, 可変サイズのプリミティブの プリミティブサイズをフェッチングし, 前記プリミティブサイズを特定の回 路か又は拡張されたプリミティブアセンブリを処理できるようにプログラマ ブルにされた演算装置であるプリミティブエンジンに配送する工程は, 以下 のような内容である。 すなわち, 頂点位置属性のインデックスバッファから プリミティブサイズを取り戻す工程である。 本発明の第 1の側面と関連して 求められた拡張されたプリミティブを表現するために可変サイズの拡張され たプリミティブをそこに位置させるものである。 プリミティブサイズは, 拡 張されたプリミティブの演算処理において必要とされるかもしれないので, プリミティブエンジンへと配送される。  [0055] The primitive size of a variable-size primitive is fetched from the index buffer of the vertex position attribute, and the primitive size is programmed by an arithmetic unit that can be processed in a specific circuit or an extended primitive assembly. The process of delivering to a primitive engine is as follows. In other words, it is the process 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 positioned there. The primitive size is delivered to the primitive engine as it may be needed in the processing of the extended primitive.
[0056] 本発明においては, プリミティブサイズに関する情報が, 頂点位置属性の インデックスバッファにおけるプリミティブの頂点に関する情報よりも先行 する。 プリミティブサイズのフェッチングが終わった結果として, 後者がプ リミティブに関するほかのどの情報にも先駆けてプリミティブエンジンへと 配送される。 プリミティブサイズを知ることは, 次の可変サイズのプリミテ ィブの始まりに関する頂点位置属性のィンデックスアレイのオフセットを決 めることができ, それにより, 前記インデックスは次のプリミティブのサイ ズ情報を含むこととなる。 プリミティブサイズは, 可変サイズのプリミティ ブに関する演算処理を始めることができる状態とするためにも必要とされる 。 後者は, プリミティブサイズによって制御される全てのプリミティブの頂 点をプリミティブエンジンが得た後に終えられる。 この工程は, 可変サイズ の拡張されたプリミティブを実現する場合にのみ必要とされる工程である。 他のプリミティブの演算処理を行う場合は, この工程を省略できる。 [0056] In the present invention, the information about the primitive size precedes the information about the vertex of the primitive in the index buffer of the vertex position attribute. As a result of the primitive size fetching, the latter Any other information about the limit is delivered to the primitive engine ahead of it. Knowing the primitive size can determine the index array offset of the vertex position attribute with respect to the beginning of the next variable-size primitive, so that the index contains the size information of the next primitive. It will be. 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 top of all primitives controlled by the primitive size. This step is only required when implementing variable size extended primitives. This step can be omitted when computing other primitives.
[0057] 頂点キャッシュから頂点データを得られない場合は, 頂点キャッシュにお ける拡張されたプリミティブの頂点についての頂点データをフェッチし, 変 換して, 蓄積する工程は, 以下のような工程である。 上述したように, 頂点 キャッシュ装置により頂点キャッシュにおいて, フェッチし, 変換して, 蓄 積される工程である。 頂点キャッシュ装置は, 拡張されたプリミティブの演 算処理を行うものではないので, この工程の処理は, 頂点キャッシュ装置に 関して単純プリミティブであっても固定されたサイズの拡張されたプリミテ イブ列の処理であっても変わらない。 それゆえ, 単純プリミティブの演算処 理と, 拡張されたプリミティブの演算処理を行うための回路など装置面でシ エアすることができる。 この工程は, 頂点キャッシュに既に必要な頂点情報 が蓄積されている場合は, 省略することができる。 この工程は, インデック スバッファ /頂点/くッファが拡張されたプリミティブ列を表現する場合でも 行われる。 そのような場合, 頂点属性インデックスがインデックスバッファ からサンプリングされる。 また, 頂点バッファが固定サイズの拡張されたプ リミティブのみを表現する場合, 頂点属性インデックスは, 順番に生成され る。  [0057] If the vertex data cannot be obtained from the vertex cache, the vertex data about the vertex of the extended primitive in the vertex cache is fetched, converted, and stored. is there. As described above, this is the process of fetching, converting, and storing in the vertex cache by the vertex cache device. Since the vertex cache device does not perform the operation processing of the extended primitive, the processing of this process is performed on the extended primitive sequence of a fixed size even if it is a simple primitive with respect to the vertex cache device. Even if it is processing, it does not change. Therefore, it is possible to share on the device side such as a circuit for performing simple primitive calculation processing and extended primitive calculation processing. This step can be omitted if the vertex information is already stored in the vertex cache. This process is performed even when the index buffer / vertex / buffer is used to represent an extended primitive sequence. In such cases, the vertex attribute index is sampled from the index buffer. Also, when the vertex buffer represents only fixed-size extended primitives, the vertex attribute index is generated in order.
[0058] 可変サイズの拡張されたプリミティブを演算処理する場合はプリミティブ サイズをフェッチングする工程では, もし異なる頂点属性の別々のインデッ クスバッファが用いられる場合はプリミティブの頂点データをフェッチング する工程を修正する必要が生じうる。 その理由は, 頂点位置属性のインデッ クスバッファの長さの相違と, 他の全ての属性列を記述するインデックスバ ッファはプリミティブサイズに関する情報を含んでおり, その長さはプリミ ティブ列の数だけ他のィンデックスバッファよりも大きいからである。 ある 頂点について頂点データをフェツチングする工程は, 問題とされている頂点 に対応するそれぞれの頂点属性のィンデックス列を形成する必要がある。 異 なる頂点属性のための分離されたインデックスアレイや, 固定サイズのプリ ミティブ, 又は単純プリミティブ列を演算処理する場合は, このフォーメ一 ションが, 頂点の位置に対応した全てのィンデックスバッファの位置をサン プリングすることにより行われる。 可変サイズの拡張されたプリミティブ列 を演算処理する場合は, このフォーメーションは以下のように修正される。 すなわち, 頂点位置属性以外の全ての属性についてのインデックス値が, 頂 点位置によって決められるインデックスバッファの位置をサンプリングする ことにより得られるが, 頂点位置属性のインデックスが他の属性のものと現 在演算処理を行っている以前のプリミティブの数を足したものにより得られ る位置の頂点位置属性のインデックスバッファにより得られる。 この工程は , 可変サイズの拡張されたプリミティブ列を, インデックスバッファ及び頂 点バッファを用いるもので, 前記本発明の第 1の側面により導入されるもの である。 [0058] When processing an extended primitive of variable size, the process of fetching the primitive size may require separate indexing for different vertex attributes. If a data buffer is used, the process of fetching primitive vertex data may need to be modified. The reason is that the index buffer that describes the length of the index buffer for the vertex position attribute and the index buffer that describes all other attribute columns contain information about the primitive size, and the length is the number of primitive columns. This is because it is larger than other index buffers. The process of fetching vertex data for a vertex needs to form an index sequence 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 is the position of all index buffers corresponding to the vertex positions. This is done by sampling. When processing 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 position of the index buffer determined by the vertex position, but the index of the vertex position attribute is the same as that of the other attributes. Obtained by the index buffer of the vertex position attribute of the position obtained by adding the number of previous primitives being processed. This process uses an index buffer and a vertex buffer for an extended primitive string of variable size, and is introduced according to the first aspect of the present invention.
拡張されたプリミティブのアセンブリと演算処理のために, 変換された頂 点をプリミティブエンジンへ配送する工程は, 入力された頂点情報を拡張さ れたプリミティブのアセンブルと演算処理を行うためのプリミティブェンジ ンによるアルゴリズムへと配送するための工程である。 本発明においては, この工程は, 固定されたプリミティブアセンブル装置の代わりに, 頂点キヤ ッシュからの変換された頂点が配送されるプリミティブエンジンを選択する ことにより達成される。 本明細書においては, "プリミティブエンジン" と いう語は, 以下により, 拡張されたプリミティブの演算処理を実現するため の固定回路又はプログラマブルシステムを意味する。 可変サイズの拡張され たプリミティブの場合は, プリミティブサイズに関する情報を受け取って内 部に記憶するプリミティブの頂点に関する情報を蓄積する。 蓄積されたプリ ミティブに関する情報に基づいてプリミティブを再構築する。 可変サイズの 拡張されたプリミティブを演算処理した結果,固定されたプリミティブァセン ブル装置によってアクセスできる単純プリミティブ列となるようなアルゴリ ズムに従って, プリミティブを再構築する演算処理を行う。 The process of delivering the converted vertex to the primitive engine for the assembly and operation of the extended primitive is the primitive engine for assembling and calculating the input primitive information. It is a process for delivering to the algorithm by. 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” is used to realize the processing of extended primitives by Means a fixed circuit or programmable system. In the case of extended primitives of variable size, information on primitive vertices that are received and stored internally are stored. Reconstruct primitives based on information about accumulated primitives. Arithmetic processing is performed to reconstruct primitives according to an algorithm that results in a simple primitive sequence that can be accessed by a fixed primitive assembly device as a result of arithmetic processing of extended primitives of variable size.
[0060] プリミティブエンジンにおける拡張されたプリミティブの演算処理により 得られる固定サイズの単純プリミティブをプリミティブラスタライズのため のパイプラインを経由して固定サイズのプリミティブ集積回路へ配送するェ 程は, 以下の工程を含む。 固定されたプリミティブアセンブル装置により処 理できる形式とされた拡張されたプリミティブを配送する工程である。 本発 明において, この配送は, 頂点キャッシュ装置により単純プリミティブ列が 処理された場合に変換された頂点が頂点キャッシュから固定されたプリミテ イブアッセンブル装置へと直接配送されるのとまさに同じ方法で配送される 。 従って, 固定されたプリミティブアセンブル装置を修正する必要はなぐ拡 張されたプリミティブの演算処理を行えるようにするためにラスタライゼ一 シヨンパイプラインも修正する必要がない。  [0060] 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. Including. This is the process of delivering extended primitives that are formatted for processing by a fixed primitive assembly device. In the present invention, this delivery is performed in the same way as when the converted vertex is directly delivered from the vertex cache to the fixed assembly device when a simple primitive sequence is processed by the vertex cache device. Is done. Therefore, it is not necessary to modify the rasterization pipeline in order to be able to perform operations on extended primitives, rather than having to modify fixed primitive assembly devices.
[0061 ] プリミティブエンジンにおいて, 拡張されたプリミティブをアセンブルし , 演算処理する工程は, プリミティブエンジンにより所定のアルゴリズムを 実装し, これを用いて拡張されたプリミティブに関する演算処理を行うため の工程である。 プリミティブエンジンによって実現される固定サイズの拡張 されたプリミティブを演算処理するアルゴリズムの好ましい例は, 以下のも のがあげられるが, これに限定されるものではない。 すなわち, メッシュシ ルエツ卜の検出と視覚化を実現するために T W Nプリミティブ列を演算処理 するというものである。 本明細書において, メッシュシルエットは, 一方が 視点方向を向き他方がそうではない方向を向いている 1組の三角形によって 共有されるトライアングル辺の集合を意味する。 メッシュシルエツトを視覚 化するとは, メッシュをレンダリングする際に, シルェットエツジを視覚的 に強調する方法を意味する。 シルエットを検出し, 視覚化するためのアルゴ リズムの概要は以下のとおりである。 TWNプリミティブのための頂点デ一 タを蓄積する。 中心三角形と隣接する三角形の方向を決定する。 この工程は , 部分的に並行して行われても良い。 そして, 中心三角形の三つの辺のそれ ぞれから三角形の方向を比較することでシルエツトエッジを検出する。 検出 されたシルエツトエッジの四角形フラップを生成し, ラスタライズのために それを配送する。 次のプリミティブについて同様の処理を行う。 プリミティ ブサイズが固定されているので, プリミティブサイズをフェッチする工程は 行う必要がない。 [0061] In the primitive engine, the process of assembling and processing the extended primitive is a process for implementing a predetermined algorithm using the primitive engine and performing an arithmetic process on the extended primitive using the algorithm. Preferred examples of algorithms for processing fixed-size extended primitives implemented by the primitive engine include, but are not limited to: In other words, the TWN primitive sequence is processed to realize detection and visualization of mesh series. In this specification, mesh silhouette means a set of triangle edges shared by a set of triangles, one facing the view direction and the other facing the other direction. Visualize mesh silhouette Optimized means a way to visually enhance the silhouette edge when rendering a mesh. The outline of the algorithm for detecting and visualizing silhouettes is as follows. Stores vertex data for TWN primitives. Determine the direction of the triangle adjacent to the central triangle. This process may be performed partially in parallel. Then, the silhouette edge is detected by comparing the direction of the triangle from each of the three sides of the central triangle. Generate a square 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, there is no need to fetch the primitive size.
[0062] TWNストリップや TWNファンの場合は, ストリップ/ファンにおいて 最初とそれ以降のプリミティブは異なる方法で蓄積される。 最初のプリミテ イブは, プリミティブに関する演算処理が始まる前に, 6つの頂点を必要と する。 第 2及びそれ以降のプリミティブは, 既に蓄積された頂点を利用する ことができるので, さらなる 2つの頂点のみを要求する。 分離された TWN プリミティブ列の場合は, 第 2以降のプリミティブであっても, 最初のプリ ミティブと同様に頂点データが蓄積される。  [0062] In the case of a TWN strip or TWN fan, the first and subsequent primitives are stored differently in the strip / fan. The first primitive requires six vertices before the operation on the primitive begins. The second and subsequent primitives can use already stored vertices, so only two more vertices are required. In the case of a separated TWN primitive sequence, vertex data is accumulated in the same way as the first primitive even for the second and subsequent primitives.
[0063] 図 4 (B) 示されるように, それぞれ頂点列 {v2,v,,v3} と {v3,v,,v5}により 構成される 2つの中心三角形 111及び 113に相当する TWNプリミティブスト リップは, 図 4 (D) に示されるように {2, 1, 0,3, 4,5, 7,6}で示される頂点位 置属性列に相当するインデックスバッファのコンテンツとして表現される。 頂点キャッシュ装置はインデックスバッファからインデックスに相当する頂 点を読み出して, プリミティブエンジンに伝える。 たとえば, 頂点キヤッシ ュ装置から, プリミティブエンジンに伝えられる第 6番目の頂点は, インデ ックス価 5に相当するものである。 プリミティブエンジンが, 中心三角形 1 1 1 と隣接する三角形 1 1 0, 1 1 2, 及び 1 1 3についての全ての頂点に 関する情報を入手すれば, プリミティブエンジンは TWNストリップ列にお ける最初の三角形の方向ゃシルエツト辺などを検出し始めることができる。 三角形の方向の計算は, システム座標における三角形の頂点位置の X , y , wにより構成される 3つのコンポ一ネントべク トルからなる 3つの内積によ るスカラーにより評価され, 以下のマトリックスにより評価される。 [0063] As shown in Fig. 4 (B), these correspond to the two central triangles 111 and 113 respectively composed of the vertex sequences {v 2 , v ,, v 3 } and {v 3 , v ,, v 5 } As shown in Fig. 4 (D), the TWN primitive strip to be used is the contents of the index buffer corresponding to the vertex position attribute sequence indicated by {2, 1, 0,3, 4,5, 7,6}. Expressed. The vertex cache device reads 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 is equivalent to an index value of 5. If the primitive engine obtains information about all vertices for the center triangle 1 1 1 and the adjacent triangles 1 1 0, 1 1 2, and 1 1 3, the primitive engine will get the first triangle in the TWN strip sequence. It is possible to start detecting the side of the straight line. The calculation of the direction of the triangle is evaluated by a scalar consisting of three inner products consisting of three component vectors consisting of X, y, and w at the vertex position of the triangle in system coordinates. Is done.
[0064] [数 1] xo y0 wo [0064] [Equation 1] xo y 0 w o
detA二 Xl Yl Wl detA 2 X l Yl W l
χ2 y2 w2 χ 2 y 2 w 2
[0065] ここで, 下付の 0, 1 , 及び 2は, それぞれ三角形における第 1 , 第 2及 び第 3の頂点を意味する。 このサインが辺を共有する 2つの三角形と異なる 場合は, この辺はシルエットである。 それゆえ, シルエット辺を決定するた めに, TWNプリミティブの中心三角形と, 3つの隣接する三角形の 4つの 評価が必要となる。  [0065] 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 that share an edge, the edge is a silhouette. Therefore, four evaluations of the TWN primitive center triangle and three adjacent triangles are required to determine the silhouette edge.
[0066] シルエット辺を検出するために, 観察者の視野方向と垂直な方向, すなわ ち視点座標における Ζ軸の方向の長方形のフラップ (flap) を構成する余分 な幾何学図形が設計され, それは対象物の外側に伸びる。 その対象物の外側 の方向は, 頂点キャッシュ装置からプリミティブエンジンへは頂点が運ばれ た後に入手することができる他の頂点の属性とそのメッシュの各々の頂点に おける法線ベク トルにより表現される法線方向に変換される。 例えば, その シルェット辺を構成する第 1及び第 2の頂点は, Xo, y0, Zo, Wo視点座標系及び x, ,Υ,,ζ,, w,視点座標系において V。及び V と命名され, それぞれに関連して法 線ベク トル nQ及び を有する。 生成したフラップは, 視点座標系において以下 の座標値を有する頂点により表現される長方形である {xo, y0, zo, wol , {χ,, y,, ζ, , w,} , {x!+offsetx+ri!x+w,, y,+offsetY*n1y, ζ,, w,} ,及び {x0+offsetx*n0x, y0+offsetY *n0y, Zo, Wol o このようにして得られたフラップは, 観察者との距離によらずス クリーン空間において一定の幅を有するようにして生成される。 図 5 (B) は, 係数 offsetxと係数 offsetYとが同じ値であり, n0zと n1zとが 0である場合に おける, そのようなフラップの構成を示す図である。 [0066] To detect the silhouette edge, an extra geometric figure that forms a rectangular flap in the direction perpendicular to the observer's visual field direction, that is, the direction of the axis of the eye at the viewpoint coordinates, is designed. It extends outside the object. The direction outside the object is 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 vectors at each vertex of the mesh. Converted to normal direction. For example, the first and second vertices that make up the Silette edge are V in the Xo, y 0 , Zo, Wo viewpoint coordinate system and x,, Υ, ζ, w, viewpoint coordinate system. And V, with normal vectors n Q and, respectively, associated with them. The generated flap is a rectangle represented by vertices with the following coordinate values in the viewpoint coordinate system: {xo, y 0 , zo, wol, {χ ,, y, ζ,, w,}, {x! + offsetx + ri! x + w ,, y, + offset Y * n 1y , ζ ,, w,}, and {x 0 + offset x * n 0x , y 0 + offset Y * n 0y , Zo, Wol o The flaps obtained in this way are generated 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, if the the n 0z and n 1z 0 It is a figure which shows the structure of such a flap.
[0067] 次のプリミティブのために, 頂点キャッシュ装置からインデックス値が 7 と 6である 2つの頂点が配送され, それによりさらに 2つの三角形 1 1 5及 び 1 1 4が定義される。 この情報により, ストリップにおける第 2の三角形 のシルエット計算を行うことができる。 ただし, 以前求めた 4つの頂点が再 び用いられることに留意しなければならない。 さらに, 三角形の方向を計算 することにより, 2つの三角形が再び用いられることとなる。 すなわち, 一 つは問題となる三角形であり, もうひとつは隣接する三角形である。 図 4 B に示される場合では, それら 2つの三角形はそれぞれ 1 1 3と 1 1 1である 。 この方法によれば, シルエットを検出するアルゴリズムを実装する際の計 算コストを大きく軽減できる。 シルエツト辺において重複した幾何学的フラ ップが生成する事態を防止するため, 例えば, 観察者に面する方向などある 三角形のある方向の T W Nプリミティブとなるようにフラップが生成されな ければならない。 そのほかのプリミティブは, 無視することができる。  [0067] For the next primitive, the vertex cache unit delivers two vertices with index values 7 and 6, thereby defining two more triangles 1 1 5 and 1 1 4. With this information, the silhouette of the second triangle in the strip can be calculated. However, it should be noted that the previously obtained four vertices are reused. Furthermore, by calculating the direction of the triangle, the two triangles will be used again. That is, one is the triangle in question and the other is the adjacent triangle. In the case shown in Figure 4B, the two triangles are 1 1 3 and 1 1 1 respectively. This method can greatly reduce the computational cost of implementing an algorithm for silhouette detection. In order to prevent the occurrence of overlapping geometric flaps on the side of the silhouette, for example, the flap must be generated to be a T W N primitive in a certain direction of a triangle, such as the direction facing the viewer. Other primitives can be ignored.
[0068] 最後に, それぞれのプロセッシングされた T W Nプリミティブについて, プリミティブエンジンが単純な固定サイズのプリミティブを出力することも できる。 シルエツト検出アルゴリズムや視覚化アルゴリズムの特別な場合に おいては, その出力は, 不変な中心三角形と, シルエット辺を形成する幾何 学的フラップを構成する 2つの三角形とを含む。 フラップについて, ァルゴ リズムを実装するに当たり, いくつかの属性は変化されうる。 例えば, 色は , 黒い外観を形成する場合は, 黒のものに置き換えられる。 出力された三角 形は, 頂点キャッシュ装置から直接配送されたかのように, 固定されたプリ ミティブアセンブル装置へと配送され, 処理される。  [0068] Finally, for each processed T W N 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 to implement the algorithm. For example, if the color forms a black appearance, it is replaced with a black one. The output triangle is delivered to the fixed primitive assembler and processed as if it had been delivered directly from the vertex cache unit.
[0069] プリミティブエンジンが, 可変サイズの拡張されたプリミティブを処理す ることを実現するためのアルゴリズムの例として Gatmu l卜 G l ark再分割法を実 装するものがあげられるが, これに限定されない。 同様に, 他の再分割スキ ーム, 例えばループ再分割スキームや, 4 _ 3再分割スキームなどを実現で きる。 Gatmu l卜 G l ark, C C , 再分割法は, 複数の工程からなり, 荒いメッシ ュから, 滑らかで細かな碁盤目状のメッシュを生成し, 各工程はひとつ前の 工程で得られたメッシュを再分割する工程である。 すなわち, 再帰的な方法 で基本メッシュにある規則を当てはめて細かくする。 その規則は, その前の 工程で得られたメッシュのそれぞれの面について新たな頂点を生成し, 前の 工程で得られたメッシュのそれぞれの辺について新たな頂点を生成し, 前の 工程での位置に関してメッシュの頂点位置を再配置する。 上記の 3つのいず れの場合も, 次の工程のメッシュの頂点位置は, それが属する辺や面と隣接 するものの頂点の線形結合に限られる。 より具体的に説明すると, 面点 (fac e po i nts) は, もとの頂点の面の位置の平均に位置する。 辺点 (edge po i nt) の位置は, もとの辺の中心位置の平均, 及び 2つの新しく隣接する面 点の平均として計算される。 前工程からの頂点は, 以下の式で示されるよう に位置される。 S' = (Q + 2R + S (n-3) ) /n。 ここで, S' は, 頂点の最新の位 置であり, Qは, その頂点の周辺に位置する新たな面点の平均値であり, Rは 前記頂点を共有する辺の中点の平均値であり, Sは前の工程での頂点位置であ り,そして nは頂点を共有する辺の数, すなわち頂点価である。 [0069] An example of an algorithm for realizing that the primitive engine processes a variable-size extended primitive is one that implements the Gatmu l 卜 G lark subdivision method. Not. Similarly, other subdivision schemes such as loop subdivision schemes and 4_3 subdivision schemes can be realized. Gatmu l 卜 G l ark, CC, subdivision method consists of multiple processes, A smooth and fine grid-like mesh is generated from the menu, and each process is a process of subdividing the mesh obtained in the previous 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 process, generates a new vertex for each side of the mesh obtained in the previous process, 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 that are adjacent to the side or face to which it belongs. More specifically, the face point (fac e po i nts) is located at the average position of the face of the original vertex. The position of an edge point is calculated as the average of the center position of the original edge and the average of two new 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 new face points located around the vertex, and R is the average value of the midpoints of the edges sharing the vertex. , S is the vertex position in the previous process, and n is the number of edges sharing the vertex, that is, the vertex value.
[0070] 次の再分割工程において頂点位置を計算するために必要とされる頂点の数 は, 辺の頂点は 6 , 面の頂点は 4と固定される。 一方, 前の工程からの頂点 の位置を決めるためには, 再配置される 1つの隣接したものに属する全ての 頂点に関する情報が必要となる。 頂点のある隣接するものは, それとメッシ ュ面を共有する全ての頂点によって形成される。 図 6 ( A ) , 図 6 ( B ) 及 び図 6 ( C ) に示される場合では, 基本メッシュ 1 0 6における頂点 v9の隣接 するものは, 頂点 v13, v,2 , v8, v4, v5, v6, v, o, v16, v15及び v14により形成され, その価 は 5である。 頂点の価は, 任意の価を取ることができ, したがって, 再分割 ルールを実行する場合, 隣接における多数の頂点の数に関する情報を必要と する。 しかしながら, 実際は, 最大の頂点価を限定することができ, ある計 上を再分割するために特にぎりぎりまで制限されない状態で再分割ルールを 実装することができる。 [0070] The number of vertices required to calculate the vertex position in the next subdivision step is fixed to 6 for the edge vertex and 4 for the face. On the other hand, in order to determine the positions of vertices from the previous process, information on all vertices belonging to one adjacent object to be rearranged is required. A neighbor with vertices is formed by all vertices that share a mesh surface with it. In case of the shown in FIG. 6 (A), FIG. 6 (B)及beauty FIG 6 (C), the adjacent ones of the vertex v 9 in the base mesh 1 0 6, vertex v 13, v, 2, v 8, v 4, v 5, v 6 , v, o, is formed by v 16, v 15 and v 14, its value is 5. The value of the vertices can be arbitrary, 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 the subdivision rule can be implemented without being particularly limited to subdivide a certain account.
[0071 ] C Cスキームを全てのメッシュに用いることもできるが, パッチごとに異 なるルールを用いることもできる。 再分割表面パッチは, その面のひとつの 隣接するものに属する頂点列としての基本メッシュの面から外れるように形 成されうる。 すなわち, 再分割ルールがひとつの隣接するものに限定される ので, 面頂点のある隣接するものの集まりは, 面そのものの頂点を含む。 C C再分割を 2工程行った後に, 再分割されたメッシュにおける全ての面は, 長方形であり, 面についてひとつ異常のィレギュラーな頂点がなくなること が知られている。 基本となる面は, そのようにして設計しうるが, 同じ結果 を得るためにただ 1つの CC再分割工程を行えばよい。 いずれにせよ, 一般 的な CCスキームを失うことなく面ごとのィレギュラーな頂点を 1つ以上有 するイレギュラーな長方形でないように形成されるパッチの再分割を考慮す ることができる。 本発明の第 1の側面において記載した CCS Pプリミティ ブは, 上記の要件を満たし, 基本メッシュの四角形郡に相当する CCS Pプ リミティブ郡により C C再分割が実現できる。 [0071] The CC scheme can be used for all meshes, but different for each patch. The following rules can also be used. A subdivision surface patch can be formed to deviate from the face of the basic mesh as a sequence of vertices belonging to one neighbor of the face. In other words, since the subdivision rule is limited to one adjacent object, the collection of adjacent objects with face vertices includes the vertices of the face itself. After two CC subdivisions, all faces in the subdivision mesh are rectangular and it is known that there is no abnormal irregular vertex on the face. The basic surface can be designed that way, but only one CC subdivision process needs to be performed to achieve the same result. In any case, it is possible to consider subdivision of patches formed so as not to be irregular rectangles with one or more irregular vertices per face without losing the general CC scheme. The CCS P primitive described in the first aspect of the present invention satisfies the above requirements, and CC subdivision can be realized by the CCS P primitive group corresponding to the square group of the basic mesh.
図 6を参照して, インデックス/頂点バッファから CCS Pプリミティブ を形成する方法や, プリミティブエンジンにおいて CC再分割を行うアルゴ リズムについて説明する。 図 6 (A) は, 中心四角形 {v9, v5, v6, v10}及び {v9, v10 , v16, v15}により形成され頂点価 5のィレギュラーな頂点 v9を共有する 2つの隣 接する CCS Pプリミティブ列を有する基本となる制御メッシュ 1 06を示 す図である。 頂点位置属性のインデックス列を含むインデックスバッファは 以下のとおりである。 With reference to Fig. 6, the method of forming CCS P primitives from the index / vertex buffer and the algorithm for CC subdivision in the primitive engine are described. Figure 6 (A) shows an irregular vertex v 9 with a vertex value of 5 formed by the central squares {v 9 , v 5 , v 6 , v 10 } and {v 9 , v 10 , v 16 , v 15 }. FIG. 11 is a diagram showing a basic control mesh 106 having two adjacent CCS P primitive sequences to be shared. The index buffer that contains 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, 1 1, 17,21,20, 19, 18, 14, 13, 12,8,4}0 そして, C C S P列の処理は以下のとお りである。 プリミティブサイズをフェッチングする工程は, 頂点位置属性の インデックス群における最初の位置からプリミティブサイズの値 18を取り戻 し, それをプリミティブエンジンに配送する, 頂点キャッシュ装置により実 行される。 頂点キャッシュ装置は, 18個の頂点を頂点位置属性のインデック スに従ってプリミティブエンジンに配送する。 頂点 v12に相当するプリミティ ブの最後の頂点がプリミティブエンジンに配送されると, CCS Pプリミテ イブの演算処理が始まる。 プリミティブサイズ, 頂点列を入手できるように なっているので, プリミティブエンジンにより実装されるアルゴリズムによ り本発明の第 1の側面によって導入された記述方法により CCS Pプリミティ ブを再構築できる。 プリミティブを再構築した後は, 再分割を行うための全 ての情報が入手されているので, 再構築された CCS Pプリミティブは, Gat mulト Glark再分割表面 (Jeffrey Bolz and Peter {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,1 1, 17,21,20, 19, 18, 14, 13, 12,8,4} 0 And the processing of the CCSP sequence is as follows. The process 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 unit delivers 18 vertices to the primitive engine according to the vertex position attribute index. When the last vertex of the primitive corresponding to vertex v 12 is delivered to the primitive engine, the CCS P primitive Eve's calculation process begins. Since the primitive size and the vertex sequence can be obtained, the CCS P 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 rebuilding the primitive, all the information for performing the subdivision is available, so the reconstructed CCS P primitive is the Gat mult Glark subdivision surface (Jeffrey Bolz and Peter
Schroder, in Proceedings of the Web3D 2002 Symposium (WEB3D-02) , page s 11-18,  Schroder, in Proceedings of the Web3D 2002 Symposium (WEB3D-02), page s 11-18,
New York, February 24 28 2002, ACM Press) などのパッチごとの再分割ァ ルゴリズムにより再分割することができる。 用いられた再分割スキームは, モザイクメッシュ(107)の断片として描画されるように演算処理された C C S Pプリミティブの中心四角形の細かなモザイク (tessel lation) に相当する 四角形の組となる。 その得られた四角形のそれぞれは, さらに演算処理を施 し, ラスタライズするために二つの三角形に分割され, 固定されたプリミテ イブアセンブル装置へと配送される。 これらの工程は, 次の CCS Pプリミ ティブの演算処理のために繰り返される。  New York, February 24 28 2002, ACM Press) and other subdivision algorithms can be subdivided. The subdivision scheme used is a set of quadrilaterals that correspond to the fine tessellation of the central quadrilateral of the C C S P primitive that has been processed to be rendered as a fragment of the mosaic mesh (107). Each of the resulting squares is further processed and divided into two triangles for rasterization and delivered to a fixed primitive assembler. These steps are repeated for the next CCS P primitive computation.
[0073] 本発明の第 3の側面は, 本発明の第 2の側面にかかる方法を用いて, 固定 サイズのプリミティブ又は可変サイズのプリミティブ列を処理する本発明の 第 1の側面に係る処理方法を実現するためのシステムに関する。  [0073] A third aspect of the present invention is a processing method according to the first aspect of the present invention in which a fixed-size primitive or a variable-size primitive sequence is processed using the method according to the second aspect of the present invention. It is related with the system for realizing.
[0074] 図 3に示されるように, 本発明の第 3の側面に係るシステムは, 拡張され たプリミティブを処理するために, 従来技術の頂点処理に関する工程を変化 するようにされている。 インデックスバッファ 1 1 00に記憶され, 生成さ れるインデックスにしたがって, 頂点バッファ 1 200からの頂点データを フェッチし, 頂点処理ユニット 4000に頂点データを変換する。 変換され た頂点データは, プリミティブエンジン 9000に配送され, ここで拡張さ れたプリミティブのアセンブル (a s s emb I e) や処理が行われる。 プ リミティブエンジン 9000で拡張されたプリミティブのアセンブル処理に よって発生した単純プリミティブは, 固定されたプリミティブを処理する集 積回路 6 0 0 0のような残りの処理パイプラインへと配送される。 このよう な工程は, 拡張されたプリミティブを処理する際にのみ特に有効である。 単 純プリミティブを処理する場合は, 前記の第 2の工程がなぐ 転送された頂 点は固定されたプリミティブを処理する集積回路 6 0 0 0に直接配送されれ ばよい。 そして, 固定されたプリミティブを処理する集積回路 6 0 0 0は, 例えば, 図 1に示されるような公知のものを適宜採用すればよい。 [0074] As shown in FIG. 3, the system according to the third aspect of the present invention is configured to change the processes related to the vertex processing of the prior art in order to process the extended primitive. The vertex data from the vertex buffer 1 200 is fetched according to the index stored in the index buffer 1 1 00 and generated, 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 (ass emb I e) and processed. Simple primitives generated by the Primitive Engine 9000 extended primitive assembly process are a collection of fixed primitives. Delivered to the rest of the processing pipeline, such as product circuit 6 0 0 0. Such a process is particularly useful only when processing extended primitives. When processing simple primitives, the transferred vertex from the second step may be directly delivered to the integrated circuit 600 that processes the fixed primitive. For the integrated circuit 6 0 0 0 that processes the fixed primitive, for example, a known circuit as shown in FIG.
[0075] 図 3に示されるように, 本発明のシステムの具体例としては,以下のモジュ —ルを含むシステムがあげられる。 すなわち, 本発明のシステムは, 頂点キ ャッシュ制御部, VGG, 2000, 第 1の頂点キャッシュ記憶部, PVG, 3000, 第 2の頂点キャッシュ記憶部, SVG, 5000, 1又は複数の頂点処理ユニット, VP U, 4000, プリミティブエンジン, PE, 9000, 及び固定サイズプリミティブ集 積回路, FPA, 6000である。 残りのパイプラインは, 三角形のように単純プリ ミティブの固定された列の処理を実現する固定サイズプリミティブセットァ ップュニット 7000 及びラステライザ一 8000を具備するシステムに関する。  [0075] 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, VGG, 2000, first vertex cache storage unit, PVG, 3000, second vertex cache storage unit, SVG, 5000, one or more vertex processing units, VPU, 4000, primitive engine, PE, 9000, and fixed size primitive integration circuit, FPA, 6000. The remaining pipeline relates to a system with a fixed size primitive set unit 7000 and a rasterizer 8000 that implements processing of fixed rows of simple primitives like triangles.
[0076] 図 3には, 上記のシステムと情報の授受や処理を行う他のユニットを示し ていない。 それは簡潔にするためと, 本発明に特徴のあるものにアッセンブ ルするためである。 具体的に記載を省略したものとして, ホスト C P Uゃホ ストメモリ, 三角形のラスタライズ用パイプラインなどがある。 それらの相 互の情報授受は, 本発明との関係で必要な範囲で説明を行う。 上記したモジ ユールにおいては, プリミティブエンジンと可変サイズの拡張されたプリミ ティブを処理することに関する頂点キヤッシュ制御部の論理回路を適宜修正 し, その他は公知のものを適宜用いることができる。 すなわち, 上記以外の モジュールは, 点, 線, 三角形など単純固定サイズのプリミティブの処理を 実現するためには, 現在の 3次元コンピュータグラフィックスにおいて用い られているものと類似したものを適宜採用することができる。  [0076] 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. Specific examples of omitting the descriptions include host CPU host memory and triangular rasterization pipeline. Information exchange between them will be explained to the extent necessary in relation to the present invention. In the module described above, the logic circuit of the vertex cache control unit for processing the primitive engine and the variable-size extended primitive can be modified as appropriate, and other known ones can be used as appropriate. In other words, modules other than those mentioned above should be adopted as appropriate in order to realize simple fixed-size primitives such as dots, lines, and triangles, as used in current 3D computer graphics. Can do.
[0077] 頂点キャッシュ制御部, V C C , 2 0 0 0は, 以下の処理を行う。 インデッ クスバッファの内容を解析する。 P V C 3 0 0 0と S V C 5 0 0 0の状態に 従って, インデックスバッファ 1 1 0 0からフェッチされた頂点インデック スにしたがって, PVC3000の頂点バッファの内容をフェッチする。 頂 点データの頂点ごとの処理を実行するために, PVC3000から VPU ( s) 4000へ伝えられる頂点データを制御する。 VPU (s) 4000か ら S VC5000へと伝えられうる転送された頂点データの蓄積を制御する 。 プリミティブの種類 (可変なサイズの拡張されたプリミティブかどうか) に応じて, SVC5000の内容を, P E 9000又は F P A 6000に配 送する (具体的には, プリミティブの種類を判断し, プリミティブが可変な サイズの拡張されたプリミティブであれば S VC 5000の内容を, P E 9 000に配送する) 。 可変なサイズの拡張されたプリミティブを処理する場 合は, P E9000にプリミティブのサイズに関する情報を配送する。 P E 9000に, プリミティブのサイズに関する情報と, 全てのプリミティブの 頂点に関する頂点データが配送された後には, 可変なサイズの拡張されたプ リミティブに関する処理を始める可能性があることを伝える。 上記のとおり , 本発明の好ましい態様は, プリミティブサイズは P E 9000にのみ配送 される。 さらに, S VCの内容は P Eに配送され, P E9000に, プリミ ティブのサイズに関する情報と, 全てのプリミティブの頂点に関する頂点デ —タが配送された後には, 可変なサイズの拡張されたプリミティブに関する 処理を始める可能性があることを伝えられる。 ィンデックスバッファを解析 する工程も, 本発明に特有の工程であり, プリミティブサイズの抽出や, 可 変サイズの拡張されたプリミティブの処理に関連するものである。 他の処理 工程は, 単純プリミティブに行われている公知の処理工程を適宜採用するこ とができる。 [0077] The vertex cache control unit, VCC, 2 0 0 0, performs the following processing. Analyzes the contents of the index buffer. Vertex index fetched from index buffer 1 1 0 0 according to the state of PVC 3 0 0 0 and SVC 5 0 0 0 Fetch the contents of the vertex buffer of PVC3000 according to In order to execute the 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 transmitted from the VPU (s) 4000 to the S VC5000. The contents of SVC5000 are sent to PE 9000 or FPA 6000 according to the type of primitive (whether it is an extended primitive of variable size) (specifically, the type of primitive is determined and the primitive is variable) If the primitive is extended in size, the contents of S VC 5000 are delivered to PE 9 000). When processing extended primitives of variable size, deliver information about the size of the primitive to the P9000. Inform PE 9000 that after primitive size information and vertex data for all primitive vertices has been delivered, it may begin processing for variable-size extended primitives. As noted above, the preferred embodiment of the present invention is that primitive sizes are only delivered to PE 9000. 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 for all primitive vertices is delivered to the PE 9000, the variable primitive is about the extended primitive. Informed that there is a possibility of starting processing. The process of analyzing the index buffer is also a process peculiar to the present invention, and is related to the extraction of the primitive size and the processing of the extended primitive of the variable size. As other processing steps, known processing steps performed on simple primitives can be adopted as appropriate.
第 1の頂点キャッシュ記憶部 PVCは, ホストメモリから連続的に大量の 頂点/くッファからの情報が伝えられてキャッシュされる場所である。 PVC は, 頂点、しとのプロセッシンフ (per—vertex processing) におしゝて, 酉己 i¾さ れなかった頂点データが VP U (s) に配送されるように貯蔵するものとし ても機能する。 比較的大きく連続的なメモリブロックに対して, 配送されな かつた頂点データにより P V Cが埋められることにより, メモリ移送に関し て待ち時間の問題を軽減できる。 また, PVCと VPU (s) が物理的, 又 は電気的に近くに設けられることにより, P V C中に配送されておらず処理 されなければならない頂点データがある場合の移送のための待ち時間を軽減 できる。 The first vertex cache storage unit PVC is a place where information from a large number of vertices / buffers is continuously transferred from the host memory and cached. The PVC functions even if it stores the vertex data that was not processed by VP U (s) for the per-vertex processing. . For a relatively large and continuous memory block, the PVC is filled with undelivered vertex data, so that Can reduce the problem of waiting time. In addition, the PVC and VPU (s) are physically or electrically located close to each other, so that there is a waiting time for transport when there is vertex data that is not delivered in the PVC and must be processed. Can be reduced.
[0079] 頂点処理ユニット VPU (s) は, ある固定された機能を達成するモジュ —ルであるか, 例えば, O p e n G L及び/又は D i r e c t 3 D  [0079] The vertex processing unit VPU (s) is a module that achieves a certain fixed function, eg, O p e n G L and / or D i e c t 3 D
3 D g r a p h i c s AP I sなどに基づく頂点処理を実行できるよう にプログラマブルなモジュールであっても良い。 VPU (s) は, 位置, 色 , テキスト座標など様々な移送されなかった頂点属性を入力として受け取り , 位置, 色, テキスト座標, 視点ベク トルなど移送される頂点の様々な属性 を生成する。 入力と出力の数や次元, すなわち入力と出力の頂点情報のフォ —マットは異なっても良い。 VPU (s) は, PVCから情報を受け取り, その出力を SVCへと伝える。  It may be a programmable module so that vertex processing based on 3D gramap ics API s can be executed. VPU (s) receives various non-transferred vertex attributes such as position, color, and text coordinates as input, and generates various attributes of transferred vertices such as position, color, text coordinates, and viewpoint vector. The number and dimensions of inputs and outputs, that is, the format of input and output vertex information, may be different. VPU (s) receives information from the PVC and passes the output to the SVC.
[0080] プリミティブエンジン P Eは拡張されたプリミティブに関する情報処理を 行うためのある固定された機能を実現するモジュールか, 又はプログラマブ ルなモジュールである。 P Eを固定された機能を実現するモジュールとして 実装することは, 高いパフォーマンスを持って, 限られた機能を実現すると いった用途には有効である。 P Eをプログラマブルなモジュールとして実現 することは, 拡張されたプリミティブを処理するァルゴリズムに選択の自由 度を与えることができるので, 好ましい。 拡張されたプリミティブを処理す るモードにおいて, P Eは, SVCから移送された頂点に関する出力を受け 取り, プリミティブをアッセンブルし, プリミティブに関する処理を行って , F P Aが理解できる単純プリミティブの列として出力する。 P Eは, 本発 明に独特なモジュールである。 一方, プログラマブルなモジュールとして実 装する場合は, 単純なプリミティブ列の形で得られる拡張されたプリミティ ブについての演算結果を FP Aに移送するように制御する機能を付加するほ かは, プログラマブルな VP U (s) と多くの機能ロジックを共用するなど , プログラマブルな VP U (s) と同様の機能を有すればよい。 P Eは, F PAの場合と同様に, S VCと VCCから入力情報を受け取る。 P Eと他の 装置との主な違いは, 拡張されたプリミティブサイズの情報と, 可変サイズ の拡張されたプリミティブを処理する際には拡張されたプリミティブの全て の頂点を配送するための頂点データを配送したことについての通知信号の授 受が必要であることに起因する。 V C Cは,以下に説明されるように頂点デ一 タのためにプリミティブサイズに関する情報を P Eに伝えるために同じデ一 タチャネルを用いる。 [0080] The primitive engine PE is a module that implements a fixed function for performing information processing related to an extended primitive, or a programmable module. Implementing PE as a module that realizes a fixed function is effective for applications that achieve high performance and limited functions. Realizing PE as a programmable module is preferable because it gives the algorithm for processing extended primitives a degree of choice. In the extended primitive processing mode, the PE receives the output about the vertices transferred from the SVC, assembles the primitive, processes the primitive, and outputs it as a sequence of simple primitives that the FPA can understand. PE is a module unique to the present invention. On the other hand, when implemented as a programmable module, in addition to adding a function to control the operation result of the extended primitive obtained in the form of a simple primitive sequence to be transferred to the FPGA, it is programmable. It only needs to have the same functions as programmable VP U (s), such as sharing many functional logics with VP U (s). PE is F As in the case of PA, input information is received from S VC and VCC. The main differences between PE and other devices are the information on the extended primitive size and the vertex data to deliver 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.
[0081] 最後に, SVCから配送された頂点列から固定サイズプリミティブ集積回 路は, 点, 線及び三角形といった単純プリミティブのアッセンブルを行うた めの固定された機能を有するモジュールである。 SVCは, 点, 線, ライン ループ, 三角形, 三角形ストリップ, 及び三角形ファンといった, openG L や direct3 Dといった最近の 3 Dグラフィック AP I sに用いることができ るプリミティブの集合を実現する。 拡張されたプリミティブをプロセッシン グする場合は, 「 八は £から入カ情報を受け取るカ《, 巳カ《, 移送され た頂点に関する情報の授受についてのプロ トコルとして, SVCや VCCが F P Aへの頂点データ移送を行うためのものと同じものを用いるために, こ のモジュールにとって情報源は完全に透明であっても良い。  [0081] Finally, the fixed-size primitive integration circuit from the vertex sequence delivered from the SVC is a module that has a fixed function for assembling simple primitives such as points, lines, and triangles. SVC implements a set of primitives that can be used for 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, “8 is the input to receive input information from £”, “巳”, and SVC and VCC are the vertices to FPA as the protocol for transferring information about transferred vertices. The source of information may be completely transparent to this module in order to use the same one for data transfer.
[0082] 頂点キャッシュ制御部は, チップ上のすべてのプリミティブ処理を制御す る。 頂点キヤッシュ制御部は, プリミティブのための頂点データが P V C及 び S V Cに記憶された情報を用いて, インデックスバッファに記憶された情 報を介して間接的に参照される場合において, インデックスバッファ及び頂 点バッファの処理を加速することができる。 また, 頂点キャッシュ制御部は , プリミティブのための頂点データが PVCを用いて頂点バッファ内の頂点 データ列によって形成される場合は, 頂点バッファのみを参照することによ り, 処理を加速できる。 VCCは, 固定されたサイズのプリミティブを処理 するモードと, 拡張されたサイズのプリミティブを処理するモードの 2つの モードを, プリミティブに応じて演算処理する。 VCCの演算処理は, 単純 プリミティブや固定されたサイズの拡張されたプリミティブの演算処理する 場合と同様の処理が行われる。 [0082] 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. The point buffer processing can be accelerated. In addition, the vertex cache control unit can accelerate processing by referencing only the vertex buffer when the vertex data for the primitive is formed by the vertex data string in the vertex buffer using PVC. VCC operates in two modes depending on the primitive: a mode for processing fixed-size primitives and a mode for processing extended-size primitives. VCC processing is done for simple primitives and extended primitives of fixed size The same processing as in the case is performed.
[0083] 最初に, 現在処理する頂点に対応する頂点属性インデックスセットの演算 処理を行うために, 移送されなかった頂点に関する頂点データをロードして , VPU (s) に送る。 もしも, 現在サンプルされた SVCから頂点属性ィ ンデックス列に相当する移送された頂点がなぐ PVCにも移送されていな い頂点データがない場合は, VCCは, ホストメモリから PVCへと頂点バ ッファに記憶される内容の塊をアップロードする。 その塊は, PVCの空い ているスペースを用いて質問とされるインデックス列に関する頂点データを 含んでいるか, そこに前から記憶されている使用されていないデータを上書 きする。 その塊は, 他のインデックスの頂点データを含んでいてもよぐ そ れゅえその塊は P V Cに存在するのであれば更に利用されても良い。 P V C において頂点データが利用可能となると, ラウンドロビン (round-robin) 方 式か又は他の方法により, 〇〇は リ (s) への配送を始める。 もし変 換された頂点データ力《, SVCには存在せず, PVCに移送されないものが 存在する場合は, VCCはホストメモリにアクセスせずに VP U (s) から PVCへの頂点データの移送を始める。 このため, ホストメモリへのァクセ ス時間を削減できる。 このようにして, PVCは, 移送されない頂点データ に関する演算処理をする処理速度を向上させることにつながる。  [0083] First, in order to calculate the vertex attribute index set corresponding to the currently processed vertex, the vertex data related to the vertex that was not transferred is loaded and sent to the VPU (s). If there is no vertex data transferred from the currently sampled SVC to the PVC with the transferred vertex corresponding to the vertex attribute index string, the VCC is transferred from the host memory to the PVC as a vertex buffer. Upload a chunk of content to be stored. The chunk contains vertex data about the index sequence that is queried using the empty space in the PVC, or overwrites the unused data previously stored there. The chunk may contain vertex data from other indices. If the chunk exists in the PVC, it may be used further. When vertex data becomes available in P V C, O begins delivery to R (s), either by the round-robin method or by other methods. If there is a converted vertex data force <<, which does not exist in the SVC and is not transferred to the PVC, VCC transfers the vertex data from VP U (s) to the PVC without accessing the host memory. Begin. For this reason, the access time to the host memory can be reduced. In this way, PVC leads to an improvement in the processing speed for processing the vertex data that is not transferred.
[0084] ホストメモリにおいて異なる頂点属性の記憶位置は, 異なるスペーシング と属性サイズのために, 好ましくは, 分散配置される。 VCCは, そのよう な分散された頂点属性からの VPUへの入力データをアッセンブルする。 具 体的な実装では, V P Uへの入力は 4つのコンポ一ネン卜のフローティング ベクターであり, それぞれの頂点に関する入力データはそのようなべク トル のいくつかにまたがることができる。 VCCは, 必要なタイプの変換処理を 行うことで, 分散された頂点属性から入力データのアッセンブルを行う。 例 えば, 2バイ トの整数値を浮動小数点のものに変換し, パッキング属性をそ のコンフィグレーションに応じて 4つのベク トルに変換する。 例えば, 2セッ 卜の 2つのコンポ一ネントテクスチャ一座標属性は, 4つのコンポ一ネント 入力ベク トルへ変換される。 そして, VPUが動作可能な時間に沢山の入力 データとして移送される。 [0084] 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 floating vector of 4 components, and the input data for each vertex can span several such vectors. The VCC assembles the input data from the distributed vertex attributes by performing the necessary type of conversion processing. For example, a 2-byte integer value is converted to a floating-point number, and the packing attribute is converted to 4 vectors according to the configuration. For example, two sets of two component textures and one coordinate attribute are four components. Converted to input vector. It is transferred as a lot of input data when the VPU can operate.
[0085] 頂点データに関する演算処理を終えて, 1つ又はいくつかの VPS (s) が利用可能な状態となった際には, 移送されるべき次の頂点に関する入力が V P Uに 4つのコンポーネントの浮動小数点べク トル (4 component float in g point vectors) として配送される。 ある数のベク トルを受け取った後に, VPUは頂点に関する演算処理を始める。 その数は, 頂点ごとの属性の数や , それらのパッキングに依存し, VPUを経て決定される。 VPUが移送を 終えると, VPUは, 4つのコンポーネントの浮動小数点ベク トルを SVC へと出力する。 いくつかの V P Uが並行して動作するときは, VCCは頂点 列を表現するための V P Uが SVCへアクセスすることを管理する。 移送さ れた頂点のフォーマット, すなわち, 属性の数や出力べクタ一へのパッキン グは, 入力されたものと異なるものであっても良い。  [0085] When the vertex data processing is completed and one or several VPS (s) are available, the input for the next vertex to be transferred is input to the VPU. Delivered as 4 component float in g point vectors. After receiving a certain number of vectors, the VPU starts processing on the vertices. The number depends on the number of attributes per vertex and their packing, and is determined via VPU. When the VPU finishes the transfer, the VPU outputs the four component floating-point vectors to the SVC. When several V PUs operate in parallel, the VCC manages that the V PU for representing the vertex sequence accesses the SVC. The format of the transferred vertices, ie the number of attributes and the packing to the output vector, may be different from the input.
[0086] SVCの貯蔵エンティティも 4つのコンポーネントの浮動小数点べク トル である。 それ故, それぞれの移送されたベク トルは, SVCへの入力列によ つて占められる。  [0086] The storage entity of the SVC is also a four component floating point vector. Therefore, each transferred vector is occupied by an input string to the SVC.
実際の態様においては, SVCは, 単に F I FOキューを行い, 移送された データを最近処理された頂点へと移送する際に F I FOがオーバーフローし た場合には, 最も古いデータを急いで出力する。 勿論, LRU (least recen tly used) のようなその他の方法を S V Cが格納することを妨げるものでは ない。 本発明の本質は, そのような些細な事柄とは関係ないところにある。  In an actual embodiment, the SVC simply performs the FI FO queue, and if the FI FO overflows when transferring the transferred data to the recently processed vertex, the oldest data is quickly output. . Of course, it does not preclude 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.
[0087] 単純プリミティブ列の演算処理においては, 移送された頂点データは, 頂 点列の順番に応じて SVCから F P Aへと配送される。 FPAは, 所定の数 の 4コンポーネントベクタ一を S V Cから受け取った場合に, 頂点演算を始 めるようにされている。 所定の数は, 移送された頂点について V P Uが出力 したベク トルの数と等しい。 FPAは, 移送された頂点列から三角形をアツ センブルし, そしてラスタライズ処理のためにラスタライゼ一シヨンパイプ ラインへと配送される。 [0088] 拡張されたプリミティブの演算処理は P Eにおいてなされるので, 変換さ れた頂点データは, 最初に P Eへ送られる。 P Eも, 固定されたサイズのプ リミティブの演算処理と, 可変サイズの拡張されたプリミティブの演算処理 という, 主に 2つの演算モードを有する。 固定サイズのプリミティブの演算 モードにおいて, P Eは, F P Aと同様に S V Cから所定の数の 4つのコン ポーネントベク トルを受けると, 頂点の演算処理を開始する。 拡張されたプ リミティブの演算処理結果は, 単純なプリミティブの列からなる形式で, P 巳から F P Aへと配送される。 P Eから出力される単純なプリミティブの列 は, 単純プリミティブの頂点列として再現可能な形式で実現され, プリミテ イブ列は 4つのコンポーネントベク トルをもって表現される。 これは, V C C , P V C , V P U s , S V C , F P Aなど単純プリミティブの演算処理に 用いられる多くのハードウエアは, P Eに拡張されたプリミティブ処理のた めの演算処理機構を付加するのみで, 拡張されたプリミティブを処理する際 にも再利用できることを意味する。 更に, ホストメモリに格納される頂点属 性に関しては, 単純プリミティブの演算処理と同程度しか頂点キヤッシュを 利用しないので, 拡張されたプリミティブの演算処理を迅速に行うことがで き, その結果, 拡張されたプリミティブに関するチップ上での迅速な演算処 理を実現できる。 [0087] 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 the vertex operation 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. [0088] Since the 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: fixed-size primitive arithmetic processing and variable-size extended primitive arithmetic processing. In the fixed-size primitive operation mode, the PE starts vertex processing when it receives a predetermined number of four component vectors from the SVC, as in the FPA. The result of the extended primitive processing is delivered from P F to FPA in the form of a simple sequence of primitives. The sequence of simple primitives output from the PE is realized in a format that can be reproduced as the 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 is expanded by adding an arithmetic processing mechanism for primitive processing extended to PE. This means that it can be reused when processing primitives. Furthermore, with respect to vertex attributes stored in the host memory, vertex caches are used only to the same extent as simple primitives, so that the extended primitives can be processed quickly. It is possible to realize a rapid calculation process on the chip for the primitives that have been processed.
[0089] 固定サイズの拡張されたプリミティブを処理するモードにおいて, P Eは それぞれの頂点データを受け取った後, すなわち, 特定の数の 4つのべク ト ルを S V Cから受け取つた後に演算処理アルゴリズムを実行する。 演算処理 アルゴリズムは, 受け取った頂点データの蓄積を管理するとともに, 固定サ ィズの拡張されたプリミティブを頂点列から再構築した瞬間やその演算処理 が簡潔された瞬間を検出する。  [0089] In the mode of processing fixed-size extended primitives, the PE executes the arithmetic algorithm after receiving each vertex data, that is, after receiving a specific number of four vectors from the SVC. To do. The computation algorithm manages the accumulation of received vertex data, and detects the moment when the fixed-size extended primitive is reconstructed from the vertex sequence and the moment when the computation is simplified.
[0090] 固定サイズの拡張されたプリミティブを演算処理する際のひとつの好まし い動作システム例は, T W Nプリミティブ列を演算処理するモ一ドであり, それは上述した固定サイズの拡張されたプリミティブの演算処理にしたがつ て行われる。 T W Nプリミティブの列は, 中心三角形列の中のひとつと同様 の空間的な整合性を有する。 しかしながら, プリミティブのサイズは, 単な る三角形の 2倍であるから, キャッシュサイズがキャッシュヒットレ一卜が 中心三角形列の演算処理のものと同様に刷るために, 2次的キャッシュのサ ィズを大きくしなければならない。 [0090] One preferred operating system for computing fixed-size extended primitives is the mode of computing TWN primitive sequences, which is the above-mentioned fixed-size extended primitives. This is done according to the calculation process. The sequence of TWN primitives is the same as one of the central triangle sequences Spatial consistency. However, since the size of the primitive is twice that of a simple triangle, the cache size is the same as that of the computation processing of the central triangle sequence with the cache hit level as the size of the secondary cache. Must be increased.
[0091 ] T W Nプリミティブの列は, 頂点データのフェッチング, 移送, 及びキヤ ッシングに関して, 単純プリミティブの列と同様の演算処理が行われる。 相 違点は, 変換された頂点データの送り先が F P Aではなく P Eであるという 点である。 そして, 変換された頂点データは, 入力された頂点の順に S V C から P Eへとひとつひとつ配送される。  [0091] The T W N primitive sequence is processed in the same way as the simple primitive sequence for vertex data fetching, transport, and caching. The difference is that the destination of the converted vertex data is not PE but PE. The converted vertex data is delivered from S V C to PE one by one in the order of the input vertices.
[0092] 可変サイズの拡張されたプリミティブの演算処理を行うために, V C Cの 論理回路は, 本発明において, 以下の手段を提供するように修正される。 す なわち, インデックスバッファの内容を正確に解析して, プリミティブを形 成する頂点の頂点位置属性の頂点属性ィンデックスからプリミティブサイズ を分離する手段, P Eへとプリミティブサイズに関する情報を配送する手段 , 及び, これから処理を行う, まだ配送されていない可変サイズの拡張され たプリミティブの頂点の数を計測して, P Eへ伝えるとともに, プリミティ ブに関する演算処理を始めさせるために頂点データの配送が終わったことを P Eへと知らしめる手段, である。 この修正は, 本発明の特有のものである 。 V C Cの残りの機能は固定されたサイズのプリミティブを演算処理するも のをそのまま用いることができ, したがって固定されたサイズのプリミティ ブを演算処理するための機能をそのまま用いることができる。  [0092] In order to perform arithmetic processing of extended primitives of variable size, the V C C 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 and 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 Measure the number of vertices of extended primitives of variable size that have not yet been delivered, and send them to the PE, and the delivery of vertex data has been completed in order to start the primitive processing. Is a means of making PE known. This modification is unique to the present invention. The remaining functions of V CC can be used as they are for processing fixed-size primitives. Therefore, the functions for processing fixed-size primitives can be used as they are.
[0093] 具体的な具現例では, 頂点位置属性のためのィンデックスバッファ中のプ リミティブの初めのインデックスは, V C C論理回路の可変サイズの拡張さ れたプリミティブ演算処理のモ一ドにおいてそのサイズを決定する。 図 7に 基づいて説明すると, V C C 2 0 0 0は, その内部にある頂点カウンタ一 2 1 0 0を初期化し, 次のプリミティブの始まりを検出するために次に処理を されるインデックスごとにカウンタ一値を減らす。 プリミティブの演算処理 において P Eが利用可能となっているので, サイズは, 拡張されたプリミテ ィブを形成するための頂点列の頂点属性が S V Cから配送されると同じパス を用いて P E内のプリミティブサイズレジスタ 91 00へと配送される。 プ リミティブサイズレジスタ 91 00は, P E内のプリミティブ演算処理アル ゴリズムによりアクセスできるように実装され, 頂点列を用いてプリミティ ブを再構築できるようにされている。 [0093] In a specific implementation, the first index of the primitive in the index buffer for the vertex position attribute is its size in the VCC logic circuit's extended primitive arithmetic processing mode. To decide. Explaining based on Fig. 7, VCC 2 0 0 0 initializes the vertex counter 1 2 0 0 inside it, and counts for each index processed next to detect the start of the next primitive. Reduce one price. Since PE is available for primitive processing, the size is extended When the vertex attribute of the vertex sequence to form the ive is delivered from the SVC, it is delivered to the primitive size register 9100 in the PE using the same path. The primitive size register 9100 is implemented so that it can be accessed by the primitive arithmetic processing algorithm in the PE, and the primitive can be reconstructed using the vertex sequence.
プリミティブサイズに関する情報が P Eから VCCへと配送されるので, VCCが SVCから P Eへと変換された頂点データを送り始めることができ ることとなる。 頂点データのフェッチング, 移送及び SVCへの配送に関す る演算処理は, 固定プリミティブのものと同様である。 頂点の配送指令は, サイズ情報を含む最初のィンデックスに続くインデックスバッファに記憶さ れるインデックス列により決められる。 P Eにプリミティブを演算処理する ためのアルゴリズムは, 頂点情報を蓄積し, VCCの頂点カウンタ一 21 0 0の数値を減らすために, それぞれの頂点の属性列が P Eへと配送された後 となるように実装される。 カウンタ一が 0になったときは, 全ての頂点デ一 タが P Eへと配送されたことを意味し,その旨の通知の信号が接続 2300を 介して, VCCから P Eへと配送される。 接続 2300を介して信号を受領 すると, P Eは内部でのプリミティブ演算処理を始める。 システムオペレー シヨンのひとつの好ましい例は, 基本となる CCS Pプリミティブ列として 記述されるコントロールメッシュから再分割表面を発生させるための CCS Pプリミティブ列に関する処理を行うことである。 演算処理は, 可変サイズ の拡張されたプリミティブの演算処理にしたがって行われる。 CCS Pプリ ミティブ列との空間的な整合性 (Spatial coherency) は極めて高い。 実際に , イレギュラーな頂点以外の隣接するパッチの演算処理において, CCS P プリミティブは 1 6個の頂点のうち 1 2個もの頂点を共有することができ, したがって次の GGSPプリミティブを演算処理するために 4つのみの頂点を加 える演算処理を行い, SVCへと配送すればよい。 このようにして, 拡張さ れたプリミティブを演算処理するための頂点キャッシュの使用は, データの アクセスコストを大幅に軽減し, パッチの近隣における再分割パッチのチッ プ上での演算処理を実現できることとなる。 図 6に示される例では, 全てで 22個の頂点のうち 1 4個を共有する連続する 2つのパッチであり, SVC のヒット率は, 約 64%であり, より長い列の場合はより高くなると考えら れる。 そのような大きなプリミティブに関する処理を行うために, 頂点キヤ ッシュやインデックスバッファ /頂点/くッファを用いなければ, 頂点処理の ために, 極めて大きなメモリコス卜が必要となると考えられる。 Since information about the primitive size is delivered from the PE to the VCC, the VCC can start sending vertex data converted from the SVC to the PE. The processing for vertex data fetching, transport, and delivery to the SVC is the same as for fixed primitives. Vertex delivery commands are determined by the index string stored in the index buffer following the first index containing size information. The algorithm for computing the primitives in the PE accumulates vertex information and reduces the value of the VCC vertex counter 210 0 after each vertex attribute sequence is delivered to the PE. To be implemented. When the counter reaches 0, it 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 connection 2300. When a signal is received via connection 2300, the PE begins internal primitive processing. One preferred example of a system operation is to perform processing on a CCS P primitive sequence to generate a subdivision surface from a control mesh described as a basic CCS P primitive sequence. Arithmetic processing is performed according to the arithmetic processing of extended primitives of variable size. Spatial coherency with the CCS P primitive column is extremely high. In fact, in the calculation of adjacent patches other than irregular vertices, CCS P primitives can share as many as 12 vertices out of 16 vertices, and therefore to process the next GGSP primitive. It is only necessary to perform arithmetic processing that adds only four vertices to and deliver it to the SVC. In this way, the use of a vertex cache to compute the extended primitives greatly reduces the data access costs, and the subdivision patch chip in the vicinity of the patch. It is possible to realize arithmetic processing on the network. In the example shown in Figure 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. It is considered to be. If a vertex cache or index buffer / vertex / buffer is not used to perform processing related to such large primitives, a very large memory cost will be required for vertex processing.
[0095] 上述のような接続 2300から信号を受領して処理を行う CCS Pプリミ ティブの再分割パッチの場合は, 演算処理に必要な全ての情報は P Eに配送 されているので, P Eが Gatmul卜 Glark再分割表面アルゴリズム (Jeffrey Bo I z and [0095] In the case of the CCS P primitive subdivision patch that receives the signal from the connection 2300 and processes it as described above, all the information necessary for the operation processing is delivered to the PE.卜 Glark subdivision surface algorithm (Jeffrey Bo I z and
Peter Schroder, in Proceedings of the Web3D 2002 Symposium (WEB3D-02) ) や, the Web3D 2002 Symposium (WEB3D-02) , pages 11-18, New York, Feb ruary  Peter Schroder, in Proceedings of the Web3D 2002 Symposium (WEB3D-02)), the Web3D 2002 Symposium (WEB3D-02), pages 11-18, New York, Feb ruary
24 28 2002, ACM Press,に開示された演算処理や他のパッチごとの再分割ァ ルゴリズムに従って, CCS Pプリミティブの中心四角形に含まれる再分割 メッシュを作成し始めることができる。  24 28 2002, ACM Press, can start to create subdivided meshes contained in the center rectangle of CCS P primitives according to the algorithm and other subdivided algorithms for each patch.
再分割パッチの演算処理の結果は, 他の拡張されたプリミティブと同様に, 入力情報に応じて, 三角形や, F P Aにおける三角形ストリップ, などとさ れる。 本発明の別の側面は, 上記のようなシステムを集積回路において実現 するものであり, 固定された又は可変サイズの拡張されたプリミティブをォ ンチップで演算処理できるものである。 また, そのような集積回路を含むグ ラフィックカードや, そのような集積回路を含むビデオゲーム装置をも提供 する。  As with other extended primitives, the result of the subdivision patch operation processing is a triangle, a triangle strip in FPA, etc., depending on the input information. Another aspect of the present invention is to realize the above-described system in an integrated circuit, which can perform fixed-type or variable-size extended primitives on-chip. We also provide graphic cards that include such integrated circuits and video game devices that include such integrated circuits.
[0096] 本発明は, Gatmul卜 Glark再分割スキームによって生成された再分割表面の 高速な処理を実現するために, 上記のような集積回路を用いるシステムに関 する。 本発明の拡張されたプリミティブを演算処理するための装置は, リア ルタイムレンダリングのインタラクティブな 3次元コンピュータグラフイツ クスに用いることができる。 その 3次元コンピュータグラフィックスとして , 同時にポリゴンのメッシュの多数の頂点にアクセスするためのアルゴリズ ムを実装するとともに, N U R B Sパッチによる碁盤の目や再分割された表 面により表現された複雑な幾何学的な形状のリアルタイムなレンダリングに 関するものがあげられる。 [0096] The present invention relates to a system using an integrated circuit as described above in order to realize high-speed processing of a subdivision surface generated by the Gatmul 卜 Glark subdivision scheme. The apparatus for processing the extended primitive of the present invention can be used for interactive 3D computer graphics for real-time rendering. As 3D computer graphics , Implements an algorithm for accessing multiple vertices of a polygon mesh at the same time, and for real-time rendering of complex geometric shapes represented by grid eyes and subdivided surfaces using NURBS patches. Something related to it.
[0097] 例えば, そのような装置は, 3次元画像を視覚化する 3次元コンピュータ グラフィックスにおけるハードゥエァァクセレ一タカ一ド, パーソナルデジ タルァシスタンス, ビデオゲーム装置, 力一ナビゲ一シヨンシステムなどに 用いることができる。 [0097] For example, such a device includes a hard-work selection card in 3D computer graphics for visualizing a 3D image, a personal digital assistance, a video game device, a force navigation system, etc. Can be used for
実施例 1  Example 1
[0098] これらの画像は, 株式会社デジタルメディアプロフェッショナルの P I C Αとして知られるエミュレータ一に本発明の装置を実装させて, 各種 3次元コ ンピュ一タグラフィックス画像を得た。 図 8 A , 図 8 B , 図 9 A , 図 9 B , 図 1 0 A , 図 1 0 B , 図 1 1 A及び図 1 1 Bは, 本発明の装置を用いて得ら れた画像結果を示す。 図 8 Aと図 8 Bとは, シルエットの方向を比較し, 視 覚化の可否を検討するものであり, 図 8 Aは視覚化できず, 図 8 Bは視覚化 できたものである。 例えば, マンガのキャラクタをアニメーションするとい つた形状のァゥトラインを強調する必要があるような用途には, 図 8 Bに示 されるようなシルエツトによる視覚化を用いることができる。  [0098] These images were obtained by mounting the device of the present invention on an emulator known as PIC C of Digital Media Professional Co., Ltd. to obtain various 3D computer graphics images. 8A, FIG. 8B, FIG. 9A, FIG. 9B, FIG. 10A, FIG. 10B, FIG. 11A, and FIG. 11B are image results obtained using the apparatus of the present invention. Indicates. Figures 8A and 8B compare the direction of the silhouette and examine the possibility of visualization. Figure 8A cannot be visualized, and Figure 8B can be visualized. For example, for animation applications where it is necessary to emphasize the shape of the contour line when animating a manga character, visualization using a silhouette as shown in Fig. 8B can be used.
[0099] 図 9 Aと図 9 Bとは, 本発明における再分割を行う前後の簡単なディスク のような形状のものをレンダリングした図を示す。 図 9 Aは, もとの荒いメ ッシュを用いたものを示し, 図 9 Bは, 再分割過程においてポリ銀を追加し て再分割したメッシュを用いたものを示す。 図 1 0八と図1 O Bとは, 図 9 A及び図 9 Bに比べてより複雑な形状のものに再分割を行ったものを示す図 である。 図 1 1 A , 図 1 1 Bは, それぞれワイヤ一フレームを除いた図 1 0 Aと図 1 0 Bのシェーディングに関する。 本発明は, 頂点キャッシュにより ァクセレートされ, 再分割アルゴリズムをオンチップで実装できる。 よって , 本発明は, ビデオゲームで重要な特徴である単純なメッシュに基づいて再 分割を行うことにより得られる複雑な形状について実時間での発生や視覚化 を行うことができることとなる。 [0099] FIGS. 9A and 9B show a rendering of a simple disk-like shape before and after re-division in the present invention. Figure 9A shows the one using the original rough mesh, and Figure 9B shows the one using the mesh subdivided by adding polysilver in the subdivision process. Figures 10-8 and 1OB are figures showing re-division into a more complicated shape compared to Figures 9A and 9B. Figures 11A and 11B relate to the shading of Figures 10A and 10B, respectively, excluding one wire frame. The present invention is accelerated by the vertex cache and can implement the subdivision algorithm on-chip. Therefore, the present invention provides real-time generation and visualization of complex shapes obtained by subdivision based on simple meshes, which is an important feature in video games. Can be performed.
産業上の利用可能性 Industrial applicability
本発明の拡張されたプリミティブを演算処理する装置は, リアルタイム 3 次元コンピュータグラフィックスの分野などで利用されうる。  The extended primitive processing apparatus of the present invention can be used in the field of real-time 3D computer graphics.

Claims

請求の範囲 The scope of the claims
[1 ] 単純プリミティブを記述するとともに, 可変サイズの拡張されたプリミティ ブ列を, 可変サイズの拡張されたプリミティブごとに 4つ以上の頂点データ を用いて記述する 3次元コンピュータグラフィックスのための方法であって 複数の属性を含む頂点列を保存でき, 前記属性のバッファメモリ上の位置 を, 前記頂点列における頂点番号であるインデックスを整数倍した値と, 属 性のタイプを示す番号を用いてバイァスすることにより求めることができる ようにされる頂点バッファを用いて特定するとともに, 前記インデックスと 前記属性のタイプを示す番号とを用いて, 前記頂点バッファにおける, ある 頂点の頂点属性のメモリ上の位置を特定する, 頂点バッファの特定工程と, 前記頂点列に関連して前記頂点バッファにおける頂点位置属性値列を格納 し, 可変サイズの拡張されたプリミティブのサイズであるプリミティブサイ ズに関するインデックスを記憶し, 前記固定サイズのプリミティブ列を, 前 記頂点列を用いて再構築できるようにし, 前記可変サイズの拡張されたプリ ミティブ列を, プリミティブサイズに関するインデックスを用いることによ り再構築できるようにする, インデックスバッファにおけるインデックスを 特定する, インデックスバッファの特定工程と, そして,  [1] A method for 3D computer graphics that describes simple primitives and describes variable-size extended primitive sequences using four or more vertex data for each variable-size extended primitive A vertex sequence including a plurality of attributes can be stored, and the position of the attribute in the buffer memory is obtained by multiplying an index that is a vertex number in the vertex sequence by an integer number and a number indicating the attribute type. It is specified using a vertex buffer that can be obtained by biasing, and using the index and a number indicating the type of the attribute, the vertex attribute in the vertex buffer in the memory is stored in the vertex buffer. The position of the vertex buffer is identified, and the vertex buffer is associated with the vertex sequence in the vertex buffer. Stores the vertex position attribute value sequence, stores an index related to the primitive size, which is the size of the variable-size extended primitive, and allows the fixed-size primitive sequence to be reconstructed using the vertex sequence, Enabling the variable-size extended primitive sequence to be reconstructed by using an index relating to a primitive size, identifying an index in an index buffer, identifying an index buffer, and
前記工程で求められなかった残りの頂点属性について, 可変サイズの拡張 されたプリミティブであってもプリミティブサイズに関するインデックスを 用いないことを除けば, 頂点位置属性を求める方法と同じ方法によって, 残 留している全ての頂点属性を求める, 複数のインデックスバッファの特定ェ 程と,  For the remaining vertex attributes that were not obtained in the previous step, even if the primitives were extended in variable size, the remaining vertex attributes were retained in the same manner as the method for obtaining the vertex position attributes, except that the primitive size index was not used. Multiple index buffer specific processes to find all the vertex attributes
を有する方法。  Having a method.
[2] 前記 "複数のインデックスバッファを特定する工程" の替わりに,  [2] Instead of the above-mentioned “step for identifying multiple index buffers”,
属性列における属性インデックスを頂点において全ての属性が共有され, 頂点位置属性列におけるインデックスバッファは, その他の頂点属性につい ても同様に参照するために用いられる請求項 1に記載の方法。 The method according to claim 1, wherein all attributes are shared in the vertex with the attribute index in the attribute column, and the index buffer in the vertex position attribute column is used to refer to other vertex attributes as well.
[3] 固定サイズの拡張されたプリミティブを記述するために前記インデックスバ ッファを用いずに, 前記固定サイズの拡張されたプリミティブ列を頂点バッ ファ中の頂点列から形成する請求項 1に記載の方法。 3. The fixed size extended primitive sequence is formed from the vertex sequence in the vertex buffer without using the index buffer to describe the fixed size extended primitive. Method.
[4] 3次元コンピュータグラフィックスにおいて, 頂点キャッシュを用いて固定 サイズ又は可変サイズの拡張されたプリミティブ列の演算処理を行うための 方法であって, [4] In 3D computer graphics, a method for computing fixed-size or variable-size extended primitive sequences using a vertex cache,
可変サイズの拡張されたプリミティブのプリミティブサイズを頂点位置属 性のィンデックスバッファからフェッチングし, 前記プリミティブサイズを 固定された論理回路又はプログラマブルな拡張されたプリミティブのアツセ ンブル及び演算処理を行うュニットであるプリミティブエンジンへ配送する 工程と,  This is a unit that fetches the primitive size of a variable-size extended primitive from the index buffer of the vertex position attribute, and performs assembly and arithmetic processing on the logic circuit with a fixed primitive size or a programmable extended primitive. Delivering to the primitive engine,
頂点キャッシュから頂点データがなくなった際には, 頂点キャッシュ中の 拡張されたプリミティブの頂点に関する頂点データをフェッチし, 頂点デ一 タを変換し, そして蓄積する工程と,  When there is no more vertex data in the vertex cache, fetch the vertex data for the extended primitive vertices in the vertex cache, convert and store the vertex data;
拡張されたプリミティブをアッセンブルし, 演算処理するために, 変換さ れた頂点デ一タを前記プリミティブェンジンへ配送する工程と,  Delivering the converted vertex data to the primitive engine for assembling and processing the extended primitive;
前記プリミティブエンジンにおける拡張されたプリミティブをアッセンブ ルし演算処理する工程と,  Assembling and computing the extended primitives in the primitive engine;
プリミティブエンジンにおける拡張されたプリミティブの演算処理によつ て生じる固定サイズの単純プリミティブをアッセンブルし, 更にプリミティ ブのラスタライズ用パイプラインへ運ぶために固定サイズプリミティブ集積 回路へ配送する工程と,  Assembling fixed-size simple primitives resulting from the processing of extended primitives in the primitive engine and delivering them to a fixed-size primitive integrated circuit for transport to a primitive rasterization pipeline;
を含む方法。  Including methods.
[5] 前記可変サイズの拡張されたプリミティブをフェツチングする工程は,  [5] Fetching the variable-size extended primitive includes:
拡張されたプリミティブの頂点についての頂点位置属性列を記述するインデ ックスバッファを加速することと, プリミティブを形成する頂点を参照する 次の Niインデックスとともに, そのプリミティブに関する最初のィンデックス 値を取り戻すことにより行われ, ここで, は i番目のプリミティブの取り戻された値を示し, 前記インデッ クスバッファにおけるそれより前のプリミティブのサイズ位置に続いて, 次 のプリミティブのサイズは Ni +1番目の位置に格納される, This is done by accelerating the index buffer that describes the vertex position attribute sequence for the extended primitive's vertices, and by retrieving the first index value for that primitive, along with the next Ni index that references the vertices that form the primitive. , Here, indicates the recovered value of the i-th primitive, and the size of the next primitive is stored in the Ni + 1 position following the size position of the previous primitive in the index buffer.
請求項 4に記載の方法。  The method of claim 4.
[6] 前記変換されていない頂点データの頂点属性の列の形式によるフェッチング は, [6] The fetching in the form of a column of vertex attributes of the unconverted vertex data is
固定サイズの拡張されたプリミティブの場合には, 固定サイズの拡張された プリミティブ又は頂点/くッファに記憶されるものを整列することにより示さ れる頂点/くッファから行われ,  In the case of fixed-size extended primitives, the fixed-size extended primitives or vertices / kuffers are indicated by aligning those stored in the vertex / kuffer,
可変サイズの拡張されたプリミティブの演算を行う場合には, 頂点バッファ 内の内容を参照することにより関係しない頂点位置属性のィンデックスを含 むインデックスバッファのプリミティブと関連する最初のィンデックスを有 する固定サイズの拡張されたプリミティブ又は可変サイズの拡張されたプリ ミティブの場合は, 1又は複数のインデックスバッファから選択された列の 頂点/くッファから行われる ,  When performing operations on variable-size extended primitives, a fixed-size with the first index associated with the index buffer primitive that contains the index of the vertex position attribute that is not relevant by referring to the contents of the vertex buffer For extended primitives or variable-size extended primitives, this is done from the vertices / buffers of the columns selected from one or more index buffers,
請求項 4に記載の方法。  The method of claim 4.
[7] 3次元コンピュータグラフィックスに用いられるシステムであって, [7] A system used in 3D computer graphics,
最近用いられた頂点/くッファの部分の内容にアクセスでき, 前記頂点/くッフ ァから前記頂点データを取得するための初期頂点バッファストア (Pr i mary V ertex Cache Store, P V C ) と,  The contents of the recently used vertex / buffer part can be accessed, the initial vertex buffer store (P V C) for obtaining the vertex data from the vertex / buffer,
前記初期頂点バッファストア (P V C ) から得られた前記頂点データを用い て頂点を移送するための 1つ又は複数の頂点プロセッシングュニット (V P One or more vertex processing units (V P) for transporting vertices using the vertex data obtained from the initial vertex buffer store (P V C).
U ) と, U) and
前記頂点プロセッシングユニット (V P U ) により最近処理された変換され た頂点データにアクセスするための第 2の頂点キャッシュストア (S V C ) と 単純プリミティブ列により構成される単純及び拡張されたプリミティブのプ ロセッシングゃそれらに必要な情報を回収するためのプリミティブエンジン (P E) と, Simple and extended primitive processing consisting of a second vertex cache store (SVC) and a simple primitive sequence to access transformed vertex data recently processed by the vertex processing unit (VPU). Primitive engine for collecting necessary information (PE) and
固定されたプリミティブのタイプについての列から単純プリミティブの収集 を実現し, そして, ラスタライズのために前記単純プリミティブをラスタラ ィズパイプラインへ出力するための固定プリミティブアセンブリ (FPA) と,  A fixed primitive assembly (FPA) for collecting simple primitives from a sequence of fixed primitive types and outputting the simple primitives to a raster pipeline for rasterization;
インデックスバッファの内容にアクセスし, 配送し,  Access and deliver the contents of the index buffer,
前記拡張された可変サイズのプリミティブを処理する際には, プリミティ ブサイズに関する情報を前記プリミティブエンジン (P E) に伝え, 前記初期頂点/くッファストァ ( P V C ) における頂点/くッファ部分のフェ ツチングを制御し,  When processing the extended variable-size primitive, information on the primitive size is transmitted to the primitive engine (PE) to control the vertex / kuffa part fetching in the initial vertex / buffer (PVC). ,
前記初期頂点バッファストア (PVC) に蓄積された属性値から頂点情報の 収集を制御するとともに, 移送された頂点が初期頂点バッファストア (PV C) から喪失した場合は, 移送のために前記頂点プロセッシングユニット ( VPU) へ収集された頂点を移送するように制御し, そして,  Controls the collection of vertex information from the attribute values stored in the initial vertex buffer store (PVC), and if the transferred vertices are lost from the initial vertex buffer store (PV C), the vertex processing is performed for transfer. Control to transfer the collected vertices to the unit (VPU), and
単純プリミティブ及び拡張されたプリミティブに関する情報を収集すると共 にそれらの処理を行うために, 前記第 2の頂点キャッシュストア (SVC) か ら前記プリミティブエンジン (P E) への配送された頂点情報を配送される ことを制御する  In order to collect information about simple primitives and extended primitives and to process them, the distributed vertex information from the second vertex cache store (SVC) to the primitive engine (PE) is distributed. Control
頂点キャッシュ制御装置 (VCC) とを具備する,  A vertex cache controller (VCC),
システム。  system.
[8] 前記変換された頂点データをプリミティブエンジンに配送する工程を用いず 前記頂点データを直接前記固定サイズのプリミティブ集積回路へ配送でき, 固定サイズプリミティブ集積回路, 固定サイズの単純プリミティブ, 固定サ ィズの拡張されたプリミティブ及び可変サイズの拡張されたプリミティブの 演算処理がプリミティブエンジンにより実現される  [8] The vertex data can be directly delivered to the fixed-size primitive integrated circuit without using the process of delivering the converted vertex data to the primitive engine. The fixed-size primitive integrated circuit, the fixed-size simple primitive, the fixed size Primitive engine implements the processing of extended primitives and variable-size extended primitives
請求項 7に記載のシステム。  The system according to claim 7.
[9] 可変サイズの拡張されたプリミティブの演算処理を行う場合に, プリミティ ブエンジンへプリミティブサイズを配送する工程は, 前記プリミティブを形 成する頂点を形成するためにプリミティブエンジンへと変換された頂点デ一 タもともに配送される, [9] When performing variable-size extended primitive processing, The process of delivering the primitive size to the sub-engine also delivers the vertex data converted to the primitive engine to form the vertices forming the primitive.
請求項 7に記載のシステム。  The system according to claim 7.
[10] 前記頂点プロセッシングユニット (V P U ) が固定サイズのプリミティブや 可変サイズのプリミティブの処理するモードを行うように設計されており, 前記固定サイズのプリミティブの処理モードは固定サイズの単純プリミティ ブの演算処理及び固定サイズの拡張されたプリミティブの演算処理に用いら れ, 一方, 可変サイズのプリミティブの演算処理モードは可変サイズの拡張 されたプリミティブの演算処理に用いられる, [10] The vertex processing unit (VPU) is designed to perform a fixed-size primitive or variable-size primitive processing mode, and the fixed-size primitive processing mode is a fixed-size simple primitive operation. Processing and fixed-size extended primitive arithmetic processing, while variable-size primitive arithmetic processing mode is used for variable-size extended primitive arithmetic processing.
請求項 7に記載のシステム。  The system according to claim 7.
[1 1 ] 請求項 7に記載のシステムを含む集積回路であって, [1 1] An integrated circuit including the system according to claim 7,
前記集積回路上の複数のコンポーネントはリアルタイムに実行され, 固定さ れたサイズの拡張されたプリミティブ列又は可変サイズの拡張されたプリミ ティブ列の演算処理をリアルタイムに行うことができる集積回路。  An integrated circuit in which a plurality of components on the integrated circuit are executed in real time and can perform arithmetic processing of an extended primitive sequence having a fixed size or an extended primitive sequence having a variable size in real time.
[12] 請求項 1 1に記載の集積回路を具備するグラフィックスカード。 [12] A graphics card comprising the integrated circuit according to claim 11.
[13] 請求項 1 1に記載の集積回路を具備するビデオゲームマシーン。 13. A video game machine comprising the integrated circuit according to claim 11.
[14] 請求項 1 1に記載の集積回路を具備するリアルタィム表面再分割レンダリング システム。 14. A real-time surface subdivision rendering system comprising the integrated circuit according to claim 11.
PCT/JP2007/001196 2006-11-01 2007-10-31 Device for accelerating the processing of extended primitive vertex cache WO2008053597A1 (en)

Priority Applications (1)

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

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006-297590 2006-11-01
JP2006297590 2006-11-01

Publications (1)

Publication Number Publication Date
WO2008053597A1 true WO2008053597A1 (en) 2008-05-08

Family

ID=39343949

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2007/001196 WO2008053597A1 (en) 2006-11-01 2007-10-31 Device for accelerating the processing of extended primitive vertex cache

Country Status (2)

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

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011522322A (en) * 2008-05-29 2011-07-28 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド System, method and computer program product for plane filling engines using geometry shaders
JP2012137984A (en) * 2010-12-27 2012-07-19 Digital Media Professional:Kk Image processing system
JP2012234533A (en) * 2011-04-29 2012-11-29 Harman Becker Automotive Systems Gmbh Database for navigation device, method of outputting three-dimensional representation of terrain and method of generating database
CN109147021A (en) * 2017-06-27 2019-01-04 三星电子株式会社 Use the system and method for cache management of cached state table
CN111047503A (en) * 2019-11-21 2020-04-21 中国航空工业集团公司西安航空计算技术研究所 Attribute storage and assembly optimization circuit for vertex group commands
CN113868280A (en) * 2021-11-25 2021-12-31 芯和半导体科技(上海)有限公司 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
CN115829825A (en) * 2023-01-10 2023-03-21 南京砺算科技有限公司 Method for controlling loading of primitive data, graphics processor, device, and storage medium

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2976893C (en) 2005-12-09 2019-03-12 Fallbrook Intellectual Property Company Llc Continuously variable transmission
EP1811202A1 (en) 2005-12-30 2007-07-25 Fallbrook Technologies, Inc. A continuously variable gear transmission
US8996263B2 (en) 2007-11-16 2015-03-31 Fallbrook Intellectual Property Company Llc Controller for variable transmission
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
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
WO2020176392A1 (en) 2019-02-26 2020-09-03 Fallbrook Intellectual Property Company Llc Reversible variable drives and systems and methods for control in forward and reverse directions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075804A1 (en) * 2000-03-31 2001-10-11 Intel Corporation Tiled graphics architecture
JP2004103021A (en) * 2002-09-12 2004-04-02 Internatl Business Mach Corp <Ibm> Method for rendering triangular mesh

Family Cites Families (4)

* 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
US6741249B1 (en) * 2002-03-20 2004-05-25 Electronics Arts, Inc. Method and system for generating subdivision surfaces in real-time
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075804A1 (en) * 2000-03-31 2001-10-11 Intel Corporation Tiled graphics architecture
JP2004103021A (en) * 2002-09-12 2004-04-02 Internatl Business Mach Corp <Ibm> Method for rendering triangular mesh

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011522322A (en) * 2008-05-29 2011-07-28 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド System, method and computer program product for plane filling engines using geometry shaders
US8836700B2 (en) 2008-05-29 2014-09-16 Advanced Micro Devices, Inc. System, method, and computer program product for a tessellation engine using a geometry shader
JP2012137984A (en) * 2010-12-27 2012-07-19 Digital Media Professional:Kk Image processing system
JP2012234533A (en) * 2011-04-29 2012-11-29 Harman Becker Automotive Systems Gmbh Database for navigation device, method of outputting three-dimensional representation of terrain and method of generating database
US9441978B2 (en) 2011-04-29 2016-09-13 Harman Becker Automotive Systems Gmbh System for outputting a three-dimensional representation of a terrain
CN109147021A (en) * 2017-06-27 2019-01-04 三星电子株式会社 Use the system and method for cache management of cached state table
CN109147021B (en) * 2017-06-27 2023-08-04 三星电子株式会社 System and method for cache management using a cache state table
CN111047503A (en) * 2019-11-21 2020-04-21 中国航空工业集团公司西安航空计算技术研究所 Attribute storage and assembly optimization circuit for vertex group commands
CN111047503B (en) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 Attribute storage and assembly optimization circuit of vertex array class command
CN113868280A (en) * 2021-11-25 2021-12-31 芯和半导体科技(上海)有限公司 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
CN115829825A (en) * 2023-01-10 2023-03-21 南京砺算科技有限公司 Method for controlling loading of primitive data, graphics processor, device, and storage medium

Also Published As

Publication number Publication date
JPWO2008053597A1 (en) 2010-02-25
JP2012014744A (en) 2012-01-19
JP5216130B2 (en) 2013-06-19
JP4913823B2 (en) 2012-04-11

Similar Documents

Publication Publication Date Title
WO2008053597A1 (en) Device for accelerating the processing of extended primitive vertex cache
US6704018B1 (en) Graphic computing apparatus
KR102101626B1 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
JP3981302B2 (en) Hierarchical image-based representation of a three-dimensional stationary or moving object and method and apparatus for using the representation for rendering an object
TWI264183B (en) Method for compressing data in a bit stream or bit pattern
TWI330782B (en) Subdividing geometry images in graphics hardware
US8059119B2 (en) Method for detecting border tiles or border pixels of a primitive for tile-based rendering
US20020060685A1 (en) Method, system, and computer program product for managing terrain rendering information
US20030151604A1 (en) Volume rendering with contouring texture hulls
TWI361393B (en) Systems and methods for providing a shared buffer in a multiple fifo environment
JP3892016B2 (en) Image processing apparatus and image processing method
US11087511B1 (en) Automated vectorization of a raster image using a gradient mesh with arbitrary topology
CN115330986A (en) Partitioned rendering mode graphic processing method and system
CN104050619B (en) Template with shared edge and then overlay path are rendered
US7362335B2 (en) System and method for image-based rendering with object proxies
KR102270750B1 (en) Parallel micropolygon rasterizers
US7372461B2 (en) Image processing apparatus and method of same
KR20160068204A (en) Data processing method for mesh geometry and computer readable storage medium of recording the same
Liu et al. Accelerating volume raycasting using proxy spheres
GB2592604A (en) Image generation system and method
KR100868396B1 (en) Graphic processing system and method for subdividing geometry images
US11869123B2 (en) Anti-aliasing two-dimensional vector graphics using a compressed vertex buffer
GB2514410A (en) Image scaling for images including low resolution text
US20230230197A1 (en) Texture mapping
US11436783B2 (en) Method and system of decoupled object space shading

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07827975

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2008541994

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07827975

Country of ref document: EP

Kind code of ref document: A1