Skip to content

Commit 21cb868

Browse files
authored
fix camera.color (#3326)
* fix camera.color * doc
1 parent 0283d8e commit 21cb868

File tree

1 file changed

+32
-39
lines changed

1 file changed

+32
-39
lines changed

flixel/graphics/tile/FlxGraphicsShader.hx

+32-39
Original file line numberDiff line numberDiff line change
@@ -4,66 +4,59 @@ import openfl.display.GraphicsShader;
44

55
class FlxGraphicsShader extends GraphicsShader
66
{
7-
@:glVertexSource("
8-
#pragma header
9-
7+
@:glVertexHeader("
108
attribute float alpha;
119
attribute vec4 colorMultiplier;
1210
attribute vec4 colorOffset;
1311
uniform bool hasColorTransform;
14-
15-
void main(void)
12+
")
13+
@:glVertexBody("
14+
openfl_Alphav = openfl_Alpha * alpha;
15+
16+
if (hasColorTransform)
1617
{
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
2224
{
2325
openfl_ColorOffsetv = colorOffset / 255.0;
2426
openfl_ColorMultiplierv = colorMultiplier;
2527
}
26-
}")
28+
}
29+
")
2730
@:glFragmentHeader("
28-
uniform bool hasTransform;
31+
uniform bool hasTransform; // TODO: Is this still needed? Apparently, yes!
2932
uniform bool hasColorTransform;
30-
3133
vec4 flixel_texture2D(sampler2D bitmap, vec2 coord)
3234
{
3335
vec4 color = texture2D(bitmap, coord);
34-
if (!hasTransform)
35-
{
36+
if (!(hasTransform || openfl_HasColorTransform))
3637
return color;
37-
}
38-
38+
3939
if (color.a == 0.0)
40-
{
4140
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)
5443
{
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);
5652
}
57-
return vec4(0.0, 0.0, 0.0, 0.0);
53+
54+
return color * openfl_Alphav;
5855
}
5956
")
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+
")
6760
public function new()
6861
{
6962
super();

0 commit comments

Comments
 (0)