WO2000077738A1 - Segmenting compressed graphics data for parallel decompression and rendering - Google Patents

Segmenting compressed graphics data for parallel decompression and rendering Download PDF

Info

Publication number
WO2000077738A1
WO2000077738A1 PCT/US2000/015775 US0015775W WO0077738A1 WO 2000077738 A1 WO2000077738 A1 WO 2000077738A1 US 0015775 W US0015775 W US 0015775W WO 0077738 A1 WO0077738 A1 WO 0077738A1
Authority
WO
WIPO (PCT)
Prior art keywords
wherem
blocks
vertices
block
vertex
Prior art date
Application number
PCT/US2000/015775
Other languages
French (fr)
Inventor
Michael F. Deering
Original Assignee
Sun Microsystems, 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 Sun Microsystems, Inc. filed Critical Sun Microsystems, Inc.
Priority to DE60004827T priority Critical patent/DE60004827T2/en
Priority to AT00941277T priority patent/ATE248410T1/en
Priority to EP00941277A priority patent/EP1185958B1/en
Priority to AU56004/00A priority patent/AU5600400A/en
Publication of WO2000077738A1 publication Critical patent/WO2000077738A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Definitions

  • the present invention relates to computer graphics systems, and more particularly, to decompressing and rendering compressed three-dimensional geometry data.
  • 3D graphics data may be several orders of magnitude larger than comparable 2D graphics data
  • simple 2D graphics data may simply include color information for each pixel displayed
  • 3D graphics data may include x,y,z position information, normal information, color information, transparency information, texture map information, reflectivity information, and additional information This information is collectively referred to herein as "vertex component information"
  • vertex component information A number of different techniques have been proposed to reduce the bandwidth requirements of 3D graphics data.
  • geometry compression One type of geometry compression is described in detail m U S. Patent No.
  • geometry compression relies upon reusing vertices (among other techniques) to reduce the size of the 3D graphics data.
  • vertices a number of points (called vertices) are specified.
  • Each vertex may have a number of attributes associated with it. For example, each vertex may have color information associated with it Other attribute that may be associated with vertices are texture map coordinates, normals, color, and transparency information.
  • each vertex on the sphere may have a texture map coordinate specifying how the texture should be applied (i.e., which part of the sample texture should be mapped to that particular vertex).
  • a normal is a vector from the vertex that is perpendicular to the surface of the object at the vertex. This is illustrated in the 3D object of Fig 1.
  • the 3D object may be represented by a number of vertices (represented as dots in the figure) Normals for the object are represented by arrows that extend perpendicularly from the object's surface at each vertex point.
  • Normals are vectors or directions in three-dimensional space.
  • normals also called surface normals
  • vertices are typically grouped together to form polygons such as t ⁇ angles, as shown in figure 3
  • a t ⁇ angle has three vertices. However, many times t ⁇ angles share vertices.
  • vertices 1-2-3 form a first t ⁇ angle and vertices 2-3-4 form a second t ⁇ angle
  • vertices 2 and 3 are shared between the two t ⁇ angles 3D objects may be represented by specifymg a number of tnangles This is shown
  • each vertex e.g., xyz location, color, normal, etc.
  • the information about a vertex can be stored (e g., when it is first transmitted) for later use.
  • the vertex may be read from storage instead of having to be re-transmitted.
  • the vertex information may be stored m a "mesh buffer" and then reused. This may advantageously reduce the amount of information that must be transmitted and may thus save bandwidth This is illustrated in Fig. 5.
  • the t ⁇ angles may be organized into a mesh (e g , a predetermined number of neighboring vertices
  • the mesh may then be encoded as one or more "t ⁇ angle-st ⁇ ps"
  • the t ⁇ angle stnp may start with the following t ⁇ angles- 6,1,7, 1,7,2, 7,2,3, 7,3,4, 7,4,8, 4,8,5, et seq.
  • each vertex in the triangle stnp may desc ⁇ be from 1/3 to one triangle
  • vertex 6 describes 1/3 of t ⁇ angle 6,1,7 Vertex 2 desc ⁇ bes one t ⁇ angle 1,7,2.
  • a vertex may even descnbe two or even more t ⁇ angles.
  • one type of generalized t ⁇ angle stnp may be defined as follows (encodmg the 3D object from Fig 6):
  • R is a restart tag (indicating that a new mesh is beginning)
  • O denotes replace oldest
  • M denotes replace middle.
  • the terms "oldest” and "middle” may be visualized as representmg three registers that are used m formmg tnangles from the t ⁇ angle stnp representation.
  • the sample encodmg above is merely one nomenclature that may be used to represent how the vertices of the mesh are being encoded.
  • the example nomenclature uses letters (O and M) to indicate which vertex should be discarded from the three registers when formmg a new t ⁇ angle.
  • O indicates the oldest vertex should be discarded.
  • M mdicates the middle vertex should be discarded.
  • R mdicates that a section of mesh is bemg started This is used to clear the oldest, middle, and newest registers and the mesh buffer, if desired
  • a generalized t ⁇ angle mesh utilizing a mesh buffer may be defined as follows (once agam encodmg the 3D object of Fig 6)
  • a trailing letter "p” denotes "push mto mesh buffer”
  • the number following a capital letter is a vertex number, and a negative number is the mesh buffer reference, in which "-1" denotes the most recent pushed vertex
  • geometry compression may explicitly push old vertices (e g , vertices with a trailing letter "p" above) mto a mesh buffer These old vertices may be explicitly referenced when the old vertex is again needed
  • Figs 8A-8N illustrate one embodiment of this method graphically
  • the mesh buffer may be used to store designated vertices (l e , those followed by a "p") These vertices may later be read out of the mesh buffer
  • the compression program may tessellate or divide the surface of the object into a plurality of vertices, e g , a NURBs (Non-Uniform Rational B-splme) object
  • the compression program may then divide the vertices mto groups of generalized t ⁇ angle meshes as descnbed above These meshes may then be compressed and encoded using a similar process to that descnbed above
  • the compressed data may then be stored (e g , on a CD-ROM or DVD-ROM) and/or transmitted (e g , on the Internet)
  • the bandwidth savmgs may also apply to buses used for transmission of the 3D geometry data within the graphics system itself
  • Fig 9 illustrates one embodiment of a graphics system 20 configured to utilize compressed 3D geometry data m
  • Geometry decompressor 12 receives the compressed data and decompresses it
  • a mesh buffer 14 may be used to store vertices that will be reused.
  • mesh buffer references may be encoded within the compressed data to mdicate which vertices will be reused and thus should be stored m the mesh buffer.
  • the transform and lighting processors work independently and m parallel to perform the following functions: (a) transform the vertices formmg primitive from their o ⁇ gmal coordmate reference frame (e.g., object space) mto a common reference frame (e g , world space or screen space); and (b) "light" each vertex by determining which light sources affect each vertex and how much they are affected.
  • o ⁇ gmal coordmate reference frame e.g., object space
  • a common reference frame e.g , world space or screen space
  • draw processor 22 is configured to render the transformed and lit primitives and apply texture mappmg (e g , from texture map memory 24).
  • textures may mstead be applied during the lighting process (collectively refe ⁇ ed to as "shading") usmg a programmable shader
  • Draw processor 22 is configured to raste ⁇ ze the primitive mto frame buffer 28
  • frame buffer 28 is double buffered, with one buffer bemg draw into by draw processor 22 while the second buffer is bemg read by DACs 30 DACs 30 may read frame buffer 28 asynchronously with respect to draw processor 22.
  • DACs 30 form an output video signal that is typically used to d ⁇ ve a display device such as a CRT mo tor or LCD panel display
  • a display device such as a CRT mo tor or LCD panel display
  • geometry compression is particularly advantageous m high performance graphics systems.
  • further mcreases in performance are still demanded by modern applications.
  • an efficient method for increasing the performance of graphics systems configured to utilize 3D graphics data that has been compressed mto generalized tnangle mesh format is desired
  • a graphics system capable of increased performance while utilizing compressed 3D geometry data is also desired.
  • the problems outlined above may, in part, be solved by a graphics system capable of conveying 3D geometry data that is used generally by many vertices only once. This allows subsequent vertices usmg the same 3D geometry data to transmit less data per vertex. In some embodiments, this may be accomplished by usmg a bit (or bits) of the data block as a multicast/unicast bit. In some embodiments, the bit may be set to instruct the control unit to globally dist ⁇ bute the 3D geometry data to all decompressor, transform, lighting, or other processors. This embodiment may have the potential of improving speed and efficiency by decreasmg the repetition of transmitting identical 3D geometry data (such as color, texture, etc.).
  • Efficiency may also be mcreased by delaymg the formation of mdependent primitives until after transformation and/or lighting has been performed.
  • vertices that are shared by more than one primitive have the potential to only be transformed and lit once, as opposed to bemg transformed and lit once for each t ⁇ angle to which they belong.
  • Transforming and or lighting may thus be performed on an individual vertex basis mstead of on a geometnc primitive basis.
  • the individually transformed and lit vertices are then assembled mto primitives for rendering.
  • the graphics system may utilize a transformed vertex cache to store transformed and lit vertices. Each time a particular vertex is needed to form a geometnc primitive, the vertex is read from the transformed vertex cache.
  • Each vertex may be accessed usmg a tag assigned to the vertex during decompression.
  • the graphics system may utilize a transformed vertex buffer that is similar to a mesh buffer m function. However, mstead of storing vertices generated by the geometry decompressor, the transformed vertex buffer stores transformed and lit vertices. Mesh buffer references may be used by the transformed vertex buffer to determme which transformed and lit vertices should be stored m the transformed vertex buffer. Note, as used herem, the term vertices need not be limited to traditional polygonal primitive vertices
  • the vertices refe ⁇ ed to herein may also be control vertices for Bezier or NURB curves or surface
  • Fig 1 is an illustration of a three-dimensional object with vertices and surface normals.
  • Fig. 2 is an illustration of one type of surface normal.
  • Fig. 3 is an illustration of three-dimensional object that has been tessellated into triangles
  • Fig 4 is one example of a list of vertices formmg tnangles that descnbmg a three-dimensional object
  • Fig 5 illustrates the reuse of vertices when formmg tnangles
  • Fig 6 depicts an example tnangle mesh.
  • Figs. 7A-H illustrate one method for decompressmg a generalized t ⁇ angle stnp.
  • Figs. 8A-N depict one method for utilizing a mesh buffer to decompress a generalized tnangular mesh data structure.
  • Fig 9 depicts one embodiment of a graphics system configure to utilize compressed three-dimensional geometry data.
  • Fig 10 depicts one embodiment of a computer network.
  • Fig. 11 illustrates one embodiment of a computer system that mcludes a three-dimensional graphics system
  • Fig 12 illustrates a simplified block diagram illustratmg one embodiment of the computer system of Fig 11
  • Fig. 13 illustrates one embodiment of the graphics system from Fig. 12.
  • Fig 14 illustrates one alternative embodiment of the graphics system from Fig. 12.
  • Fig. 15A illustrates one method for representing a vertex in object space.
  • Fig. 15B illustrates one method for representing a vertex m world space.
  • Fig. 15C illustrates one method for representmg a vertex m screen space.
  • Fig 16 is a flowchart illustrating one embodiment of a method for reducing redundant transformation and or lighting calculations m a graphics system.
  • Fig. 17 is a diagram illustrating another embodiment of the graphics system from Fig. 12.
  • Fig. 18 is a diagram illustrating one embodiment of a data sequence that may be utilized with a graphics system configured to perform parallel decompression of compressed 3D geometry data.
  • Fig. 19A illustrates the parallel execution of a sequence of blocks.
  • Fig 19B illustrates how multicast instructions may reduce overall efficiency m some systems with many pipelines
  • Fig 19C illustrates how movmg the state-setting instruction mto the unicast instructions prevents the pipelines that execute unicast blocks 242D-E from having to execute the unnecessary state-setting instruction
  • Fig 20A illustrates one embodiment of a method for encodmg compressed geometry data within blocks that are configured to be decompressed independently and in parallel
  • Fig 20B illustrates details of the encodmg illustrated m Fig 20A
  • a graphics system accordmg to the present mvention may be used to achieve improved performance by reducmg redundant processmg
  • compressed geometry data may still be utilized by the system Before descnbmg the system and related method m detail, the overall environment m which the present mvention may be practiced will be descnbed
  • Fig 10 depicts an example computer network
  • the computer network comp ⁇ ses a server 60 that is configured to convey compressed 3D geometry data to clients 70A-C
  • server 60 may generate the compressed 3D geometry data m real time
  • the 3D geometry data may be generated off lme
  • the compressed 3D geometry data may be conveyed to clients 70A-C m a number of different manners
  • server 60 may transmit the compressed 3D geometry data via a physical communications network 68
  • Communications network may mclude Internet links, cable links, and phone lmes
  • Server 60 may also convey the compressed 3D geometry data usmg a physical earner medium 62 (e g , a CD, DVD, or magnetic medium)
  • Another means for conveying the compressed 3D geometry data may mclude wireless transmission (e g , via dish antenna 64 and satellite 66) Combmations of these and other methods may also be utilized
  • clients 70A-C may mclude computer systems such as personal computers (PCs), laptop computers, network computers (NCs), television sets with "set top” decoder boxes, game boxes, and other electronic devices capable of manipulating and or displaying 3D computer graphics
  • PCs personal computers
  • NCs network computers
  • PDAs personal digital assistants
  • virtual reality workstations e g , computers havmg head-mounted displays
  • Fig. 11 illustrates one embodiment of a computer system 80 that mcludes a three-dimensional (3-D) graphics system.
  • the 3-D graphics system may be comp ⁇ sed m any of vanous systems, mcludmg a computer system, network PC, Internet appliance, a television, mcludmg HDTV systems and interactive television systems, personal digital assistants (PDAs), and other devices which display 2D and or 3D graphics, among others
  • the computer system 80 compnses a system unit 82 and a video monitor or display device 84 coupled to the system unit 82.
  • the display device 84 may be any of vanous types of display monitors or devices (e.g , a CRT, LCD, or gas-plasma display).
  • Vanous mput devices may be connected to the computer system, mcludmg a keyboard 86 and/or a mouse 88, or other mput device (e g , a trackball, digitizer, tablet, six- degree of freedom mput device, head tracker, eye tracker, data glove, body sensors, etc )
  • Application software may be executed by the computer system 80 to display 3-D graphical objects on display device 84
  • the 3-D graphics system m computer system 80 mcludes a super-sampled sample buffer with a programmable real-time sample-to-pixel calculation unit to improve the quality and realism of images displayed on display device 84.
  • Fig. 12 illustrates a simplified block diagram illustrating the computer system of Fig 11 Elements of the computer system that are not necessary for an understanding of the present invention are not shown for convenience.
  • the computer system 80 includes a central processing unit (CPU) 90 coupled to a highspeed memory bus or system bus 94 (also refe ⁇ ed to as host bus 94)
  • a system memory 92 may also be coupled to high-speed bus 94.
  • Host processor 90 may compnse one or more processors of varying types, e g , microprocessors, multiprocessors and CPUs
  • the system memory 92 may compnse any combination of different types of memory subsystems, mcludmg random access memones, (e.g., Static Random Access Memories or "SRAMs",
  • the system bus or host bus 94 may comprise one or more communication or host computer buses (for communication between host processors, CPUs, and memory subsystems) as well as specialized subsystem buses
  • a 3-D graphics system or graphics system 100 accordmg to the present mvention is coupled to the high-speed bus 94.
  • the 3-D graphics system 100 may be coupled to the bus 94 by, for example, a crossbar switch or other bus connectivity logic.
  • vanous other peripheral devices may be connected to the high-speed bus 94
  • the 3-D graphics system may be coupled to one or more of the buses m computer system 80 and/or may be coupled to vanous types of buses.
  • the 3D graphics system may be coupled to a communication port and thereby directly receive graphics data from an external source, e.g., the Internet or a network.
  • display device 84 is connected to the 3- D graphics system 100 compnsed m the computer system 80.
  • Host CPU 90 may transfer information to and from the graphics system 100 accordmg to a programmed input/output (I/O) protocol over host bus 94.
  • graphics system 100 may access the memory subsystem 92 accordmg to a direct memory access (DMA) protocol or through intelligent bus mastering.
  • DMA direct memory access
  • a graphics application program conforming to an application programming interface (API) such as OpenGLTM or Java 3DTM may execute on host CPU 90 and generate commands and data that define a geometnc primitive (graphics data) such as a polygon for output on display device 84. As defined by the particular graphics interface used, these primitives may have separate color properties for the front and back surfaces.
  • Host processor 90 may transfer these graphics data to memory subsystem 92. Thereafter, the host processor 90 may operate to transfer the graphics data to the graphics system 100 over the host bus 94.
  • the graphics system 100 may read m geometry data a ⁇ ays over the host bus 94 usmg DMA access cycles.
  • the graphics system 100 may be coupled to the system memory 92 through a direct port, such as the Advanced Graphics Port (AGP) promulgated by Intel Corporation
  • AGP Advanced Graphics Port
  • the graphics system may receive graphics data from any of vanous sources, mcludmg the host CPU 90 and/or the system memory 92, other memory, or from an external source such as a network, e g , the Internet, or from a broadcast medium, e g , television, or from other sources.
  • graphics system 100 may be configured to delay geometnc pnmitive assembly so as to reduce or eliminate redundant vertex processing
  • graphics system 100 may also be configured as a stand-alone device (e.g , with its own built-in display).
  • Graphics system 100 may also be configured as a single chip device or as part of a system-on-a-chip or a multi-chip module.
  • Fig 13 illustrates one embodiment of graphics system 100 that is configured to utilize compressed 3D geometry data and reduce redundant processmg of reused vertices
  • Graphics system 100 receives compressed 3D geometry data from mput bus 10
  • Geometry decompressor 12 receives and decompressed the data into object space vertices The difference between object-space, world-space, and screen space coordmates and vertices are explamed m detail below (see Fig 15).
  • mesh buffer 14 is optional because the vertices need not be assembled mto complete geometnc pnmitives within decompressor 12 Instead, m this embodiment the 3D geometry data may be decompressed mto two types of information (1) individual vertices, and (2) connectivity information As used herem the term "connectivity information" means information that indicates how the vertices are connected together. For example, connectivity mformahon may mclude mesh buffer references. The connectivity information is routed by decompressor 12 to set up/draw processor 22.
  • the individual object-space vertices are distributed (e.g., m a load-balancing manner) to transform/lighting processors 18A-N.
  • the transform/lighting processors 18A-N transform the object-space vertices to world space or screen space coordmates, and then perform lighting calculations.
  • the transformed and lit vertices are then conveyed to set up/draw processor 22.
  • Set up/draw processor 22 is configured to receive both the transformed and lit vertices from processors 18A-N and the connectivity information from geometry decompressor 12. Based on the connectivity information, set up/draw processor 22 is configured to assemble the transformed and lit vertices mto geometnc primitives.
  • a transformed vertex buffer 106 may be used by set up/draw processor 22 to assemble the geometnc pnmitives (e.g., usmg registers 108). Assembly of geometnc pnmitives may be accomplished m a similar manner to that used by geometry decompressor 12 m Figs.
  • set up/draw processor 22 may utilize transformed vertex buffer 106 to store the transformed and lit vertices accordmg to the connectivity mformation from decompressor 12.
  • the connectivity mformation may mclude mesh buffer references from the compressed 3D geometry data. These mesh buffer references may be used to selectively push and pop transformed and lit vertices onto transformed vertex buffer 106.
  • transformed vertex buffer 106 may be configured as a stack that is accessible usmg top-of-stack relative addressing (e g , as shown m Fig 8N).
  • vertices 1-3 could have been routed to processor 18A, while vertices 4-6 could have been routed to processor 18B.
  • duphcative transformation and lighting of repeated vertices may be reduced or elimmated. This is possible because m most cases vertices may be treated as mdependent pomts on an object's surface. Which vertices neighbor each other is typically irrelevant for coordmate transformation calculations and lighting calculations
  • FIG. 14 illustrates an alternate embodiment of graphics system 100
  • set up/draw processor 22 mstead utilizes a transformed vertex cache 110
  • transformed vertex cache 110 As used herem the term "transformed vertex memory" (also refe ⁇ ed to as a "processed vertex memory”) mcludes both transformed vertex buffers, transformed vertex caches, and other memory devices configured to store vertices that are have been transformed from their onginal coordmate reference frame.
  • the transformed vertex memory may store vertices that have been subjected to one or more of the following processes: model transformation, view transformation, clip testmg, perspective transformation, lighting, texturing, shadmg, or more complex programmable shadmg or other processes.
  • decompressor 12 is configured to receive and decompress compressed 3D geometry data mto vertices. However, decompressor 12 is also configured to assign a tag to each decompressed vertex. The decompressed vertices are then routed with their tags to transform and lighting processors 18A-N Decompressor 12 is also configured to generate connectivity information using the vertex tags. As in the previous embodiment, the connectivity information is provided to set up/draw processor 22.
  • Set-up/draw processor 22 is configured to receive the transformed and lit vertices (and their associated tags) and store them into transformed vertex cache 110 and tag a ⁇ ay 112, respectively.
  • transformed vertex cache 110 may be direct mapped, set-associative, or fully associative.
  • Set up/draw processor 22 then assembles geometric primitives based on the connectivity information provided by decompressor 12.
  • the connectivity information may comprise a sequences of tags. These tags may be used by set up/draw processor 22 to read the transformed and lit vertices out of cache 110 (using tag a ⁇ ay 112) and into register 110.
  • a primitive is formed in registers 110, it is then rendered (i.e., drawn) into frame buffer 28.
  • the amount of redundant processing performed on shared/reused vertices may be reduced.
  • this embodiment may allow reuse of vertices beyond a particular mesh (e.g., beyond the boundaries of a single triangle mesh).
  • registers 108 with storage for only three vertices per primitive, other configurations are also possible (e.g., four or more vertices for polygons, two vertices for lines, or one vertex for dots).
  • graphics system 100 is shown as receiving compressed 3D geometry data, other types of data may also be received and used.
  • decompressor 12 may be configured to receive uncompressed 3D geometry data in some embodiments.
  • the 3D graphics data may include data in a number of different formats. For example, three dimensional objects that are part of the scene may be represented as volumes, surfaces, or 3D objects that have been tessellated into a plurality of polygons (e.g., triangles or quadrilaterals).
  • the 3D graphics data may also include objects modeled with NURBs (non-uniform rational B- splines), volume elements, subdivision surfaces, meshes and other techniques.
  • NURBs non-uniform rational B- splines
  • the 3D data may be generated by computer animators, by 3D scanning devices, 3D cameras, 3D digitizers, or other techniques. Depending upon the format in which the 3D graphics data is received, it may be manipulated before being transformed into a plurality of vertices.
  • decompressor 12 acts more like a connectivity information generator by generating the vertex tags and co ⁇ esponding connectivity information for the vertices instead of actually decompressing the data.
  • the data may be compressed using non-geometric methods (e.g., numerical compression such as LZW compression). While the bandwidth reduction benefits may not be fully realized in such an embodiment, graphics system 100 may nevertheless be able to reduce the amount of redundant transformation and lighting that is performed on shared/reused vertices
  • connectivity information generator 12 may be configured with an untransformed vertex cache 114 and co ⁇ esponding tag a ⁇ ay 116. As decompressor/connectivity information generator 12 receives data, it may assign tags and then store the vertices and their co ⁇ esponding tags to untransformed vertex cache 114 and tag a ⁇ ay 116, respectively. Decompressor/generator 12 may then examine vertices as they are received. If a co ⁇ esponding entry is already in untransformed vertex cache 114, then the vertex has already been transformed and lit and should be stored in transformed vertex cache 110.
  • decompressor/generator 12 may convey the tag to set up-draw processor 22 without having the vertex re- transformed. If transformed vertex cache 110 does not have a copy of the transformed vertex, this may be signaled back to decompressor/generator 12 and decompressor/generator 12 may convey the untransformed vertex to one of transform and lighting processors 18A-N.
  • the size of caches 110 and 114 may vary dependmg upon the organization of the mput graphics data. For example, if the graphics data is highly organized (e.g., mto generalized meshes), a smaller cache may contain enough storage to be effective. If however, the graphics data contams random vertices, then a larger cache may be more effective m reducing redundant transform and lighting calculations.
  • each embodiment may mclude different mformation with vertices stored m transformed vertex buffer 106 (or transformed vertex cache 110), a partial list of information that may be included with some or all of the vertices follows- vertex position (e g., x,y,z coordmate m world space or screen space), texture mappmg coordmates (e.g , 2D coordmates, 3D coordmates, multiple texture map coordmates, 4D coordmates), color (e.g., red, green, and blue components), transparency information (e.g., an alpha component), normal mformation (e.g., Nx, Ny, Nz), lighting information, displacement map information, reflectivity information, bump map information, blur mformation, an intensity and b ⁇ ghtness mformation, and other control mformation.
  • vertex position e g., x,y,z coordmate m world space or screen space
  • texture mappmg coordmates e.g
  • some embodiments there may be multiple set up/draw processors (e g , one for each transform and lighting processor or one for every two transform and lighting processors) and multiple decompressor units. These embodiments will be descnbed m greater detail below (see discussion of Fig 17) However, the transformation calculations performed by transform and lighting processors 18A-N will be described first, as will a method for implementing the previously descnbed embodiments.
  • Fig. 15A illustrates a particular point or vertex 150 with relation to a co ⁇ espondmg object's coordmate axes 140
  • the position of vertex 150 may be specified by identifying its x, y, and z offset from coordinate axes 140
  • Fig. 15B illustrates the same vertex 150, but this time m relation to a "world-space" coordinate axes 142.
  • world coordinate axes 142 need not be on an object. Instead, world coordmate axes 142 may be m world space offset from any objects
  • the coordmates of vertex 150 in world space i.e., relative to world coordmate axes 142
  • the ongmal object-space coordmates (as shown m Fig. 15A) may be offset by the difference m position of object coordmate axes 140 and world coordmate axes 142.
  • Fig. 15C illustrates one type of screen space coordmate system.
  • Vertex 150 may be specified in relation to screen coordmate axes 144 Note, m many applications the offset of screen coordmate axes 144 to object coordmate axes 140 is dependent upon the viewer's cu ⁇ ent position or viewpomt.
  • the coordmates of vertex 150 m world space i.e., relative to world coordmate axes 142
  • the ongmal object-space coordmates (as shown m Fig. 15 A) may be offset by the difference m position of world space coordmate axes 142 and screen space coordmate axes 144.
  • transformation The process of translating a particular vertex from object to world space or to screen space is refe ⁇ ed to as "transformation". This may be performed by transform and lighting processors 18A-N. Method For Reducing Redundant Transformation/Lighting - Fig. 16
  • Fig 16 is a flowchart illustrating one embodiment of a method to reduce redundant transformation and or lighting calculations performed on shared vertices
  • a shared vertex is one that is part of two or more geometnc pnmitives
  • the term "geometnc primitive" shall mclude, but not be limited to, dots, lmes, tnangles, polygons, volume elements, and surface elements
  • the geometry data is received by the graphics system (step 180)
  • the geometry data is decompressed mto individual vertices and co ⁇ espondmg connectivity mformation is generated (step 182)
  • the geometnc data need not be compressed when received by the graphics system
  • the connectivity mformation may mclude mesh buffer-type references, vertex tags, or other schemes for indicating which vertices should be combmed to form geometnc pnmitives
  • the vertices are dist ⁇ aded to transformation/lighting processors (step 184)
  • there are multiple transformation and lighting processors configured to work independently and m parallel
  • the vertices may dist ⁇ ubbed accordmg to known load balancing techniques to maximize throughput for each processor
  • separate processors may handle transformation and lighting
  • Alternative embodiments may combme transformation, lighting, and textunng m a process called shadmg
  • the graphics system may be configured to perform only transformation (step 186) before assembling the vertices mto geometnc pnmitives
  • the graphics system may perform both transformation and lighting (step 188) before assemblmg the vertices mto geometric pnmitives
  • the vertices are assembled mto geometnc pnmitives usmg the previously generated connectivity mformation, regardless of whether both transformation and lightmg are performed or just transformation (step 190)
  • a sample buffer takes the place of a traditional frame buffer by storing samples m lieu of pixels The samples are then filtered to form a final pixel value
  • Use of a sample buffer allows super-samplmg, m which the total number of samples is greater than the total number of pixels
  • Super-sampling has a number of benefits, mcludmg a more realistic picture and the capability to perform on-the-fly anti-aliasing More information on super-samplmg is presented in the U S Patent Application Serial No 09/251,449, entitled "A Graphics System With Programmable Sample Positions" by Michael F Deenng, David Naegle, and Scott Nelson, filed on February 17, 1999 (Attorney Docket No 5181-24200)
  • the steps may be performed in a different order, m parallel, or some steps may be elimmated (e g , step 188 or step 194) Additional steps may also be performed For example, multiple transformation steps 186 may be performed to translate the vertices from object space to world space and from world space to screen space Furthermore, multiple iterations through lightmg step 188 may be performed if multiple light sources are activated Other graphics processes may also be performed (e g , texture mappmg, bump mapping, displacement mappmg, shadowmg, specular highlighting, foggmg, etc )
  • Fig 17 is a diagram illustrating another embodiment of graphics system 100
  • graphics system 100 comp ⁇ ses a control unit 190 that is configured to receive compressed geometry data 208 (e.g., from host CPU 90 in Fig. 12) and route the compressed geometry data to one or more of decompressors 12A-N.
  • Decompressors 12A-N are configured to receive and decompress the compressed geometry data.
  • the decompressed geometry data which includes one or more vertices, is then conveyed to transform and lighting processors 18A-18N.
  • each co ⁇ esponding pair of decompressors and transform and lighting units may be refe ⁇ ed to herein as a "decompression/render pipeline".
  • each set up/draw unit 22A-N has its own transformed vertex buffer 106A-N and its own set of oldest-middle-newest registers 108A-N. These may function similarly to those described in connection with Fig. 14 above.
  • FIFO First-In First-Out memories may be utilized in the pipelines (e.g., between control unit 190 and decompression units 12A-N) to buffer the data being distributed by control unit 190.
  • compressed graphics data 208 may include predefined control information. Some of this control information may be utilized during the decompression process.
  • compressed graphics data 208 may include control information indicating the type of compression used or specific information about the particular mesh that is compressed. One such type of control information may be an indication of the color depth being used in the particular mesh. Another type of control information may be an indication as to whether color information is specified for each vertex (i.e., a bundle color bit) or whether color information is defined separately (e.g., one global color for all vertices in the mesh). Other control information (e.g., transparency or alpha information) may also be embedded in the compressed geometry data.
  • the control information may set the "state" of a state machine within one or more of decompressors
  • control information may be designated as either "global" or "local" control (or state) information.
  • the control information is global if it is intended to affect the state of all decompressors 12A-N, all transform/lighting processors 18A-N, or all set up/draw processors 22A-N in graphics system 100. Conversely, if the control information is intended to only affect the state of a single decompressor, transform/lighting unit, or set up/draw unit, then the control information is local.
  • Contiol unit 190 may be configured to detect whether the control information embedded in the stream of compressed geometry data is global or local, and then route the control information accordingly. For example, if a certain set of control information is global, then control unit 190 may be configured to send copies of the control information to each decompression/render pipeline in graphics system 100. If control unit 190 determines that the control information is local, control unit 190 conveys the control information to a single decompression/render pipeline along with the vertex or vertices that are associated with the control information.
  • control unit 190 may receive a stream of compressed graphics data 208 that begins with a global set color instruction. Control unit 190 may then convey this global control information to each of decompressors 12A-12N. Then control unit 190 may pass compressed vertices in round-robin fashion to decompressors 12A-N. After each vertex is decompressed, each vertex is assigned the global color. If control unit 190 then detects a second global set color instruction with a new color, control unit 190 again sends copies of the instruction to each decompressor, which proceed to assign the new color to all vertices they receive after the global change color instruction.
  • control unit 190 may be configured to invalidate the contents of transformed vertex buffers 106A-N m response to detecting a global control instruction. This may prevent a vertex that is reused with different colors from bemg rendered more than once with the same color. Note, while color and transparency are used m the examples above, other types of local and control mformation are also possible and contemplated. In some embodiments, the designation of whether the state/control information is global or local may be accomplished through the use of a unicast/multicast bit within compressed graphics data 208, as descnbed m greater detail below.
  • Unicast/Multicast - Fig. 18 is a diagram illustrating one embodiment of a data sequence 208 that may be utilized with a graphics system configured to perform parallel decompression of compressed 3D geometry data.
  • data sequence 208 compnses a stream of data blocks 200A-C
  • Each data block mcludes a multicast bit 202, a length mdicator 204, and a data portion 206 Multicast bit 202 indicates whether the block is a unicast block or a multicast block.
  • Unicast blocks are conveyed to a smgle decompression render pipeline Multicast blocks, however, are conveyed to all decompressor/render pipelmes m the graphics system
  • Length indicators 204 each hold a value that indicates where the next block m the data sequence begins.
  • a number of different length encodmg schemes may be used.
  • m one embodiment blocks 200 are aligned to 32- bit word boundanes.
  • length mdicators 204 may store a value indicative of the number of 32-bit words until the start of the next block.
  • the length mdicators may be the total length of the cu ⁇ ent block (m 32-bit words).
  • the length mdicators may mdicate the length the following data portion 206 (either m bits, bytes, or words).
  • Length mdicators 204 may preferably have a fixed length, or they may be va ⁇ able length with a prefix that mdicates the length of the length mdicator 204 itself.
  • Data portion 206 is configured to store compressed 3D geometry data (as well as other mformation, m certain embodiments)
  • the length of data portions 206 may be limited to a predetermined maximum (e g., 2k bytes or 512 32-bit words). In such an embodiment, the maximum length of length mdicators 204 may be limited to 9-b ⁇ ts, assuming a 32-bit word length.
  • va ⁇ able-length length mdicator 204 data portion 206 may not have a maximum length. Note the configuration illustrated m the figure is for explanatory purposes only and is not meant to be limiting For example, multicast bit 202 may be lengthened to several bits to mclude additional mformation.
  • Data portions 206 may store compressed geometry data co ⁇ esponding to predetermined mesh size.
  • data portions may be configured to each store compressed geometry mformation co ⁇ espondmg to a 16x16 mesh of vertices, as previously noted, each vertex may compnse varying amounts of mformation, mcludmg xyz position, color mformation, normal mformation, texture mappmg mformation, and other vertex component mformation.
  • control unit 190 may be configured to efficiently route each block accordmg to multicast bits 202 and length mdicators 204 A. Length mdicators 204 enable control unit 190 to determme block boundanes. For each block received by control unit 190, the co ⁇ espondmg multicast bit 202 directs control unit 190 to convey a block to a smgle decompression/render pipeline (unicast) or all decompression/render pipelmes (multicast).
  • control unit 190 may be configured to route the block to the decompression/render pipeline with the least processmg backlog (e.g., to the pipeline that most likely is avadable) While this configuration provides a great deal of flexibility, m some embodiments certain rest ⁇ ctions may be placed upon the format of data sequence 208 to simplify the hardware of control umt 190 and graphics system 100 (e.g., by reducmg or eliminating the need of mdependent decompress/render pipelmes havmg to communicate and/or coordmate with each other).
  • state mformation means mformation that is bemg set solely for use with future vertices. As previously noted, some state mformation (e.g., color and normal information) may be set for a particular vertex of mesh and then reused from one vertex to the next.
  • a multicast block may serve to reset all decompression/rendering pipelmes to a predetermined state. This may be useful when control unit 190 receives blocks that begin a new 3D object.
  • mformation stored in the mesh buffer is also state information, as previously noted each block may be forced not to rely on any previously entered mesh buffer mformation. Similarly, if a block is designated as a unicast block, to reduce mterdependence between the decompress/render pipelmes, the block may be limited to geometry information rather than "state" information.
  • geometry mformation means any mformation that does not cany forward from one block to another
  • mesh buffer contents, vertex position mformation, and color information may all be considered geometry mformation (dependmg upon the exact implementation of graphics system 100)
  • Another possible restnction that may be used to prevent any vertices within a block from relying upon any previous mformation supplied in a previous block is to require that the first vertex of each block be accompanied by a restart tag.
  • a restart tag is a tag that mdicates that a new mesh is starting. The restart tag may be used to indicate to the set up/draw processor that all previous entries m registers 108 and or transformed vertex memory 106 should be invalidated (withm the co ⁇ espondmg decompression/render pipeline).
  • delta encodmg or delta-delta encodmg of vertex component mformation may also be rest ⁇ cted.
  • some embodiments of graphics system 100 may be configured to encode the color of a second vertex as an offset relative to a first vertex.
  • the position of second vertex may be specified as an offset relative to first vertex.
  • This type of delta or delta-delta encodmg is useful because m many cases neighbonng vertices may have similar attnbutes. For example, neighbonng vertices will typically have xyz position coordmates that are relatively similar.
  • a simple offset e.g., 8-b ⁇ ts each for x, y, and z
  • this type of decodmg may complicate control unit 190.
  • some embodiments of graphics system 100 may force the first vertex m a block to be explicit (e.g., 32-b ⁇ ts of position mformation for each x, y, and z). Delta encoding may thus be limited to vertices occurring after the first vertex in each block.
  • Delta-delta encoding may be limited to vertices occurring after the second vertex in each block.
  • this restriction may not be notably burdensome because vertices from different blocks (i.e., different meshes) may have greater likelihood of having less in common than vertices from the same block/mesh.
  • Still another such restriction is that vertices in a particular data portion 206 may not use mesh buffer state information from a previous block. This restriction promotes the independence of each block and may free control unit 190 from having to route the blocks in a particular manner.
  • One option for implementing graphics system 100 is to guarantee that any multicast block will be seen by every decompress/render pipeline before any subsequent blocks in data sequence 208. For example, if block 200A is first block in data sequence 208, the data may be encoded such that block 200B is a multicast block. If so, then block 200C may be encoded to rely upon the state-setting information contained in block 200B.
  • This optional restriction may once again simplify control unit 190.
  • each decompress/render pipeline may be limited to executing that blocks that it receives in an "in-order" fashion. For example, if each pipeline has a buffer to store pending blocks, the pipeline may be forced to read from the buffer in a FIFO manner. Out-of-order processing within a particular pipeline would not be allowed in this embodiment.
  • graphics system 100 may guarantee that any blocks preceding a multicast block will be executed before the multicast block is executed (within a particular pipeline). This may be implemented in the same manner described above (i.e., by forcing each pipeline to execute blocks it receives in the order in which they are received).
  • control unit 190 Depending upon the implementation and the amount of complexity within control unit 190 that is acceptable, restrictions are also possible on other types of state information. Examples include limitations on the block-to-block propagation of color information (e.g., set by Java 3D setColor instructions), bundling information (e.g., set by Java 3D bundling instructions), or Huffman table settings.
  • the geometry compression used may rely upon programmable Huffman tables for decompression. The tables may be loaded by Java 3D setTable instructions. After the decompression table is set, each following vertex and or primitive may be decoded utilizing the table.
  • the aforementioned restrictions may be programmed into a geometry compression program (or dedicated geometry compression hardware) that follows the restrictions when creating the compressed 3D geometry data.
  • the requirements above may be programmed into a load-timer verifier that is run as part of the decompression process. Before decompression begins, the load-time verifier may examine the data to determine which, if any of the requirements have been violated.
  • Graphics system 100 may be optimized to support a particular set of compression requirement. However, if data that does not comply with the particular compression requirements is received, in some embodiments graphics system 100 may still be configured to decompress the data (albeit at a less than optimal rate). For example, in a worst-case scenario all of the blocks may be routed in-order to a single decompress/render pipeline. While slow, this method may still allow accurate decompression and rendering of some types of compressed 3D geometry data that fail to meet all of the restrictions. Live-Dead Analysis - Figs. 19A-C
  • the compression program/hardware may be configured to perform a live-dead analysis to ensure that the geometry is compressed co ⁇ ectly This may also be performed m a venfier (i.e., a program that checks the compressed geometry data for compliance with a standard or predefined set of rules).
  • the venfier may be run at compression-time and or at load time.
  • live-dead analysis may allow the compressor to achieve greater compression ratios. In some embodiments, particularly if there are a large number of decompress/render pipelmes, the unicast/multicast implementation descnbed above may reduce efficiency to some extent.
  • the compressor or venfier may be configured to determme whether a particular pipeline needs to see a particular multicast block.
  • this mformation may be encoded as a set of "live-dead" bits (e.g , at the beginning of each block m addition to the multicast bit)
  • Control unit 190 may be configured to detect these live-dead bits for each block and then route the blocks accordmgly
  • the compressor may be configured to rea ⁇ ange and or change global ms -ructions to local instructions.
  • the global color change to red may be changed to two local color changes to red (i.e., one for each vertex following the global color change to red) Since the global color change to green follows so closely, local color changes will be more efficient m systems with more than two decompression/render pipelmes.
  • Figs. 19A-C graphically illustrate the process of live-dead analysis usmg network flow diagrams.
  • Fig 19A illustrates the parallel execution of a sequence of blocks that were onginally m the following order multicast block 240, unicast block 242A, unicast block 242B, unicast block 242C, and multicast block 244
  • state information e g , color
  • multicast block 244 may rely upon that state mformation not havmg been changed when it executed Normally, if subsequent blocks rely upon state mformation set by previous blocks, intervening blocks would not be allowed to change the state mformation
  • the geometry data may be compressed to allow intervening blocks to temporarily change the state mformation.
  • unicast block 242B which changes the state mformation from value X to value Y.
  • the geometry may be compressed independent of the target hardware's exact configuration.
  • the compression program may be unaware of the number of decompress/render pipelmes present in the target hardware The number of pipelmes may vary from system to system dependmg upon their configuration
  • unicast block 242B returns the altered state mformation back to its ongmal state.
  • Fig. 19B illustrates how multicast instructions may reduce overall efficiency m some systems with many pipelmes Assuming there are five pipelmes m the system, usmg a multicast block 240 to set a particular portion of the state mformation to a value X, each of the five pipelmes will have to execute the instruction However, if only the first three unicast instructions (242A-C) rely upon that piece of state information, the final two pipelmes executing umcast blocks 242D-E waste time executing the state setting instruction from multicast block 240
  • Fig. 19C illustrates how movmg the state-setting instruction mto the unicast instructions prevents the pipelmes that execute unicast blocks 242D-E from havmg to execute the unnecessary state-setting instruction
  • Figs 20A-B illustrates one type of encoding for live-dead bits in which the live-dead bits are embedded withm a "don't care" field of a no-op
  • backward compatibility may be obtamed usmg this method because non-multicast enabled hardware (e.g , hardware that only has one decompression unit or one decompress/render pipeline) may be configured to ignore the no-op don't care bits and process the blocks sequentially.
  • Fig. 20A illustrates one embodiment of a method for encoding compressed geometry data withm blocks that are configured to be decompressed mdependently and in parallel
  • data sequence 208 comp ⁇ ses a senes of blocks as previously disclosed
  • each block comp ⁇ ses a va ⁇ able number of va ⁇ able length header/body pairs (e.g , H1B1, H2B2, etc )
  • Each header may be separated from its co ⁇ espondmg body
  • header HI is separated from body Bl by body B0 and header H2 Smce the header may contam length mformation regardmg the co ⁇ esponding body, this separation may be advantageous du ⁇ ng the compression process
  • the separation allows the decompressor to prepare for receiving the header before it is actually received
  • the time allotted for preparation may improve the ability of the decompressor to effectively pipeline the decompression process.
  • the body of the first and last instruction of each block may be defined to be va ⁇ able-length no-op instructions (i.e , B0 and Bn)
  • va ⁇ able-length no-op instructions i.e , B0 and Bn
  • This may allow certain control information to be embedded withm the block without sac ⁇ ficing backward compatibility
  • some load-time venfier programs may be configured to implement live/dead encodmg as discussed above.
  • the live/dead encodmg may then be embedded withm the vanable length no-ops.
  • the graphics system may be configured to ignore the no-op instruction.
  • the final header portions Hn+1 may also be packed with live/dead encodmg mformation and or additional control mformation.
  • Fig. 20B illustrates details of the encoding illustrated in Fig. 20A.
  • the headers may contain length information indicating the number of bits, bytes, or words from the header to the co ⁇ esponding body (i.e., header HI indicates the length of BO and possible H2).
  • the header may contain information regarding the length of the co ⁇ esponding body (i.e., header HI indicates the length of body Bl).
  • headers are defined to have a fixed length of 8-bits. This limitation may summarily limit the maximum length of the variable-length bodies.
  • the first and last body of each block may be predefined to have a particular set of fields.
  • the first body portion (BO) of each block may be defined to begin with a fixed-length field 260 that indicates the length of the body portion (e.g., in bits, bytes or words).
  • Multicast/unicast bit 202 may be defined to follow field 260.
  • block length information field 204 may follow.
  • a fixed or variable number of header-body pairs may follow.
  • the final header and or final body portion may also be defined to indicate a variable or fixed length no-op and may be used to store certain control information.
  • state information may be defined as information that is not associated with a particular vertex or set of vertices (e.g., state information that affects all following vertices in the block).
  • state information e.g., global
  • non-state information also refe ⁇ ed to herein as geometry information or per-vertex information.
  • a restriction may be imposed that prohibits certain or all state information (e.g., the contents of the transformed vertex memory) from being shared between blocks.
  • state information e.g., the contents of the transformed vertex memory
  • a block may not rely on state information set by a previous block.
  • state information may be shared.
  • multicast/unicast bit 202 may be defined as the first field in the first body portion of each block.
  • the header-body pairs may be contiguous instead of being separated.
  • the final body portion (or the second to last, etc.) may be defined to contain a particular instruction that indicates the end of the block is approaching.
  • a graphics system and method have been disclosed.
  • the features described above may be used individually or in combination and may be realized in software, hardware, or a combination thereof.
  • the system and method may be utilized in a number of different products, including computer systems, graphics accelerator cards, game consoles, set top boxes, portable or hand-held electronic devices, graphics display devices, system on a chip applications, and in other types of electronic devices.

Abstract

A graphics system and method for reducing redundant transformation and lighting calculations performed on vertices that are shared by more than one geometric primitive is disclosed. The amount of data transmitted in certain data blocks may be reduced by incorporating a multicast/unicast bit into each data block. This bit may then be set to instruct the control unit to use the current 3D geometry data or state information for subsequent vertices. This may increase efficiency by allowing subsequent vertices using the same 3D geometry data to transfer less data. Conversely, if a vertex has wholly independent 3D geometry data, then its multicast/unicast bit may be set to invoke use of the current 3D geometry data on the current vertex as opposed to all future vertices. The reduction in redundant calculations is accomplished by delaying the formation of geometric primitives until after transformation and lighting has been performed on the vertices. Transformation and/or lighting are performed independently on a vertex-by-vertex basis without reference to which geometric primitives the vertices belong to. After transformation and/or lighting, geometric primitives may be formed utilizing previously generated connectivity information. The connectivity information may include mesh buffer references, vertex tags, and or other types of information.

Description

TITLE: SEGMENTING COMPRESSED GRAPHICS DATA FOR PARALLEL DECOMPRESSION AND RENDERING
Field of the Invention
The present invention relates to computer graphics systems, and more particularly, to decompressing and rendering compressed three-dimensional geometry data.
Description of the Related Art In recent years, demand for high performance graphics systems that can render complex three- dimensional (3D) objects and scenes has increased substantially This increase is at least in part due to new applications such as computer-generated animation for motion pictures, virtual reality simulators/trainers, and interactive computer games. These new applications place tremendous demands upon graphics systems One area m which particularly high demands are placed on graphics systems is bandwidth. This is because 3D graphics data may be several orders of magnitude larger than comparable 2D graphics data For example, simple 2D graphics data may simply include color information for each pixel displayed In contrast, 3D graphics data may include x,y,z position information, normal information, color information, transparency information, texture map information, reflectivity information, and additional information This information is collectively referred to herein as "vertex component information" A number of different techniques have been proposed to reduce the bandwidth requirements of 3D graphics data. One such technique is known as geometry compression One type of geometry compression is described in detail m U S. Patent No. 5,793,371, issued on August 11, 1998, entitled "Method and Apparatus for Geometric Compression of Three-Dimensional Graphics Data" by Michael F Deering Generally speaking, geometry compression relies upon reusing vertices (among other techniques) to reduce the size of the 3D graphics data. To describe a 3D object, a number of points (called vertices) are specified Each vertex may have a number of attributes associated with it. For example, each vertex may have color information associated with it Other attribute that may be associated with vertices are texture map coordinates, normals, color, and transparency information. For example, if a texture of marble is texture-mapped onto a sphere, each vertex on the sphere may have a texture map coordinate specifying how the texture should be applied (i.e., which part of the sample texture should be mapped to that particular vertex). A normal is a vector from the vertex that is perpendicular to the surface of the object at the vertex. This is illustrated in the 3D object of Fig 1. The 3D object may be represented by a number of vertices (represented as dots in the figure) Normals for the object are represented by arrows that extend perpendicularly from the object's surface at each vertex point.
Normals are vectors or directions in three-dimensional space. In the context of 3D graphics, normals (also called surface normals) may each indicate the local orientation of the surface of a 3D graphics object. Since the starting point of the vector is known from the xyz coordmates of the vertex, the normal may be specified with an x-component, a y-component, and a z-component (referred to as Nx, Ny, and Nz, respectively). In some embodiments, these components may be specified relative to the vertex. This embodiment is illustrated in Fig. 2. However, other forms for specifying normals are also possible. Furthermore, in some implementations the normal components are themselves normalized. A normalized normal is one in which the sum of the squares of Nx, Ny, and Nz equals a constant one.
In 3D graphics, vertices are typically grouped together to form polygons such as tπangles, as shown in figure 3 By definition, a tπangle has three vertices. However, many times tπangles share vertices. In Fig. 3, vertices 1-2-3 form a first tπangle and vertices 2-3-4 form a second tπangle Thus, vertices 2 and 3 are shared between the two tπangles 3D objects may be represented by specifymg a number of tnangles This is shown
However, specifying all of the information associated with each vertex (e.g., xyz location, color, normal, etc.) every time a vertex is referenced as part of a tπangle is inefficient. Instead, the information about a vertex can be stored (e g., when it is first transmitted) for later use Then, when the vertex is needed agam for another tπangle, the vertex may be read from storage instead of having to be re-transmitted. The vertex information may be stored m a "mesh buffer" and then reused. This may advantageously reduce the amount of information that must be transmitted and may thus save bandwidth This is illustrated in Fig. 5.
To efficiently reuse vertices, the tπangles may be organized into a mesh (e g , a predetermined number of neighboring vertices The mesh may then be encoded as one or more "tπangle-stπps" For example, in Fig 6 of the application, the tπangle stnp may start with the following tπangles- 6,1,7, 1,7,2, 7,2,3, 7,3,4, 7,4,8, 4,8,5, et seq.
As this pattern shows, once the tπangle strip is started many subsequent tnangles may be specified usmg only a single new vertex. For example, after triangle 6,1,7 has been constructed, tπangle 1,7,2 may be constructed usmg only one new vertex (i.e., vertex 2) Thus, each vertex in the triangle stnp may descπbe from 1/3 to one triangle For example, in the list above, vertex 6 describes 1/3 of tπangle 6,1,7 Vertex 2 descπbes one tπangle 1,7,2. In some cases, a vertex may even descnbe two or even more tπangles.
While a number of different formats are possible, one type of generalized tπangle stnp may be defined as follows (encodmg the 3D object from Fig 6):
R6, 01, 07, 02, 03, M4, M8, 05, 09, O10, Mi l
M17, M16, M9, 015, 08, 07, M14, 013, M6,
012, M18, M19, M20, M14, 021, 015, 022, 016,
023, 017, 024, M30, M29, M28, M22, 021, M20,
M27. 026, M19, 025, 018
In the notation above, R is a restart tag (indicating that a new mesh is beginning), O denotes replace oldest, and M denotes replace middle. The operation of this type of generalized tπangle stnp is illustrated in
Figs. 7A-7H.
In some embodiments, the terms "oldest" and "middle" may be visualized as representmg three registers that are used m formmg tnangles from the tπangle stnp representation. The sample encodmg above is merely one nomenclature that may be used to represent how the vertices of the mesh are being encoded.
Different implementations may use other nomenclatures The example nomenclature uses letters (O and M) to indicate which vertex should be discarded from the three registers when formmg a new tπangle. O indicates the oldest vertex should be discarded. M mdicates the middle vertex should be discarded. R mdicates that a section of mesh is bemg started This is used to clear the oldest, middle, and newest registers and the mesh buffer, if desired
While this method reuses vertices, when vertex 8 is referenced a second time (1 e , by the command 08), the vertex is transmitted agam This retransmission of vertices may be reduced or avoided altogether by usmg a mesh buffer
Usmg a similar nomenclature as in the previous example, a generalized tπangle mesh utilizing a mesh buffer may be defined as follows (once agam encodmg the 3D object of Fig 6)
R6p, 01, 07p, 02, 03, M4, M8p, 05, 09p, O10, Ml 1, 017p, M16p, M-3, 015p, 0-5, 06, M14p, 013p, M9, 012, M18p, M19p, M20p, M-5, 021p, 0-7,
022p, 0-9, 023, O-10, 0-7, M30, M29, M28, M-l, 0-2, M-3, M27, 026, M-4, 025, 0-5
In this implementation, a trailing letter "p" denotes "push mto mesh buffer" The number following a capital letter is a vertex number, and a negative number is the mesh buffer reference, in which "-1" denotes the most recent pushed vertex
Thus, geometry compression may explicitly push old vertices (e g , vertices with a trailing letter "p" above) mto a mesh buffer These old vertices may be explicitly referenced when the old vertex is again needed
This approach provides a fine control that supports rrregular meshes of nearly any shape As used herein, the term "mesh buffer" shall refer to this queue, and the expression "generalized tnangle mesh" will refer to a combmation of generalized tπangle strips and mesh buffer references
Figs 8A-8N illustrate one embodiment of this method graphically The mesh buffer may be used to store designated vertices (l e , those followed by a "p") These vertices may later be read out of the mesh buffer
(e g , by a reference with a minus sign such as "M-3") This allows vertices to be reused from the mesh buffer instead of having to be retransmitted
As previously noted, by reducing the size of the 3D graphic data bandwidth may be saved For example, when programmers are creating a 3D virtual object to be used in a simulation, they may execute a compression program to determine how best to compress the 3D object The compression program may tessellate or divide the surface of the object into a plurality of vertices, e g , a NURBs (Non-Uniform Rational B-splme) object The compression program may then divide the vertices mto groups of generalized tπangle meshes as descnbed above These meshes may then be compressed and encoded using a similar process to that descnbed above The compressed data may then be stored (e g , on a CD-ROM or DVD-ROM) and/or transmitted (e g , on the Internet) The bandwidth savmgs may also apply to buses used for transmission of the 3D geometry data within the graphics system itself Fig 9 illustrates one embodiment of a graphics system 20 configured to utilize compressed 3D geometry data m generalized tnangle mesh form In this embodiment, transmission bandwidth across transmission medium 10 is saved by transmitting 3D graphics data m compressed form usmg geometry compression m generalized tπangle mesh format Generally, compressed 3D geometry data is conveyed to graphics system 20 on mput bus 10. Geometry decompressor 12 receives the compressed data and decompresses it A mesh buffer 14 may be used to store vertices that will be reused. As previously descnbed, mesh buffer references may be encoded within the compressed data to mdicate which vertices will be reused and thus should be stored m the mesh buffer. Once a geometnc primitive such as a tnangle is decompressed, it is conveyed to one of a plurality of transform and lighting processors 18A-N. The transform and lighting processors work independently and m parallel to perform the following functions: (a) transform the vertices formmg primitive from their oπgmal coordmate reference frame (e.g., object space) mto a common reference frame (e g , world space or screen space); and (b) "light" each vertex by determining which light sources affect each vertex and how much they are affected.
Next, the transformed and lit tnangles are conveyed to draw processor 22, which is configured to render the transformed and lit primitives and apply texture mappmg (e g , from texture map memory 24). In some embodiments, textures may mstead be applied during the lighting process (collectively refeπed to as "shading") usmg a programmable shader In some embodiments, when shadmg is used only micropolygons are drawn Draw processor 22 is configured to rasteπze the primitive mto frame buffer 28 In most embodiments, frame buffer 28 is double buffered, with one buffer bemg draw into by draw processor 22 while the second buffer is bemg read by DACs 30 DACs 30 may read frame buffer 28 asynchronously with respect to draw processor 22. DACs 30 form an output video signal that is typically used to dπve a display device such as a CRT mo tor or LCD panel display For the reasons set forth above, the use of geometry compression is particularly advantageous m high performance graphics systems. However, further mcreases in performance are still demanded by modern applications. Thus, an efficient method for increasing the performance of graphics systems configured to utilize 3D graphics data that has been compressed mto generalized tnangle mesh format is desired Furthermore, a graphics system capable of increased performance while utilizing compressed 3D geometry data is also desired.
Summary of the Invention
The problems outlined above may, in part, be solved by a graphics system capable of conveying 3D geometry data that is used generally by many vertices only once. This allows subsequent vertices usmg the same 3D geometry data to transmit less data per vertex. In some embodiments, this may be accomplished by usmg a bit (or bits) of the data block as a multicast/unicast bit. In some embodiments, the bit may be set to instruct the control unit to globally distπbute the 3D geometry data to all decompressor, transform, lighting, or other processors. This embodiment may have the potential of improving speed and efficiency by decreasmg the repetition of transmitting identical 3D geometry data (such as color, texture, etc.).
Efficiency may also be mcreased by delaymg the formation of mdependent primitives until after transformation and/or lighting has been performed. In this way, vertices that are shared by more than one primitive have the potential to only be transformed and lit once, as opposed to bemg transformed and lit once for each tπangle to which they belong. Transforming and or lighting may thus be performed on an individual vertex basis mstead of on a geometnc primitive basis. The individually transformed and lit vertices are then assembled mto primitives for rendering. In some embodiments, the graphics system may utilize a transformed vertex cache to store transformed and lit vertices. Each time a particular vertex is needed to form a geometnc primitive, the vertex is read from the transformed vertex cache. Each vertex may be accessed usmg a tag assigned to the vertex during decompression. In other embodiments, the graphics system may utilize a transformed vertex buffer that is similar to a mesh buffer m function. However, mstead of storing vertices generated by the geometry decompressor, the transformed vertex buffer stores transformed and lit vertices. Mesh buffer references may be used by the transformed vertex buffer to determme which transformed and lit vertices should be stored m the transformed vertex buffer. Note, as used herem, the term vertices need not be limited to traditional polygonal primitive vertices
For example, the vertices refeπed to herein may also be control vertices for Bezier or NURB curves or surface
BRIEF DESCRIPTION OF THE DRAWINGS
Fig 1 is an illustration of a three-dimensional object with vertices and surface normals.
Fig. 2 is an illustration of one type of surface normal.
Fig. 3 is an illustration of three-dimensional object that has been tessellated into triangles
Fig 4 is one example of a list of vertices formmg tnangles that descnbmg a three-dimensional object
Fig 5 illustrates the reuse of vertices when formmg tnangles Fig 6 depicts an example tnangle mesh.
Figs. 7A-H illustrate one method for decompressmg a generalized tπangle stnp.
Figs. 8A-N depict one method for utilizing a mesh buffer to decompress a generalized tnangular mesh data structure.
Fig 9 depicts one embodiment of a graphics system configure to utilize compressed three-dimensional geometry data.
Fig 10 depicts one embodiment of a computer network.
Fig. 11 illustrates one embodiment of a computer system that mcludes a three-dimensional graphics system
Fig 12 illustrates a simplified block diagram illustratmg one embodiment of the computer system of Fig 11
Fig. 13 illustrates one embodiment of the graphics system from Fig. 12. Fig 14 illustrates one alternative embodiment of the graphics system from Fig. 12.
Fig. 15A illustrates one method for representing a vertex in object space.
Fig. 15B illustrates one method for representing a vertex m world space. Fig. 15C illustrates one method for representmg a vertex m screen space.
Fig 16 is a flowchart illustrating one embodiment of a method for reducing redundant transformation and or lighting calculations m a graphics system.
Fig. 17 is a diagram illustrating another embodiment of the graphics system from Fig. 12.
Fig. 18 is a diagram illustrating one embodiment of a data sequence that may be utilized with a graphics system configured to perform parallel decompression of compressed 3D geometry data.
Fig. 19A illustrates the parallel execution of a sequence of blocks. Fig 19B illustrates how multicast instructions may reduce overall efficiency m some systems with many pipelines
Fig 19C illustrates how movmg the state-setting instruction mto the unicast instructions prevents the pipelines that execute unicast blocks 242D-E from having to execute the unnecessary state-setting instruction Fig 20A illustrates one embodiment of a method for encodmg compressed geometry data within blocks that are configured to be decompressed independently and in parallel Fig 20B illustrates details of the encodmg illustrated m Fig 20A
While the invention is susceptible to vanous modifications and alternative forms, specific embodiments thereof are shown by way of example m the drawings and will herem be descnbed m detail It should be understood, however, that the drawings and detailed descnphon thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spiπt and scope of the present mvention as defined by the appended claims
DETAILED DESCRIPTION OF SEVERAL EMBODIMENTS
A graphics system accordmg to the present mvention may be used to achieve improved performance by reducmg redundant processmg Advantageously, compressed geometry data may still be utilized by the system Before descnbmg the system and related method m detail, the overall environment m which the present mvention may be practiced will be descnbed
Computer Network - Fig. 10
Fig 10 depicts an example computer network The computer network compπses a server 60 that is configured to convey compressed 3D geometry data to clients 70A-C In some embodiments, server 60 may generate the compressed 3D geometry data m real time In other configurations, the 3D geometry data may be generated off lme The compressed 3D geometry data may be conveyed to clients 70A-C m a number of different manners For example, server 60 may transmit the compressed 3D geometry data via a physical communications network 68 Communications network may mclude Internet links, cable links, and phone lmes Server 60 may also convey the compressed 3D geometry data usmg a physical earner medium 62 (e g , a CD, DVD, or magnetic medium) Another means for conveying the compressed 3D geometry data may mclude wireless transmission (e g , via dish antenna 64 and satellite 66) Combmations of these and other methods may also be utilized
Once the compressed 3D geometry data is received by one or more of clients 70A-C, the data is decompressed, rendered, and then displayed As mdicated m the figure, clients 70A-C may mclude computer systems such as personal computers (PCs), laptop computers, network computers (NCs), television sets with "set top" decoder boxes, game boxes, and other electronic devices capable of manipulating and or displaying 3D computer graphics Other examples mclude personal digital assistants (PDAs) and virtual reality workstations (e g , computers havmg head-mounted displays) Computer System - Fig. 11
Fig. 11 illustrates one embodiment of a computer system 80 that mcludes a three-dimensional (3-D) graphics system. The 3-D graphics system may be compπsed m any of vanous systems, mcludmg a computer system, network PC, Internet appliance, a television, mcludmg HDTV systems and interactive television systems, personal digital assistants (PDAs), and other devices which display 2D and or 3D graphics, among others
As shown, the computer system 80 compnses a system unit 82 and a video monitor or display device 84 coupled to the system unit 82. The display device 84 may be any of vanous types of display monitors or devices (e.g , a CRT, LCD, or gas-plasma display). Vanous mput devices may be connected to the computer system, mcludmg a keyboard 86 and/or a mouse 88, or other mput device (e g , a trackball, digitizer, tablet, six- degree of freedom mput device, head tracker, eye tracker, data glove, body sensors, etc ) Application software may be executed by the computer system 80 to display 3-D graphical objects on display device 84 As descnbed further below, the 3-D graphics system m computer system 80 mcludes a super-sampled sample buffer with a programmable real-time sample-to-pixel calculation unit to improve the quality and realism of images displayed on display device 84.
Computer System Block Diagram - Fig. 12
Fig. 12 illustrates a simplified block diagram illustrating the computer system of Fig 11 Elements of the computer system that are not necessary for an understanding of the present invention are not shown for convenience. As shown, the computer system 80 includes a central processing unit (CPU) 90 coupled to a highspeed memory bus or system bus 94 (also refeπed to as host bus 94) A system memory 92 may also be coupled to high-speed bus 94.
Host processor 90 may compnse one or more processors of varying types, e g , microprocessors, multiprocessors and CPUs The system memory 92 may compnse any combination of different types of memory subsystems, mcludmg random access memones, (e.g., Static Random Access Memories or "SRAMs",
Synchronous Dynamic Random Access Memories or "SDRAMs", and Rambus Dynamic Access Memones or "RDRAM", among others) and mass storage devices. The system bus or host bus 94 may comprise one or more communication or host computer buses (for communication between host processors, CPUs, and memory subsystems) as well as specialized subsystem buses A 3-D graphics system or graphics system 100 accordmg to the present mvention is coupled to the high-speed bus 94. The 3-D graphics system 100 may be coupled to the bus 94 by, for example, a crossbar switch or other bus connectivity logic. It is assumed that vanous other peripheral devices, or other buses, may be connected to the high-speed bus 94 It is noted that the 3-D graphics system may be coupled to one or more of the buses m computer system 80 and/or may be coupled to vanous types of buses. In addition, the 3D graphics system may be coupled to a communication port and thereby directly receive graphics data from an external source, e.g., the Internet or a network. As shown m the figure, display device 84 is connected to the 3- D graphics system 100 compnsed m the computer system 80.
Host CPU 90 may transfer information to and from the graphics system 100 accordmg to a programmed input/output (I/O) protocol over host bus 94. Alternately, graphics system 100 may access the memory subsystem 92 accordmg to a direct memory access (DMA) protocol or through intelligent bus mastering.
A graphics application program conforming to an application programming interface (API) such as OpenGL™ or Java 3D™ may execute on host CPU 90 and generate commands and data that define a geometnc primitive (graphics data) such as a polygon for output on display device 84. As defined by the particular graphics interface used, these primitives may have separate color properties for the front and back surfaces. Host processor 90 may transfer these graphics data to memory subsystem 92. Thereafter, the host processor 90 may operate to transfer the graphics data to the graphics system 100 over the host bus 94. In another embodiment, the graphics system 100 may read m geometry data aπays over the host bus 94 usmg DMA access cycles. In yet another embodiment, the graphics system 100 may be coupled to the system memory 92 through a direct port, such as the Advanced Graphics Port (AGP) promulgated by Intel Corporation
The graphics system may receive graphics data from any of vanous sources, mcludmg the host CPU 90 and/or the system memory 92, other memory, or from an external source such as a network, e g , the Internet, or from a broadcast medium, e g , television, or from other sources. As will be descnbed below, graphics system 100 may be configured to delay geometnc pnmitive assembly so as to reduce or eliminate redundant vertex processing Note while graphics system 100 is depicted as part of computer system 80, graphics system 100 may also be configured as a stand-alone device (e.g , with its own built-in display). Graphics system 100 may also be configured as a single chip device or as part of a system-on-a-chip or a multi-chip module.
Graphics System - Fig. 13
Fig 13 illustrates one embodiment of graphics system 100 that is configured to utilize compressed 3D geometry data and reduce redundant processmg of reused vertices Graphics system 100 receives compressed 3D geometry data from mput bus 10 Geometry decompressor 12 receives and decompressed the data into object space vertices The difference between object-space, world-space, and screen space coordmates and vertices are explamed m detail below (see Fig 15). Note m this embodiment mesh buffer 14 is optional because the vertices need not be assembled mto complete geometnc pnmitives within decompressor 12 Instead, m this embodiment the 3D geometry data may be decompressed mto two types of information (1) individual vertices, and (2) connectivity information As used herem the term "connectivity information" means information that indicates how the vertices are connected together. For example, connectivity mformahon may mclude mesh buffer references. The connectivity information is routed by decompressor 12 to set up/draw processor 22.
The individual object-space vertices are distributed (e.g., m a load-balancing manner) to transform/lighting processors 18A-N. The transform/lighting processors 18A-N transform the object-space vertices to world space or screen space coordmates, and then perform lighting calculations. The transformed and lit vertices are then conveyed to set up/draw processor 22.
Set up/draw processor 22 is configured to receive both the transformed and lit vertices from processors 18A-N and the connectivity information from geometry decompressor 12. Based on the connectivity information, set up/draw processor 22 is configured to assemble the transformed and lit vertices mto geometnc primitives. In the embodiment shown m the figure, a transformed vertex buffer 106 may be used by set up/draw processor 22 to assemble the geometnc pnmitives (e.g., usmg registers 108). Assembly of geometnc pnmitives may be accomplished m a similar manner to that used by geometry decompressor 12 m Figs. 8A-8N However, mstead of usmg a mesh buffer, set up/draw processor 22 may utilize transformed vertex buffer 106 to store the transformed and lit vertices accordmg to the connectivity mformation from decompressor 12. As previously noted, in some embodiments the connectivity mformation may mclude mesh buffer references from the compressed 3D geometry data. These mesh buffer references may be used to selectively push and pop transformed and lit vertices onto transformed vertex buffer 106. In this embodiment, transformed vertex buffer 106 may be configured as a stack that is accessible usmg top-of-stack relative addressing (e g , as shown m Fig 8N). As previously noted, by transforming and lighting vertices individually, redundant transforming and lighting of shared vertices may be reduced For example, m previous systems if a first tnangle havmg vertices 1-2-3 and a second tnangle havmg vertices 2-3-4 were formed by decompressor 12, transform and lighting processor 18A may have received the first tnangle and processor 18B may have received the second tnangle. Each processor would have then performed transformation and lighting calculations on each of its tnangle's three vertices. Thus processor 18A would have transformed and lit vertices 1, 2, and 3, while processor 18B would have transformed and lit vertices 2, 3, and 4 As this example illustrated, vertices 2, and 3 are transformed and lit twice.
In contrast, m the embodiment illustrated in the figure, vertices 1-3 could have been routed to processor 18A, while vertices 4-6 could have been routed to processor 18B. Thus duphcative transformation and lighting of repeated vertices may be reduced or elimmated. This is possible because m most cases vertices may be treated as mdependent pomts on an object's surface. Which vertices neighbor each other is typically irrelevant for coordmate transformation calculations and lighting calculations
Alternate Embodiment - Fig. 14 Figure 14 illustrates an alternate embodiment of graphics system 100 In this embodiment, mstead of utilizing a transformed vertex buffer, set up/draw processor 22 mstead utilizes a transformed vertex cache 110 As used herem the term "transformed vertex memory" (also refeπed to as a "processed vertex memory") mcludes both transformed vertex buffers, transformed vertex caches, and other memory devices configured to store vertices that are have been transformed from their onginal coordmate reference frame. The transformed vertex memory may store vertices that have been subjected to one or more of the following processes: model transformation, view transformation, clip testmg, perspective transformation, lighting, texturing, shadmg, or more complex programmable shadmg or other processes. These processes may be refeπed to (individually and collectively) as "vertex processes", and a vertex which has had one or more vertex processes performed on it may be refeπed to as a "processed vertex" Note, details of programmable shadmg are descnbed m the book entitled "The Renderman Compamon : A Programmer's Guide to Realistic Computer Graphics" by Steve Upstill, (Addison- Wesley Publishing Co., July 1989, ISBN: 0201508680).
As shown m the figure, decompressor 12 is configured to receive and decompress compressed 3D geometry data mto vertices. However, decompressor 12 is also configured to assign a tag to each decompressed vertex. The decompressed vertices are then routed with their tags to transform and lighting processors 18A-N Decompressor 12 is also configured to generate connectivity information using the vertex tags. As in the previous embodiment, the connectivity information is provided to set up/draw processor 22.
Set-up/draw processor 22 is configured to receive the transformed and lit vertices (and their associated tags) and store them into transformed vertex cache 110 and tag aπay 112, respectively. Depending upon the configuration, transformed vertex cache 110 may be direct mapped, set-associative, or fully associative. Set up/draw processor 22 then assembles geometric primitives based on the connectivity information provided by decompressor 12. In one embodiment, the connectivity information may comprise a sequences of tags. These tags may be used by set up/draw processor 22 to read the transformed and lit vertices out of cache 110 (using tag aπay 112) and into register 110. As in the previous embodiment, when a primitive is formed in registers 110, it is then rendered (i.e., drawn) into frame buffer 28. As with the previous embodiment, the amount of redundant processing performed on shared/reused vertices may be reduced. Depending upon the configuration and the size of transformed vertex cache 110, this embodiment may allow reuse of vertices beyond a particular mesh (e.g., beyond the boundaries of a single triangle mesh).
Note that while the figures show registers 108 with storage for only three vertices per primitive, other configurations are also possible (e.g., four or more vertices for polygons, two vertices for lines, or one vertex for dots). Further note that while graphics system 100 is shown as receiving compressed 3D geometry data, other types of data may also be received and used. For example, decompressor 12 may be configured to receive uncompressed 3D geometry data in some embodiments. The 3D graphics data may include data in a number of different formats. For example, three dimensional objects that are part of the scene may be represented as volumes, surfaces, or 3D objects that have been tessellated into a plurality of polygons (e.g., triangles or quadrilaterals). The 3D graphics data may also include objects modeled with NURBs (non-uniform rational B- splines), volume elements, subdivision surfaces, meshes and other techniques. The 3D data may be generated by computer animators, by 3D scanning devices, 3D cameras, 3D digitizers, or other techniques. Depending upon the format in which the 3D graphics data is received, it may be manipulated before being transformed into a plurality of vertices.
In this case decompressor 12 acts more like a connectivity information generator by generating the vertex tags and coπesponding connectivity information for the vertices instead of actually decompressing the data. In other embodiments the data may be compressed using non-geometric methods (e.g., numerical compression such as LZW compression). While the bandwidth reduction benefits may not be fully realized in such an embodiment, graphics system 100 may nevertheless be able to reduce the amount of redundant transformation and lighting that is performed on shared/reused vertices
To allow decompressor/connectivity information generator 12 to efficiently generate the connectivity information, in one embodiment connectivity information generator 12 may be configured with an untransformed vertex cache 114 and coπesponding tag aπay 116. As decompressor/connectivity information generator 12 receives data, it may assign tags and then store the vertices and their coπesponding tags to untransformed vertex cache 114 and tag aπay 116, respectively. Decompressor/generator 12 may then examine vertices as they are received. If a coπesponding entry is already in untransformed vertex cache 114, then the vertex has already been transformed and lit and should be stored in transformed vertex cache 110. Thus, decompressor/generator 12 may convey the tag to set up-draw processor 22 without having the vertex re- transformed. If transformed vertex cache 110 does not have a copy of the transformed vertex, this may be signaled back to decompressor/generator 12 and decompressor/generator 12 may convey the untransformed vertex to one of transform and lighting processors 18A-N.
The size of caches 110 and 114 may vary dependmg upon the organization of the mput graphics data. For example, if the graphics data is highly organized (e.g., mto generalized meshes), a smaller cache may contain enough storage to be effective. If however, the graphics data contams random vertices, then a larger cache may be more effective m reducing redundant transform and lighting calculations.
While each embodiment may mclude different mformation with vertices stored m transformed vertex buffer 106 (or transformed vertex cache 110), a partial list of information that may be included with some or all of the vertices follows- vertex position (e g., x,y,z coordmate m world space or screen space), texture mappmg coordmates (e.g , 2D coordmates, 3D coordmates, multiple texture map coordmates, 4D coordmates), color (e.g., red, green, and blue components), transparency information (e.g., an alpha component), normal mformation (e.g., Nx, Ny, Nz), lighting information, displacement map information, reflectivity information, bump map information, blur mformation, an intensity and bπghtness mformation, and other control mformation.
Note m some embodiments there may be multiple set up/draw processors (e g , one for each transform and lighting processor or one for every two transform and lighting processors) and multiple decompressor units. These embodiments will be descnbed m greater detail below (see discussion of Fig 17) However, the transformation calculations performed by transform and lighting processors 18A-N will be described first, as will a method for implementing the previously descnbed embodiments.
Transformation - Figs. 15A-C
Fig. 15A illustrates a particular point or vertex 150 with relation to a coπespondmg object's coordmate axes 140 Thus, the position of vertex 150 may be specified by identifying its x, y, and z offset from coordinate axes 140
Fig. 15B illustrates the same vertex 150, but this time m relation to a "world-space" coordinate axes 142. Note, depending upon the three-dimensional object or scene being described, world coordinate axes 142 need not be on an object. Instead, world coordmate axes 142 may be m world space offset from any objects To obtam the coordmates of vertex 150 in world space (i.e., relative to world coordmate axes 142), the ongmal object-space coordmates (as shown m Fig. 15A) may be offset by the difference m position of object coordmate axes 140 and world coordmate axes 142.
Fig. 15C illustrates one type of screen space coordmate system. Vertex 150 may be specified in relation to screen coordmate axes 144 Note, m many applications the offset of screen coordmate axes 144 to object coordmate axes 140 is dependent upon the viewer's cuπent position or viewpomt. To obtam the coordmates of vertex 150 m world space (i.e., relative to world coordmate axes 142), the ongmal object-space coordmates (as shown m Fig. 15 A) may be offset by the difference m position of world space coordmate axes 142 and screen space coordmate axes 144. The process of translating a particular vertex from object to world space or to screen space is refeπed to as "transformation". This may be performed by transform and lighting processors 18A-N. Method For Reducing Redundant Transformation/Lighting - Fig. 16
Fig 16 is a flowchart illustrating one embodiment of a method to reduce redundant transformation and or lighting calculations performed on shared vertices As used herem, a shared vertex is one that is part of two or more geometnc pnmitives Furthermore, as used herem the term "geometnc primitive" shall mclude, but not be limited to, dots, lmes, tnangles, polygons, volume elements, and surface elements
First, the geometry data is received by the graphics system (step 180) Next, the geometry data is decompressed mto individual vertices and coπespondmg connectivity mformation is generated (step 182) As noted above, in some embodiments the geometnc data need not be compressed when received by the graphics system The connectivity mformation may mclude mesh buffer-type references, vertex tags, or other schemes for indicating which vertices should be combmed to form geometnc pnmitives
Next, the vertices are distπbuted to transformation/lighting processors (step 184) In the prefeπed embodiment, there are multiple transformation and lighting processors configured to work independently and m parallel The vertices may distπbuted accordmg to known load balancing techniques to maximize throughput for each processor Dependmg upon the implementation, separate processors may handle transformation and lighting Alternative embodiments may combme transformation, lighting, and textunng m a process called shadmg In some embodiments, the graphics system may be configured to perform only transformation (step 186) before assembling the vertices mto geometnc pnmitives In other embodiments, the graphics system may perform both transformation and lighting (step 188) before assemblmg the vertices mto geometric pnmitives The vertices are assembled mto geometnc pnmitives usmg the previously generated connectivity mformation, regardless of whether both transformation and lightmg are performed or just transformation (step 190)
Next, the geometnc primitives are rendered into a sample or frame buffer (step 192) A sample buffer takes the place of a traditional frame buffer by storing samples m lieu of pixels The samples are then filtered to form a final pixel value Use of a sample buffer allows super-samplmg, m which the total number of samples is greater than the total number of pixels Super-sampling has a number of benefits, mcludmg a more realistic picture and the capability to perform on-the-fly anti-aliasing More information on super-samplmg is presented in the U S Patent Application Serial No 09/251,449, entitled "A Graphics System With Programmable Sample Positions" by Michael F Deenng, David Naegle, and Scott Nelson, filed on February 17, 1999 (Attorney Docket No 5181-24200)
Note that the flowchart depicted m the figure is meant for explanatory purposes and is not meant to be limiting In some embodiments, the steps may be performed in a different order, m parallel, or some steps may be elimmated (e g , step 188 or step 194) Additional steps may also be performed For example, multiple transformation steps 186 may be performed to translate the vertices from object space to world space and from world space to screen space Furthermore, multiple iterations through lightmg step 188 may be performed if multiple light sources are activated Other graphics processes may also be performed (e g , texture mappmg, bump mapping, displacement mappmg, shadowmg, specular highlighting, foggmg, etc )
Multiple Graphics Subsystems - Fig. 17
Fig 17 is a diagram illustrating another embodiment of graphics system 100 In this embodiment, graphics system 100 compπses a control unit 190 that is configured to receive compressed geometry data 208 (e.g., from host CPU 90 in Fig. 12) and route the compressed geometry data to one or more of decompressors 12A-N. Decompressors 12A-N are configured to receive and decompress the compressed geometry data. The decompressed geometry data, which includes one or more vertices, is then conveyed to transform and lighting processors 18A-18N. Note, each coπesponding pair of decompressors and transform and lighting units may be refeπed to herein as a "decompression/render pipeline".
Once the vertices are transformed and lit, they are conveyed to set up/draw units 22A-N. In this embodiment, each set up/draw unit 22A-N has its own transformed vertex buffer 106A-N and its own set of oldest-middle-newest registers 108A-N. These may function similarly to those described in connection with Fig. 14 above. FIFO (First-In First-Out) memories may be utilized in the pipelines (e.g., between control unit 190 and decompression units 12A-N) to buffer the data being distributed by control unit 190.
To control the transform and lighting process and the set up/draw process, compressed graphics data 208 may include predefined control information. Some of this control information may be utilized during the decompression process. For example, compressed graphics data 208 may include control information indicating the type of compression used or specific information about the particular mesh that is compressed. One such type of control information may be an indication of the color depth being used in the particular mesh. Another type of control information may be an indication as to whether color information is specified for each vertex (i.e., a bundle color bit) or whether color information is defined separately (e.g., one global color for all vertices in the mesh). Other control information (e.g., transparency or alpha information) may also be embedded in the compressed geometry data. The control information may set the "state" of a state machine within one or more of decompressors
12A-N, transform/lighting processors 18A-N, and/or set up/draw processors 22A-N. In some embodiments, the control information may be designated as either "global" or "local" control (or state) information. The control information is global if it is intended to affect the state of all decompressors 12A-N, all transform/lighting processors 18A-N, or all set up/draw processors 22A-N in graphics system 100. Conversely, if the control information is intended to only affect the state of a single decompressor, transform/lighting unit, or set up/draw unit, then the control information is local. Contiol unit 190 may be configured to detect whether the control information embedded in the stream of compressed geometry data is global or local, and then route the control information accordingly. For example, if a certain set of control information is global, then control unit 190 may be configured to send copies of the control information to each decompression/render pipeline in graphics system 100. If control unit 190 determines that the control information is local, control unit 190 conveys the control information to a single decompression/render pipeline along with the vertex or vertices that are associated with the control information.
For example, control unit 190 may receive a stream of compressed graphics data 208 that begins with a global set color instruction. Control unit 190 may then convey this global control information to each of decompressors 12A-12N. Then control unit 190 may pass compressed vertices in round-robin fashion to decompressors 12A-N. After each vertex is decompressed, each vertex is assigned the global color. If control unit 190 then detects a second global set color instruction with a new color, control unit 190 again sends copies of the instruction to each decompressor, which proceed to assign the new color to all vertices they receive after the global change color instruction. In some embodiments, control unit 190 may be configured to invalidate the contents of transformed vertex buffers 106A-N m response to detecting a global control instruction. This may prevent a vertex that is reused with different colors from bemg rendered more than once with the same color. Note, while color and transparency are used m the examples above, other types of local and control mformation are also possible and contemplated. In some embodiments, the designation of whether the state/control information is global or local may be accomplished through the use of a unicast/multicast bit within compressed graphics data 208, as descnbed m greater detail below.
Unicast/Multicast - Fig. 18 Fig 18 is a diagram illustrating one embodiment of a data sequence 208 that may be utilized with a graphics system configured to perform parallel decompression of compressed 3D geometry data. In this embodiment, data sequence 208 compnses a stream of data blocks 200A-C Each data block mcludes a multicast bit 202, a length mdicator 204, and a data portion 206 Multicast bit 202 indicates whether the block is a unicast block or a multicast block. Unicast blocks are conveyed to a smgle decompression render pipeline Multicast blocks, however, are conveyed to all decompressor/render pipelmes m the graphics system Length indicators 204 each hold a value that indicates where the next block m the data sequence begins. A number of different length encodmg schemes may be used. For example, m one embodiment blocks 200 are aligned to 32- bit word boundanes. Thus, length mdicators 204 may store a value indicative of the number of 32-bit words until the start of the next block. In some embodiments the length mdicators may be the total length of the cuπent block (m 32-bit words). In other embodiments, the length mdicators may mdicate the length the following data portion 206 (either m bits, bytes, or words). Length mdicators 204 may preferably have a fixed length, or they may be vaπable length with a prefix that mdicates the length of the length mdicator 204 itself. Data portion 206 is configured to store compressed 3D geometry data (as well as other mformation, m certain embodiments) In some embodiments, the length of data portions 206 may be limited to a predetermined maximum (e g., 2k bytes or 512 32-bit words). In such an embodiment, the maximum length of length mdicators 204 may be limited to 9-bιts, assuming a 32-bit word length. Other maximum lengths may also be used. Furthermore, as previously noted, by usmg a vaπable-length length mdicator 204, data portion 206 may not have a maximum length. Note the configuration illustrated m the figure is for explanatory purposes only and is not meant to be limiting For example, multicast bit 202 may be lengthened to several bits to mclude additional mformation.
Data portions 206 may store compressed geometry data coπesponding to predetermined mesh size. For example, data portions may be configured to each store compressed geometry mformation coπespondmg to a 16x16 mesh of vertices, as previously noted, each vertex may compnse varying amounts of mformation, mcludmg xyz position, color mformation, normal mformation, texture mappmg mformation, and other vertex component mformation.
Usmg data sequence 208, control unit 190 (see Fig. 17) may be configured to efficiently route each block accordmg to multicast bits 202 and length mdicators 204 A. Length mdicators 204 enable control unit 190 to determme block boundanes. For each block received by control unit 190, the coπespondmg multicast bit 202 directs control unit 190 to convey a block to a smgle decompression/render pipeline (unicast) or all decompression/render pipelmes (multicast). For unicast blocks, control unit 190 may be configured to route the block to the decompression/render pipeline with the least processmg backlog (e.g., to the pipeline that most likely is avadable) While this configuration provides a great deal of flexibility, m some embodiments certain restπctions may be placed upon the format of data sequence 208 to simplify the hardware of control umt 190 and graphics system 100 (e.g., by reducmg or eliminating the need of mdependent decompress/render pipelmes havmg to communicate and/or coordmate with each other).
One such restπction is that only state mformation may be stored m the data portion 206 of a block 200 that is multicast. Without this restπction, multiple pipelmes may spend time decompressing and rendering the same geometry data. Instead, multicast blocks are limited to havmg "state" mformation As used herein state mformation means mformation that is bemg set solely for use with future vertices. As previously noted, some state mformation (e.g., color and normal information) may be set for a particular vertex of mesh and then reused from one vertex to the next. If all vertices m a particular mesh have the same color, then the color mformation may be sent once (e g., with a Java 3D™ compressed geometry setColor instruction) as state mformation and then reused by some or all of the vertices m the following block or blocks Other state mformation may mclude transparency information and normal mformation Dependmg upon the configuration, other types of state mformation may also be specified Thus, a multicast block may serve to reset all decompression/rendering pipelmes to a predetermined state. This may be useful when control unit 190 receives blocks that begin a new 3D object. While mformation stored in the mesh buffer is also state information, as previously noted each block may be forced not to rely on any previously entered mesh buffer mformation. Similarly, if a block is designated as a unicast block, to reduce mterdependence between the decompress/render pipelmes, the block may be limited to geometry information rather than "state" information. As used herem geometry mformation means any mformation that does not cany forward from one block to another For example, mesh buffer contents, vertex position mformation, and color information may all be considered geometry mformation (dependmg upon the exact implementation of graphics system 100) Another possible restnction that may be used to prevent any vertices within a block from relying upon any previous mformation supplied in a previous block is to require that the first vertex of each block be accompanied by a restart tag. As previously explamed m the background section, a restart tag is a tag that mdicates that a new mesh is starting. The restart tag may be used to indicate to the set up/draw processor that all previous entries m registers 108 and or transformed vertex memory 106 should be invalidated (withm the coπespondmg decompression/render pipeline).
The use of delta encodmg or delta-delta encodmg of vertex component mformation may also be restπcted. For example, some embodiments of graphics system 100 may be configured to encode the color of a second vertex as an offset relative to a first vertex. Similarly, the position of second vertex may be specified as an offset relative to first vertex. This type of delta or delta-delta encodmg is useful because m many cases neighbonng vertices may have similar attnbutes. For example, neighbonng vertices will typically have xyz position coordmates that are relatively similar. Thus, mstead of specifymg an entire position for the second vertex (e.g., 32-bιts each for x, y, and z) a simple offset (e.g., 8-bιts each for x, y, and z) may be used. However, this type of decodmg may complicate control unit 190. For this reasons, some embodiments of graphics system 100 may force the first vertex m a block to be explicit (e.g., 32-bιts of position mformation for each x, y, and z). Delta encoding may thus be limited to vertices occurring after the first vertex in each block. Similarly, Delta-delta encoding may be limited to vertices occurring after the second vertex in each block. Depending upon the compressed data and the exact implementation of the graphics system, this restriction may not be terribly burdensome because vertices from different blocks (i.e., different meshes) may have greater likelihood of having less in common than vertices from the same block/mesh.
Still another such restriction is that vertices in a particular data portion 206 may not use mesh buffer state information from a previous block. This restriction promotes the independence of each block and may free control unit 190 from having to route the blocks in a particular manner.
One option for implementing graphics system 100 is to guarantee that any multicast block will be seen by every decompress/render pipeline before any subsequent blocks in data sequence 208. For example, if block 200A is first block in data sequence 208, the data may be encoded such that block 200B is a multicast block. If so, then block 200C may be encoded to rely upon the state-setting information contained in block 200B. This optional restriction may once again simplify control unit 190. To implement this restriction, each decompress/render pipeline may be limited to executing that blocks that it receives in an "in-order" fashion. For example, if each pipeline has a buffer to store pending blocks, the pipeline may be forced to read from the buffer in a FIFO manner. Out-of-order processing within a particular pipeline would not be allowed in this embodiment.
Similarly, some embodiments of graphics system 100 may guarantee that any blocks preceding a multicast block will be executed before the multicast block is executed (within a particular pipeline). This may be implemented in the same manner described above (i.e., by forcing each pipeline to execute blocks it receives in the order in which they are received).
Depending upon the implementation and the amount of complexity within control unit 190 that is acceptable, restrictions are also possible on other types of state information. Examples include limitations on the block-to-block propagation of color information (e.g., set by Java 3D setColor instructions), bundling information (e.g., set by Java 3D bundling instructions), or Huffman table settings. In some embodiments, the geometry compression used may rely upon programmable Huffman tables for decompression. The tables may be loaded by Java 3D setTable instructions. After the decompression table is set, each following vertex and or primitive may be decoded utilizing the table.
The aforementioned restrictions may be programmed into a geometry compression program (or dedicated geometry compression hardware) that follows the restrictions when creating the compressed 3D geometry data. Similarly, the requirements above may be programmed into a load-timer verifier that is run as part of the decompression process. Before decompression begins, the load-time verifier may examine the data to determine which, if any of the requirements have been violated.
Graphics system 100 may be optimized to support a particular set of compression requirement. However, if data that does not comply with the particular compression requirements is received, in some embodiments graphics system 100 may still be configured to decompress the data (albeit at a less than optimal rate). For example, in a worst-case scenario all of the blocks may be routed in-order to a single decompress/render pipeline. While slow, this method may still allow accurate decompression and rendering of some types of compressed 3D geometry data that fail to meet all of the restrictions. Live-Dead Analysis - Figs. 19A-C
During the compression process, the compression program/hardware may be configured to perform a live-dead analysis to ensure that the geometry is compressed coπectly This may also be performed m a venfier (i.e., a program that checks the compressed geometry data for compliance with a standard or predefined set of rules). The venfier may be run at compression-time and or at load time. The use of live-dead analysis may allow the compressor to achieve greater compression ratios. In some embodiments, particularly if there are a large number of decompress/render pipelmes, the unicast/multicast implementation descnbed above may reduce efficiency to some extent. For example, if one out of every five blocks is a multicast block, and if there are six decompress/render pipelmes, then some pipelmes may spend an undesirable amount of time processmg multicast blocks. To address this, the compressor or venfier may be configured to determme whether a particular pipeline needs to see a particular multicast block. In some embodunents, this mformation may be encoded as a set of "live-dead" bits (e.g , at the beginning of each block m addition to the multicast bit) Control unit 190 may be configured to detect these live-dead bits for each block and then route the blocks accordmgly In other embodiments, the compressor may be configured to reaπange and or change global ms -ructions to local instructions.
For example, if a global color change to red is followed by two vertices and then a global color change to green, then the global color change to red may be changed to two local color changes to red (i.e., one for each vertex following the global color change to red) Since the global color change to green follows so closely, local color changes will be more efficient m systems with more than two decompression/render pipelmes.
Figs. 19A-C graphically illustrate the process of live-dead analysis usmg network flow diagrams. Fig 19A illustrates the parallel execution of a sequence of blocks that were onginally m the following order multicast block 240, unicast block 242A, unicast block 242B, unicast block 242C, and multicast block 244 Assuming multicast block 240 sets a particular portion of state information (e g , color) to a value X, multicast block 244 may rely upon that state mformation not havmg been changed when it executed Normally, if subsequent blocks rely upon state mformation set by previous blocks, intervening blocks would not be allowed to change the state mformation However, m some embodiments the geometry data may be compressed to allow intervening blocks to temporarily change the state mformation. This is shown by unicast block 242B, which changes the state mformation from value X to value Y. In many embodunents, however, the geometry may be compressed independent of the target hardware's exact configuration. For example, the compression program may be unaware of the number of decompress/render pipelmes present in the target hardware The number of pipelmes may vary from system to system dependmg upon their configuration Thus, to ensure that multicast block 244 executes coπectly (i.e., has the proper state mformation), unicast block 242B returns the altered state mformation back to its ongmal state. This is useful m embodunents m which there are multiple decompress/render pipelmes, each operating mdependently and each havmg its own internal copy of the state mformation. Thus one pipeline may temporaπly operate usmg different state mformation. When a particular piece of state mformation will be relied upon by future blocks, that state mformation is considered to be "live" state mformation. However, once a particular setting of state mformation is no longer needed, it is considered "dead" Dead state mformation may be changed by subsequent unicast or multicast blocks without havmg to return the state mformation back to its ongmal state.
Fig. 19B illustrates how multicast instructions may reduce overall efficiency m some systems with many pipelmes Assuming there are five pipelmes m the system, usmg a multicast block 240 to set a particular portion of the state mformation to a value X, each of the five pipelmes will have to execute the instruction However, if only the first three unicast instructions (242A-C) rely upon that piece of state information, the final two pipelmes executing umcast blocks 242D-E waste time executing the state setting instruction from multicast block 240
In contrast, Fig. 19C illustrates how movmg the state-setting instruction mto the unicast instructions prevents the pipelmes that execute unicast blocks 242D-E from havmg to execute the unnecessary state-setting instruction By performing live-dead analysis, the compressed geometry data may thus be further optimized.
Encoding of Live-Dead Bits - Figs. 20A-B
Figs 20A-B illustrates one type of encoding for live-dead bits in which the live-dead bits are embedded withm a "don't care" field of a no-op Advantageously, backward compatibility may be obtamed usmg this method because non-multicast enabled hardware (e.g , hardware that only has one decompression unit or one decompress/render pipeline) may be configured to ignore the no-op don't care bits and process the blocks sequentially.
Fig. 20A illustrates one embodiment of a method for encoding compressed geometry data withm blocks that are configured to be decompressed mdependently and in parallel As shown m the figure, data sequence 208 compπses a senes of blocks as previously disclosed In this embodiment, however, each block compπses a vaπable number of vaπable length header/body pairs (e.g , H1B1, H2B2, etc ) Each header may be separated from its coπespondmg body For example header HI is separated from body Bl by body B0 and header H2 Smce the header may contam length mformation regardmg the coπesponding body, this separation may be advantageous duπng the compression process The separation allows the decompressor to prepare for receiving the header before it is actually received The time allotted for preparation may improve the ability of the decompressor to effectively pipeline the decompression process. Additional details regarding possible methods for header separation (also refeπed to as header forwarding) are detailed m U S Patent No 5,867,167, entitled "Compression of Three-Dimensional Graphics Data Including Quantization, Delta-Encoding, and Vaπable-Length Encodmg" by Michael F. Deeπng, which is incorporated herem by reference m its entirety
As also indicted m the figure, m this embodiment the body of the first and last instruction of each block may be defined to be vaπable-length no-op instructions (i.e , B0 and Bn) This may allow certain control information to be embedded withm the block without sacπficing backward compatibility For example, some load-time venfier programs may be configured to implement live/dead encodmg as discussed above. The live/dead encodmg may then be embedded withm the vanable length no-ops. However, if a graphics system only has one decompress/render pipeline or for some other reasons does not support live/dead encodmg, then the graphics system may be configured to ignore the no-op instruction. In some embodiments, the final header portions Hn+1 may also be packed with live/dead encodmg mformation and or additional control mformation. Fig. 20B illustrates details of the encoding illustrated in Fig. 20A. The headers may contain length information indicating the number of bits, bytes, or words from the header to the coπesponding body (i.e., header HI indicates the length of BO and possible H2). Alternatively, the header may contain information regarding the length of the coπesponding body (i.e., header HI indicates the length of body Bl). In the pictured embodiment, headers are defined to have a fixed length of 8-bits. This limitation may summarily limit the maximum length of the variable-length bodies.
The first and last body of each block may be predefined to have a particular set of fields. For example, the first body portion (BO) of each block may be defined to begin with a fixed-length field 260 that indicates the length of the body portion (e.g., in bits, bytes or words). Multicast/unicast bit 202 may be defined to follow field 260. Next, block length information field 204 may follow. After the first body portion, a fixed or variable number of header-body pairs may follow. As previously noted, the final header and or final body portion may also be defined to indicate a variable or fixed length no-op and may be used to store certain control information.
In some embodiments, state information may be defined as information that is not associated with a particular vertex or set of vertices (e.g., state information that affects all following vertices in the block). For example, the previously described global color change instruction is not associated with a particular vertex and would thus be considered to be a state changing instruction. Thus, color information can be either state information (e.g., global) or non-state information (also refeπed to herein as geometry information or per-vertex information). A number of different rules may be applied during the compression and or decompression process to simplify the live-dead analysis for state information. For example, in some embodiments a restriction may be imposed that prohibits certain or all state information (e.g., the contents of the transformed vertex memory) from being shared between blocks. Thus a block may not rely on state information set by a previous block. In other embodiments, however, state information may be shared.
Note the example encodings illustrated in the figures are for explanatory purposes only and are not meant to be limiting. Other encodings and configurations are possible and contemplated, depending upon the exact implementation. For example, multicast/unicast bit 202 may be defined as the first field in the first body portion of each block. Furthermore, in some embodiments the header-body pairs may be contiguous instead of being separated. The final body portion (or the second to last, etc.) may be defined to contain a particular instruction that indicates the end of the block is approaching.
Industrial Applicability
A graphics system and method have been disclosed. The features described above may be used individually or in combination and may be realized in software, hardware, or a combination thereof. The system and method may be utilized in a number of different products, including computer systems, graphics accelerator cards, game consoles, set top boxes, portable or hand-held electronic devices, graphics display devices, system on a chip applications, and in other types of electronic devices.
Although the system and method of the present invention has been described in connection with the described embodiments, they are not intended to be limited to the specific forms set forth herein. On the contrary, they are intended to cover such alternatives, modifications, and equivalents as can be reasonably included within the spirit and scope of the invention as defined by the appended claims.

Claims

WHAT IS CLAIMED IS:
1. A graphics system compnsmg: a control unit configured to receive compressed 3D geometry data; and a plurality of decompressors, wherem said control umt is configured to convey portions of said 3D geometry data to each of said decompressors, wherem said decompressors are configured to decompress the 3D geometry data mto one or more vertices, wherem said control umt is configured to route a first subset of said portions to individual decompressors, and wherem said control unit is configured to route a second subset of said portions to all of said decompressors.
2. The graphics system as recited in claim 1, wherein said compressed 3D geometry data compπses an ordered sequence of blocks, wherem said blocks are either unicast or multicast, wherein said control unit is configured to convey each unicast block to one of said decompressors according to a load balancing scheme, wherem said control unit is configured to convey said multicast blocks to more than one of said decompressors
3. The graphics system as recited m claim 2, wherem said control unit is configured to detect control mformation withm said multicast blocks, wherem said control unit is configured to use said control mformation to determine which of said plurality of decompressors will receive said multicast blocks.
4. The graphics system as recited m claim 2, wherem said blocks compnse an multicast/unicast bit, and wherem said control unit is configured to read said multicast/unicast bit to determme whether a particular block is a multicast block or unicast block.
5. The graphics system as recited m any of claims 2-3, wherem said blocks further comprise a fixed- length field or a vanable length field.
6. The graphics system as recited m any of claims 2-5, wherem said blocks further compnse a plurality of header-body pairs, wherem each header is indicative of either the location of the coπesponding body or the length of the coπespondmg body.
7. The graphics system as recited m any of claims 2-6, wherem each bock further compπses instructions that set state information withm said decompressors, wherem each decompressor is configured to utilize said state mformation to decompress said geometry data.
8. The graphics system as recited m claim 7, wherem said state mformation compnses at least color state mformation and normal state mformation.
. The graphics system as recited m any of claims 2-8, further compπsmg a plurality of transformation units, each configured to receive and transform vertices from one of said decompressors; and one or more setup units, each compπsmg a transformed vertex memory, wherem said setup units are configured to receive said transformed vertices and assemble geometnc pnmitives therefrom.
10. A method for decompressmg compressed 3D geometry data, the method compnsing: receivmg said compressed 3D geometry data, wherem said compressed 3D geometry data compnses a senes of blocks; examining at least a portion of each block to determme whether the block is a multicast block or a umcast block; routmg each multicast block to a plurality of decompressors, wherem each decompressor stores an individual copy of state mformation, wherem said multicast blocks serve to update said individual copies of state mformation; routing each unicast block to one of said plurality decompressor; and decompressmg said multicast and unicast blocks m said decompressors to form vertices, wherem each decompressor's state mformation is used by the decompressor to perform said decompressmg.
11. The method as recited m claim 10, wherem said senes of blocks are ordered, and wherein said routing the unicast blocks is performed accordmg to a load balancmg scheme.
12. The method as recited m claims 10 or 11, further compπsmg conveymg said vertices to one or more setup units, wherem each setup unit compπses a transformed vertex memory, wherem said setup units are configured to assemble said vertices mto geometnc pnmitives using a transformed vertex memory
13. The method as recited m claims 10-12, further compnsing conveymg said vertices to one or more setup units, wherem each setup unit compnses a transformed vertex memory, wherem said setup units are configured to assemble said vertices mto geometnc pnmitives usmg a tiansformed vertex memory
14. The method as recited m claims 10-13, further compπsmg determining the length of each multicast and unicast block by readmg a length field at a predetermined location withm the block or by performing a computational process on a subset of data in each block.
15. The method as recited m claims 10-14, wherem said decompressmg compπses readmg header and body portion pairs from said blocks, wherem said header portions contam length mformation regardmg said coπespondmg body portions, and wherem said header and body portions are separated by at least one intervening header/body portion.
16. The method as recited m claims 10-15, wherein said unicast blocks compnse per-vertex mformation.
17. The method as recited m claims 10-16, wherem said decompression state information mcludes color and transparency ----formation
18. The method as recited in claims 10-17, wherem each unicast block compπses geometry data descnbmg one or more vertices, wherem each unicast block compπses a restart tag associated with the first descnbed vertex, wherem the restart tag causes the decompressor decompressmg the unicast block to reset at least part of its decompression state information.
19. The method as recited m claims 10-18, further compπsmg guaranteemg that any multicast blocks occurring before a particular unicast block m said senes of blocks will be received m sequence by every one of said plurality of decompressors before any subsequent blocks and said particular unicast block in said senes of blocks
20. The method as recited m claims 10-19, further compnsing guaranteeing that any multicast blocks occurring before a particular unicast block in said series of blocks will be received by every one of said plurality of decompressors before any subsequent blocks and said particular unicast block m said senes of blocks
21. A method for compressmg 3D geometry data, the method compnsing receivmg said 3D geometry data, wherem said 3D geometry data compnses a plurality of vertices, dividing said plurality of vertices mto tnangle meshes based upon said vertices' xyz position, embedding mesh buffer references to reduce repetition of vertices in said meshes; and formatting said meshes mto a senes of blocks to allow parallel decompression, wherem a first subset of said blocks are multicast blocks configured to be conveyed to a plurality of parallel decompressors, wherem a second subset of said blocks are unicast blocks configured to be conveyed to a smgle decompressor.
22. The method for as recited m claim 21, wherem said unicast blocks compnse decompression state mformation, and wherem said multicast blocks compnse geometry data, wherem multicast blocks occumng before a particular unicast block m said senes of blocks are configured to be received by every one of said plurality of decompressors before any subsequent blocks m said senes of blocks, wherem said mesh buffer references create a mesh buffer state m each decompressor, wherem said mesh buffer state mformation is not shared between blocks.
23. A computer program embodied on a earner medium, wherem the computer program compnses a plurality of instructions, wherem the plurality of mstructions are configured to implement the method of any of claims 10-22.
24. The computer program as recited m claim 23, wherem said earner medium is a storage medium or a transmission medium
PCT/US2000/015775 1999-06-14 2000-06-09 Segmenting compressed graphics data for parallel decompression and rendering WO2000077738A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE60004827T DE60004827T2 (en) 1999-06-14 2000-06-09 SEGMENTATION OF COMPRESSED GRAPHIC DATA FOR PARALLEL DECOMPRESSION AND REPRESENTATION
AT00941277T ATE248410T1 (en) 1999-06-14 2000-06-09 SEGMENTATION OF COMPRESSED GRAPHIC DATA FOR PARALLEL DECOMPRESSION AND DISPLAY
EP00941277A EP1185958B1 (en) 1999-06-14 2000-06-09 Segmenting compressed graphics data for parallel decompression and rendering
AU56004/00A AU5600400A (en) 1999-06-14 2000-07-09 Segmenting compressed graphics data for parallel decompression and rendering

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/332,827 1999-06-14
US09/332,827 US6459429B1 (en) 1999-06-14 1999-06-14 Segmenting compressed graphics data for parallel decompression and rendering

Publications (1)

Publication Number Publication Date
WO2000077738A1 true WO2000077738A1 (en) 2000-12-21

Family

ID=23300029

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/015775 WO2000077738A1 (en) 1999-06-14 2000-06-09 Segmenting compressed graphics data for parallel decompression and rendering

Country Status (6)

Country Link
US (2) US6459429B1 (en)
EP (1) EP1185958B1 (en)
AT (1) ATE248410T1 (en)
AU (1) AU5600400A (en)
DE (1) DE60004827T2 (en)
WO (1) WO2000077738A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3886055A1 (en) * 2020-03-26 2021-09-29 Sony Interactive Entertainment Inc. Image coding system and method

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999067742A1 (en) * 1998-06-25 1999-12-29 Matsushita Electric Industrial Co., Ltd. Image processor
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6604158B1 (en) 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US7209140B1 (en) * 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US7181608B2 (en) 2000-02-03 2007-02-20 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US20010035873A1 (en) * 2000-04-20 2001-11-01 David Easter Method and system for deferred assignment of attributes in a computer graphics scene
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) * 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7417568B2 (en) 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US7098921B2 (en) * 2001-02-09 2006-08-29 Activision Publishing, Inc. Method, system and computer program product for efficiently utilizing limited resources in a graphics device
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US7248257B2 (en) * 2001-02-14 2007-07-24 Technion Research & Development Foundation Ltd. Low bandwidth transmission of 3D graphical data
US7023431B2 (en) * 2001-03-01 2006-04-04 Microsoft Corporation Method and system for providing data to a graphics chip in a graphics display system
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
EP1258837A1 (en) * 2001-05-14 2002-11-20 Thomson Licensing S.A. Method to generate mutual photometric effects
WO2002101497A2 (en) * 2001-06-08 2002-12-19 Nvidia Corporation System, method and computer program product for programmable fragment processing in a graphics pipeline
US6697064B1 (en) * 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
EP1456830A1 (en) * 2001-11-14 2004-09-15 The Henry M. Jackson Foundation Multi-tactile display haptic interface device
US6816161B2 (en) * 2002-01-30 2004-11-09 Sun Microsystems, Inc. Vertex assembly buffer and primitive launch buffer
US6853380B2 (en) * 2002-03-04 2005-02-08 Hewlett-Packard Development Company, L.P. Graphical display system and method
US7209137B2 (en) * 2002-09-12 2007-04-24 International Business Machines Corporation Efficient triangular shaped meshes
US7564455B2 (en) * 2002-09-26 2009-07-21 The United States Of America As Represented By The Secretary Of The Navy Global visualization process for personal computer platforms (GVP+)
US6795880B2 (en) * 2002-11-05 2004-09-21 Sbc Technology Resources, Inc. System and method for processing high speed data
US7106326B2 (en) * 2003-03-03 2006-09-12 Sun Microsystems, Inc. System and method for computing filtered shadow estimates using reduced bandwidth
US20050017968A1 (en) * 2003-07-21 2005-01-27 Stephan Wurmlin Differential stream of point samples for real-time 3D video
US7202872B2 (en) * 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
EP1711904A4 (en) * 2003-12-19 2010-02-10 Esi Group Methods for generating digital or visual representations of a closed tessellated surface geometry
US7552316B2 (en) * 2004-07-26 2009-06-23 Via Technologies, Inc. Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system
US7673060B2 (en) * 2005-02-01 2010-03-02 Hewlett-Packard Development Company, L.P. Systems and methods for providing reliable multicast messaging in a multi-node graphics system
US7978204B2 (en) * 2005-04-29 2011-07-12 Nvidia Corporation Transparency-conserving system, method and computer program product to generate and blend images
US20070035553A1 (en) * 2005-08-12 2007-02-15 Microsoft Corporation General framework for aligning textures
US7830388B1 (en) * 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
TWI319166B (en) * 2006-03-06 2010-01-01 Via Tech Inc Method and related apparatus for graphic processing
JP4873004B2 (en) * 2006-03-17 2012-02-08 日本電気株式会社 3D data processing system
US8332751B2 (en) 2006-11-14 2012-12-11 Microsoft Corporation Removal of redundant information from electronic documents
US8125498B2 (en) * 2007-01-03 2012-02-28 Siemens Medical Solutions Usa, Inc. Generating a 3D volumetric mask from a closed surface mesh
KR101520649B1 (en) * 2008-01-21 2015-05-15 삼성전자 주식회사 3 Method and system for compressing and decoding mesh data with random accessibility in 3-dimensional mesh model
US8243070B1 (en) * 2008-04-18 2012-08-14 Adobe Systems Incorporated Triangulation for accelerated rendering of polygons
US8854379B2 (en) * 2009-02-25 2014-10-07 Empire Technology Development Llc Routing across multicore networks using real world or modeled data
WO2011039565A1 (en) * 2009-09-30 2011-04-07 Freescale Semiconductor, Inc. Software probe minimization
WO2012100373A1 (en) * 2011-01-28 2012-08-02 Intel Corporation Techniques to request stored data from memory
US8497852B2 (en) * 2011-09-09 2013-07-30 Dreamworks Animation Llc Minimal parallax coincident digital drawing and display surface
CN103918009A (en) * 2011-11-07 2014-07-09 汤姆逊许可公司 Predictive position encoding
US9356645B2 (en) * 2012-11-16 2016-05-31 International Business Machines Corporation Saving bandwidth in transmission of compressed data
KR101685999B1 (en) * 2015-12-30 2016-12-29 주식회사 리얼타임테크 Distributed Storage Method For Mass TIN Data
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US11019366B2 (en) * 2018-05-17 2021-05-25 Google Llc Image compression and decompression using triangulation
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
US11561797B2 (en) * 2019-08-19 2023-01-24 Ati Technologies Ulc Decompression engine for decompressing compressed input data that includes multiple streams of data
US11450030B2 (en) 2019-09-24 2022-09-20 Apple Inc. Three-dimensional mesh compression using a video encoder
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US11625866B2 (en) 2020-01-09 2023-04-11 Apple Inc. Geometry encoding using octrees and predictive trees
US11615557B2 (en) 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
US20220058872A1 (en) * 2020-08-18 2022-02-24 Qualcomm Technologies, Inc. Compressed geometry rendering and streaming
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
EP4083784A1 (en) * 2021-04-27 2022-11-02 Bayerische Motoren Werke Aktiengesellschaft Method, system and computer program for developing, securing, training and / or operating a vehicle system or a vehicle functionality
US11948339B2 (en) * 2021-06-04 2024-04-02 Apple Inc. Encoding and decoding visual content

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0757333A2 (en) * 1995-08-04 1997-02-05 Sun Microsystems, Inc. 3D image decoding
EP0817117A2 (en) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1309519C (en) 1987-03-17 1992-10-27 Antonio Cantoni Transfer of messages in a multiplexed system
FI88841C (en) 1991-10-30 1993-07-12 Nokia Telecommunications Oy Method for processing alternate length data transfer frames with a channel controller and for placing them into a cyclic buffer memory
GB2269289B (en) 1992-07-13 1995-10-25 Sony Broadcast & Communication Serial data decoding
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US5801711A (en) * 1995-08-08 1998-09-01 Hewlett Packard Company Polyline and triangle strip data management techniques for enhancing performance of computer graphics system
US5794016A (en) 1995-12-11 1998-08-11 Dynamic Pictures, Inc. Parallel-processor graphics architecture
US6057852A (en) 1997-04-30 2000-05-02 Hewlett-Packard Company Graphics accelerator with constant color identifier

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0757333A2 (en) * 1995-08-04 1997-02-05 Sun Microsystems, Inc. 3D image decoding
EP0817117A2 (en) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3886055A1 (en) * 2020-03-26 2021-09-29 Sony Interactive Entertainment Inc. Image coding system and method

Also Published As

Publication number Publication date
AU5600400A (en) 2001-01-02
EP1185958A1 (en) 2002-03-13
DE60004827T2 (en) 2004-06-17
DE60004827D1 (en) 2003-10-02
US6559842B1 (en) 2003-05-06
US6459429B1 (en) 2002-10-01
ATE248410T1 (en) 2003-09-15
EP1185958B1 (en) 2003-08-27

Similar Documents

Publication Publication Date Title
EP1185958B1 (en) Segmenting compressed graphics data for parallel decompression and rendering
US7071935B1 (en) Graphics system with just-in-time decompression of compressed graphics data
US6628277B1 (en) Decompression of three-dimensional graphics data using mesh buffer references to reduce redundancy of processing
US7450129B2 (en) Compression of streams of rendering commands
US10929950B2 (en) Method and apparatus for multi format lossless compression
US6359630B1 (en) Graphics system using clip bits to decide acceptance, rejection, clipping
US9406149B2 (en) Selecting and representing multiple compression methods
EP1789927B1 (en) Increased scalability in the fragment shading pipeline
US5740409A (en) Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities
US10152765B2 (en) Texture processing method and unit
EP0817008A2 (en) Three-dimensional graphics accelerator which implements multiple logical buses
EP0817009A2 (en) Three-dimensional graphics accelerator with direct data channels
WO2000011607A1 (en) Deferred shading graphics pipeline processor
US7616202B1 (en) Compaction of z-only samples
US10818054B2 (en) Apparatus and method for asynchronous texel shading
EP1255227A1 (en) Vertices index processor
CN114028804A (en) Streaming compressed light fields
CN114445257A (en) Streaming light fields compressed using lossless or lossy compression
US8243086B1 (en) Variable length data compression using a geometry shading unit
US8254701B1 (en) Data compression using a geometry shading unit
US8295621B1 (en) Data decompression using a geometry shading unit
WO2017172032A1 (en) System and method of caching for pixel synchronization-based graphics techniques
EP4168975A1 (en) Delta triplet index compression
EP0889440B1 (en) Method and apparatus for geometric compression of three-dimensional graphics
JPH1173527A (en) Compression and expansion of three-dimensional geometric data representing regularly tiled surface part of graphical object

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2000941277

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2000941277

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWG Wipo information: grant in national office

Ref document number: 2000941277

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP