1
- import { Filter , GlProgram , GpuProgram , PointData } from 'pixi.js' ;
1
+ import { deprecation , Filter , GlProgram , GpuProgram , PointData } from 'pixi.js' ;
2
2
import { vertex , wgslVertex } from '../defaults' ;
3
3
import fragment from './rgb-split.frag' ;
4
4
import source from './rgb-split.wgsl' ;
5
5
6
+ type OffsetType = PointData | [ number , number ] ;
7
+
6
8
export interface RGBSplitFilterOptions
7
9
{
8
10
/**
9
11
* The amount of offset for the red channel.
10
12
* @default {x:-10,y:0}
11
13
*/
12
- red : PointData ;
14
+ red ?: OffsetType ;
13
15
/**
14
16
* The amount of offset for the green channel.
15
17
* @default {x:0,y:10}
16
18
*/
17
- green : PointData ;
19
+ green ?: OffsetType ;
18
20
/**
19
21
* The amount of offset for the blue channel.
20
22
* @default {x:0,y:0}
21
23
*/
22
- blue : PointData ;
24
+ blue ?: OffsetType ;
23
25
}
24
26
25
27
/**
@@ -45,8 +47,30 @@ export class RGBSplitFilter extends Filter
45
47
uBlue : PointData ;
46
48
} ;
47
49
48
- constructor ( options ?: RGBSplitFilterOptions )
50
+ constructor ( options ?: RGBSplitFilterOptions ) ;
51
+ /**
52
+ * @deprecated since 6.0.0
53
+ *
54
+ * @param {PIXI.PointData | number[] } [red=[-10,0]] - Red channel offset
55
+ * @param {PIXI.PointData | number[] } [green=[0, 10]] - Green channel offset
56
+ * @param {PIXI.PointData | number[] } [blue=[0, 0]] - Blue channel offset
57
+ */
58
+ constructor ( red ?: OffsetType , green ?: OffsetType , blue ?: OffsetType ) ;
59
+ constructor ( ...args : [ RGBSplitFilterOptions ?] | [ OffsetType ?, OffsetType ?, OffsetType ?] )
49
60
{
61
+ let options = args [ 0 ] ?? { } ;
62
+
63
+ if ( Array . isArray ( options ) || ( 'x' in options && 'y' in options ) )
64
+ {
65
+ // eslint-disable-next-line max-len
66
+ deprecation ( '6.0.0' , 'RGBSplitFilter constructor params are now options object. See params: { red, green, blue }' ) ;
67
+
68
+ options = { red : options } ;
69
+
70
+ if ( args [ 1 ] !== undefined ) options . green = args [ 1 ] ;
71
+ if ( args [ 2 ] !== undefined ) options . blue = args [ 2 ] ;
72
+ }
73
+
50
74
options = { ...RGBSplitFilter . DEFAULT_OPTIONS , ...options } ;
51
75
52
76
const gpuProgram = GpuProgram . from ( {
@@ -79,14 +103,24 @@ export class RGBSplitFilter extends Filter
79
103
} ) ;
80
104
81
105
this . uniforms = this . resources . rgbSplitUniforms . uniforms ;
106
+
107
+ Object . assign ( this , options ) ;
82
108
}
83
109
84
110
/**
85
111
* Red channel offset.
86
112
* @default {x:-10,y:0}
87
113
*/
88
114
get red ( ) : PointData { return this . uniforms . uRed ; }
89
- set red ( value : PointData ) { this . uniforms . uRed = value ; }
115
+ set red ( value : OffsetType )
116
+ {
117
+ if ( Array . isArray ( value ) )
118
+ {
119
+ value = { x : value [ 0 ] , y : value [ 1 ] } ;
120
+ }
121
+
122
+ this . uniforms . uRed = value ;
123
+ }
90
124
91
125
/**
92
126
* Amount of x-axis offset for the red channel.
@@ -107,7 +141,15 @@ export class RGBSplitFilter extends Filter
107
141
* @default {x:0,y:10}
108
142
*/
109
143
get green ( ) : PointData { return this . uniforms . uGreen ; }
110
- set green ( value : PointData ) { this . uniforms . uGreen = value ; }
144
+ set green ( value : OffsetType )
145
+ {
146
+ if ( Array . isArray ( value ) )
147
+ {
148
+ value = { x : value [ 0 ] , y : value [ 1 ] } ;
149
+ }
150
+
151
+ this . uniforms . uGreen = value ;
152
+ }
111
153
112
154
/**
113
155
* Amount of x-axis offset for the green channel.
@@ -128,7 +170,15 @@ export class RGBSplitFilter extends Filter
128
170
* @default {x:0,y:0}
129
171
*/
130
172
get blue ( ) : PointData { return this . uniforms . uBlue ; }
131
- set blue ( value : PointData ) { this . uniforms . uBlue = value ; }
173
+ set blue ( value : OffsetType )
174
+ {
175
+ if ( Array . isArray ( value ) )
176
+ {
177
+ value = { x : value [ 0 ] , y : value [ 1 ] } ;
178
+ }
179
+
180
+ this . uniforms . uBlue = value ;
181
+ }
132
182
133
183
/**
134
184
* Amount of x-axis offset for the blue channel.
0 commit comments