-
Notifications
You must be signed in to change notification settings - Fork 3.6k
/
Copy pathBlendingState.js
82 lines (77 loc) · 2.67 KB
/
BlendingState.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
define([
'../Core/freezeObject',
'./BlendEquation',
'./BlendFunction'
], function(
freezeObject,
BlendEquation,
BlendFunction) {
'use strict';
/**
* The blending state combines {@link BlendEquation} and {@link BlendFunction} and the
* <code>enabled</code> flag to define the full blending state for combining source and
* destination fragments when rendering.
* <p>
* This is a helper when using custom render states with {@link Appearance#renderState}.
* </p>
*
* @exports BlendingState
*/
var BlendingState = {
/**
* Blending is disabled.
*
* @type {Object}
* @constant
*/
DISABLED : freezeObject({
enabled : false
}),
/**
* Blending is enabled using alpha blending, <code>source(source.alpha) + destination(1 - source.alpha)</code>.
*
* @type {Object}
* @constant
*/
ALPHA_BLEND : freezeObject({
enabled : true,
equationRgb : BlendEquation.ADD,
equationAlpha : BlendEquation.ADD,
functionSourceRgb : BlendFunction.SOURCE_ALPHA,
functionSourceAlpha : BlendFunction.ONE,
functionDestinationRgb : BlendFunction.ONE_MINUS_SOURCE_ALPHA,
functionDestinationAlpha : BlendFunction.ONE_MINUS_SOURCE_ALPHA
}),
/**
* Blending is enabled using alpha blending with premultiplied alpha, <code>source + destination(1 - source.alpha)</code>.
*
* @type {Object}
* @constant
*/
PRE_MULTIPLIED_ALPHA_BLEND : freezeObject({
enabled : true,
equationRgb : BlendEquation.ADD,
equationAlpha : BlendEquation.ADD,
functionSourceRgb : BlendFunction.ONE,
functionSourceAlpha : BlendFunction.ONE,
functionDestinationRgb : BlendFunction.ONE_MINUS_SOURCE_ALPHA,
functionDestinationAlpha : BlendFunction.ONE_MINUS_SOURCE_ALPHA
}),
/**
* Blending is enabled using additive blending, <code>source(source.alpha) + destination</code>.
*
* @type {Object}
* @constant
*/
ADDITIVE_BLEND : freezeObject({
enabled : true,
equationRgb : BlendEquation.ADD,
equationAlpha : BlendEquation.ADD,
functionSourceRgb : BlendFunction.SOURCE_ALPHA,
functionSourceAlpha : BlendFunction.ONE,
functionDestinationRgb : BlendFunction.ONE,
functionDestinationAlpha : BlendFunction.ONE
})
};
return freezeObject(BlendingState);
});