Tiled Forward Shading with Improved Depth Filtering
AssigneeApple Inc.
InventorsRichard W. Schreyer, Alexander K. Kan
Life of this patent
Estimating the term…
Abstract
An image may be divided into tiles, each tile including a multitude of pixels. For each tile, a list of primitive groups that intersect the tile and an initial list of volumes that intersect the tile may be generated. For each primitive group in the list of primitive groups, a per-primitive group list of volumes may be generated. The per-primitive-group list of volumes may include volumes from the initial list of volumes whose depth range overlaps with a depth range of the primitive group. Pixels in the tile which intersect the primitive group may be shaded using the per-primitive-group list of volumes.
Claims25
A computer-implemented method for rendering a three-dimensional scene as a two-dimensional image, wherein the three-dimensional scene comprises a plurality of objects and a plurality of volumes, wherein the two-dimensional image comprises a plurality of pixels, the method comprising:
- dividing the image into a plurality of tiles, wherein each tile comprises a subset of the plurality of pixels;
- for each respective tile:
- determining a first depth range for a first set of objects that intersect the tile;
- generating a first list of volumes, wherein the first list of volumes comprises a subset of the plurality of volumes that is filtered based on the first depth range;
- shading pixels in the tile based on the first list of volumes;
- storing each shaded pixel in a frame buffer.
A computer system configured to render a three-dimensional scene as a two-dimensional image, wherein the three-dimensional scene comprises a plurality of objects and a plurality of volumes, wherein the two-dimensional image comprises a plurality of pixels, the computer system comprising:
- a central processing unit (CPU);
- a graphics processing unit (GPU);
- a memory medium, wherein the memory medium comprises program instructions executable by the CPU and/or the GPU to:
- divide the image into a plurality of tiles, wherein each tile comprises a subset of the plurality of pixels;
- for each respective tile:
- generate an initial list of volumes that intersect the tile;
- for each of one or more sets of objects that intersect the tile:
- determine a depth range for the set of objects;
- generate a list of volumes for the set of objects based on the initial list of volumes that intersect the tile and the depth range for the set of objects;
- shade pixels that intersect the set of objects based on the list of volumes for the set of objects;
- store each shaded pixel in a frame buffer.
A non-transitory computer-accessible memory medium comprising program instructions for generating a two-dimensional image of a three-dimensional scene, wherein the program instructions are executable by a CPU and/or a GPU to:
- divide the image into a plurality of tiles, wherein each tile comprises a subset of the image, wherein each tile comprises a plurality of pixels;
- for each respective tile:
- determine a first depth range for a first set of objects that intersect the tile;
- generate a first list of volumes that intersect the tile within the first depth range;
- shade pixels which intersect the first set of objects based on the first list of volumes.
A computer-implemented method for rendering a three-dimensional scene as a two-dimensional image, wherein the three-dimensional scene comprises a plurality of objects lit by a plurality of lights wherein the two-dimensional image comprises a plurality of pixels, the method comprising:
- dividing the image into a plurality of tiles, wherein each tile comprises a subset of the plurality of pixels;
- for each respective tile:
- generating a list of primitive groups that intersect the tile;
- generating an initial list of lights that intersect the tile;
- for each primitive group in the list of primitive groups that intersect the tile:
- generating a per-primitive-group list of lights, wherein the per-primitive-group list of lights comprises lights whose depth range overlaps with a depth range of the primitive group;
- shading pixels in the tile which intersect the primitive group using the per-primitive-group list of lights.
A computer-implemented method for rendering a three-dimensional scene as a two-dimensional image, wherein the three-dimensional scene comprises a plurality of objects and a plurality of volumes, wherein the two dimensional image comprises a plurality of pixels for which pixel data is stored in a frame buffer, the method comprising, for each of a plurality of sets of objects:
- determining a bounding box for the set of objects based on minimum and maximum dimensions in height, width, and depth of the set of objects;
- comparing volume bounds of at least a subset of the plurality of volumes with the bounding box for the set of objects;
- generating a list of volumes that intersect the bounding box for the set of objects based on said comparing;
- for each pixel intersecting the set of objects:
- calculating effects of each volume in the list of volumes on the pixel;
- blending the calculated effects with pixel data for the pixel to generate new pixel data for the pixel;
- storing the new pixel data in the frame buffer.
Dependencies are inferred from the claim text.