IP Library Granted Patent US 9,947,130
Granted Patent B2
US 9,947,130 · App. 12/864,113 · Granted Apr 17, 2018

Method, apparatus, and computer program product for improved graphics performance

Inventors: Jon Hasselgren (Bunkeflostrand, SE); Jacob Munkberg (Malmö, SE); Petrik Clarberg (Lund, SE); Tomas G. Akenine-Moeller (Lund, SE)
Assignee: Intel Corporation
G06T15/40
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,947,130
App. No.
12/864,113
Granted
Apr 17, 2018
Kind
B2
Abstract

A method for improving performance of generation of digitally represented graphics. The method comprises: receiving a first representation of a base primitive; providing a set of instructions associated with vertex position determination; executing said retrieved set of instructions on said first representation of said base primitive using bounded arithmetic for providing a second representation of said base primitive, and subjecting said second representation of said base primitive to a culling process. A corresponding apparatus and computer program product are also presented.

Claims (69)

1. A method comprising:

receiving a base primitive in a graphics processor, the base primitive comprising a first plurality of vertices;

determining whether at least one of the vertices of the base primitive can be culled prior to tessellation the determination based on an evaluation of visibility data associated with the first plurality of vertices;

culling the base primitive prior to tessellation if the visibility data indicates that all of the vertices of the base primitive are invisible;

providing tessellation factors to tessellate the base primitive only if one or more of the first plurality of vertices of the base primitive cannot be culled;

tessellating the first representation of the base primitive using the tessellation factors to generate a set of tessellated primitives with a second set of vertices;

performing vertex shading operations on the second set of vertices by, at least in part, executing a set of vertex shader instructions to generate vertex-shaded vertices for the tessellated primitives;

generating one or more bounding boxes for the tessellated primitives;

subjecting the bounding volumes to a culling process to cull one or more of the tessellated primitives contained in the bounding volumes;

performing fragment shading on portions of the tessellated primitives which have not been culled to produce a depiction for computer display; and

displaying the depiction on a computer display.

2. The method according to claim 1 wherein the operation of determining whether at least one of the vertices of the base primitive can be culled, further comprises:

selecting at least one vertex from the base primitive,

executing a set of instructions associated with vertex position determination on a first representation of said at least one vertex for providing a second representation of said at least one vertex, and

subjecting said second representation of said at least one vertex to a culling process, wherein an outcome of said culling process comprises one of:

a decision to cull said at least one vertex, and

a decision not to cull said at least one vertex, and

in case the outcome of said culling process comprises a decision to cull said at least one vertex, perform the operations of:

providing a set of instructions associated with vertex position determination,

executing said set of instructions on said first representation of said base primitive using bounded arithmetic for providing a second representation of said base primitive, and

subjecting said second representation of said base primitive to a culling process.

3. The method according to claim 2 , wherein executing said set of instructions further comprises:

deriving a second set of instructions from said set of instructions associated with vertex position determination, and

executing said second set of instructions for providing a normal bound.

4. The method according to claim 2 , wherein subjecting said second representation to said culling process further comprises performing at least one of:

subjecting said positional bound to view frustum culling,

subjecting said positional bound or said normal bound to back-face culling, and

subjecting said positional bound to occlusion culling.

5. The method according to claim 1 , wherein said culling process comprises a replaceable culling process.

6. The method according to claim 1 , wherein the bounded arithmetic is at least one from the group of Taylor arithmetic, interval arithmetic, and affine arithmetic.

7. The method of claim 1 , wherein the determining of said bounding volume further comprises computing a minimum and a maximum of one or more of the tessellated primitives.

8. The method according to claim 1 , wherein subjecting said bounding volume to said culling process further comprises performing at least one of:

subjecting said bounding volume to view frustum culling,

subjecting said bounding volume to back-face culling, and

subjecting said bounding volume to occlusion culling.

9. A non-transitory computer readable medium storing instructions for execution by a processor to:

receiving a base primitive in a graphics processor, the base primitive comprising a first plurality of vertices;

determining whether at least one of the vertices of the base primitive can be culled prior to tessellation the determination based on an evaluation of visibility data associated with the first plurality of vertices;

culling the base primitive prior to tessellation if the visibility data indicates that all of the vertices of the base primitive are invisible;

providing tessellation factors to tessellate the base primitive only if one or more of the first plurality of vertices of the base primitive cannot be culled;

tessellating the first representation of the base primitive using the tessellation factors to generate a set of tessellated primitives with a second set of vertices;

performing vertex shading operations on the second set of vertices by, at least in part, executing a set of vertex shader instructions to generate vertex-shaded vertices for the tessellated primitives;

generating one or more bounding boxes for the tessellated primitives;

subjecting the bounding volumes to a culling process to cull one or more of the tessellated primitives contained in the bounding volumes; and

performing fragment shading on portions of the tessellated primitives which have not been culled to produce a depiction for computer display; and

displaying the depiction on a computer display.

10. The medium according to claim 9 , further storing instructions to:

select at least one vertex from the base primitive;

execute a set of instructions associated with vertex position determination on a first representation of said at least one vertex for providing a second representation of said at least one vertex; and

cull said second representation of said at least one vertex.

11. The medium of claim 9 , further storing instructions to determine said bounding volume by computing a minimum and a maximum of one or more of the tessellated primitives.

12. The medium according to claim 11 , further storing instructions to cull said bounding volume by at least one of:

subjecting said bounding volume to view frustum culling,

subjecting said bounding volume to back-face culling, and

subjecting said bounding volume to occlusion culling.

13. A graphics processing apparatus comprising:

a base primitive culling circuit to receive a base primitive comprising a first plurality of vertices, the base primitive culling circuit to determine whether at least one of the vertices of the base primitive can be culled prior to tessellation the determination based on an evaluation of visibility data associated with the first plurality of vertices;

the base primitive culling unit to cull the base primitive prior to tessellation if the visibility data indicates that all of the vertices of the base primitive are invisible;

the base primitive culling circuit to specify tessellation factors to tessellate the base primitive only if one or more of the first plurality of vertices of the base primitive cannot be culled;

tessellation circuitry to tessellate the first representation of the base primitive using the tessellation factors to generate a set of tessellated primitives with a second set of vertices;

vertex shader circuitry to perform vertex shading operations on the second set of vertices by, at least in part, executing a set of vertex shader instructions to generate vertex-shaded vertices for the tessellated primitives;

bounding box generation circuitry to generate one or more bounding boxes for the tessellated primitives;

a programmable culling circuit to subject the bounding volumes to a culling process to cull one or more of the tessellated primitives contained in the bounding volumes; and

fragment shader circuitry to perform fragment shading on portions of the tessellated primitives which have not been culled to produce a depiction for computer display.

14. The apparatus according to claim 13 wherein the vertex shader circuitry is configured to:

select at least one vertex from said base primitive;

execute a set of instructions associated with vertex position determination on a first representation of said at least one vertex for providing a second representation of said at least one vertex; and

cull said second representation of said at least one vertex.

15. The apparatus of claim 13 wherein said bounding box generation circuitry is to determine said bounding volume by computing a minimum and a maximum of said second tessellated primitives.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 2, 2017
From: HASSELGREN, JON; MUNKBERG, JACOB; CLARBERG, PETRIK; AKENINE-MOLLER, TOMAS G.
To: INTEL CORPORATION
Reel/Frame 043759/0711 →
Priority Claims (2)
SE 0800165 · Jan 23, 2008 · national
SE 0801742 · Jul 30, 2008 · national
Continuity (2)
Provisional Application 61062635 · Jan 29, 2008
Related Publication 20110018874A1 · Jan 27, 2011