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 .
Drawings
The drawings are objected to as failing to comply with 37 CFR 1.84(p)(5) because they do not include the following reference sign(s) mentioned in the description: “139” in paragraph 0172 line 3 and paragraph 0174 line 25. Corrected drawing sheets in compliance with 37 CFR 1.121(d) are required in reply to the Office action to avoid abandonment of the application. Any amended replacement drawing sheet should include all of the figures appearing on the immediate prior version of the sheet, even if only one figure is being amended. Each drawing sheet submitted after the filing date of an application must be labeled in the top margin as either “Replacement Sheet” or “New Sheet” pursuant to 37 CFR 1.121(d). If the changes are not accepted by the examiner, the applicant will be notified and informed of any required corrective action in the next Office action. The objection to the drawings will not be held in abeyance.
The drawings are objected to as failing to comply with 37 CFR 1.84(p)(5) because they include the following reference character(s) not mentioned in the description:
4402, 4404 in Fig. 44
4500, 4502, 4504 in Fig. 45
4600, 4602, 4604 in Fig. 46
4702, 4704 in Fig. 47
4804, 4806, 4808 in Fig. 48
4904, 4906, 4908 in Fig. 49
5002 in Fig. 50
Corrected drawing sheets in compliance with 37 CFR 1.121(d), or amendment to the specification to add the reference character(s) in the description in compliance with 37 CFR 1.121(b) are required in reply to the Office action to avoid abandonment of the application. Any amended replacement drawing sheet should include all of the figures appearing on the immediate prior version of the sheet, even if only one figure is being amended. Each drawing sheet submitted after the filing date of an application must be labeled in the top margin as either “Replacement Sheet” or “New Sheet” pursuant to 37 CFR 1.121(d). If the changes are not accepted by the examiner, the applicant will be notified and informed of any required corrective action in the next Office action. The objection to the drawings will not be held in abeyance.
Claim Objections
Claims 3-5, 7-8, 13, and 17-18 are objected to because of the following informalities:
Claims 3 and 13 recites the limitation "the counter-clockwise triangles" in line 1. There is insufficient antecedent basis for this limitation in the claim.
In claim 4 line 1, “further add” should read “further comprising: adding”.
In claim 5 line 1, “further accumulate” should read “further comprising: accumulating”.
Claims 7 and 17 recites the limitation "the frame buffer" in line 2. There is insufficient antecedent basis for this limitation in the claim.
Claims 8 and 18 recites the limitation "the color buffer" in line 3. There is insufficient antecedent basis for this limitation in the claim.
Appropriate correction is required.
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.
Claims 1, 9, and 11 are rejected under 35 U.S.C. 103 as being unpatentable over Goel et al. (US 20140043342 A1) in view of Johnson (FillRule), hereinafter Goel and Johnson respectively.
Regarding claim 1, Goel teaches a method for rendering a graphic in an interactive graphics system (Paragraph 0066, 0068, 0107 – “The software applications that execute on CPU 6 may include, for example,…a media player application, a video game application, a graphical user interface application or another program. The user may provide input to computing device 2 via one or more input devices (not shown) such as a keyboard, a mouse, a microphone, a touch pad or another input device that is coupled to computing device 2 via user interface 4…The present disclosure provides for systems and method of for path rendering… the path rendering techniques described in this disclosure may be implemented in any of the components illustrated in FIG. 2 including, e.g., graphics API 26, GPU driver 28, command engine 32 and processing units 34. In some examples, all or almost all of the path rendering techniques may be implemented in a graphics pipeline in GPU 12 formed by processing units 34”), via executable code stored in a memory coupled to a graphical processing unit, wherein the executable code causes the graphical processing unit to trigger control actions to (Paragraph 0070 – “memory 10 may act as a device memory for GPU 12 and may store data to be operated on by GPU 12 as well as data resulting from operations performed by GPU 12. For example, memory 10 may store any combination of path data, path segment data, surfaces, texture buffers, depth buffers, cell buffers, vertex buffers, frame buffers, or the like. In addition, memory 10 may store command streams for processing by GPU 12. For example, memory 10 may store path rendering commands, 3D graphics rendering commands, and/or general-purpose GPU computing command”):
execute an action to assign an integer winding number to every region of a path based on a determination of how many loops cover a designated area (Paragraph 0136 – “(1) construct a straight line out from P in any direction towards infinity, (2) find all the intersections of C with this ray, and (3) score up the winding number. Scoring the winding number includes: (1) for every clockwise intersection (the curve passing through the ray from left to right, as viewed from P) subtract 1; (2) for every counter-clockwise intersection (curve passing from right to left, as viewed from P) add 1”; Note: the winding number is calculated for every loop in a path), and make a determination whether the loops are clockwise or counterclockwise (Paragraph 0136 – “(1) for every clockwise intersection (the curve passing through the ray from left to right, as viewed from P) subtract 1; (2) for every counter-clockwise intersection (curve passing from right to left, as viewed from P) add 1”);
and use a fill rule of the path to determine whether or not a region should be filled, based on the winding number (Paragraph 0126, 0136, 0139, 0211 – “Winding order will determine whether to increase or decrease stencil value for triangle coverage, in non-zero fill mode…(1) for every clockwise intersection (the curve passing through the ray from left to right, as viewed from P) subtract 1; (2) for every counter-clockwise intersection (curve passing from right to left, as viewed from P) add 1… The non-zero fill rule says that the point is inside the shape if the resulting sum is not equal to 0… any non-zero values in stencil buffer 40 may represent a fill area for the path segment to be rendered”; Note: the fill rule determines the fill area based on the winding number).
Goel does not teach wherein the clockwise loops are filled and the counterclockwise loops are black holes that erase the clockwise loops. However, Johnson teaches wherein the clockwise loops are filled and the counterclockwise loops are black holes that erase the clockwise loops (Page 1 Paragraphs 4-5 – “for each path that crosses the imaginary line from right to left increment the winding number, and for each path that crosses the line from left to right decrement the winding number…Positive: Only sub-regions with winding counts > 0 are filled”; Note: it is implied that areas with negative winding numbers are not filled and thus are black holes. Every counterclockwise loop (left to right) erases the clockwise loops since it decrements the winding number). A person of ordinary skill in the art before the effective filing date of the claimed invention would have recognized that the non-zero fill rule of Goel could have been substituted for the positive fill rule of Johnson because both the non-zero fill rule and positive fill rule serve the purpose of determining which areas to fill in a path. Furthermore, a person of ordinary skill in the art would have been able to carry out the substitution. Finally, the substitution achieves the predictable result of determining which areas to fill in a path. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to substitute the non-zero fill rule of Goel for the positive fill rule of Johnson according to known methods to yield the predictable result of determining which areas to fill in a path. Using the method of Goel, wherein fill areas are colored and non-fill areas are dark/black (Paragraph 0239 – “The data in stencil buffer 40 may cause pixels inside of the fill area to light up with a fill color (specified by the CPU prior to the second rendering pass), and cause pixels that are outside of the fill area to remain dark”), and using the positive fill rule instead of the non-zero fill rule would cause the clockwise loops to be filled, while the counter-clockwise loops are black holes that erase or cancel out clockwise loops.
Regarding claim 9, Goel in view of Johnson teaches the method according to claim 1. Goel further teaches wherein the path’s fill rule determines if a region should be filled based on a winding number (Paragraph 0126, 0136, 0139, 0211 – “Winding order will determine whether to increase or decrease stencil value for triangle coverage, in non-zero fill mode…(1) for every clockwise intersection (the curve passing through the ray from left to right, as viewed from P) subtract 1; (2) for every counter-clockwise intersection (curve passing from right to left, as viewed from P) add 1… The non-zero fill rule says that the point is inside the shape if the resulting sum is not equal to 0… any non-zero values in stencil buffer 40 may represent a fill area for the path segment to be rendered”; Note: the fill rule determines the fill area based on the winding number).
Regarding claim 11, Goel teaches a non-transitory computer-readable medium storing instructions that, when executed on a processor, cause the processor to render a graphic, by performing the steps of (Paragraph 0070 – “memory 10 may act as a device memory for GPU 12 and may store data to be operated on by GPU 12 as well as data resulting from operations performed by GPU 12. For example, memory 10 may store any combination of path data, path segment data, surfaces, texture buffers, depth buffers, cell buffers, vertex buffers, frame buffers, or the like. In addition, memory 10 may store command streams for processing by GPU 12. For example, memory 10 may store path rendering commands, 3D graphics rendering commands, and/or general-purpose GPU computing command. Memory 10 may include one or more volatile or non-volatile memories or storage devices, such as, for example,…a magnetic data media or an optical storage media; Note: magnetic and optical media are non-transitory):
executing an action to assign an integer winding number to every region of a path based on a determination of how many loops cover a designated area (Paragraph 0136 – “(1) construct a straight line out from P in any direction towards infinity, (2) find all the intersections of C with this ray, and (3) score up the winding number. Scoring the winding number includes: (1) for every clockwise intersection (the curve passing through the ray from left to right, as viewed from P) subtract 1; (2) for every counter-clockwise intersection (curve passing from right to left, as viewed from P) add 1”; Note: the winding number is calculated for every loop in a path), and make a determination whether the loops are clockwise or counterclockwise (Paragraph 0136 – “(1) for every clockwise intersection (the curve passing through the ray from left to right, as viewed from P) subtract 1; (2) for every counter-clockwise intersection (curve passing from right to left, as viewed from P) add 1”);
and using a fill rule of the path to determine whether or not a region should be filled, based on the winding number (Paragraph 0126, 0136, 0139, 0211 – “Winding order will determine whether to increase or decrease stencil value for triangle coverage, in non-zero fill mode…(1) for every clockwise intersection (the curve passing through the ray from left to right, as viewed from P) subtract 1; (2) for every counter-clockwise intersection (curve passing from right to left, as viewed from P) add 1… The non-zero fill rule says that the point is inside the shape if the resulting sum is not equal to 0… any non-zero values in stencil buffer 40 may represent a fill area for the path segment to be rendered”; Note: the fill rule determines the fill area based on the winding number).
Goel does not teach wherein the clockwise loops are filled and the counterclockwise loops are black holes that erase the clockwise loops. However, Johnson teaches wherein the clockwise loops are filled and the counterclockwise loops are black holes that erase the clockwise loops (Page 1 Paragraphs 4-5 – “for each path that crosses the imaginary line from right to left increment the winding number, and for each path that crosses the line from left to right decrement the winding number…Positive: Only sub-regions with winding counts > 0 are filled”; Note: it is implied that areas with negative winding numbers are not filled and thus are black holes. Every counterclockwise loop (left to right) erases the clockwise loops since it decrements the winding number). A person of ordinary skill in the art before the effective filing date of the claimed invention would have recognized that the non-zero fill rule of Goel could have been substituted for the positive fill rule of Johnson because both the non-zero fill rule and positive fill rule serve the purpose of determining which areas to fill in a path. Furthermore, a person of ordinary skill in the art would have been able to carry out the substitution. Finally, the substitution achieves the predictable result of determining which areas to fill in a path. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to substitute the non-zero fill rule of Goel for the positive fill rule of Johnson according to known methods to yield the predictable result of determining which areas to fill in a path. Using the method of Goel, wherein fill areas are colored and non-fill areas are dark/black (Paragraph 0239 – “The data in stencil buffer 40 may cause pixels inside of the fill area to light up with a fill color (specified by the CPU prior to the second rendering pass), and cause pixels that are outside of the fill area to remain dark”), and using the positive fill rule instead of the non-zero fill rule would cause the clockwise loops to be filled, while the counter-clockwise loops are black holes that erase or cancel out clockwise loops.
Claims 2-5 and 12-15 are rejected under 35 U.S.C. 103 as being unpatentable over Goel in view of Johnson and Wang et al. (Decoupled Coverage Anti-Aliasing), hereinafter Wang.
Regarding claim 2, Goel in view of Johnson teaches the method according to claim 1. Goel teaches a first step of the clockwise fill rule and rendering a coverage into a coverage count buffer (Paragraph 0239, 0278 – “The first pass completes after rendering all of the primitives generated by geometry shader 54…The winding counters from the cell buffer may be added to the internal winding counters before the coverage calculation. The column 608, 610 on the left edge of the pixel shows the value of internal winding counters after the cell buffer winding counters have been added. The first pixel 604 in the illustrated example has ten samples having one in their winding counter. The final coverage value of the first pixel may be 10/16. The second pixel 606 has six samples having one in their winding counter. As these are added to the internal winding counters it may be seen that now all sixteen internal winding counters are one, so the final coverage of the second pixel is 16/16 (fully covered)”; Note: the cell buffer is equivalent to the coverage count buffer, as it contains coverage counts). Goel does not teach wherein a first step of the clockwise fill rule includes rendering a borrowed coverage into a coverage count buffer. However, Wang teaches rendering a borrowed coverage (Paragraph 1 and 3 in 1st Col. of Page 3, Paragraph 1 in 2nd Col. of Page 3 – “we render the scene using a conservative rasterizer and use a shader to generate a high quality coverage map for each fragment…For each fragment, we project its triangle edges onto the pixel and use a lookup table (LUT) to identify which samples in our bitmask are covered. Researchers have previously used similar LUTs (e.g., Waller et al. [2000]). The basic idea is to project each triangle edge independently, lookup the half-plane coverage in the LUT, and perform a binary AND of the contributions from all three triangle edges to get the final coverage map”; Note: the half-plane coverages “borrow” from the contributions of all three triangle edges using a look-up table. These coverages are rendered into a coverage map). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Goel to incorporate the teachings of Wang to render a borrowed coverage for the benefit of being able to generate an accurate representation of the object/path, especially in cases where the coverage for part of a primitive may be unclear. Rendering the borrowed coverage as a first step would help determine which areas should be filled before the filling process occurs, and rendering into a coverage count buffer allows the system to keep track of those fill areas.
Regarding claim 3, Goel in view of Johnson and Wang teaches the method according to claim 2. Goel does not directly teach wherein the counter-clockwise triangles are rendered first. Instead, Goel teaches wherein the counter-clockwise triangles are rendered (Paragraph 0237, 0239 – “if these triangles are rendered according to the second stencil buffer filling technique where the values in stencil buffer 40 are either incremented or decremented depending on whether the triangle is oriented in a clockwise or counter-clockwise direction, then after all of the primitives have been rasterized to stencil buffer 40, any non-zero values in stencil buffer 40 may correspond to the union of regions A, D and F (i.e., the fill area for the path segment to be rendered)… The first pass completes after rendering all of the primitives generated by geometry shader 54 into stencil buffer 40”; Note: all of the triangles are rendered). Although Goel does not specify an order in which the triangles are rendered, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Goel to render the counter-clockwise triangles first because if counter-clockwise triangles are not filled, as with the positive fill rule in Johnson, then it would be quicker and easier to render counter-clockwise triangles first since it may take more time to process the filled areas. Furthermore, when there are different types of triangles to render and one type is rendered first, there is a finite number of ways to order the rendering; either the clockwise triangles are rendered first or the counter-clockwise triangles are rendered first. One of ordinary skill in the art could have rendered the counter-clockwise triangles first with a reasonable expectation of success and would have done so for the benefit of efficient rendering. Therefore, it would have been obvious to try the solution of rendering the counter-clockwise triangles first.
Regarding claim 4, Goel in view of Johnson and Wang teaches the method according to claim 3. Goel further teaches adding a negative multiplier to coverage (Paragraph 0269, 0277-0278 – “The winding counter values may be incremented or decremented during the edge-drawing phase. Once all the edges have been drawn, the fill process examines the value of these counter values and calculates the pixel coverage value for anti-aliasing…most of the cases the winding counter values are very small (either positive or negative). This information may be used compress the data, for example by storing the least significant bits of each winding counter (16 bits) as two bytes and have internal per pixel flags to determine the pixel type. The pixel type can be for example: empty, negative 16 bit, positive 16 bit, fully expanded 16 bytes… every internal winding counter having non-zero value increments the pixel coverage…The winding counters from the cell buffer may be added to the internal winding counters before the coverage calculation. The column 608, 610 on the left edge of the pixel shows the value of internal winding counters after the cell buffer winding counters have been added”; Note: the winding counter, which is a coverage value, can be a negative value, and it is added to coverage).
Regarding claim 5, Goel in view of Johnson and Wang teaches the method according to claim 4. Goel further teaches accumulating negative coverage directly into the coverage count buffer (Fig. 20E-20F, Paragraph 0277, 0284 – “The winding counter values from the cell buffer may be added to the internal counters. The coverage value may be calculated from the internal counters. There are two supported rules to convert the internal winding counter values to the coverage: odd/even and non-zero. With odd/even rule, every internal winding counter having odd value (1, 3, 5, 7, 9 . . . ) increments the pixel coverage. With non-zero rule, every internal winding counter having non-zero value increments the pixel coverage… FIG. 20E illustrates all the edges 624, 626, 628, 630 that may be processed in this example. The figure illustrates the final state of the winding counters. Samples having positive winding value are shown as dots 622, and negative winding values are shown as dots 620. The dirty pixels (having non zero winding values) are indicated by a boarder 638. The pixel in coordinates (4, 6) is shown at as it has both positive and negative values”; Note: the cell buffer, which is equivalent to the coverage count buffer, is shown in Fig. 20E and 20F as the large square. The areas with negative and positive coverage are added to the cell buffer; see screenshot of Fig. 20E and 20F below).
PNG
media_image1.png
676
491
media_image1.png
Greyscale
Screenshot of Fig. 20E and 20F (taken from Goel)
Regarding claim 12, Goel in view of Johnson teaches the non-transitory computer-readable medium according to claim 11. Goel teaches a first step of the clockwise fill rule and rendering a coverage into a coverage count buffer (Paragraph 0239, 0278 – “The first pass completes after rendering all of the primitives generated by geometry shader 54…The winding counters from the cell buffer may be added to the internal winding counters before the coverage calculation. The column 608, 610 on the left edge of the pixel shows the value of internal winding counters after the cell buffer winding counters have been added. The first pixel 604 in the illustrated example has ten samples having one in their winding counter. The final coverage value of the first pixel may be 10/16. The second pixel 606 has six samples having one in their winding counter. As these are added to the internal winding counters it may be seen that now all sixteen internal winding counters are one, so the final coverage of the second pixel is 16/16 (fully covered)”; Note: the cell buffer is equivalent to the coverage count buffer, as it contains coverage counts). Goel does not teach wherein a first step of the clockwise fill rule includes rendering a borrowed coverage into a coverage count buffer. However, Wang teaches rendering a borrowed coverage (Paragraph 1 and 3 in 1st Col. of Page 3, Paragraph 1 in 2nd Col. of Page 3 – “we render the scene using a conservative rasterizer and use a shader to generate a high quality coverage map for each fragment…For each fragment, we project its triangle edges onto the pixel and use a lookup table (LUT) to identify which samples in our bitmask are covered. Researchers have previously used similar LUTs (e.g., Waller et al. [2000]). The basic idea is to project each triangle edge independently, lookup the half-plane coverage in the LUT, and perform a binary AND of the contributions from all three triangle edges to get the final coverage map”; Note: the half-plane coverages “borrow” from the contributions of all three triangle edges using a look-up table. These coverages are rendered into a coverage map). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Goel to incorporate the teachings of Wang to render a borrowed coverage for the benefit of being able to generate an accurate representation of the object/path, especially in cases where the coverage for part of a primitive may be unclear. Rendering the borrowed coverage as a first step would help determine which areas should be filled before the filling process occurs, and rendering into a coverage count buffer allows the system to keep track of those fill areas.
Regarding claim 13, Goel in view of Johnson and Wang teaches the non-transitory computer-readable medium according to claim 12. Goel does not directly teach executing an algorithm to render the counter-clockwise triangles first. Instead, Goel teaches wherein the counter-clockwise triangles are rendered (Paragraph 0237, 0239 – “if these triangles are rendered according to the second stencil buffer filling technique where the values in stencil buffer 40 are either incremented or decremented depending on whether the triangle is oriented in a clockwise or counter-clockwise direction, then after all of the primitives have been rasterized to stencil buffer 40, any non-zero values in stencil buffer 40 may correspond to the union of regions A, D and F (i.e., the fill area for the path segment to be rendered)… The first pass completes after rendering all of the primitives generated by geometry shader 54 into stencil buffer 40”; Note: all of the triangles are rendered). Although Goel does not specify an order in which the triangles are rendered, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Goel to render the counter-clockwise triangles first because if counter-clockwise triangles are not filled, as with the positive fill rule in Johnson, then it would be quicker and easier to render counter-clockwise triangles first since it may take more time to process the filled areas. Furthermore, when there are different types of triangles to render and one type is rendered first, there is a finite number of ways to order the rendering; either the clockwise triangles are rendered first or the counter-clockwise triangles are rendered first. One of ordinary skill in the art could have rendered the counter-clockwise triangles first with a reasonable expectation of success and would have done so for the benefit of efficient rendering. Therefore, it would have been obvious to try the solution of rendering the counter-clockwise triangles first.
Regarding claim 14, Goel in view of Johnson and Wang teaches the non-transitory computer-readable medium according to claim 13. Goel further teaches adding a negative multiplier to coverage (Paragraph 0269, 0277-0278 – “The winding counter values may be incremented or decremented during the edge-drawing phase. Once all the edges have been drawn, the fill process examines the value of these counter values and calculates the pixel coverage value for anti-aliasing…most of the cases the winding counter values are very small (either positive or negative). This information may be used compress the data, for example by storing the least significant bits of each winding counter (16 bits) as two bytes and have internal per pixel flags to determine the pixel type. The pixel type can be for example: empty, negative 16 bit, positive 16 bit, fully expanded 16 bytes… every internal winding counter having non-zero value increments the pixel coverage…The winding counters from the cell buffer may be added to the internal winding counters before the coverage calculation. The column 608, 610 on the left edge of the pixel shows the value of internal winding counters after the cell buffer winding counters have been added”; Note: the winding counter, which is a coverage value, can be a negative value, and it is added to coverage).
Regarding claim 15, Goel in view of Johnson and Wang teaches the non-transitory computer-readable medium according to claim 13. Goel further teaches accumulating negative coverage directly into the coverage count buffer (Fig. 20E-20F, Paragraph 0277, 0284 – “The winding counter values from the cell buffer may be added to the internal counters. The coverage value may be calculated from the internal counters. There are two supported rules to convert the internal winding counter values to the coverage: odd/even and non-zero. With odd/even rule, every internal winding counter having odd value (1, 3, 5, 7, 9 . . . ) increments the pixel coverage. With non-zero rule, every internal winding counter having non-zero value increments the pixel coverage… FIG. 20E illustrates all the edges 624, 626, 628, 630 that may be processed in this example. The figure illustrates the final state of the winding counters. Samples having positive winding value are shown as dots 622, and negative winding values are shown as dots 620. The dirty pixels (having non zero winding values) are indicated by a boarder 638. The pixel in coordinates (4, 6) is shown at as it has both positive and negative values”; Note: the cell buffer, which is equivalent to the coverage count buffer, is shown in Fig. 20E and 20F as the large square. The areas with negative and positive coverage are added to the cell buffer; see screenshot of Fig. 20E and 20F above).
Claim 10 is rejected under 35 U.S.C. 103 as being unpatentable over Goel in view of Johnson and Brown (US 8773432 B2), hereinafter Brown.
Regarding claim 10, Goel in view of Johnson teaches the method according to claim 9. Goel does not teach triangulating the path’s interior polygon to yield non-overlapping inner triangles. However, Brown teaches triangulating the path’s interior polygon to yield non-overlapping inner triangles (Fig. 7B, Col. 12 lines 63-67, Col. 13 lines 1-3 – “FIG. 7B is a diagram illustrating the triangulation of the stroked path 601 according to one embodiment. In a first step of the triangulation of the path 601, two "core" triangles L.sub.core and R.sub.core may be generated such that L.sub.core=(l.sub.0, l.sub.1, r.sub.1) and R.sub.core=(r.sub.1, r.sub.0, l.sub.0). The "core" triangles L.sub.core and R.sub.core may be oriented triangles. In one embodiment, the techniques discussed herein for triangulating a stroked path may use a winding-number-based triangle renderer”; Note: triangles are generated by triangulation. The triangles are non-overlapping and are formed from an interior polygon; see screenshot of Fig. 7B below).
PNG
media_image2.png
234
508
media_image2.png
Greyscale
Screenshot of Fig. 7B (taken from Brown)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to have modified Goel to incorporate the teachings of Brown to triangulate the path and yield non-overlapping inner triangles for the benefit of ease of rendering. Triangles are one of the simplest polygons, making it easier to render the path, and non-overlap helps ensure that no artifacts or errors are produced.
Allowable Subject Matter
Claims 6-8 and 16-20 are 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.
Claim 6 would be allowable for disclosing converting lines to cubes to render their edge-AA.
Regarding claim 6, Goel in view of Johnson and Wang teaches the method according to claim 5. However, none of the prior art teaches the claim limitation of converting lines to cubes to render their edge-AA. Batra et al. (US 20190108663 A1), hereinafter Batra, teaches converting lines to triangles to render their edge-AA (Paragraph 0081-0082 – “FIG. 5 shows the rendering system 106 employs anti-aliasing triangles to properly perform anti-aliasing on a segment of a cubic Bezier spline… the rendering system 106 properly employs anti-aliasing to render the segment portion as a smooth cubic Bezier spline”), but it does not teach converting lines to cubes to render their edge-AA. Based on the configuration, it would be improper hindsight to modify Goel to convert lines to cubes to render their edge-AA. Therefore, the combination of features is considered allowable.
Claim 7 would be allowable for disclosing rendering clockwise curve triangles directly to the frame buffer.
Regarding claim 7, none of the prior art teaches the method according to claim 6. Because of claim 7’s dependency on claim 6, the combination of features is considered allowable.
Claim 8 would be allowable for disclosing returning borrowed coverage to the coverage count buffer, before blending the remaining coverage into the color buffer.
Regarding claim 8, none of the prior art teaches the method according to claim 7. Because of claim 8’s dependency on claim 7, the combination of features is considered allowable.
Claim 16 would be allowable for disclosing converting lines to cubes to render their edge-AA.
Regarding claim 16, Goel in view of Johnson and Wang teaches the non-transitory computer-readable medium according to claim 15. However, none of the prior art teaches the claim limitation of converting lines to cubes to render their edge-AA. Batra teaches converting lines to triangles to render their edge-AA (Paragraph 0081-0082 – “FIG. 5 shows the rendering system 106 employs anti-aliasing triangles to properly perform anti-aliasing on a segment of a cubic Bezier spline… the rendering system 106 properly employs anti-aliasing to render the segment portion as a smooth cubic Bezier spline”), but it does not teach converting lines to cubes to render their edge-AA. Based on the configuration, it would be improper hindsight to modify Goel to convert lines to cubes to render their edge-AA. Therefore, the combination of features is considered allowable.
Claim 17 would be allowable for disclosing rendering clockwise curve triangles directly to the frame buffer.
Regarding claim 17, none of the prior art teaches the non-transitory computer-readable medium according to claim 16. Because of claim 17’s dependency on claim 16, the combination of features is considered allowable.
Claim 18 would be allowable for disclosing returning borrowed coverage to the coverage count buffer, before blending the remaining coverage into the color buffer.
Regarding claim 18, none of the prior art teaches the non-transitory computer-readable medium according to claim 17. Because of claim 18’s dependency on claim 17, the combination of features is considered allowable.
Claim 19 would be allowable for disclosing wherein the path’s fill rule determines if a region should be filled based on a winding number.
Regarding claim 19, none of the prior art teaches the non-transitory computer-readable medium according to claim 18. Because of claim 19’s dependency on claim 18, the combination of features is considered allowable.
Claim 20 would be allowable for disclosing triangulating the path’s interior polygon to yield non-overlapping inner triangles.
Regarding claim 20, none of the prior art teaches the non-transitory computer-readable medium according to claim 19. Because of claim 20’s dependency on claim 19, the combination of features is considered allowable.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Ecob et al. (US 7148897 B2) teaches an imaging engine system that reproduces graphical object images using anti-aliasing and winding rules.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to MICHELLE HAU MA whose telephone number is (571)272-2187. The examiner can normally be reached M-Th 7-5:30.
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, King Poon can be reached at (571) 270-0728. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/MICHELLE HAU MA/Examiner, Art Unit 2617 /KING Y POON/Supervisory Patent Examiner, Art Unit 2617