IP Library › Granted Patent US 10,866,990
Granted Patent B2
US 10,866,990 · App. 16/502,415 · Granted Dec 15, 2020

Block-based lossless compression of geometric data

Inventors: Jaakko Lehtinen (Helsinki, FI); Timo Oskari Aila (Tuusula, FI); Tero Tapani Karras (Helsinki, FI); Alexander Keller (Berlin, DE); Nikolaus Binder (Berlin, DE); Carsten Alexander Waechter (Berlin, DE); Samuli Matias Laine (Vantaa, FI)
Assignee: NVIDIA Corporation
G06F16/9027G06F16/2246G06F16/254G06T1/60G06T9/40G06T15/005G06T15/06G06T15/08G06T15/10G06T15/80G06T17/10H04N19/174H04N19/44
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 10,866,990
App. No.
16/502,415
Filed
Jul 3, 2019
Granted
Dec 15, 2020
Kind
B2
Examiner
YANG, YI
Art Unit
2616
USPC
345/420
Abstract

An apparatus, computer readable medium, and method are disclosed for decompressing compressed geometric data stored in a lossless compression format. The compressed geometric data resides within a compression block sized according to a system cache line. An indirection technique maps a global identifier value in a linear identifier space to corresponding variable rate compressed data. The apparatus may include decompression circuitry within a graphics processing unit configured to perform ray-tracing.

Claims (64)

1. A method, comprising:

receiving an identifier for a first geometric primitive of a number of geometric primitives enclosed within a bounding volume of a bounding volume hierarchy;

accessing a data structure stored in a memory using the identifier to read a compression block index and a local index for the first geometric primitive;

identifying, based on the compression block index and the local index, a location within a compression block of a first set of compressed geometric data for the first geometric primitive, wherein three-dimensional position offsets relative to a three-dimensional anchor position associated with the bounding volume are included within the compression block; and

generating a first set of decompressed geometric data for the first geometric primitive by decompressing the first set of compressed geometric data, based on at least the three-dimensional position offsets and the three-dimensional anchor position,

wherein a first vertex of the first geometric primitive is shared with another geometric primitive in the compression block defined by a second vertex and, during compression, a reference to a position of the second vertex within the compression block is stored instead of a three-dimensional position offset, and

wherein the first set of decompressed geometric data comprises more bits of data than the first set of compressed geometric data.

2. The method of claim 1 , wherein the compression block includes a mode subfield that controls interpretation of bits in the compression block according to two or more enumerated formats.

3. The method of claim 2 , wherein at least one of the two or more enumerated formats includes an uncompressed format and at least one of the two or more enumerated formats includes a compressed format.

4. The method of claim 1 , wherein the compressed geometric data includes bit precisions for each one of the three dimensions.

5. The method of claim 1 , wherein the first set of decompressed geometric data is generated for the first geometric primitive without shifting the three-dimensional position offsets.

6. The method of claim 1 , wherein the compressed geometric data includes a topology field comprising vertex identifiers, and three different vertex identifiers are associated with at least the first geometric primitive, wherein each vertex identifier references either one of the three-dimensional position offsets or the three-dimensional anchor position.

7. The method of claim 1 , wherein the compressed geometric data includes a topology field comprising alpha bits, and a first alpha bit indicates whether the first geometric primitive is fully opaque or partially transparent.

8. The method of claim 1 , wherein the compressed geometric data includes a topology field comprising a number of primitive metadata values equal to the number of geometric primitives, each primitive metadata value including a number of bits indicated by a precision subfield within the compression block.

9. The method of claim 1 , wherein the identifier determines an indirection block number that identifies an indirection block including the compression block index and the local index for the first geometric primitive.

10. The method of claim 9 , wherein the indirection block number is determined by dividing the value of the identifier with a number of payload bits and rounding the quotient down to the nearest integer.

11. The method of claim 9 , wherein the indirection block indicates a beginning geometric primitive in the compression block.

12. The method of claim 1 , wherein the compressed geometric data includes a value that specifies the number of bits of the three-dimensional anchor position that are replaced by each one of the three-dimensional position offsets to generate the three-dimensional vertex position.

13. The method of claim 1 , further comprising intersecting the bounding volume with a query shape during rendering.

14. The method of claim 1 , wherein the compression block is generated by linearly scanning through a list of geometric primitives in BVH leaf order and adding each compressed geometric primitive to the compression block in sequence until a next compressed geometric primitive in the sequence cannot fit in the compression block.

15. A system, comprising:

a memory configured to store a data structure; and

a processor configured to:

generate an identifier for a first geometric primitive of a number of geometric primitives enclosed within a bounding volume of a bounding volume hierarchy;

access the data structure using the identifier to read a compression block index and a local index for the first geometric primitive;

identify, based on the compression block index and the local index, a location within a compression block of a first set of compressed geometric data for the first geometric primitive, wherein three-dimensional position offsets relative to a three-dimensional anchor position associated with the bounding volume are included within the compression block; and

generate a first set of decompressed geometric data for the first geometric primitive by decompressing the first set of compressed geometric data, based on at least the three-dimensional position offsets and the three-dimensional anchor position,

wherein a first vertex of the first geometric primitive is shared with another geometric primitive in the compression block defined by a second vertex and, during compression, a reference to a position of the second vertex within the compression block is stored instead of a three-dimensional position offset, and

wherein the first set of decompressed geometric data comprises more bits of data than the first set of compressed geometric data.

16. The system of claim 15 , wherein the compressed geometric data includes bit precisions for each one of the three dimensions.

17. The system of claim 15 , wherein the compressed geometric data includes a topology field comprising a number of primitive metadata values equal to the number of geometric primitives, each primitive metadata value including a number of bits indicated by a precision subfield within the compression.

18. The system of claim 15 , further comprising a caching system with cache lines configured to store a number of cache line bits, and the compression block includes the number of cache line bits.

19. The System of claim 15 , wherein the compression block is generated by linearly scanning through a list of geometric primitives in BVH leaf order and adding each compressed geometric primitive to the compression block in sequence until a next compressed geometric primitive in the sequence cannot fit in the compression block.

20. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform steps comprising:

receiving an identifier for a first geometric primitive of a number of geometric primitives enclosed within a bounding volume of a bounding volume hierarchy;

accessing a data structure stored in a memory using the identifier to read a compression block index and a local index for the first geometric primitive;

identifying, based on the compression block index and the local index, a location within a compression block of a first set of compressed geometric data for the first geometric primitive, wherein three-dimensional position offsets relative to a three-dimensional anchor position associated with the bounding volume are included within the compression block; and

generating a first set of decompressed geometric data for the first geometric primitive by decompressing the first set of compressed geometric data, based on at least the three-dimensional position offsets and the three-dimensional anchor position,

wherein a first vertex of the first geometric primitive is shared with another geometric primitive in the compression block defined by a second vertex and, during compression, a reference to a position of the second vertex within the compression block is stored instead of a three-dimensional position offset, and

wherein the first set of decompressed geometric data comprises more bits of data than the first set of compressed geometric data.

21. The non-transitory computer-readable storage medium of claim 20 , wherein the compression block is generated by linearly scanning through a list of geometric primitives in BVH leaf order and adding each compressed geometric primitive to the compression block in sequence until a next compressed geometric primitive in the sequence cannot fit in the compression block.

22. A method, comprising:

receiving an identifier for a first geometric primitive of a number of geometric primitives enclosed within a bounding volume of a bounding volume hierarchy (BVH);

accessing a data structure stored in a memory using the identifier to read a compression block index and a local index for the first geometric primitive;

identifying, based on the compression block index and the local index, a location within a compression block of a first set of compressed geometric data for the first geometric primitive, wherein three-dimensional position offsets relative to a three-dimensional anchor position associated with the bounding volume are included within the compression block; and

generating a first set of decompressed geometric data for the first geometric primitive by decompressing the first set of compressed geometric data, based on at least the three-dimensional position offsets and the three-dimensional anchor position,

wherein the compression block is generated by linearly scanning through a list of geometric primitives in BVH leaf order and adding each compressed geometric primitive to the compression block in sequence until a next compressed geometric primitive in the sequence cannot fit in the compression block, and

wherein the first set of decompressed geometric data comprises more bits of data than the first set of compressed geometric data.

23. A system, comprising:

a memory configured to store a data structure; and

a processor configured to:

generate an identifier for a first geometric primitive of a number of geometric primitives enclosed within a bounding volume of a bounding volume hierarchy;

access the data structure using the identifier to read a compression block index and a local index for the first geometric primitive;

identify, based on the compression block index and the local index, a location within a compression block of a first set of compressed geometric data for the first geometric primitive, wherein three-dimensional position offsets relative to a three-dimensional anchor position associated with the bounding volume are included within the compression block; and

generate a first set of decompressed geometric data for the first geometric primitive by decompressing the first set of compressed geometric data, based on at least the three-dimensional position offsets and the three-dimensional anchor position,

wherein the compression block is generated by linearly scanning through a list of geometric primitives in BVH leaf order and adding each compressed geometric primitive to the compression block in sequence until a next compressed geometric primitive in the sequence cannot fit in the compression block, and

wherein the first set of decompressed geometric data comprises more bits of data than the first set of compressed geometric data.

24. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform steps comprising:

receiving an identifier for a first geometric primitive of a number of geometric primitives enclosed within a bounding volume of a bounding volume hierarchy;

accessing a data structure stored in a memory using the identifier to read a compression block index and a local index for the first geometric primitive;

identifying, based on the compression block index and the local index, a location within a compression block of a first set of compressed geometric data for the first geometric primitive, wherein three-dimensional position offsets relative to a three-dimensional anchor position associated with the bounding volume are included within the compression block; and

generating a first set of decompressed geometric data for the first geometric primitive by decompressing the first set of compressed geometric data, based on at least the three-dimensional position offsets and the three-dimensional anchor position,

wherein the compression block is generated by linearly scanning through a list of geometric primitives in BVH leaf order and adding each compressed geometric primitive to the compression block in sequence until a next compressed geometric primitive in the sequence cannot fit in the compression block, and

wherein the first set of decompressed geometric data comprises more bits of data than the first set of compressed geometric data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 3, 2019
From: LEHTINEN, JAAKKO; AILA, TIMO OSKARI; KARRAS, TERO TAPANI; KELLER, ALEXANDER; BINDER, NIKOLAUS; WAECHTER, CARSTEN ALEXANDER; LAINE, SAMULI MATIAS
To: NVIDIA CORPORATION
Reel/Frame 049662/0869 →
Continuity (3)
Continuation 14737343 · Jun 11, 2015
Provisional Application 62046093 · Sep 4, 2014
Related Publication 20190324991A1 · Oct 24, 2019
Cited By (3)
US 12,198,251 US 12,198,252 US 12,469,203