USRE44958E1 - Primitive culling apparatus and method - Google Patents

Primitive culling apparatus and method Download PDF

Info

Publication number
USRE44958E1
USRE44958E1 US11/490,505 US49050506A USRE44958E US RE44958 E1 USRE44958 E1 US RE44958E1 US 49050506 A US49050506 A US 49050506A US RE44958 E USRE44958 E US RE44958E
Authority
US
United States
Prior art keywords
primitive
bounding box
predetermined number
pixel
pixel fragments
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
US11/490,505
Inventor
Stephen Moffitt
Eng Lim Goh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RPX Corp
Morgan Stanley and Co LLC
Original Assignee
RPX Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by RPX Corp filed Critical RPX Corp
Priority to US11/490,505 priority Critical patent/USRE44958E1/en
Assigned to GENERAL ELECTRIC CAPITAL CORPORATION reassignment GENERAL ELECTRIC CAPITAL CORPORATION SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SILICON GRAPHICS, INC.
Assigned to MORGAN STANLEY & CO., INCORPORATED reassignment MORGAN STANLEY & CO., INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GENERAL ELECTRIC CAPITAL CORPORATION
Assigned to GRAPHICS PROPERTIES HOLDINGS, INC. reassignment GRAPHICS PROPERTIES HOLDINGS, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SILICON GRAPHICS, INC.
Assigned to RPX CORPORATION reassignment RPX CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GRAPHICS PROPERTIES HOLDINGS, INC.
Application granted granted Critical
Publication of USRE44958E1 publication Critical patent/USRE44958E1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

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

Definitions

  • the invention generally relates to graphics processing and, more particularly, the invention relates to processing graphics primitives for potential display on a display device.
  • graphics processor that processes graphics data in a highly streamlined manner.
  • the graphics processor converts substantially unprocessed graphics data into a format that can be displayed on a conventional display device (e.g., a cathode ray tube display or a liquid crystal display).
  • graphics subsystems often process large amounts of graphical data for portions of objects that are not going to be displayed.
  • 3D graphics subsystems implementing OPENGL typically produce graphical data (e.g., attribute data, such as normal and texture data) for most primitives in an image—even for those primitives that are too small to light any pixels on the display device.
  • Graphics processors in those subsystems nevertheless typically at least begin rasterizing such primitives before determining that they are too small to render.
  • the graphics processor may have performed geometry processes, calculated gradient information, and determined color information for the portion of the primitive between the vertices.
  • the graphics processor may have performed geometry processes, calculated gradient information, and determined color information for the portion of the primitive between the vertices.
  • a method and apparatus for processing a primitive for potential display on a display device determines if the primitive intersects at least a predetermined number of pixel fragments on the display device.
  • the predetermined number is no less than one.
  • the method and apparatus then cull the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments. If it is culled, the primitive is not raster processed (i.e., not subjected to raster processing, whether or not complete).
  • a graphics processor has 1) a raster stage capable of raster processing the primitive and 2) a geometry stage capable of forwarding primitive attribute data to the raster stage for raster processing.
  • the apparatus and method may determine if the primitive intersects at least the predetermined number of pixel fragments on the display device before forwarding primitive attribute data from the geometry stage to the raster stage.
  • a 2D image is generated from pixel fragments stored in a frame buffer.
  • a number of methods may be used to determine if the primitive intersects at least one pixel fragment on the display device. For example, a bounding box may be formed based upon potential data of the primitive. It then may be determined if the bounding box bounds more than a prespecified number of pixel fragments. If the bounding box does not bound more than the prespecified number of pixel fragments, then an equation defining the position of the primitive may be used to determine if the primitive intersects at least one pixel fragment. Moreover, the primitive may be culled if no pixel fragments are bounded by the bounding box.
  • an apparatus for processing a primitive for potential display on a display device having a plurality of pixels includes 1) a geometry stage capable of performing geometry operations on the primitive, and 2) a raster stage operatively coupled with the geometry stage.
  • the geometry stage is capable of determining if the primitive intersects at least a predetermined number of pixel fragments on the display device.
  • the geometry stage is configured to cull the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments on the display device.
  • the rater stage is capable of raster processing the primitive if the geometry stage does not cull the primitive.
  • Illustrative embodiments of the invention are implemented as a computer program product having a computer usable medium with computer reachable program code thereon.
  • the computer readable code may be read and utilized by a computer system in accordance with conventional processes.
  • FIG. 1 schematically shows a portion of a computer system that may implement illustrative embodiments of the invention.
  • FIG. 2 schematically shows a geometry stage that may be configured to implement illustrative embodiments of the invention.
  • FIG. 3 shows a process used by the computer system shown in FIG. 1 for potentially culling a primitive in accordance with illustrative embodiments of the invention.
  • FIG. 4A schematically shows an exemplary primitive that intersects no pixel fragments and has an associated bounding box that also intersects no pixel fragments.
  • FIG. 4B schematically shows an exemplary primitive that intersects no pixel fragments, but has an associated bounding box that intersects two pixel fragments.
  • FIG. 4C schematically shows an exemplary primitive that intersects three pixel fragments and has a bounding box that intersects four pixel fragments.
  • FIG. 4D schematically shows an exemplary primitive that intersects one pixel fragment and has an associated bounding box that also intersects that same pixel fragment.
  • Illustrative embodiments avoid unnecessary processing by configuring the geometry stage of a graphics processor to prevent further processing of primitives that are too small to be rendered on a display device.
  • the geometry stage first determines if a given primitive intersects at least a predetermined number of pixel fragments (e.g., one pixel fragment) on the display device. If it does (and the given primitive is not culled by other culling operations), then the geometry stage permits the given primitive to be further processed by succeeding graphics processor stages, such as the rasterization stage.
  • the geometry stage determines that the given primitive does not intersect the predetermined number of pixel fragments, then various embodiments stop processing the primitive. In that case, rather than continuing to process the given primitive, the geometry stage may begin processing the next succeeding primitive of the graphical object. Details of illustrative embodiments are discussed below.
  • FIG. 1 schematically shows portions of a computer system 10 on which various embodiments of the invention may be implemented.
  • the computer system 10 has a host thread 12 for generating vertex primitive data (e.g., attribute and positional data for any conventional graphics primitive type known in the art, such as triangles, lines, and points) for images to be displayed, and an optional buffer 14 for storing the primitive data generated by the host thread 12 .
  • the buffer 14 is formed in system memory within the general computer system 10 .
  • An interconnect apparatus such as a PCI bus 16 , provides a communication link between the various computer system components.
  • the buffer 14 is omitted and thus, the host thread 12 explicitly forwards vertex primitive data without buffering.
  • the computer system 10 also has 3D graphics subsystem 18 implementing the OPENGL standard, which was initially developed by Silicon Graphics, Inc. of Mountain View, Calif. It should be noted that discussion of such a computer system 10 and graphics subsystem 18 is exemplary and thus, is not intended to limit all embodiments of the invention. Accordingly, various embodiments of the invention can be applied to other graphics processing types and standards (e.g., DIRECT3D and 2D graphics subsystems).
  • the graphics subsystem 18 has a number of components for producing and displaying 3D graphical objects.
  • the graphics subsystem 18 may include a graphics processor 20 for transforming and rasterizing the primitive data generated by the host thread 12 into a format that can be displayed on a display device 22 .
  • the graphics processor 20 which may be implemented in either hardware or software, includes a series of stages for converting a mathematical representation of a 3D object into a corresponding 2D image that can be rendered on the display device 22 .
  • the graphics processor 20 includes the following components:
  • each of the noted graphics processor stages may perform other functions known in the art (e.g., texturing).
  • the graphics processor 20 may be implemented in either hardware, software, or a combination of hardware and software.
  • each stage When implemented as software, each stage preferably is made up of a series of computer instructions that executes across one or more high speed parallel processors.
  • each stage When implemented as hardware, however, each stage illustratively may be a specially designed application specific integrated circuit that performs the required functions.
  • FIG. 2 schematically shows more details of the geometry stage 26 shown in FIG. 1 .
  • the geometry stage 26 has a primitive pre-processor 32 for determining if a vertex will be visible in an image to be displayed on the display device 22 , and a receiving module 34 for selectively causing primitive attribute data to be forwarded to/received by the graphics processor input.
  • the geometry stage 26 also has an attribute processor 36 that performs general geometry stage processes (e.g., lighting and texture coordinate processing).
  • a command interface 38 enables the geometry stage 26 to communicate with the command processor 24
  • a raster interface 40 enables the geometry stage 26 to communicate with the rasterization stage 28 .
  • FIG. 2 also shows more details of the primitive preprocessor 32 .
  • the primitive preprocessor 32 has a primitive coordinate processor 42 that transforms 3D coordinate data into screen space, a primitive assembler 44 for assembling primitives from their positional vertex data, and a visibility processor 46 for determining if assembled primitives will be visible in an image to be rendered.
  • the visibility processor 46 has a bounding box module 48 for logically forming bounding boxes about primitives to be rendered.
  • FIG. 3 shows a process used by the computer system 10 for potentially culling a primitive in accordance with illustrative embodiments of the invention.
  • a primitive is considered to be culled if at any stage of the graphics processor pipeline, it is not forwarded to the next stage for further processing.
  • a given primitive is considered to be culled when the geometry stage 26 first determines that such primitive will not be visible and, consequently, begins processing another primitive. In that case, the geometry stage 26 does not forward data of the given primitive to the next stages.
  • a primitive also can be culled by means of other culling processes, such as backface culling or occlusion culling processes.
  • the system executes culling operations that are less computationally intensive (e.g., back-face culling) before executing the culling process discussed in FIG. 3 .
  • culling operations that are more computationally intensive (e.g., occlusion culling) after executing that culling process. It should be noted, however, that other embodiments are not limited to any specific order for performing culling operations.
  • FIG. 3 begins at step 300 , in which the bounding box module 48 forms a conventional bounding box about the primitive. Accordingly, as known by those in the art, the minimum and maximum X-coordinates of the primitive define the width of the bounding box. In a similar manner, the minimum and maximum Y-coordinates define the height of the bounding box.
  • FIGS. 4A-4D schematically show exemplary bounding boxes for different triangle primitives.
  • the primitive coordinate processor 42 and primitive assembler 44 cooperate to assemble the primitive in a conventional manner.
  • the positional data (and subsequently, the attribute data, if necessary) may be explicitly forwarded from the host thread 12 , or from the buffer 14 by pointer.
  • the primitive coordinate processor 42 After receiving the positional data, the primitive coordinate processor 42 performs conventional transformation processes and forwards its resultant data to the primitive assembler 44 . The primitive assembler 44 then uses that resultant data to logically assemble the primitive. Of course, because it merely is logically assembled, the primitive is not rasterized or rendered at this point. As known by those in the art, when assembling a primitive, the primitive assembler 44 determines which vertices make up the primitive. Among other things, assembly of the primitive at this point in the process permits the graphics processor 20 to use the positional data to determine if the primitive ultimately will be visible on the display device 22 (as discussed below).
  • the visibility processor 46 determines if the bounding box intersects (i.e., bounds) any pixel fragments (step 302 ). In other words, the visibility processor 46 determines if any pixel fragments are within or on the boundary of the bounding box.
  • pixel fragment has a well known meaning in the art. Specifically, a pixel fragment is a sample point logically located on a pixel. There can be one sample point or a plurality of sample points on a single pixel. For example, anti-aliasing processes (also known as “multisampling” processes) typically sample a pixel multiple times. Systems that do not multisample a pixel generally are considered to sample each pixel once (e.g., at the pixel center).
  • step 302 determines whether the bounding box does not intersect any pixel fragments (e.g., see FIG. 4A ). If it is determined at step 302 that the bounding box does not intersect any pixel fragments (e.g., see FIG. 4A ), then the primitive can be trivially rejected. More specifically, if the bounding box intersects no pixel fragments, then the process continues to step 304 , in which the attribute data is effectively discarded, thus ending the process.
  • the primitive preprocessor 32 may affirmatively discard the vertex attribute data by forwarding a message to the host thread 12 indicating that the attribute data for that vertex is not needed. In illustrative embodiments, however, the primitive pre-processor 32 effectively discards the vertex attribute data simply by not forwarding the discarded primitive to the rasterization stage 28 . Instead, the primitive preprocessor 32 simply begins processing another primitive.
  • step 306 it is determined if more than the prespecified number of pixel fragments intersect the bounding box. If the bound box intersects more than the prespecified number, then the process skips to step 310 , in which the receiving module 34 retrieves the attribute data for processing by the attribute processor 36 . After processing is complete, the geometry stage 26 forwards the resulting transformed data to the rasterization stage 28 .
  • the rasterization stage 28 After receipt of the resulting transformed data from the geometry stage 26 , the rasterization stage 28 performs conventional rasterization processes. For example, the rasterization stage 28 illustratively rasterizes the primitive and, when processing is completed, forwards data representing the fully processed primitive to the frame buffer 30 . If double buffered, the frame buffer 30 could store the data of a fully processed image in its display portion of memory while receiving the pixel data (for the image currently being formed) in its write portion of memory.
  • step 306 if the visibility processor 46 determines that the bounding box does not intersect more than the predetermined number of pixel fragments, then the process continues to step 308 . Specifically, at step 308 , the visibility processor 46 determines if the primitive intersects any pixel fragments. To that end, the visibility processor 46 tests each pixel fragment within the bounding box to determine if any are within the mathematical border of the primitive (e.g., using edge equations).
  • step 310 the process continues processing the primitive in a conventional pipelined manner. Conversely, if the primitive does not intersect at least one pixel fragment, then the vertex data for that primitive is effectively discarded (step 304 , discussed above).
  • FIGS. 4A-4D schematically show pixel fragments and their spatial relationships with triangle primitives and their respective bounding boxes. Note that FIGS. 4A-4D are exemplary and not intended to limit the scope of the invention. Moreover, it should be noted that although triangle primitives are discussed, embodiments of the invention can be applied to other polygon primitives and line primitives. Discussion of triangle primitives thus is exemplary and not intended to limit the scope of the invention.
  • FIGS. 4A-4D each show one pixel only. No adjacent pixels are shown. Those skilled in the art should understand, however, that pixel fragments on adjacent pixels, if shown, could be used by various embodiments of the invention to determine if the primitive is to be culled. Accordingly, embodiments of the invention are not limited to pixel fragments in one pixel only. Pixel fragments from any pixel on the display device 22 should suffice to determine if a primitive is visible on an image to be displayed.
  • FIG. 4A shows a primitive that intersects no pixel fragments and has an associated bounding box that also intersects no pixel fragments.
  • FIG. 4B shows a primitive that intersects no pixel fragments. Its associated bounding box, however, intersects two pixel fragments.
  • FIG. 4C shows a primitive that intersects three pixel fragments and has a bounding box that intersects four pixel fragments.
  • FIG. 4D shows a primitive that intersects one pixel fragment and has an associated bounding box that also intersects that same pixel fragment only.
  • various embodiments of the invention cull a primitive as a function of whether it intersects at least one pixel fragment. In other words, if a primitive does not intersect at least one pixel fragment, it is culled. If it does, however, then it is processed in a conventional manner for display on the display device 22 .
  • the rasterization stage 28 thus should not process primitive data for a primitive that is too small to be rendered on the display device 22 . Consequently, the disclosed graphics processor 20 , including its rasterization stage 28 , should receive and process small graphics primitives in a more rapid and efficient manner than those within systems that do not implement the disclosed processes.
  • the disclosed functionality may be performed by another module.
  • the disclosed functionality may be a preprocessing stage within the raster stage 28 . Accordingly, in that case, the raster stage 28 preprocesses the primitive data in the specified manner before applying conventional rasterization processes.
  • the disclosed functionality may be within some other system component between the geometry stage 26 and the raster stage 28 .
  • Some embodiments of the invention may be implemented at least in part in any conventional computer programming language. For example, some embodiments may be implemented in a procedural programming language (e.g., “C”), or in an object oriented programming language (e.g., “C++”). Other embodiments of the invention may be implemented as preprogrammed hardware elements (e.g., application specific integrated circuits, FPGAs, and digital signal processors), or other related components.
  • C procedural programming language
  • object oriented programming language e.g., “C++”.
  • preprogrammed hardware elements e.g., application specific integrated circuits, FPGAs, and digital signal processors
  • the disclosed apparatus and method may be implemented as a computer program product for use with a computer system.
  • Such implementation may include a series of computer instructions fixed either on a tangible medium, such as a computer readable medium (e.g., a diskette, CD-ROM, ROM, or fixed disk) or transmittable to a computer system, via a modem or other interface device, such as a communications adapter connected to a network over a medium.
  • the medium may be either a tangible medium (e.g., optical or analog communications lines) or a medium implemented with wireless techniques (e.g., WIFI, microwave, infrared or other transmission techniques).
  • the series of computer instructions can embody all or part of the functionality previously described herein with respect to the system.
  • Such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems.
  • such instructions may be stored in any memory device, such as semiconductor, magnetic, optical or other memory devices, and may be transmitted using any communications technology, such as optical, infrared, microwave, or other transmission technologies.
  • such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over the network (e.g., the Internet or World Wide Web).
  • a computer system e.g., on system ROM or fixed disk
  • a server or electronic bulletin board over the network (e.g., the Internet or World Wide Web).
  • some embodiments of the invention may be implemented as a combination of both software (e.g., a computer program product) and hardware. Still other embodiments of the invention are implemented as entirely hardware, or entirely software.

Abstract

A method and apparatus for processing a primitive for potential display on a display device (having a plurality of pixels) determines if the primitive intersects at least a predetermined number of pixel fragments on the display device. The predetermined number is no less than one. The method and apparatus then cull the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments. If it is culled, the primitive is not raster processed (i.e., not subjected to raster processing, whether or not complete).

Description

RELATED APPLICATIONS
This patent application is related to United States patent application Ser. No. 10/715,882 filed on even date, entitled, “METHOD AND APPARATUS FOR PROCESSING PRIMITIVE DATA FOR POTENTIAL DISPLAY ON A DISPLAY DEVICE,” and naming Stephen Moffitt and Eng Lin Goh as inventors, the disclosure of which is incorporated Herein, in its entirety, by reference.
FIELD OF THE INVENTION
The invention generally relates to graphics processing and, more particularly, the invention relates to processing graphics primitives for potential display on a display device.
BACKGROUND OF THE INVENTION
Many computer systems have a specialized graphics subsystem for producing vivid graphical images. At the core of these subsystems typically is a graphics processor that processes graphics data in a highly streamlined manner. In simplified terms, the graphics processor converts substantially unprocessed graphics data into a format that can be displayed on a conventional display device (e.g., a cathode ray tube display or a liquid crystal display).
Undesirably, graphics subsystems often process large amounts of graphical data for portions of objects that are not going to be displayed. For example, 3D graphics subsystems implementing OPENGL typically produce graphical data (e.g., attribute data, such as normal and texture data) for most primitives in an image—even for those primitives that are too small to light any pixels on the display device. Graphics processors in those subsystems nevertheless typically at least begin rasterizing such primitives before determining that they are too small to render.
Making that determination that late in the rendering process (i.e., during rasterization) can create processing inefficiencies. For example, before determining that the primitive is too small, the graphics processor may have performed geometry processes, calculated gradient information, and determined color information for the portion of the primitive between the vertices. Of course, calculating all that data is unnecessary if the primitive is too small to render. As a result, processing time is longer than necessary, consequently inhibiting system performance.
SUMMARY OF THE INVENTION
In accordance with one aspect of the invention, a method and apparatus for processing a primitive for potential display on a display device (having a plurality of pixels) determines if the primitive intersects at least a predetermined number of pixel fragments on the display device. The predetermined number is no less than one. The method and apparatus then cull the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments. If it is culled, the primitive is not raster processed (i.e., not subjected to raster processing, whether or not complete).
In some embodiments, a graphics processor has 1) a raster stage capable of raster processing the primitive and 2) a geometry stage capable of forwarding primitive attribute data to the raster stage for raster processing. In such cases, the apparatus and method may determine if the primitive intersects at least the predetermined number of pixel fragments on the display device before forwarding primitive attribute data from the geometry stage to the raster stage.
Those skilled in the art understand that a 2D image is generated from pixel fragments stored in a frame buffer.
Other embodiments do not cull the primitive if the primitive is determined to intersect at least the predetermined number of pixel fragments on the display device. Conversely, some embodiments cull the primitive if the primitive is determined to not intersect at least the predetermined number of pixel fragments on the display device.
A number of methods may be used to determine if the primitive intersects at least one pixel fragment on the display device. For example, a bounding box may be formed based upon potential data of the primitive. It then may be determined if the bounding box bounds more than a prespecified number of pixel fragments. If the bounding box does not bound more than the prespecified number of pixel fragments, then an equation defining the position of the primitive may be used to determine if the primitive intersects at least one pixel fragment. Moreover, the primitive may be culled if no pixel fragments are bounded by the bounding box.
In accordance with another aspect of the invention, an apparatus for processing a primitive for potential display on a display device having a plurality of pixels includes 1) a geometry stage capable of performing geometry operations on the primitive, and 2) a raster stage operatively coupled with the geometry stage. The geometry stage is capable of determining if the primitive intersects at least a predetermined number of pixel fragments on the display device. In addition, the geometry stage is configured to cull the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments on the display device. The rater stage is capable of raster processing the primitive if the geometry stage does not cull the primitive.
Illustrative embodiments of the invention are implemented as a computer program product having a computer usable medium with computer reachable program code thereon. The computer readable code may be read and utilized by a computer system in accordance with conventional processes.
BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing and advantages of the invention will be appreciated more fully from the following further description thereof with reference to the accompanying drawings wherein:
FIG. 1 schematically shows a portion of a computer system that may implement illustrative embodiments of the invention.
FIG. 2 schematically shows a geometry stage that may be configured to implement illustrative embodiments of the invention.
FIG. 3 shows a process used by the computer system shown in FIG. 1 for potentially culling a primitive in accordance with illustrative embodiments of the invention.
FIG. 4A schematically shows an exemplary primitive that intersects no pixel fragments and has an associated bounding box that also intersects no pixel fragments.
FIG. 4B schematically shows an exemplary primitive that intersects no pixel fragments, but has an associated bounding box that intersects two pixel fragments.
FIG. 4C schematically shows an exemplary primitive that intersects three pixel fragments and has a bounding box that intersects four pixel fragments.
FIG. 4D schematically shows an exemplary primitive that intersects one pixel fragment and has an associated bounding box that also intersects that same pixel fragment.
DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
Illustrative embodiments avoid unnecessary processing by configuring the geometry stage of a graphics processor to prevent further processing of primitives that are too small to be rendered on a display device. To that end, the geometry stage first determines if a given primitive intersects at least a predetermined number of pixel fragments (e.g., one pixel fragment) on the display device. If it does (and the given primitive is not culled by other culling operations), then the geometry stage permits the given primitive to be further processed by succeeding graphics processor stages, such as the rasterization stage.
Conversely, if the geometry stage determines that the given primitive does not intersect the predetermined number of pixel fragments, then various embodiments stop processing the primitive. In that case, rather than continuing to process the given primitive, the geometry stage may begin processing the next succeeding primitive of the graphical object. Details of illustrative embodiments are discussed below.
FIG. 1 schematically shows portions of a computer system 10 on which various embodiments of the invention may be implemented. In particular, the computer system 10 has a host thread 12 for generating vertex primitive data (e.g., attribute and positional data for any conventional graphics primitive type known in the art, such as triangles, lines, and points) for images to be displayed, and an optional buffer 14 for storing the primitive data generated by the host thread 12. In illustrative embodiments, the buffer 14 is formed in system memory within the general computer system 10. An interconnect apparatus, such as a PCI bus 16, provides a communication link between the various computer system components. In some embodiments, the buffer 14 is omitted and thus, the host thread 12 explicitly forwards vertex primitive data without buffering.
The computer system 10 also has 3D graphics subsystem 18 implementing the OPENGL standard, which was initially developed by Silicon Graphics, Inc. of Mountain View, Calif. It should be noted that discussion of such a computer system 10 and graphics subsystem 18 is exemplary and thus, is not intended to limit all embodiments of the invention. Accordingly, various embodiments of the invention can be applied to other graphics processing types and standards (e.g., DIRECT3D and 2D graphics subsystems).
As shown in FIG. 1, the graphics subsystem 18 has a number of components for producing and displaying 3D graphical objects. Specifically, the graphics subsystem 18 may include a graphics processor 20 for transforming and rasterizing the primitive data generated by the host thread 12 into a format that can be displayed on a display device 22. In simplified terms, the graphics processor 20, which may be implemented in either hardware or software, includes a series of stages for converting a mathematical representation of a 3D object into a corresponding 2D image that can be rendered on the display device 22. To those ends, the graphics processor 20 includes the following components:
    • 1) a command buffer 23 (e.g., memory configured in a first-in, first-out manner) that buffers input commands from the host thread 12 (effectively acting as an input to the graphics processor 20) for load balancing purposes,
    • 2) a command processor 24 acting as the graphics processor input for receiving and pre-processing graphics commands,
    • 3) a geometry stage 26 for performing geometry operations (e.g., transformation and lighting processes) on primitive data produced by the host thread 12,
    • 4) a rasterization stage 28 for rasterizing primitives transformed by the geometry stage 26, and
    • 5) a frame buffer 30 for storing processed graphical images in screen space for display on the display device 22.
Those skilled in the art should understand that the descriptions following the noted components are generalizations of their function. Accordingly, in addition to the process discussed below with regard to FIG. 3, each of the noted graphics processor stages may perform other functions known in the art (e.g., texturing).
As noted above, the graphics processor 20 may be implemented in either hardware, software, or a combination of hardware and software. When implemented as software, each stage preferably is made up of a series of computer instructions that executes across one or more high speed parallel processors. When implemented as hardware, however, each stage illustratively may be a specially designed application specific integrated circuit that performs the required functions.
FIG. 2 schematically shows more details of the geometry stage 26 shown in FIG. 1. Among other things, the geometry stage 26 has a primitive pre-processor 32 for determining if a vertex will be visible in an image to be displayed on the display device 22, and a receiving module 34 for selectively causing primitive attribute data to be forwarded to/received by the graphics processor input. The geometry stage 26 also has an attribute processor 36 that performs general geometry stage processes (e.g., lighting and texture coordinate processing). A command interface 38 enables the geometry stage 26 to communicate with the command processor 24, while a raster interface 40 enables the geometry stage 26 to communicate with the rasterization stage 28.
FIG. 2 also shows more details of the primitive preprocessor 32. In particular, the primitive preprocessor 32 has a primitive coordinate processor 42 that transforms 3D coordinate data into screen space, a primitive assembler 44 for assembling primitives from their positional vertex data, and a visibility processor 46 for determining if assembled primitives will be visible in an image to be rendered. Moreover, to facilitate processing, the visibility processor 46 has a bounding box module 48 for logically forming bounding boxes about primitives to be rendered.
FIG. 3 shows a process used by the computer system 10 for potentially culling a primitive in accordance with illustrative embodiments of the invention. Generally, a primitive is considered to be culled if at any stage of the graphics processor pipeline, it is not forwarded to the next stage for further processing. For example, a given primitive is considered to be culled when the geometry stage 26 first determines that such primitive will not be visible and, consequently, begins processing another primitive. In that case, the geometry stage 26 does not forward data of the given primitive to the next stages.
Of course, as known in the art, a primitive also can be culled by means of other culling processes, such as backface culling or occlusion culling processes. In illustrative embodiments, the system executes culling operations that are less computationally intensive (e.g., back-face culling) before executing the culling process discussed in FIG. 3. In a similar manner, such embodiments execute culling operations that are more computationally intensive (e.g., occlusion culling) after executing that culling process. It should be noted, however, that other embodiments are not limited to any specific order for performing culling operations.
The process of FIG. 3 begins at step 300, in which the bounding box module 48 forms a conventional bounding box about the primitive. Accordingly, as known by those in the art, the minimum and maximum X-coordinates of the primitive define the width of the bounding box. In a similar manner, the minimum and maximum Y-coordinates define the height of the bounding box. FIGS. 4A-4D schematically show exemplary bounding boxes for different triangle primitives.
Of course, before forming the bounding box, the primitive coordinate processor 42 and primitive assembler 44 cooperate to assemble the primitive in a conventional manner. Among other ways, the positional data (and subsequently, the attribute data, if necessary) may be explicitly forwarded from the host thread 12, or from the buffer 14 by pointer. For additional details relating to forwarding vertex data, see the above noted co-incorporated patent application naming Stephen Moffitt and Eng Lim Goh as co-inventors.
After receiving the positional data, the primitive coordinate processor 42 performs conventional transformation processes and forwards its resultant data to the primitive assembler 44. The primitive assembler 44 then uses that resultant data to logically assemble the primitive. Of course, because it merely is logically assembled, the primitive is not rasterized or rendered at this point. As known by those in the art, when assembling a primitive, the primitive assembler 44 determines which vertices make up the primitive. Among other things, assembly of the primitive at this point in the process permits the graphics processor 20 to use the positional data to determine if the primitive ultimately will be visible on the display device 22 (as discussed below).
The visibility processor 46 then determines if the bounding box intersects (i.e., bounds) any pixel fragments (step 302). In other words, the visibility processor 46 determines if any pixel fragments are within or on the boundary of the bounding box. It should be noted that the term “pixel fragment” has a well known meaning in the art. Specifically, a pixel fragment is a sample point logically located on a pixel. There can be one sample point or a plurality of sample points on a single pixel. For example, anti-aliasing processes (also known as “multisampling” processes) typically sample a pixel multiple times. Systems that do not multisample a pixel generally are considered to sample each pixel once (e.g., at the pixel center).
Accordingly, if it is determined at step 302 that the bounding box does not intersect any pixel fragments (e.g., see FIG. 4A), then the primitive can be trivially rejected. More specifically, if the bounding box intersects no pixel fragments, then the process continues to step 304, in which the attribute data is effectively discarded, thus ending the process.
Among other ways, the primitive preprocessor 32 may affirmatively discard the vertex attribute data by forwarding a message to the host thread 12 indicating that the attribute data for that vertex is not needed. In illustrative embodiments, however, the primitive pre-processor 32 effectively discards the vertex attribute data simply by not forwarding the discarded primitive to the rasterization stage 28. Instead, the primitive preprocessor 32 simply begins processing another primitive.
At this point in the process, it should be pointed out that as the number of pixel fragments in the bounding box increases, the likelihood that its corresponding primitive intersects at least one pixel fragment also increases. Accordingly, if there are more than a prespecified number of pixel fragments in a bounding box, then various embodiments skip further culling processes. The implementation dictates the predetermined number. For example, in one implementation, if more than ten pixel fragments are within the bounding box (e.g., see FIG. 4C), then there is a reasonably good chance that one of those pixel fragments is within the primitive. If so, then further cull processing as discussed in FIG. 3 can be suspended, thus saving processing steps.
Accordingly, returning to step 302, if the bounding box bounds at least one pixel fragment, then the process continues to step 306, in which it is determined if more than the prespecified number of pixel fragments intersect the bounding box. If the bound box intersects more than the prespecified number, then the process skips to step 310, in which the receiving module 34 retrieves the attribute data for processing by the attribute processor 36. After processing is complete, the geometry stage 26 forwards the resulting transformed data to the rasterization stage 28.
After receipt of the resulting transformed data from the geometry stage 26, the rasterization stage 28 performs conventional rasterization processes. For example, the rasterization stage 28 illustratively rasterizes the primitive and, when processing is completed, forwards data representing the fully processed primitive to the frame buffer 30. If double buffered, the frame buffer 30 could store the data of a fully processed image in its display portion of memory while receiving the pixel data (for the image currently being formed) in its write portion of memory.
Returning to step 306, if the visibility processor 46 determines that the bounding box does not intersect more than the predetermined number of pixel fragments, then the process continues to step 308. Specifically, at step 308, the visibility processor 46 determines if the primitive intersects any pixel fragments. To that end, the visibility processor 46 tests each pixel fragment within the bounding box to determine if any are within the mathematical border of the primitive (e.g., using edge equations).
If the primitive intersects at least one pixel fragment, then the process continues processing the primitive in a conventional pipelined manner (step 310, discussed above). Conversely, if the primitive does not intersect at least one pixel fragment, then the vertex data for that primitive is effectively discarded (step 304, discussed above).
For illustrative purposes, FIGS. 4A-4D schematically show pixel fragments and their spatial relationships with triangle primitives and their respective bounding boxes. Note that FIGS. 4A-4D are exemplary and not intended to limit the scope of the invention. Moreover, it should be noted that although triangle primitives are discussed, embodiments of the invention can be applied to other polygon primitives and line primitives. Discussion of triangle primitives thus is exemplary and not intended to limit the scope of the invention.
For simplicity, FIGS. 4A-4D each show one pixel only. No adjacent pixels are shown. Those skilled in the art should understand, however, that pixel fragments on adjacent pixels, if shown, could be used by various embodiments of the invention to determine if the primitive is to be culled. Accordingly, embodiments of the invention are not limited to pixel fragments in one pixel only. Pixel fragments from any pixel on the display device 22 should suffice to determine if a primitive is visible on an image to be displayed.
FIG. 4A shows a primitive that intersects no pixel fragments and has an associated bounding box that also intersects no pixel fragments. FIG. 4B shows a primitive that intersects no pixel fragments. Its associated bounding box, however, intersects two pixel fragments. FIG. 4C shows a primitive that intersects three pixel fragments and has a bounding box that intersects four pixel fragments. FIG. 4D shows a primitive that intersects one pixel fragment and has an associated bounding box that also intersects that same pixel fragment only.
It should be noted that although various embodiments are discussed as culling primitives if they do not intersect at least one pixel fragment, alternative embodiments still may cull a primitive if it intersects one or more pixel fragments (e.g., two or three fragments). In a similar manner, the bounding box steps also may require a higher number of pixel fragments. Accordingly, discussion of specific numbers of pixel fragments within either a primitive or a bounding box is exemplary and not intended to limit all embodiments of the invention.
Accordingly, various embodiments of the invention cull a primitive as a function of whether it intersects at least one pixel fragment. In other words, if a primitive does not intersect at least one pixel fragment, it is culled. If it does, however, then it is processed in a conventional manner for display on the display device 22. The rasterization stage 28 thus should not process primitive data for a primitive that is too small to be rendered on the display device 22. Consequently, the disclosed graphics processor 20, including its rasterization stage 28, should receive and process small graphics primitives in a more rapid and efficient manner than those within systems that do not implement the disclosed processes.
In alternative embodiments, rather than being within the geometry stage 26, the disclosed functionality may be performed by another module. For example, the disclosed functionality may be a preprocessing stage within the raster stage 28. Accordingly, in that case, the raster stage 28 preprocesses the primitive data in the specified manner before applying conventional rasterization processes. As a second example, the disclosed functionality may be within some other system component between the geometry stage 26 and the raster stage 28.
Some embodiments of the invention may be implemented at least in part in any conventional computer programming language. For example, some embodiments may be implemented in a procedural programming language (e.g., “C”), or in an object oriented programming language (e.g., “C++”). Other embodiments of the invention may be implemented as preprogrammed hardware elements (e.g., application specific integrated circuits, FPGAs, and digital signal processors), or other related components.
In an alternative embodiment, the disclosed apparatus and method may be implemented as a computer program product for use with a computer system. Such implementation may include a series of computer instructions fixed either on a tangible medium, such as a computer readable medium (e.g., a diskette, CD-ROM, ROM, or fixed disk) or transmittable to a computer system, via a modem or other interface device, such as a communications adapter connected to a network over a medium. The medium may be either a tangible medium (e.g., optical or analog communications lines) or a medium implemented with wireless techniques (e.g., WIFI, microwave, infrared or other transmission techniques).
The series of computer instructions can embody all or part of the functionality previously described herein with respect to the system.
Those skilled in the art should appreciate that such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Furthermore, such instructions may be stored in any memory device, such as semiconductor, magnetic, optical or other memory devices, and may be transmitted using any communications technology, such as optical, infrared, microwave, or other transmission technologies.
Among other things, such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over the network (e.g., the Internet or World Wide Web). Of course, some embodiments of the invention may be implemented as a combination of both software (e.g., a computer program product) and hardware. Still other embodiments of the invention are implemented as entirely hardware, or entirely software.
Although the above discussion discloses various exemplary embodiments of the invention, it should be apparent that those skilled in the art can make various modifications that will achieve some of the advantages of the invention without departing from the true scope of the invention.

Claims (23)

What is claimed is:
1. A method of processing a primitive, using a graphics processor implemented in either hardware or a combination of hardware and software, for potential display on a display device having a plurality of pixels, the method comprising:
forming, using the graphics processor, a bounding box based defined by a minimum and maximum x values and a minimum and maximum y values of the primitive;
determining, using the graphics processor, if the bounding box bounds at least one pixel fragment;
if the bounding box does not bound the at least one pixel fragment discarding the primitive without further culling processing;
if the bounding box does bound the at least one pixel fragment, determining if the bounding box bounds a predetermined number of pixel fragments;
if the bounding box bound does bound the predetermined number of pixel fragments forwarding the primitive to be further raster processed;
if the bounding box does not bound the predetermined number of pixel fragments determining, using the graphics processor, if the primitive intersects at least a second predetermined number of pixel fragments on the display device, the second predetermined number being no less than one; and
culling the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments on the display device, the primitive not being raster processed if culled
if the primitive intersects the second predetermined number of pixel fragments forwarding the primitive to be further raster processed; and
if the primitive does not intersect the second predetermined number of pixel fragments, discarding the primitive without further culling processing.
2. The method as defined by claim 1 wherein a the graphics processor has a raster stage capable of raster processing the primitive, the graphics processor also having a geometry stage capable of forwarding primitive attribute data to the raster stage for raster processing, the steps of determining comprising determining if the primitive intersects at least the second predetermined number of pixel fragments on the display device before forwarding primitive attribute data from the geometry stage to the raster stage.
3. The method as defined by claim 1 wherein a the graphics processor has a raster stage capable of raster processing the primitive, the graphics processor also having a geometry stage capable of forwarding primitive attribute data to the raster stage for raster processing, the step of determining comprising the raster stage determining if the primitive intersects at least the second predetermined number of pixel fragments on the display device.
4. The method as defined by claim 1 wherein the primitive is not culled if the primitive is determined to intersect at least the predetermined number of pixel fragments on the display device.
5. The method as defined by claim 1 wherein the primitive is culled if the primitive is determined to not intersect at least the predetermined number of pixel fragments on the display device.
6. The method as defined by claim 1 wherein determining comprises:
forming a bounding box based upon positional data of the primitive.
7. The method as defined by claim 6 1 further wherein the primitive has an associated equation defining its position on the display device, the method further comprising:
determining if the bounding box bounds more than a prespecified number of pixel fragments; and
if the bounding box does not bound more than the prespecified number of pixel fragments, then using the equation to determine if the primitive intersects at least the predetermined number of pixel fragments.
8. The method as defined by claim 6 wherein the primitive is culled if the bounding box bounds no pixel fragments.
9. An apparatus for processing a primitive for potential display on a display device having a plurality of pixels, the apparatus comprising:
a graphics processor implemented in either hardware or a combination of hardware and software, the graphic processor comprising:
a geometry stage capable of performing geometry operations on the primitive, the geometry stage also being capable of forming, using the graphics processor, a bounding box defined by a minimum and maximum x values and a minimum and maximum y values of the primitive, determining, using the graphics processor, if the bounding box bounds at least one pixel fragment, if the bounding box does not bound the at least one pixel fragment, discarding the primitive without further culling processing, if the bounding box does bound the at least one pixel fragment, determining if the primitive intersects bounding box bounds at least a predetermined number of pixel fragments on the display device, the geometry stage being configured to cull the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments on the display device, the predetermined number being no less than one; if the bounding box bound does bound the predetermined number of pixel fragments forwarding the primitive to be further raster processed, if the bounding box does not bound the predetermined number of pixel fragments determining, using the graphics processor, if the primitive intersects at least a second predetermined number of pixel fragments, the second predetermined number being no less than one, if the primitive intersects the second predetermined number of pixel fragments forwarding the primitive to be further raster processed, if the primitive does not intersect the second predetermined number of pixel fragments, discarding the primitive without further culling processing; and
a raster stage operatively coupled with the geometry stage, the raster stage being capable of raster processing the primitive if the geometry stage does not cull discard the primitive.
10. The apparatus as defined by claim 9 wherein the primitive has associated attribute data, the geometry stage having an output for forwarding the attribute data to the raster stage if the primitive intersects at least the predetermined number of pixel fragments on the display device.
11. The apparatus as defined by claim 9 wherein the primitive has associated attribute data, further wherein the geometry stage is configured to not forward the attribute data to the raster stage if the primitive is determined to not intersect at least the predetermined number of pixel fragments on the display device.
12. The apparatus as defined by claim 9 wherein the geometry stage comprises:
a bounding box module capable of forming a the bounding box based upon positional data of the primitive.
13. The apparatus as defined by claim 12 further wherein the primitive has an associated equation defining its position on the display device, the geometry stage using the equation to determine whether the primitive intersects at least one pixel fragment if the bounding box bounds fewer than the first predetermined number of pixel fragments.
14. The apparatus as defined by claim 12 wherein the primitive has associated attribute data, further wherein the geometry stage does not forward the attribute data to the raster stage if no pixel fragments are bounded by the bounding box.
15. A computer program product for use on a computer system for processing a primitive for potential display on a display device having a plurality of pixels, the computer program product comprising a non-transitory computer usable readable storage medium having computer readable program code stored thereon, the computer readable program code comprising:
program code for forming a bounding box defined by a minimum and maximum x values and a minimum and maximum y values of the primitive;
first program code for determining if the bounding box bounds at least one pixel fragment;
second program code for discarding the primitive without further culling processing, if the bounding box does not bound the at least one pixel fragment;
third program code for determining if the bounding box bounds a predetermined number of pixel fragments, if the bounding box bounds the at least one pixel fragment;
fourth program code for forwarding the primitive to be further raster processed if the primitive bounds the predetermined number of pixel fragments;
fifth program code for determining if the primitive intersects at least bounding box bounds a second predetermined number of pixel fragments on the display device, the second predetermined number being no less than one; and
program code for culling the primitive as a function of whether the primitive intersects at least the predetermined number of pixel fragments on the display device, the primitive not being raster processed if culled, if the bounding box does not bound the predetermined number of pixel fragments;
sixth program code for forwarding the primitive to the further raster processed if the primitive intersects the second predetermined number of pixel fragments; and
seventh program code for discarding the primitive without further culling processing if the primitive does not intersect the second predetermined number of pixel fragments.
16. The computer program product as defined by claim 15 wherein the primitive is not culled if the primitive is determined to intersect at least the predetermined number of pixel fragments on the display device.
17. The computer program product as defined by claim 15 wherein the primitive is culled if the primitive is determined to not intersect at least the predetermined number of pixel fragments on the display device.
18. The computer program product as defined by claim 15 wherein the program code for determining comprises:
program code for forming a bounding box based upon positional data of the primitive.
19. The computer program product as defined by claim 18 further wherein the primitive has an associated equation defining its position on the display device, the computer program product further comprising:
program code for determining if the bounding box bounds more than a prespecified number of pixel fragments; and
program code for using the equation to determine whether the primitive intersects at least the predetermined number of pixel fragments, the program code for using being executed if the bounding box does not bound more than the prespecified number of pixel fragments.
20. The computer program product as defined by claim 18 wherein the primitive is culled if no pixel fragments are bounded by the bounding box.
21. An apparatus for processing a primitive for potential display on a display device having a plurality of pixels, the apparatus comprising:
a graphics processor implemented in either hardware or a combination of hardware and software, the graphic processor comprising:
a geometry stage capable of performing geometry operations on the primitive, the geometry stage also being capable of forming, using the graphics processor, a bounding box defined by a minimum and maximum x values and a minimum and maximum y values of the primitive, determining, using the graphics processor, if the bounding box bounds at least one pixel fragment, if the bounding box does not bound the at least one pixel fragment, discarding the primitive without further culling processing, if the bounding box does bound the at least one pixel fragment, determining if the bounding box bounds at least a predetermined number of pixel fragments, if the bounding box does bound the predetermined number of pixel fragments, forwarding the primitive to be further raster processed, if the bounding box does not bound the predetermined number of pixel fragments determining, using the graphics processor, if the primitive intersects at least a second predetermined number of pixel fragments, the second predetermined number being no less than one, if the primitive intersects the second predetermined number of pixel fragments, forwarding the primitive to be further raster processed, if the primitive does not intersect the second predetermined number of pixel fragments, discarding the primitive without further culling processing; and
a raster stage operatively coupled with the geometry stage, the raster stage being capable of raster processing the primitive if the geometry stage does not discard the primitive.
22. The apparatus as defined by claim 21 wherein the geometry stage comprises:
a bounding box module capable of forming the bounding box based upon positional data of the primitive.
23. The apparatus as defined by claim 22 further wherein the primitive has an associated equation defining its position on the display device, the geometry stage using the equation to determine whether the primitive intersects at least one pixel fragment if the bounding box bounds fewer than the first number of pixel fragments.
US11/490,505 2003-11-18 2006-07-20 Primitive culling apparatus and method Expired - Fee Related USRE44958E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/490,505 USRE44958E1 (en) 2003-11-18 2006-07-20 Primitive culling apparatus and method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/716,186 US6900818B1 (en) 2003-11-18 2003-11-18 Primitive culling apparatus and method
US11/490,505 USRE44958E1 (en) 2003-11-18 2006-07-20 Primitive culling apparatus and method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/716,186 Reissue US6900818B1 (en) 2003-11-18 2003-11-18 Primitive culling apparatus and method

Publications (1)

Publication Number Publication Date
USRE44958E1 true USRE44958E1 (en) 2014-06-24

Family

ID=34574366

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/716,186 Ceased US6900818B1 (en) 2003-11-18 2003-11-18 Primitive culling apparatus and method
US11/490,505 Expired - Fee Related USRE44958E1 (en) 2003-11-18 2006-07-20 Primitive culling apparatus and method

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/716,186 Ceased US6900818B1 (en) 2003-11-18 2003-11-18 Primitive culling apparatus and method

Country Status (2)

Country Link
US (2) US6900818B1 (en)
WO (1) WO2005050602A2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
US7212204B2 (en) * 2005-01-27 2007-05-01 Silicon Graphics, Inc. System and method for graphics culling
JP4817881B2 (en) 2006-02-24 2011-11-16 キヤノン株式会社 Image processing method and image processing apparatus
JP4817882B2 (en) * 2006-02-24 2011-11-16 キヤノン株式会社 Image processing method and image processing apparatus
US9633458B2 (en) * 2012-01-23 2017-04-25 Nvidia Corporation Method and system for reducing a polygon bounding box
US20130257885A1 (en) * 2012-03-28 2013-10-03 Intel Corporation Low Power Centroid Determination and Texture Footprint Optimization For Decoupled Sampling Based Rendering Pipelines
WO2016105218A1 (en) * 2014-12-23 2016-06-30 Intel Corporation Facilitating culling of composite objects in graphics processing units when such objects produce no visible change in graphics images
US10529119B2 (en) 2016-12-25 2020-01-07 Biosense Webster (Israel) Ltd. Fast rendering of quadrics and marking of silhouettes thereof

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579455A (en) * 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US5613052A (en) * 1993-09-02 1997-03-18 International Business Machines Corporation Method and apparatus for clipping and determining color factors for polygons
US5986669A (en) 1996-09-10 1999-11-16 Intergraph Corporation Graphics processing with efficient clipping
US6052128A (en) * 1997-07-23 2000-04-18 International Business Machines Corp. Method and apparatus for clipping convex polygons on single instruction multiple data computers
US6246415B1 (en) * 1998-04-30 2001-06-12 Silicon Graphics, Inc. Method and apparatus for culling polygons
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US20020196251A1 (en) 1998-08-20 2002-12-26 Apple Computer, Inc. Method and apparatus for culling in a graphics processor with deferred shading
US6636215B1 (en) * 1998-07-22 2003-10-21 Nvidia Corporation Hardware-assisted z-pyramid creation for host-based occlusion culling
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6686924B1 (en) * 2000-02-02 2004-02-03 Ati International, Srl Method and apparatus for parallel processing of geometric aspects of video graphics data
US20040196281A1 (en) 2003-04-04 2004-10-07 Hsilin Huang Head/data request in 3D graphics
US6967664B1 (en) 2000-04-20 2005-11-22 Ati International Srl Method and apparatus for primitive processing in a graphics system
US7218331B2 (en) * 2003-05-13 2007-05-15 Via Technologies, Inc. Bounding box in 3D graphics
US7414635B1 (en) * 2000-08-01 2008-08-19 Ati International Srl Optimized primitive filler

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579455A (en) * 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5613052A (en) * 1993-09-02 1997-03-18 International Business Machines Corporation Method and apparatus for clipping and determining color factors for polygons
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US5986669A (en) 1996-09-10 1999-11-16 Intergraph Corporation Graphics processing with efficient clipping
US6052128A (en) * 1997-07-23 2000-04-18 International Business Machines Corp. Method and apparatus for clipping convex polygons on single instruction multiple data computers
US6246415B1 (en) * 1998-04-30 2001-06-12 Silicon Graphics, Inc. Method and apparatus for culling polygons
US6636215B1 (en) * 1998-07-22 2003-10-21 Nvidia Corporation Hardware-assisted z-pyramid creation for host-based occlusion culling
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6894689B1 (en) * 1998-07-22 2005-05-17 Nvidia Corporation Occlusion culling method and apparatus for graphics systems
US20020196251A1 (en) 1998-08-20 2002-12-26 Apple Computer, Inc. Method and apparatus for culling in a graphics processor with deferred shading
US6664959B2 (en) 1998-08-20 2003-12-16 Apple Computer, Inc. Method and apparatus for culling in a graphics processor with deferred shading
US6686924B1 (en) * 2000-02-02 2004-02-03 Ati International, Srl Method and apparatus for parallel processing of geometric aspects of video graphics data
US6967664B1 (en) 2000-04-20 2005-11-22 Ati International Srl Method and apparatus for primitive processing in a graphics system
US7414635B1 (en) * 2000-08-01 2008-08-19 Ati International Srl Optimized primitive filler
US20040196281A1 (en) 2003-04-04 2004-10-07 Hsilin Huang Head/data request in 3D graphics
US7218331B2 (en) * 2003-05-13 2007-05-15 Via Technologies, Inc. Bounding box in 3D graphics

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
International Search Report dated May 2, 2005.
P. Ebbesmeyer, "Textured Virtual Walls-Achieving Interactive Frame Rates During Walkthroughs of Complex Indoor Environments," IEEE 1998 Virtual Reality Annual International Symposium, pp. 220-227, 1998.
P. Ebbesmeyer, "Textured Virtual Walls—Achieving Interactive Frame Rates During Walkthroughs of Complex Indoor Environments," IEEE 1998 Virtual Reality Annual International Symposium, pp. 220-227, 1998.
T. Chiueh et al., "Characterization of Static 3D Graphics Workloads," Proceedings of the Siggraph/Eurographics Workshop on Graphics Hardware, pp. 17-24, 1997.

Also Published As

Publication number Publication date
WO2005050602A3 (en) 2005-07-14
WO2005050602A2 (en) 2005-06-02
US20050104898A1 (en) 2005-05-19
US6900818B1 (en) 2005-05-31

Similar Documents

Publication Publication Date Title
US11861792B2 (en) Tessellation of patches of surfaces in a tile based rendering system
USRE44958E1 (en) Primitive culling apparatus and method
US11880926B2 (en) Hybrid render with deferred primitive batch binning
EP1323131B1 (en) Method and apparatus for anti-aliasing supersampling
US10957082B2 (en) Method of and apparatus for processing graphics
EP3748584B1 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US8259111B2 (en) Merged shader for primitive amplification
US7385614B2 (en) Compositing images using logically divided object space
US8384728B2 (en) Supplemental cache in a graphics processing unit, and apparatus and method thereof
US6421063B1 (en) Pixel zoom system and method for a computer graphics system
US6894695B2 (en) Apparatus and method for acceleration of 2D vector graphics using 3D graphics hardware
WO2024045416A1 (en) Graph processing method and system using tile-based rendering mode and capable of expanding tile boundaries
US11954782B2 (en) Hybrid render with preferred primitive batch binning and sorting
CN115018695A (en) Primitive fragment processing in a rasterization phase of a graphics processing system
US7027047B2 (en) 3D graphics rendering engine for processing an invisible fragment and a method therefor
US6567098B1 (en) Method and apparatus in a data processing system for full scene anti-aliasing
US7158132B1 (en) Method and apparatus for processing primitive data for potential display on a display device
JP7100624B2 (en) Hybrid rendering with binning and sorting of preferred primitive batches
US11790479B2 (en) Primitive assembly and vertex shading of vertex attributes in graphics processing systems
US7002601B1 (en) Method and apparatus for rendering a quadrangle primitive
EP3794561A1 (en) Primitive z-sorting
US20230196661A1 (en) Graphics processing
US20160321835A1 (en) Image processing device, image processing method, and display device
KR0180160B1 (en) Rendering method of 3-dimensional material
US7414635B1 (en) Optimized primitive filler

Legal Events

Date Code Title Description
AS Assignment

Owner name: GENERAL ELECTRIC CAPITAL CORPORATION, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:SILICON GRAPHICS, INC.;REEL/FRAME:018545/0777

Effective date: 20061017

AS Assignment

Owner name: MORGAN STANLEY & CO., INCORPORATED, NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GENERAL ELECTRIC CAPITAL CORPORATION;REEL/FRAME:019995/0895

Effective date: 20070926

AS Assignment

Owner name: GRAPHICS PROPERTIES HOLDINGS, INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:SILICON GRAPHICS, INC.;REEL/FRAME:023304/0677

Effective date: 20090603

AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GRAPHICS PROPERTIES HOLDINGS, INC.;REEL/FRAME:029564/0799

Effective date: 20121224

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees