Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

A texture loading pipeline loads textures for use in rendering an object. A source texture has one or more levels of detail. Each level of detail (LOD) contains texture tiles for a particular area of a global coordinate space at a particular resolution. There are no mandatory relationships between the areas represented by, or the resolutions of, different levels of detail. An instance of the texture loading pipeline exists for each LOD in the source texture. The texture tiles of a LOD are stored in a texture storage, which can be local or remote from the texture loading pipeline. An asynchronous request queue (ARQ) retrieves texture tiles in a region of interest from the texture storage and stores the tiles in a tile cache. Toroidal roaming is used to page textures in the region of interest from the tile cache to a texture cache. The toroidal roaming performs the best possible update of the texture cache given a limited update time. A pipeline driver drives the pipeline by providing...

InventorChristopher C. Tanner
Original AssigneeVicarious Visions, Inc.
Primary Examiner: Kee M. Tung
Attorney: Fenwick & West LLP
Current U.S. Classification345/552; 345/557; 345/582
International Classification: G06T/1140

View patent at USPTO
Search USPTO Assignment Database

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US6781588Sep 28, 2001Aug 24, 2004Intel CorporationTexture engine memory access synchronizer
US6928516Dec 3, 2001Aug 9, 2005Texas Instruments IncorporatedImage data processing system and method with image data organization into tile cache memory
US7202871May 12, 2004Apr 10, 2007Intel CorporationTexture engine memory access synchronizer
US7283135Jun 6, 2002Oct 16, 2007Bentley Systems, Inc.Hierarchical tile-based data structure for efficient client-server publishing of data over network connections
US7365753Jul 28, 2005Apr 29, 2008Intel CorporationTexture engine state variable synchronizer
US7570271Feb 10, 2006Aug 4, 2009Adobe Systems IncorporatedHigh speed display of high resolution image
US7948498Oct 13, 2006May 24, 2011NVIDIA CorporationEfficient texture state cache

Claims

1. A texture loading pipeline, comprising:

an asynchronous request queue (ARQ) for asynchronously receiving requests for texture tiles stored in a texture storage and retrieving requested texture tiles from the texture storage;
a tile cache coupled to the ARQ for storing texture tiles retrieved by the ARQ; and
a texture cache coupled to the tile cache for holding textures within a region of interest, the textures paged from the tile cache.

2. The texture loading pipeline of claim 1, wherein the texture storage stores a source texture having one or more levels of detail.

3. The texture loading pipeline of claim 1, wherein the ARQ retrieves requested texture tiles from a remote texture storage.

4. The texture loading pipeline of claim 1, wherein the tile cache comprises:

a compressed tile cache for storing compressed texture tiles provided by the ARQ;
a decompressor for decompressing compressed texture tiles stored in the compressed tile cache; and
an uncompressed tile cache for storing uncompressed texture tiles provided by the ARQ and tiles decompressed by the decompressor.

5. The texture loading pipeline of claim 4, wherein the decompressor operates asynchronously.

6. The texture loading pipeline of claim 1, wherein the tile cache further comprises:

an image processor for performing image processing on one or more texture tiles provided by the ARQ.

7. The texture loading pipeline of claim 6, wherein the image processor combines two or more texture tiles into a single texture tile.

8. The texture loading pipeline of claim 1, wherein the textures within the region of interest are determined responsive to a toroidal roaming of the texture tiles in the tile cache.

9. The texture loading pipeline of claim 1, wherein the texture tiles stored in the texture storage from a source texture having multiple levels of detail and wherein there is an instance of the texture loading pipeline for each level, further comprising:

a pipeline driver coupled to the tile cache and of each instance of the texture loading pipeline for driving the texture loading pipeline.

10. The texture loading pipeline of claim 9, wherein the pipeline driver outputs the region of interest to the tile cache and the texture cache, and wherein the tile cache provides texture tile requests to the ARQ responsive to the received region of interest and wherein textures are paged from the tile cache to the texture cache responsive to the received region of interest.

11. The texture loading pipeline of claim 9, wherein the tile cache is further adapted to provide texture tile requests to the ARQ responsive to speculative paging based on the received region of interest.

12. The texture loading pipeline of claim 9, wherein the pipeline driver outputs an update time to the texture caches of one or more of the texture loading pipeline instances, wherein the update time specifies an amount of processor time available to a texture cache to page textures within the region of interest from the tile cache to the texture cache.

13. The texture loading pipeline of claim 12, wherein each instance of the texture loading pipeline supports a particular bandwidth and wherein a majority of processing time is devoted to the texture loading pipeline supporting a bandwidth determined responsive to changes in the region of interest.

14. The texture loading pipeline of claim 9, wherein the pipeline driver receives an input value specifying which of the instances of the texture loading pipelines to activate.

15. The texture loading pipeline of claim 1, wherein there are multiple texture loading pipelines and further comprising:

a texture selector for selecting textures in a particular one of the texture caches of the multiple texture loading pipelines.

16. The texture loading pipeline of claim 15, wherein the selected textures are in an arbitrary coordinate space and further comprising:

a texture matrix for transforming the selected textures from the arbitrary coordinate space into a global coordinate space.

17. The texture loading pipeline of claim 16, wherein there are a plurality of texture matrixes and wherein the texture selector selects a plurality of the texture caches of the multiple texture loading pipelines and applies each selected texture cache to one of the plurality of texture matrixes.

18. A computer-implemented method of using a source texture to render a three-dimensional (3-D) scene, the source texture having a plurality of levels of detail, comprising the steps of:

establishing a texture loading pipeline for each level of detail in the source texture, each texture loading pipeline having a texture cache for caching textures in a region of interest;
providing the region of interest and an update time to selected ones of the texture loading pipelines;
for each selected texture loading pipeline, updating the texture cache with the textures in the region of interest for a duration of the update time provided to the texture loading pipeline; and
selecting textures in one of the texture caches for use in rendering the 3-D scene.

19. The method of claim 18, further comprising the steps of:

retrieving texture tiles from a texture storage responsive to the region of interest; and
storing the retrieved texture tiles in a tile cache;
wherein textures from within the region of interest are paged from the tile cache to the texture cache during the update.

20. The method of claim 19, wherein the texture tiles in the texture storage are compressed and further comprising the step of:

decompressing the texture tiles retrieved from the texture storage.

21. The method of claim 19, wherein the updating step comprises the step of:

performing toroidal roaming on the texture tiles within the tile cache.

22. The method of claim 18, wherein the selected textures are in an arbitrary coordinate space and further comprising the step of:

transforming the selected textures from the arbitrary coordinate space into a global coordinate space.

23. The method of claim 18 wherein each texture loading pipeline supports a particular bandwidth and wherein the texture loading pipeline supporting a best bandwidth for rendering the 3-D scene is provided with a majority of the update time.

24. A computer program product comprising:

a computer-usable medium having computer-readable code embodied therein for implementing a texture loading pipeline, the computer-readable code comprising:
an asynchronous request queue (ARQ) module for asynchronously receiving requests for texture tiles stored in a texture storage and retrieving requested texture tiles from the texture storage;
a tile cache module coupled to the ARQ module for storing texture tiles retrieved by the ARQ; and
a texture cache module coupled to the tile cache module for holding textures within a region of interest paged from the tile cache module.

25. The computer program product of claim 24, wherein the texture storage stores a source texture having one or more levels of detail.

26. The computer program product of claim 24, wherein the ARQ module retrieves requested texture tiles from a remote texture storage.

27. The computer program product of claim 24, wherein the tile cache module comprises:

a compressed tile cache module for storing compressed texture tiles provided by the ARQ module;
a decompressor module for decompressing compressed texture tiles stored in the compressed tile cache; and
an uncompressed tile cache module for storing uncompressed texture tiles provided by the ARQ module and tiles decompressed by the decompressor module.

28. The computer program product of claim 27, wherein the decompressor module operates asynchronously.

29. The computer program product of claim 24, wherein the tile cache module further comprises:

an image processor module for performing image processing on one or more texture tiles provided by the ARQ module.

30. The computer program product of claim 29, wherein the image processor module combines two or more texture tiles into a single texture tile.

31. The computer program product of claim 24, wherein the textures within the region of interest are determined responsive to a toroidal roaming of the texture tiles in the tile cache module.

32. The computer program product of claim 24, wherein the texture tiles stored in the texture storage form a source texture having multiple levels of detail and wherein there is an instance of the texture loading pipeline for each level of detail, further comprising:

a pipeline driver module coupled to the tile cache and texture cache modules of each instance of the texture loading pipeline for driving the texture loading pipeline.

33. The computer program product of claim 32, wherein the pipeline driver module outputs the region of interest to the tile and texture cache modules, and wherein the tile cache module provides texture tile requests to the ARQ module responsive to the received region of interest and wherein textures are paged from the tile cache module to the texture cache module responsive to the received region of interest.

34. The computer program product of claim 32, wherein the pipeline driver module outputs an update time to the texture cache modules of one or more of the texture loading pipeline instances, wherein the update time specifies an amount of processor time available to a texture cache module to page textures within the region of interest from the tile cache module to the texture cache module.

35. The computer program product of claim 34, wherein a texture cache module returns data to the pipeline module specifying an amount of processor time used by the texture cache module to page textures within the region of interest from the tile cache module to the texture cache module.

36. The computer program product of claim 34, wherein each instance of the texture loading pipeline supports a particular bandwidth and wherein a majority of processing time is devoted to the texture loading pipeline supporting a bandwidth determined responsive to changes in the region of interest.

37. The computer program product of claim 32, wherein the pipeline driver module receives an input specifying which of the instances of the texture loading pipeline to activate.

38. The computer program product of claim 24, wherein there are multiple texture cache modules and further comprising:

a texture selector module for selecting textures in a particular one of the texture cache modules.

39. The computer program product of claim 38, wherein the selected textures are in an arbitrary coordinate space and further comprising:

a texture matrix module for transforming the selected textures from the arbitrary coordinate space into a global coordinate space.