DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claim(s) 1, 18; 10, 16, 17, and 19 is/are rejected under 35 U.S.C. 103 as being unpatentable over Spangler et al. U.S. Pub. No. 2008/0001964 in view of Toksvig et al. U.S. Patent No. 7,593,018 and Uralsky et al. U.S. Pub. No. 2020/0013174.
Re: claims 1 and 18 (which are rejected under the same rationale), Spangler teaches
1. A method of applying texture filtering to a block of fragments in a graphics processing unit (GPU), (“Thus, address generator logic 106 may receive texture coordinates and associated texture offsets and in response may generate corresponding texture map addresses. Sampler 102 may then use those addresses to access the corresponding raw textures stored and/or held in memory 108, may use that texture data to generate filtered pixel values and may provide those filtered pixels to shader 110.”; Spangler, [0012], Fig. 1)
Fig. 1 illustrates a rendering engine (GPU) that includes a texture sampler 102 (texture processing unit) receives texture coordinates and associated texture offsets for pixels and then generates filtered pixel values and provides the filtered pixels to shader 110.
(“... shader 110 may provide sampler 102 with a texture address for a first or initial pixel of a pixel block including two or more contiguous pixels along with associated texture offsets... ”; Spangler, [0017])
The texture addresses and texture offsets of pixels provided to the texture sampler for processing, are of a pixel block that includes two or more contiguous pixels (applying texture processing to a block of fragments in a graphics processing unit).
(“For example, a first or initial pixel of act 302 may comprise a first pixel (e.g., upper, left-hand pixel) of a 32-pixel block of pixels (e.g., four rows pixels having eight pixels each) and process 300 may be extended to use that first pixel’s texture address to determine all texture addresses of pixels in the block by applying appropriate combinations of texture offsets.”; Spangler, [0030])
each of the fragments being associated with a texture coordinate for each of a plurality of dimensions of a texture, (“Thus, referring also to Figs. 1 and 4, acts 302 and 304 may, for example, comprise sampler 102 receiving texture coordinates (u1, v1) for pixel 412 (p1) along with texture coordinate offsets (Δu, Δv) that correspond to offsets in respective texture coordinate units of dimensions u and v between adjacent pixels.”; Spangler, [0022])
The sampler 102 (texture processing unit) receives texture coordinates (u1, v1) for a pixel p1 along with texture coordinate offsets (Δu, Δv) that correspond to offsets in the u and v dimensions between adjacent pixels (each of the fragments being associated with a texture coordinate for each of the plurality of dimensions of a texture.
(“In addition, graphics processor 504 may implement a variety of 3D graphics processing components and/or stages... such as ... on or more texture samplers. Texture samplers implemented by graphics processor 504 may fetch or access texture data store or held in either or both of memories 506 and 508.”; Spangler, [0039], Fig. 5)
Fig. 5 illustrates a graphics processor 504 that includes a texture sampler (texture processing unit).
the method comprising: detecting that the texture coordinates for the fragments of the block are axis-aligned; (“... shader 110 may provide sampler 102 with a texture address for a first or initial pixel of a pixel block including two or more contiguous pixels along with associated texture offsets...”; Spangler, [0017])
The pixel shader 110 provides the texture sampler 102 with a texture address of a first pixel of a pixel block and uses texture offsets to include two or more contiguous pixels of the block.
(“As Fig. 4 shows, the u, v coordinate system or space associated with texture map 410 is aligned to the x, y coordinate system or space of pixels 412-420. In other words, the u axis of the texture address space is aligned to or shares the same orientation as the x axis of the screen space while the v axis of the texture address space is aligned to or shares the same orientation as the y axis of the screen space.”; Spangler, [0021], Fig. 4)
Fig. 4 illustrates that the pixel shader (fragment processing unit) has detected that the u, v coordinate system of the texture map 410 is aligned with the x, y coordinate system of the pixels 412-420 (the texture coordinates for the fragments of the block are axis aligned).
(“Thus, by taking advantage of the circumstances when a texture is aligned to the pixels being rendered (i.e., when no rotation or perspective occurs relative to the pixel’s coordinate system) the address computation for a given pixel may... be simplified to the addition of offsets to the address of an adjacent pixel.”; Spangler, [0042])
The GPU detects when a texture is aligned (axis-aligned) to the pixels being rendered.
... using the subset of the determined integer texel coordinates to generate texel addresses of texels to be fetched; (“Process 300 may then continue with the fetching of the second pixel’s texture data [act 308]. One way to implement act 308 is to have sampler 102 use the second pixel’s texture address determined in act 306 to access or fetch associated texture data from texture memory 108. Thus... if address generator logic 106 determines the texture address (u1+Δu, v1) of pixel 413 (p2) in act 306 then sampler 102 may use that address to fetch, from memory 108, texture data associated with those texels 402, 403, 405 and 406 of map 410 that bound the texture address of pixel 413.”; Spangler, [0024])
Figs. 1-4 illustrate, for example, that the address generator to the texture sampler 102 (texture processing unit) determines the texture address of the second pixel 413 using the offset (u1+Δu, v1) from the first pixel 412 (using the determined integer texel coordinates to generate texel addresses of texels to be fetched) and uses that address to fetch from memory texture data associated with those texels (to generate texel addresses of texels to be fetched). Spangler is silent regarding the texel coordinates being integers, however, Toksvig teaches
(“In step 330 an address is determined that corresponds to one or more explicit weights. The address may be determined using the integer portions of the texture map coordinates received in step 300 or using other texture map coordinates.”; Toksvig, col. 4, lines 26-30, Fig. 3B)
The texel addresses (texel coordinates) are determined using the integer portion of the texture map coordinates. Toksvig is combined with Spangler such that the determined texel coordinates of Toksvig use the reduced set of coordinates of Spangler. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of the texel coordinates being integers, in order to provide greater flexibility in producing a filtered texel, as taught by Toksvig (col. 1, lines 35-38)
Spangler teaches fetching texels using the generated texel addresses; for each of the fragments of the block, determining a filtered value by applying filtering to a sub-group of the fetched texels; and outputting the filtered values. (“Sampler 102 may then use those addresses to access the corresponding raw textures stored and/or held in memory 108, may use that texture data to generate filtered pixel values and may provide those filtered pixels to shader 110. ”; Spangler, [0012], Fig. 1)
Fig. 1 illustrates that the sampler uses the generated address to access corresponding raw textures stored in memory (fetching texels using the generated texel addresses). The accessed texture data is used to generate filtered pixel values (for each of the fragments of the block, determining a filtered value by applying filtering to a sub-group of the fetched texels). The filtered pixel values are then provided to the pixel shader 110 (outputting the filtered values). Spangler is silent regarding determining two or more integer texel coordinates for each of a set of the texture coordinates, however, Toksvig teaches this limitation.
... determining two or more integer texel coordinates for each of a set of the texture coordinates; (“In step 310 a texel address is determined using techniques known to those skilled in the art. Conventionally, the texel address is determined using only the integer portions of the texture coordinates... additional texel addresses may be determined in order to read all of the texels covered by an explicit filter kernel footprint, such as the footprint of explicit filter kernel 215 or 225.”; Toksvig, col. 3, line 66-col. 4, line 2)
The texture address (integer texel coordinates) is determined using only the integer portion of texture coordinates. Additional texel addresses are determined to read all texels covered by a filter kernel footprint (determining two or more texel coordinates for each of a set of the texture coordinates). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler, by adding the feature of determining two or more integer texel coordinates for each of a set of the texture coordinates, in order to provide greater flexibility in producing a filtered texel, as taught by Toksvig (col. 1, lines 35-38)
Spangler and Toksvig are silent regarding performing a uniquification process on the determined integer texel coordinates to remove one or more duplicated integer texel coordinates and to thereby determine a subset of the determined integer texel coordinates, however, Uralsky teaches
performing a uniquification process on the determined integer texel coordinates to remove one or more duplicated integer texel coordinates and to thereby determine a subset of the determined integer texel coordinates; (“Deduplication in this context refers to removing duplicate references to the same texel in the work queue... the later processing may include both deduplication of texel references in the work queue and shading texels identified by the texel references. A given texel reference may identify, without limitation, a specific texture map and a location within the texture map.”; Uralsky, [0048])
Texel references are deduplicated (uniquification process), i.e., duplicate references to the same texel are removed, where the texel reference identifies a specific texel location (texel coordinates) within a texture map (remove one or mor duplicated integer texel coordinates and to thereby determine a subset of the determined integer texel coordinates.). Uralsky is combined with Spangler and Toksvig such that the determined texel locations within the texture map of Uralsky are the texture address (integer texel coordinates).of Spangler. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler, by adding the feature of performing a uniquification process on the determined integer texel coordinates to remove one or more duplicated integer texel coordinates and to thereby determine a subset of the determined integer texel coordinates, in order to increase efficiency by avoiding the shading of duplicate texels, as taught by Uralsky ([0048]).
Claim(s) 20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Spangler in view of Toksvig, Uralsky and Rovers et al. U.S. Patent No. 10,937,198.
Claim 20 is a medium analogous to the method of claim 1, is similar in scope and is rejected under the same rationale. Claim 1 has an additional limitation. Re: claim 20, Spangler teaches
20. A non-transitory computer readable storage medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to...
(“Further, at least some of the acts in this figure may be implemented in a machine-readable medium. ”; Spangler, [0029])
The invention is implemented in a machine-readable medium. Spangler is silent regarding the machine readable medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to, however, Rovers teaches this limitation.
(“There may be provided a non-transitory computer readable storage medium having stored thereon a computer-readable description of an integrated circuit that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to...”; Rovers, col.6, lines 33-38)
Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of - A non-transitory computer readable storage medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to..., in order to reduce the use of hardware resources while decoding mor than one texel from the block at the same time, as taught by Rovers (col. 3, lines 7-16).
Re: claim 10, Spangler, Toksvig and Uralsky teach
10. The method of claim 1, wherein the uniquification process is performed on the determined integer texel coordinates in response to determining that there are a sufficient number of duplicated determined integer texel coordinates. (“A given texel may be listed multiple times in the work queue in connection with rasterization of a given geometric object or objects in the scene, leading to duplication of the texel references in the work queue. Each texel reference, including duplicates, in the work queue requires shading work. While such duplication may yield correct results, shading the same texel more than once may be inefficient. Deduplication in this context refers to removing duplicate references to the same texel in the work queue... the later processing may include both deduplication of texel references in the work queue and shading texels identified by the texel references. A given texel reference may identify, without limitation, a specific texture map and a location within the texture map.”; Uralsky, [0048])
It is determined that a texel is listed multiple times in the work queue, leading to duplication of texel references (texel coordinates) in the work queue. Each texel reference, including duplicates, requires shading, which is determined to be inefficient (the uniquification process is performed on the determined integer texel coordinates in response to determining that there are a sufficient number of duplicated determined integer texel coordinates). Thus, texel references are deduplicated (uniquification process), i.e., duplicate references to the same texel are removed, where the texel reference identifies a specific texel location (texel coordinates) within a texture map. Uralsky is combined with Spangler and Toksvig such that the determined texel locations within the texture map of Uralsky are the texture address (integer texel coordinates).of Spangler. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler, by adding the feature of perform a uniquification process on the determined integer texel coordinates, in order to increase efficiency by avoiding the shading of duplicate texels, as taught by Uralsky ([0048]).
Re: claim 16, Spangler, Toksvig and Uralsky teach
16. The method of claim 1, wherein the uniquification process is such that all of the texel addresses that are generated for processing the block of fragments are unique. (“Deduplication in this context refers to removing duplicate references to the same texel in the work queue... the later processing may include both deduplication of texel references in the work queue and shading texels identified by the texel references. A given texel reference may identify, without limitation, a specific texture map and a location within the texture map.”; Uralsky, [0048])
Texel references are deduplicated (uniquification process), i.e., duplicate references to the same texel are removed, where the texel reference identifies a specific texel location (texel coordinates/addresses) within a texture map. Thus, duplicate texel locations within the texture map are removed such that, remaining texture locations/coordinates/addresses are unique. Uralsky is combined with Spangler and Toksvig such that the determined texel locations within the texture map of Uralsky are the texture address (integer texel coordinates).of Spangler. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler, by adding the feature of the uniquification process is such that all of the texel addresses that are generated for processing the block of fragments are unique, in order to increase efficiency by avoiding the shading of duplicate texels, as taught by Uralsky ([0048]).
Re: claim 17, Spangler, Toksvig and Uralsky teach
17. The method of claim 1, wherein said set of the texture coordinates is a reduced set of the texture coordinates which comprises: for each column of fragments in the block, only one texture coordinate for a horizontal dimension, and for each row of fragments in the block, only one texture coordinate for a vertical dimension. (“Scheme 400 shows six contiguous texels 402-407 of a portion of a texture map 410 organized in a typical (u, v) texture address or coordinate space along with nine contiguous pixels 412-420 arranged in a typical (x, y) pixel or screen address or coordinate space.”; Spangler, [0020], Fig. 4)
Fig. 4 illustrates a block of nine contiguous pixels 412-420, arranged in three rows and three columns.
(“As Fig. 4 also shows, each pixel 412-420 is offset from the adjacent pixels in the x dimension by a constant value or offset Δu corresponding to a fixed number of units in the u dimension of the texture coordinate space. Similarly, each pixel 412-420 is offset from the adjacent pixels in the y dimension by another constant value or offset Δv corresponding to a fixed number of units in the v dimension of the texture coordinate space. ”; Spangler, [0021])
Fig. 4 illustrates that for each column of pixels (column of fragments in the block), such as the first column, which includes pixels p1, p3 and p6, that there is only one texture coordinate (u1) (only one texture coordinate for a horizontal dimension). And, for each row of pixels (each row of fragments in the block), such as the first row, which includes pixels p1, p2 and p3, there is only one texture coordinate (v1) (only one texture coordinate for a vertical dimension).
Re: claim 19, Spangler, Toksvig and Uralsky teach
19. The graphics processing unit of claim 18, wherein the texture processing unit comprises: a texture address generation module configured to: (i) determine the two or more integer texel coordinates for each of the set of the texture coordinates, (“In step 310 a texel address is determined using techniques known to those skilled in the art. Conventionally, the texel address is determined using only the integer portions of the texture coordinates... additional texel addresses may be determined in order to read all of the texels covered by an explicit filter kernel footprint, such as the footprint of explicit filter kernel 215 or 225.”; Toksvig, col. 3, line 66-col. 4, line 2)
The texture address (integer texel coordinates) is determined using only the integer portion of texture coordinates. Additional texel addresses are determined to read all texels (for each of the set of texture coordinates) covered by a filter kernel footprint (determine two or more texel coordinates for each of a set of the texture coordinates). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler, by adding the feature of determine two or more integer texel coordinates for each of a set of the texture coordinates, in order to provide greater flexibility in producing a filtered texel, as taught by Toksvig (col. 1, lines 35-38)
(ii) perform the uniquification process on the determined integer texel coordinates, (“Deduplication in this context refers to removing duplicate references to the same texel in the work queue... the later processing may include both deduplication of texel references in the work queue and shading texels identified by the texel references. A given texel reference may identify, without limitation, a specific texture map and a location within the texture map.”; Uralsky, [0048])
Texel references are deduplicated (uniquification process), i.e., duplicate references to the same texel are removed, where the texel reference identifies a specific texel location (texel coordinates) within a texture map. Uralsky is combined with Spangler and Toksvig such that the determined texel locations within the texture map of Uralsky are the texture address (integer texel coordinates).of Spangler. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler, by adding the feature of perform a uniquification process on the determined integer texel coordinates, in order to increase efficiency by avoiding the shading of duplicate texels, as taught by Uralsky ([0048]).
and (iii) use the subset of the determined integer texel coordinates to generate the texel addresses of the texels to be fetched; (“Process 300 may then continue with the fetching of the second pixel’s texture data [act 308]. One way to implement act 308 is to have sampler 102 use the second pixel’s texture address determined in act 306 to access or fetch associated texture data from texture memory 108. Thus... if address generator logic 106 determines the texture address (u1+Δu, v1) of pixel 413 (p2) in act 306 then sampler 102 may use that address to fetch, from memory 108, texture data associated with those texels 402, 403, 405 and 406 of map 410 that bound the texture address of pixel 413.”; Spangler, [0024])
Figs. 1-4 illustrate, for example, that the address generator to the texture sampler 102 (texture processing unit) determines the texture address of the second pixel 413 using the offset (u1+Δu, v1) from the first pixel 412 (using the determined integer texel coordinates to generate texel addresses of texels to be fetched) and uses that address to fetch from memory texture data associated with those texels (to generate texel addresses of texels to be fetched). Spangler is silent regarding the texel coordinates being integers, however, Toksvig teaches
(“In step 330 an address is determined that corresponds to one or more explicit weights. The address may be determined using the integer portions of the texture map coordinates received in step 300 or using other texture map coordinates.”; Toksvig, col. 4, lines 26-30, Fig. 3B)
The texel addresses (texel coordinates) are determined using the integer portion of the texture map coordinates. Toksvig is combined with Spangler such that the determined texel coordinates of Toksvig use the reduced set of coordinates of Spangler. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of the texel coordinates being integers, in order to provide greater flexibility in producing a filtered texel, as taught by Toksvig (col. 1, lines 35-38)
an address processing module configured to fetch the texels using the generated texel addresses; and a texture filtering module configured to: (i) determine the filtered value for each of the fragments of the block by applying filtering to a sub-group of the fetched texels, and (ii) output the filtered values. (“Sampler 102 may then use those addresses to access the corresponding raw textures stored and/or held in memory 108, may use that texture data to generate filtered pixel values and may provide those filtered pixels to shader 110.”; Spangler, [0012], Fig. 1)
Fig. 1 illustrates that the sampler uses the generated address to access corresponding raw textures stored in memory (fetching texels using the generated texel addresses). The accessed texture data is used to generate filtered pixel values (determine a filtered value by applying filtering to a sub-group of the fetched texels). The filtered pixel values are then provided to the pixel shader 110 (output the filtered values).
Claim(s) 2 is/are rejected under 35 U.S.C. 103 as being unpatentable over Spangler in view of Toksvig and Uralsky as applied to claim 1 above, and further in view of Seiler U.S. Pub. No. 2020/0143580.
Re: claim 2, Spangler, Toksvig and Uralsky are silent regarding, performing a deuniquification process on the fetched texels to thereby determine which of the fetched texels are included in the sub-group for each of the fragments of the block, however, Seiler teaches
2. The method of claim 1, further comprising performing a deuniquification process on the fetched texels to thereby determine which of the fetched texels are included in the sub-group for each of the fragments of the block. (“... if a tile contains 16x16 pixels, the display engine (e.g., its pixel block) may use interpolation to determine the texture coordinates (e.g., in (U, V)) of each of the pixel sample locations using the four texture coordinates of the four corners of the projected tile...”; Seiler, [0086])
For example, (U, V) texture coordinates are determined (determine which of the fetched texels are included) for each sample location (fragment) of a 16x16 pixel block (in the sub-group for each of the fragments of the block).
(“Fig. 6A illustrates an example sampling point 610 and the corresponding texels (e.g., 601, 602, 603, 604) that are needed to determine the pixel value at the sampling point 610... the system may determine a pixel value using interpolation based on the four closest texels. For example, the pixel value corresponding to the sampling point 610 may be determined by interpolating the four closest texels 601, 602, 603, and 604.”; Seiler, [0087], Fig. 6A)
Fig. 6A illustrates that the pixel value corresponding to sampling point 610 (fragment of the block) is determined by interpolating the four closest texels (sub-group) 601-604 (determine which of the fetched texels are included in the sub-group for each of the fragments of the block). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of performing a deuniquification process on the fetched texels to thereby determine which of the fetched texels are included in the sub-group for each of the fragments of the block, in order to allow the texture buffer region to store the 4x4 texel region such that it can be read out in one read operation, thereby reducing bandwidth requirements, as taught by Seiler ([0070]).
Claim(s) 3 and 8 is/are rejected under 35 U.S.C. 103 as being unpatentable over Spangler in view of Toksvig and Uralsky as applied to claim 1 above, and further in view of Harris et al. U.S. Patent No. 10,706,607.
Re: claim 3, Spangler, Toksvig and Uralsky teach
3. The method of claim 1, wherein the texture filtering is bilinear filtering, (Process 300 performs filtering of the second pixel’s texture data using, for example, bilinear filtering. Spangler, [0025], Fig. 3)
wherein said determining two or more integer texel coordinates for each of a set of the texture coordinates comprises determining exactly two integer texel coordinates for each of the set of the texture coordinates, (“... address generator logic 106 may use the texture address of the first pixel and the associated texture offsets supplied in respective acts 302 and 304 to determine or generate the second pixel’s texture address. For example, logic 106 may add the offset value Δu to the texture coordinates (u1, v1) of pixel 412 to generate the texture address or coordinates (u1+Δu, v1) of pixel 413 (p2) that is adjacent to pixel 412 in the x dimension. Similarly logic 106 may, for example, implement act 306 by adding the offset value Δv to the texture coordinates (u1, v1) of pixel 412 to generate the texture address or coordinates (u1, v1+Δv) of pixel 415 (p3) that is adjacent to pixel 412 in the y dimension.”; Spangler, [0023], Figs. 1-4)
Fig. 1 illustrates that the texture sampler (texture processing unit) includes an address generator that uses the texture address of the first pixel and the associated texture offsets to determine or generate the second pixel’s texture address (two texel coordinates are determined for each of the texture coordinates of the reduced set). Spangler and Uralsky are silent regarding the texel coordinates being integers, however, Toksvig teaches
(“In step 330 an address is determined that corresponds to one or more explicit weights. The address may be determined using the integer portions of the texture map coordinates received in step 300 or using other texture map coordinates.”; Toksvig, col. 4, lines 26-30, Fig. 3B)
The texel addresses (texel coordinates) are determined using the integer portion of the texture map coordinates, where each of the texel addresses corresponds to a pair of the determined integer texel coordinates (determining exactly two integer texel coordinates for each of the set of texture coordinates). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of the texel coordinates being integers, in order to provide greater flexibility in producing a filtered texel, as taught by Toksvig (col. 1, lines 35-38)
Spangler, Toksvig and Uralsky are silent regarding for each of the fragments of the block, the sub-group comprises four of the fetched texels and the filtered value for the fragment is determined by determining a result of a bilinear interpolation of those four fetched texels,, however, Harris teaches
and wherein for each of the fragments of the block, the sub-group comprises four of the fetched texels and the filtered value for the fragment is determined by determining a result of a bilinear interpolation of those four fetched texels. (“... the texture mapper may... receive a texture mapping request, e.g., from a renderer (e.g., fragment shader), e.g., a graphics processor, which texture mapping request may, and in an embodiment does, indicate, inter alia, a particular texture filtering operation to be performed. For example, the texture mapping operation request could indicate that a bilinear filtering operation is to be performed using four texel values.”; Harris, col. 11, lines 10-17)
A texture mapping request is received from a fragment shader, which indicates bilinear filtering is to be performed using four texel values (for each of the fragments of the block, the sub-group comprises four of the fetched texels) and bilinear filtering produces the filtered value for the fragment (the filtered value for the fragment is determined by determining a result of bilinear interpolation of those four texels). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of for each of the fragments of the block, the sub-group comprises four of the fetched texels and the filtered value for the fragment is determined by determining a result of a bilinear interpolation of those four fetched texels, in order to allow the texture filtering output result to be generated in a more efficient and less processing intensive manner, thereby reducing the computation requirements when performing the texture mapping operation, as taught by Harris (col. 4, lines 40-44).
Re: claim 8, Spangler, Uralsky and Harris are silent regarding determining a fractional part of a texel position corresponding to each of the texture coordinates of the set, wherein a horizontal interpolation weight of the bilinear interpolation for a fragment is based on the determined fractional part of a texel position corresponding to the texture coordinate associated with the fragment for a horizontal dimension, and wherein a vertical interpolation weight of the bilinear interpolation for the fragment is based on the determined fractional part of a texel position corresponding to the texture coordinate associated with the fragment for a vertical dimension, however, Toksvig teaches
8. The method of claim 3, further comprising determining a fractional part of a texel position corresponding to each of the texture coordinates of the set, wherein a horizontal interpolation weight of the bilinear interpolation for a fragment is based on the determined fractional part of a texel position corresponding to the texture coordinate associated with the fragment for a horizontal dimension, and wherein a vertical interpolation weight of the bilinear interpolation for the fragment is based on the determined fractional part of a texel position corresponding to the texture coordinate associated with the fragment for a vertical dimension. (“... texture unit 400 receives fragment data from a rasterizer... and parameters associated with fragments, e.g., texture identifiers, texture coordinates, and the like... A fragment may cover a pixel or a portion of a pixel. Likewise, a pixel may include one or more fragments and each fragment may correspond to one or more sets of texture coordinates.”; Toksvig, col. 5, lines 8-11, lines 14-17)
A fragment corresponds to one or more sets of texture coordinates (u, v), where u is the horizontal coordinate and v is the vertical coordinate.
(“In some embodiments of the present invention, particularly those that support conventional using bilinear interpolation to produce a filtered texel value, address computation unit 410 computes bilinear weights using the fractional portions of the texture map coordinates and outputs those bilinear weights to weight register unit 420 for storage. Weight register unit 420 outputs the explicit weights to a texture filter unit 430.”; Toksvig, col. 5, lines 43-50, Fig. 4)
The fractional portions of the texture map coordinates are determined (determining a fractional part of a texel position corresponding to each of the texture coordinates of the reduced set) and used to compute bilinear weights for each coordinate u, v of the texture coordinates. The bilinear weights are considered to include a horizontal interpolation weight of the bilinear interpolation for a fragment based on the determined fractional part of a texel position corresponding to the texture coordinate (u) associated with the fragment for a horizontal dimension (u) and a vertical interpolation weight of the bilinear interpolation for the fragment based on the determined fractional part of a texel position corresponding to the texture coordinate (v) associated with the fragment for a vertical dimension (v). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of determining a fractional part of a texel position corresponding to each of the texture coordinates of the set, wherein a horizontal interpolation weight of the bilinear interpolation for a fragment is based on the determined fractional part of a texel position corresponding to the texture coordinate associated with the fragment for a horizontal dimension, and wherein a vertical interpolation weight of the bilinear interpolation for the fragment is based on the determined fractional part of a texel position corresponding to the texture coordinate associated with the fragment for a vertical dimension, in order to provide greater flexibility in producing a filtered texel, as taught by Toksvig (col. 1, lines 35-38)
Claim(s) 4, 6 and 7 is/are rejected under 35 U.S.C. 103 as being unpatentable over Spangler in view of Toksvig, Uralsky and Harris as applied to claim 3 above, and further in view of Xu et al. WO 2022/116012 A1.
Re: claim 4, Spangler, Toksvig, Uralsky and Harris are silent regarding the two integer texel coordinates determined for each of the texture coordinates are: (i) a first integer texel coordinate which corresponds to the texture coordinate rounded down to an integer texel position, and (ii) a second integer texel coordinate which is one more than the first integer texel coordinate, however, Xu teaches
4. The method of claim 3, wherein the two integer texel coordinates determined for each of the texture coordinates are: (i) a first integer texel coordinate which corresponds to the texture coordinate rounded down to an integer texel position, and (ii) a second integer texel coordinate which is one more than the first integer texel coordinate. (“Texel coordinates: are integer coordinates obtained by converting texture coordinates. Taking the above texture coordinates as (44.8, 15.2) as an example, the corresponding 2*2 texel coordinates t0, t1, t2 and t3 can be: (44.8. 115.2) → t0=(44, 114), t1=(45, 114), t2=(44, 115), t3=(45, 115), then perform Bilinear Filtering on 2*2 texel coordinates texels can be obtained.”; Xu, p. 11, 7th-8th paras)
For example, for the texture coordinates (44.8, 115.2), the integer texel coordinates are (44,114), (45, 114), (44, 115) and (45, 115). Thus, for the texture coordinate in the horizontal (or u) dimension of 44.8, there are two integer coordinates: a first texel coordinate of 44 (texture coordinate rounded down to an integer texel position) and a second texel coordinate 45 (second integer texel coordinate which is one more than the first texel coordinate). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of the two integer texel coordinates determined for each of the texture coordinates are: (i) a first integer texel coordinate which corresponds to the texture coordinate rounded down to an integer texel position, and (ii) a second integer texel coordinate which is one more than the first integer texel coordinate, in order to smooth the image by softening the difference between different pixels I the texture image, such as in bilinear filtering, as taught by Xu (p. 9, 6th para).
Re: claim 6, Spangler, Toksvig, Uralsky and Harris teach
6. The method of claim 3, wherein the block of fragments is an m x n block of fragments, wherein the texture is a 2D texture such that each fragment is associated with a texture coordinate for a horizontal dimension and a texture coordinate for a vertical dimension, (“Scheme 400 shows six contiguous texels 402-407 of a portion of a texture map 410 organized in a typical (u, v) texture address or coordinate space along with nine contiguous pixels 412-420 arranged in a typical (X, Y) pixel or screen address or coordinate space.”; Spangler, [0020], Fig. 4)
Fig. 4 illustrates a two-dimensional texture map 410 (texture is a 2D texture), that includes a block of fragments 412-420 in a 3x3 array (the block of fragments is in an mxn block of fragments). Fig. 4 illustrates that each fragment, such as for example, fragment 412, is associated with a texture coordinate (u, v), such as texel 402 T(0, 0), for a horizontal dimension and a texture coordinate for the vertical dimension.
Spangler, Toksvig, Uralsky and Harris are silent regarding the subset of the determined integer texel coordinates comprises n+1 integer texel coordinates for the horizontal dimension and m+1 integer texel coordinates for the vertical dimension, however, Xu teaches
and wherein the subset of the determined integer texel coordinates comprises n+1 integer texel coordinates for the horizontal dimension and m+1 integer texel coordinates for the vertical dimension. (“Texel coordinates: are integer coordinates obtained by converting texture coordinates. Taking the above texture coordinates as (44.8, 15.2) as an example, the corresponding 2*2 texel coordinates t0, t1, t2 and t3 can be: (44.8. 115.2) → t0=(44, 114), t1=(45, 114), t2=(44, 115), t3=(45, 115), then perform Bilinear Filtering on 2*2 texel coordinates texels can be obtained.”; Xu, p. 11, 7th-8th paras)
For example, for the texture coordinates (44.8, 15.2), the integer texel coordinates are (44,114), (45, 114), (44, 115) and (45, 115). Thus, for the texture coordinate in the horizontal dimension of 44.8 (m), there are two (m+1) integer coordinates of 44 and 45. For the texture coordinate in the vertical dimension of 115.2 (n), there are two (n+1) integer coordinates of 114 and 115. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of the subset of the determined integer texel coordinates comprises n+1 integer texel coordinates for the horizontal dimension and m+1 integer texel coordinates for the vertical dimension, in order to smooth the image by softening the difference between different pixels I the texture image, such as in bilinear filtering, as taught by Xu (p. 9, 6th para).
Re: claim 7, Spangler, Toksvig, Uralsky and Harris are silent regarding, the fetched texels represent a (m+1)x(n+1) block of texels of the texture, however, Xu teaches
7. The method of claim 6, wherein the fetched texels represent a (m+1)x(n+1) block of texels of the texture. (“Texel coordinates: are integer coordinates obtained by converting texture coordinates. Taking the above texture coordinates as (44.8, 15.2) as an example, the corresponding 2*2 texel coordinates t0, t1, t2 and t3 can be: (44.8. 115.2) → t0=(44, 114), t1=(45, 114), t2=(44, 115), t3=(45, 115), then perform Bilinear Filtering on 2*2 texel coordinates texels can be obtained.”; Xu, p. 11, 7th-8th paras)
For example, for the texture coordinates (44.8, 15.2), the integer texel coordinates are (44,114), (45, 114), (44, 115) and (45, 115). For the texture coordinate in the horizontal dimension of 44.8 (m), there are two (m+1) integer coordinates of 44 and 45. And, for the texture coordinate in the vertical dimension of 115.2 (n), there are two (n+1) integer coordinates of 114 and 115. Thus, the fetched texels, (44,114), (45, 114), (44, 115) and (45, 115), represent an (m+1)x(n+1) block of texels of the texture. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of the fetched texels represent a (m+1)x(n+1) block of texels of the texture, in order to smooth the image by softening the difference between different pixels I the texture image, such as in bilinear filtering, as taught by Xu (p. 9, 6th para).
Claim(s) 5 is/are rejected under 35 U.S.C. 103 as being unpatentable over Spangler in view of Toksvig, Uralsky and Harris as applied to claim 3 above, and further in view of Hollemeersch et al., A new approach to combine texture compression and filtering, The Visual Computer, April 2012, Springer 28(4), 371-385.
Re: claim 5, Spangler, Toksvig, Uralsky and Harris are silent regarding the level of detail of the texture filtering corresponds to a 1:1 mapping between the spacing of the fragments in the block and the spacing of the texels in the texture, however, Hollemeersch teaches
5. The method of claim 3, wherein the level of detail of the texture filtering corresponds to a 1:1 mapping between the spacing of the fragments in the block and the spacing of the texels in the texture. (“A mipmap chain is a pyramidal data structure that consists of down sampled and prefiltered textures. Every texture in the pyramid is half the size along each axis as the previous level. To sample from this data structure, the level that needs to be sampled is first determined based on the derivatives of the texture coordinates in screen space as to select a level which roughly corresponds to a 1:1 mapping between texels and pixels. Then either a normal 2D sample is performed from this level or data from two nearby levels is interpolated using a linear filter. When linear filtering between levels is used in conjunction with bilinear filtering of the individual levels ”; Hollemeersch, p. 373, 3rd para under “2.3 Texture filtering”)
In a mipmap data structure, a mipmap level (the level of detail of the texture filtering) is selected which corresponds to a 1:1 mapping between texels and pixels (corresponds to a 1:1 mapping between eh spacing of the fragments of the block and the spacing of the texels in the texture). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of - the level of detail of the texture filtering corresponds to a 1:1 mapping between the spacing of the fragments in the block and the spacing of the texels in the texture, in order to increase the render quality and provide anti-aliasing, as taught by Hollemeersch (p. 372, 6th para under “2.1 Constraints of texture compression”)
Claim(s) 14 is/are rejected under 35 U.S.C. 103 as being unpatentable over Spangler in view of Toksvig and Uralsky as applied to claim 1 above, and further in view of Hollemeersch.
Re: claim 14, Spangler, Toksvig and Uralsky are silent regarding one or both of the horizontal and vertical dimensions of the texture are flipped relative to the dimensions of the block of fragments, however, Hollemeersch teaches
14. The method of claim 1, wherein one or both of the horizontal and vertical dimensions of the texture are flipped relative to the dimensions of the block of fragments. (“Block flipping can be extended to 2D with bilinear filtering... Transform-domain filtering by block flipping can then be generalized to 2D by alternating horizontal flipping for increasing horizontal block indices and alternating vertical flipping for increasing vertical block indices.”; Hollemeersch, 376, 4th para under “3.2 Inter block coding”)
Block flipping is generalized to 2D by alternating horizontal flipping and vertical flipping (one or both of the horizontal and vertical dimensions of the texture are flipped relative to the dimensions of the block fragments). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Spangler by adding the feature of one or both of the horizontal and vertical dimensions of the texture are flipped relative to the dimensions of the block of fragments, in order to reduce the number of shader instructions to decode a single texture, as taught by Hollemeersch (p. 379, last para).
Allowable Subject Matter
Claims 9, 11, 12, 13 and 15 objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims.
The following is a statement of reasons for the indication of allowable subject matter: None of the prior art teaches or suggests:
From claim 9 – “further comprising, prior to generating the texel addresses, detecting that the determined fractional part of a texel position corresponding to a texture coordinate is zero, and in response thereto determining that two of the four texels of the bilinear interpolation for a fragment associated with the texture coordinate are not needed in order to determine the result of the bilinear interpolation of the four texels.”
From claim 11 – “wherein the uniquification process is performed on the determined integer texel coordinates in response to determining that there are a sufficient number of duplicated determined integer texel coordinates, wherein m=n=4, and wherein said determining that there are a sufficient number of duplicated determined integer texel coordinates comprises determining whether all six of the following expressions are satisfied:
PNG
media_image1.png
218
388
media_image1.png
Greyscale
where ui- and ui+ are the two integer texel coordinates in the horizontal dimension for each of the fragments in the ith column of the block of fragments, where i ϵ 0,1,2,3; where vj- and vj+ are the two integer texel coordinates in the vertical dimension for each of the fragments in the jth row of the block of fragments, where j ϵ 0,1,2,3; and where v represents the logical OR operation.”
From claim 12 – “wherein the integer texel coordinates of the 5x5 block of texels are:
PNG
media_image2.png
67
292
media_image2.png
Greyscale
. “
From claim 13 – “wherein the texture filtering is two dimensional polynomial filtering using a polynomial having a degree, d, where d > 1, wherein said determining two or more integer texel coordinates for each of a set of the texture coordinates comprises determining (d + 1) integer texel coordinates for each of the set of the texture coordinates, and wherein for each of the fragments of the block, the sub-group comprises (d + 1)2 of the fetched texels and the filtered value for the fragment is determined by determining a result of a two dimensional polynomial interpolation of those (d + 1)2 fetched texels, the polynomial interpolation using the polynomial having the degree, d.”
From claim 15 – “wherein a pair of integer texel coordinates for a first fragment of the block is the same as a pair of integer texel coordinates for a second fragment of the block, and wherein due to the uniquification process the texel address corresponding to that pair of integer texel coordinates is generated a single time for processing the block of fragments.”
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to DONNA J RICKS whose telephone number is (571)270-7532. The examiner can normally be reached on M-F 7:30am-5pm EST (alternate Fridays off).
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Devona Faulk can be reached on 571-272-7515. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see https://ppair-my.uspto.gov/pair/PrivatePair. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/Donna J. Ricks/Examiner, Art Unit 2612
/DEVONA E FAULK/Supervisory Patent Examiner, Art Unit 2618