@@ -4,66 +4,59 @@ import openfl.display.GraphicsShader;
4
4
5
5
class FlxGraphicsShader extends GraphicsShader
6
6
{
7
- @:glVertexSource ("
8
- #pragma header
9
-
7
+ @:glVertexHeader ("
10
8
attribute float alpha;
11
9
attribute vec4 colorMultiplier;
12
10
attribute vec4 colorOffset;
13
11
uniform bool hasColorTransform;
14
-
15
- void main(void)
12
+ " )
13
+ @:glVertexBody ("
14
+ openfl_Alphav = openfl_Alpha * alpha;
15
+
16
+ if (hasColorTransform)
16
17
{
17
- #pragma body
18
-
19
- openfl_Alphav = openfl_Alpha * alpha;
20
-
21
- if (hasColorTransform)
18
+ if (openfl_HasColorTransform)
19
+ {
20
+ openfl_ColorOffsetv = (openfl_ColorOffsetv * colorMultiplier) + (colorOffset / 255.0);
21
+ openfl_ColorMultiplierv *= colorMultiplier;
22
+ }
23
+ else
22
24
{
23
25
openfl_ColorOffsetv = colorOffset / 255.0;
24
26
openfl_ColorMultiplierv = colorMultiplier;
25
27
}
26
- }" )
28
+ }
29
+ " )
27
30
@:glFragmentHeader ("
28
- uniform bool hasTransform;
31
+ uniform bool hasTransform; // TODO: Is this still needed? Apparently, yes!
29
32
uniform bool hasColorTransform;
30
-
31
33
vec4 flixel_texture2D(sampler2D bitmap, vec2 coord)
32
34
{
33
35
vec4 color = texture2D(bitmap, coord);
34
- if (!hasTransform)
35
- {
36
+ if (!(hasTransform || openfl_HasColorTransform))
36
37
return color;
37
- }
38
-
38
+
39
39
if (color.a == 0.0)
40
- {
41
40
return vec4(0.0, 0.0, 0.0, 0.0);
42
- }
43
-
44
- if (!hasColorTransform)
45
- {
46
- return color * openfl_Alphav;
47
- }
48
-
49
- color = vec4(color.rgb / color.a, color.a);
50
-
51
- color = clamp(openfl_ColorOffsetv + (color * openfl_ColorMultiplierv), 0.0, 1.0);
52
-
53
- if (color.a > 0.0)
41
+
42
+ if (openfl_HasColorTransform || hasColorTransform)
54
43
{
55
- return vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);
44
+ color = vec4 (color.rgb / color.a, color.a);
45
+ vec4 mult = vec4 (openfl_ColorMultiplierv.rgb, 1.0);
46
+ color = clamp (openfl_ColorOffsetv + (color * mult), 0.0, 1.0);
47
+
48
+ if (color.a == 0.0)
49
+ return vec4 (0.0, 0.0, 0.0, 0.0);
50
+
51
+ return vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);
56
52
}
57
- return vec4(0.0, 0.0, 0.0, 0.0);
53
+
54
+ return color * openfl_Alphav;
58
55
}
59
56
" )
60
- @:glFragmentSource ("
61
- #pragma header
62
-
63
- void main(void)
64
- {
65
- gl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);
66
- }" )
57
+ @:glFragmentBody ("
58
+ gl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);
59
+ " )
67
60
public function new ()
68
61
{
69
62
super ();
0 commit comments