IP Library Granted Patent US 10,067,914
Granted Patent B2
US 10,067,914 · App. 15/335,603 · Granted Sep 4, 2018

Techniques for blending document objects

Inventors: Tarun Beri (Uttar Pradesh, IN); Harish Kumar (Uttar Pradesh, IN); Vineet Batra (Delhi, IN)
Assignee: Adobe Systems Incorporated
G06F17/211G06T1/20G06T11/001G09G5/026G09G5/377G06T2210/62G09G2340/06G09G2340/10
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,067,914
App. No.
15/335,603
Granted
Sep 4, 2018
Kind
B2
Abstract

Disclosed are various embodiments for performing color blending of document objects using GPU hardware of a computer. A computer obtains a document specifying a first object and a second object presented in the document, where a portion of the second object overlaps the first object. The computer renders, on a display device, a presentation of the document, where the rendered presentation including the first object of the document. In response to determining that the document specifies blending the second object with the first object in the overlapping portion, configuring dual-source color circuitry of a graphics processing unit (GPU) of the computer to compute, via a dual-source color blending operation, a result color for the blended first and second objects. The computer renders, on the display device, the second object of the document using the result color for the overlapping portion.

Claims (55)

1. A method, comprising:

obtaining, by a computing device, a document specifying a first object and a second object presented in the document, wherein a portion of the second object overlaps the first object;

rendering, on a display of the computing device, a presentation of the document, the rendered presentation including the first object of the document; and

performing, in response to determining that the document specifies blending a color of the second object with a color of the first object using a blend mode in the overlapping portion:

determining a Multiply blend mode function associated with the blend mode;

determining a transform of the Multiply blend mode function in pre-multiplied alpha mode;

configuring, via a graphics processing unit (GPU) of the computing device, fragment shader software to assign (i) a first portion of the transformed Multiply blend mode function to a source color variable and (ii) a second portion of the transformed Multiply blend mode function to a dual-source color variable, wherein each of the first and second portions includes the color of the second object using a pre-multiplied alpha;

configuring dual-source color circuitry of hardware of the GPU with a parameter representing a remaining portion of the transformed Multiply blend mode function that includes a destination alpha;

executing, via the configured dual-source color circuitry, at least one hardware operation based on one or more of the source color variable or the dual-source color variable, wherein the hardware of the GPU determines a destination color of the overlapping portion based on the at least one hardware operation;

for each pixel of the overlapping portion, determining a result color using the dual-source color circuitry of the GPU to compute the transformed Multiply blend mode function; and

rendering, on the display of the computing device, the second object of the document using the result color for each pixel of the overlapping portion.

2. The method of claim 1 , wherein the dual-source color circuitry is configured via an application programming interface (API) for the GPU.

3. The method of claim 2 , wherein the API is selected from the group consisting of OpenGL, DirectX, Metal, and Vulkan.

4. The method of claim 1 , wherein:

the first portion of the transformed Multiply blend mode function assigned to the source color variable is [(1−a 0 )*aC si ], and the second portion of the transformed Multiply blend mode function assigned to the dual-source color variable is [(1−a si +aC si )].

5. The method of claim 1 , wherein the destination color is based on the color of the first object using pre-multiplied alpha, and a value assigned to the source color variable is based on the color of the second object using pre-multiplied alpha, wherein the transformed Multiply blend mode function includes the source color and the destination color.

6. The method of claim 1 , further comprising configuring the dual-source color circuitry of the GPU with a second parameter that instructs the dual-source color circuitry to multiply the dual-source color with the destination color.

7. The method of claim 1 , wherein the document is formatted to comply with a portable document format (PDF) standard, and the PDF standard defines the blend mode.

8. The method of claim 1 , wherein the first object and the second object each comprise at least one of a raster graphics image or a vector graphics image.

9. The method of claim 1 , wherein the document specifies a plurality of other objects that overlap with the first object and the second object, the document specifying blend modes for blending the other objects with the first object and the second object.

10. The method of claim 9 , wherein the objects specified in the document are assigned to transparency groups that define, at least in part, how objects in one transparency group are blended with objects in another transparency group.

11. The method of claim 1 , wherein executing the at least one hardware operation comprises:

executing, via the configured dual-source color circuitry, a first hardware operation, wherein the first hardware operation determines a first product based on the first portion assigned to the source color variable of the fragment shader and a second product based on the second portion assigned to the dual-source color variable of the fragment shader; and

executing, via the configured dual-source color circuitry, a second hardware operation, wherein the second hardware operation determines a sum of the first product and the second product.

12. A non-transitory computer-readable medium embodying program code for modifying an initial workspace for a newly initialized application instance, the program code comprising instructions which, when executed by a processor, cause the processor to perform operations comprising:

obtaining, by a computing device, a document specifying a first object and a second object presented in the document, wherein a portion of the second object overlaps the first object;

rendering, on a display of the computing device, a presentation of the document, the rendered presentation including the first object of the document; and

performing, in response to determining that the document specifies blending a color of the second object with a color of the first object using a blend mode in the overlapping portion:

determining a Multiply blend mode function associated with the blend mode;

determining a transform of the Multiply blend mode function in pre-multiplied alpha mode;

configuring, via a graphics processing unit (GPU) of the computing device, fragment shader software to assign (i) a first portion of the transformed Multiply blend mode function to a source color variable and (ii) the second portion of the transformed Multiply blend mode function to a dual-source color variable, wherein each of the first and second portions includes the color of the second object using a pre-multiplied alpha;

configuring dual-source color circuitry of hardware of the GPU with a parameter representing a remaining portion of the transformed Multiply blend mode function that includes a destination alpha;

executing, via the configured dual-source color circuitry, at least one hardware operation based on one or more of the source color variable or the dual-source color variable, wherein the hardware of the GPU determines a destination color of the overlapping portion based on the at least one hardware operation;

for each pixel of at least the overlapping portion, determining a result color using the dual-source color circuitry of the GPU to compute the transformed Multiply blend mode function; and

rendering, on the display of the computing device, the second object of the document using the result color for each pixel of the overlapping portion.

13. The non-transitory computer-readable medium of claim 12 , wherein the dual-source color circuitry is configured via an application programming interface (API) for the GPU.

14. The non-transitory computer-readable medium of claim 12 , wherein the destination color is based on the color of the first object using pre-multiplied alpha, and a value assigned to the source color variable is based on the color of the second object using pre-multiplied alpha, wherein the transformed Multiply blend mode function includes the source color and the destination color.

15. The non-transitory computer-readable medium of claim 12 , further comprising configuring the dual-source color circuitry of the GPU with a second parameter that instructs the dual-source color circuitry to multiply the dual-source color with the destination color.

16. A system, comprising:

at least one computing device; and

a document manipulation engine executed in the at least one computing device, the document manipulation engine comprising logic that:

obtains a document specifying a first object and a second object presented in the document, wherein a portion of the second object overlaps the first object;

renders, on a display device, a presentation of the document, the rendered presentation including the first object of the document; and

performs, in response to determining that the document specifies blending a color of the second object with a color of the first object using a blend mode in the overlapping portion:

determining a Multiply blend mode function associated with the blend mode;

determining a transform of the Multiply blend mode function in pre-multiplied alpha mode;

configuring, via a graphics processing unit (GPU) of the computing device, fragment shader software to assign (i) a first portion of the transformed Multiply blend mode function to a source color variable and (ii) a second portion of the transformed Multiply blend mode function to a dual-source color variable, wherein each of the first and second portions includes the color of the second object using a pre-multiplied alpha;

configuring dual-source color circuitry of hardware of the GPU with a parameter representing a remaining portion of the transformed Multiply blend mode function that includes a destination alpha;

executing, via the configured dual-source color circuitry, at least one hardware operation based on one or more of the source color variable or the dual-source color variable, wherein the hardware of the GPU determines a destination color of the overlapping portion based on the at least one hardware operation;

for each pixel of the overlapping portion, determining a result color using the dual-source color circuitry of the GPU to compute the transformed Multiply blend mode function; and

rendering, on the display device, the second object of the document using the result color for each pixel of the overlapping portion.

17. The system of claim 16 , wherein the document manipulation engine further comprises logic that configures the dual-source color circuitry of the GPU with a second parameter that instructs the dual-source color circuitry to multiply the dual-source color with the destination color.

18. The system of claim 16 , wherein the document is formatted to comply with a portable document format (PDF) standard, and the PDF standard defines the blend mode.

19. The system of claim 16 , wherein the document specifies a plurality of other objects that overlap with the first object and the second object, the document specifying blend modes for blending the other objects with the first object and the second object.

20. The system of claim 16 , wherein the objects specified in the document are assigned to transparency groups that define, at least in part, how objects in one transparency group are blended with objects in another transparency group.

Assignments (2)
CHANGE OF NAME Recorded Mar 6, 2019
From: ADOBE SYSTEMS INCORPORATED
To: ADOBE INC.
Reel/Frame 048525/0042 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 27, 2016
From: BERI, TARUN; KUMAR, HARISH; BATRA, VINEET
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 040148/0209 →
Continuity (1)
Related Publication 20180121391A1 · May 3, 2018