Graphics system with programmable real-time sample filtering
First Claim
1. A graphics system comprising:
- a graphics processor configured receive 3D graphics data, wherein the graphics processor is configured to generate a plurality of samples from the 3D graphics data;
a super-sampled sample buffer coupled to receive and store the samples from the graphics processor, wherein said super-sampled sample buffer is configured to double buffer at least a portion of each stored sample; and
a sample-to-pixel calculation unit coupled to receive samples from the super-sampled sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels in real time, wherein the sample-to-pixel calculation unit is configured to convey the output pixels to a display device without storing the output pixels in an intervening frame buffer.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and computer graphics system capable of super-sampling and performing programmable real-time filtering or convolution are disclosed. In one embodiment, the computer graphics system may comprise a graphics processor, a sample buffer, and a sample-to-pixel calculation unit. The graphics processor may be configured to generate a plurality of samples. The sample buffer, which is coupled to the graphics processor, is configured to store the samples and may be configured to double-buffer at least part of the stored samples. The sample-to-pixel calculation unit is programmable to select a variable number of stored samples from the sample buffer to filter into an output pixel. The sample-to-pixel calculation unit performs the filter process in real-time, and may be programmable to use a number of different filter types in.a single frame. The sample buffer may be super-sampled, and the samples may be positioned according to a regular grid, a perturbed regular grid, or a stochastic grid.
119 Citations
74 Claims
-
1. A graphics system comprising:
-
a graphics processor configured receive 3D graphics data, wherein the graphics processor is configured to generate a plurality of samples from the 3D graphics data;
a super-sampled sample buffer coupled to receive and store the samples from the graphics processor, wherein said super-sampled sample buffer is configured to double buffer at least a portion of each stored sample; and
a sample-to-pixel calculation unit coupled to receive samples from the super-sampled sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels in real time, wherein the sample-to-pixel calculation unit is configured to convey the output pixels to a display device without storing the output pixels in an intervening frame buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
multiplying each sample that falls within a predetermined region around the particular output pixel'"'"'s center by a weighting factor; and
summing the weighted samples.
-
-
14. A method for operating a graphics system comprising:
-
receiving 3D graphics data, wherein the 3D graphics data comprises a plurality of graphics primitives;
calculating a plurality of sample positions;
determining which sample positions are within the graphics primitives;
rendering the samples that are within the graphics primitives;
storing the rendered samples in sample buffer, wherein at least a portion of each stored sample is double-buffered;
filtering the stored samples once per screen refresh cycle to generate an output pixel; and
providing the output pixel to a display device without buffering the output pixel in a frame buffer after said filtering. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
reading a group of samples from the sample buffer;
determining which samples within the group are located within a predetermined extent from the center of the output pixel being generated;
applying a scaling factor to each sample within the predetermined distance;
summing the scaled samples to form the output pixel; and
normalizing the output pixel.
-
-
16. The method as recited in claim 14, wherein the filtering comprises:
-
reading a group of samples from the sample buffer;
determining which samples within the group are located within a predetermined distance from the center of the output pixel being generated;
applying a scaling factor to each sample within the predetermined distance;
summing the scaled samples to form the output pixel; and
normalizing the output pixel.
-
-
17. The method as recited in claim 16, wherein the scaling factor varies as a function of the sample'"'"'s distance from the center of the output pixel.
-
18. The method as recited in claim 16, wherein the scaling factor varies as a function of the sample'"'"'s x-offset and y-offset from the center of the output pixel.
-
19. The method as recited in claim 14, further comprising storing an alpha value for at least a portion of the samples stored in the sample buffer.
-
20. The method as recited in claim 14, wherein the filtering comprises mathematically manipulating samples located within a predetermined distance from the center of the output pixel.
-
21. The method as recited in claim 14, wherein the filter used in the filtering is changeable at least as frequently as the screen refresh cycle.
-
22. The method as recited in claim 14, wherein the storing comprises storing the samples in bins, where each sample'"'"'s position is determined by adding an x-offset and a y-offset to the corresponding bin'"'"'s position.
-
23. The method as recited in claim 22, wherein the filtering comprises reading at least part of one or more columns of bins from the sample buffer, wherein the columns overlap.
-
24. The method as recited in claim 14, wherein said sample buffer is divided into multiple columns that are filtered in parallel.
-
25. The method as recited in claim 14, further comprising storing x-offsets and y-offsets for each sample stored in the sample buffer.
-
26. The method as recited in claim 25, wherein the filter is changeable at least as frequently as the screen refresh cycle.
-
27. The method as recited in claim 14, wherein the number of samples contributing to each output pixel varies.
-
28. A computer system configured to display 3D graphics images, the system comprising:
-
a microprocessor, a main memory;
a bus coupling the microprocessor and the main memory; and
a graphics system coupled to the main memory, wherein the graphics system comprises;
a graphics processor configured receive 3D graphics data, wherein the 3D graphics data comprises a plurality of graphics primitives, a sample buffer coupled to receive and store the samples from the graphics processor, wherein said sample buffer is configured to double buffer at least a portion of each stored sample, and a sample-to-pixel calculation unit coupled to receive samples from the sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels, wherein the sample-to-pixel calculation unit is configured to convey the output pixels to a display device without buffering frames of the output pixels, wherein said sample-to-pixel calculation unit is configured to form each output pixel once per frame. - View Dependent Claims (29)
-
-
30. A computer software program embodied on computer readable media, wherein the software program comprises a plurality of instructions configured to direct a graphics processor to:
-
generate a plurality of sample positions;
calculate a sample for the sample positions;
store the sample in a sample buffer, wherein at least a part of each sample is double buffered;
read one or more of the samples from the sample buffer;
filter one or more of the stored samples once per screen refresh cycle to form output pixels in real time; and
convey the output pixels to a display device without storing the output pixel in a frame buffer after said filtering. - View Dependent Claims (31, 32, 33)
-
-
34. A graphics system comprising:
-
a graphics processor configured receive 3D graphics data, wherein the graphics processor is configured to generate a plurality of samples from the 3D graphics data;
a sample buffer coupled to receive and store the samples from the graphics processor; and
a sample-to-pixel calculation unit coupled to receive samples from the sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels that are directly conveyed to a display device. - View Dependent Claims (35, 36)
-
-
37. A graphics system comprising:
-
a graphics processor configured receive 3D graphics data, wherein the graphics processor is configured to generate a plurality of samples from the 3D graphics data;
a super-sampled sample buffer coupled to receive and store the samples from the graphics processor, wherein said super-sampled sample buffer is configured to double buffer at least a portion of each stored sample; and
a sample-to-pixel calculation unit coupled to receive samples from the super-sampled sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels by filtering the samples in real time, wherein the sample-to-pixel calculation unit is configured to convey the output pixels to a display device without a frame buffer intervening between the sample-to-pixel calculation unit and the display device;
wherein the sample-to-pixel calculation unit is programmable to change parameters governing the filtering performed by the sample-to-pixel calculation unit. - View Dependent Claims (38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
multiplying each sample that falls within a predetermined region around the particular output pixel'"'"'s center by a weighting factor; and
summing the weighted samples.
-
-
49. A method for operating a graphics system comprising:
-
receiving 3D graphics data, wherein the 3D graphics data comprises a plurality of graphics primitives;
calculating a plurality of sample positions;
determining which sample positions are within the graphics primitives;
rendering the samples that are within the graphics primitives;
storing the rendered samples in sample buffer, wherein at least a portion of each stored sample is double-buffered; and
filtering the stored samples once per screen refresh cycle to generate an output pixel;
providing the output pixel to a display device without buffering the output pixel in a frame buffer after said filtering;
wherein a filter used in said filtering is changeable at least as frequently as the screen refresh cycle. - View Dependent Claims (50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
reading a group of samples from the sample buffer;
determining which samples within the group are located within a predetermined extent from the center of the output pixel being generated;
applying a scaling factor to each sample within the predetermined distance;
summing the scaled samples to form the output pixel; and
normalizing the output pixel.
-
-
51. The method as recited in claim 49, wherein the filtering comprises:
-
reading a group of samples from the sample buffer;
determining which samples within the group are located within a predetermined distance from the center of the output pixel being generated;
applying a scaling factor to each sample within the predetermined distance;
summing the scaled samples to form the output pixel; and
normalizing the output pixel.
-
-
52. The method as recited in claim 51, wherein the scaling factor varies as a function of the sample'"'"'s distance from the center of the output pixel.
-
53. The method as recited in claim 51, wherein the scaling factor varies as a function of the sample'"'"'s x-offset and y-offset from the center of the output pixel.
-
54. The method as recited in claim 49, further comprising storing an alpha value for at least a portion of the samples stored in the sample buffer.
-
55. The method as recited in claim 49, wherein the filtering comprises mathematically manipulating samples located within a predetermined distance from the center of the output pixel.
-
56. The method as recited in claim 49, wherein the storing comprises storing the samples in bins, where each sample'"'"'s position is determined by adding an x-offset and a y-offset to the corresponding bin'"'"'s position.
-
57. The method as recited in claim 56, wherein the filtering comprises reading at least part of one or more columns of bins from the sample buffer, wherein the columns overlap.
-
58. The method as recited in claim 49, wherein said sample buffer is divided into multiple columns that are filtered in parallel.
-
59. The method as recited in claim 49, further comprising storing x-offsets and y-offsets for each sample stored in the sample buffer.
-
60. The method as recited in claim 59, wherein the filter is changeable at least as frequently as the screen refresh cycle.
-
61. The method as recited in claim 49, wherein the number of samples contributing to each output pixel varies.
-
62. A computer system configured to display 3D graphics images, the system comprising:
-
a microprocessor;
a main memory;
a bus coupling the microprocessor and the main memory; and
a graphics system coupled to the main memory, wherein the graphics system comprises;
a graphics processor configured receive 3D graphics data, wherein the 3D graphics data comprises a plurality of graphics primitives, a sample buffer coupled to receive and store the samples from the graphics processor, wherein said sample buffer is configured to double buffer at least a portion of each stored sample, and a sample-to-pixel calculation unit coupled to receive samples from the sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels by filtering the samples, wherein the sample-to-pixel calculation unit is configured to convey the output pixels to a display device without storing the output pixels in a traditional frame buffer, wherein said sample-to-pixel calculation unit is configured to form each output pixel once per frame;
wherein the sample-to-pixel calculation unit is programmable to change parameters governing the filtering performed by the sample-to-pixel calculation unit. - View Dependent Claims (63)
-
-
64. A computer software program embodied on computer readable media, wherein the software program comprises a plurality of instructions configured to direct a graphics processor to:
-
generate a plurality of sample positions;
calculate samples at the sample positions;
store the samples in a sample buffer, wherein the samples are stored in the sample buffer in a double-buffered fashion;
read one or more of the samples from the sample buffer, filter one or more of the stored samples once per screen refresh cycle to form output pixels in real time; and
convey the output pixels to a display device without buffering frames of the output pixels after said filtering;
wherein the plurality of instructions are further configured to modify a filter used to perform said filtering. - View Dependent Claims (65, 66)
-
-
67. A graphics system comprising:
-
a graphics processor configured receive 3D graphics data, wherein the graphics processor is configured to generate a plurality of samples from the 3D graphics data;
a sample buffer coupled to receive and store the samples from the graphics processor; and
a sample-to-pixel calculation unit coupled to receive samples from the sample buffer, wherein the sample-to-pixel calculation unit is configured to filter the samples to generate output pixels that are directly conveyed to a display device, wherein the sample-to-pixel calculation unit is programmable to change parameters governing the filtering of said samples. - View Dependent Claims (68, 69)
-
-
70. A graphics system comprising:
-
a graphics processor configured receive 3D graphics data, wherein the graphics processor is configured to generate a plurality of samples from the 3D graphics data;
a super-sampled sample buffer coupled to receive and store the samples from the graphics processor; and
a sample-to-pixel calculation unit coupled to receive samples from the super-sampled sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels in real time, wherein the sample-to-pixel calculation unit is configured to convey the output pixels to a display device without buffering the output pixels in a frame buffer. - View Dependent Claims (71, 72)
-
-
73. A method for operating a graphics system comprising:
-
receiving 3D graphics data, wherein the 3D graphics data comprises a plurality of graphics primitives;
calculating a plurality of sample positions;
determining which sample positions are within the graphics primitives;
rendering the samples that are within the graphics primitives;
storing the rendered samples in sample buffer, filtering the stored samples once per screen refresh cycle to generate an output pixel; and
providing the output pixel to a display device without buffering the output pixel in a frame buffer after said filtering.
-
-
74. A computer system configured to display 3D graphics images, the system comprising:
-
a microprocessor;
a main memory;
a bus coupling the microprocessor and the main memory; and
a graphics system coupled to the main memory, wherein the graphics system comprises;
a graphics processor configured receive 3D graphics data, wherein the 3D graphics data comprises a plurality of graphics primitives, a sample buffer coupled to receive and store the samples from the graphics processor; and
a sample-to-pixel calculation unit coupled to receive samples from the sample buffer, wherein the sample-to-pixel calculation unit is configured to form output pixels, wherein the sample-to-pixel calculation unit is configured to convey the output pixels to a display device without buffering the output pixels in a frame buffer, wherein said sample-to-pixel calculation unit is configured to form each output pixel once per frame.
-
Specification