View source
@:glVertexHeader("\n\t\tattribute float alpha;\n\t\tattribute vec4 colorMultiplier;\n\t\tattribute vec4 colorOffset;\n\t\tuniform bool hasColorTransform;\n\t",true)@:glVertexBody("\n\t\topenfl_Alphav = openfl_Alpha * alpha;\n\t\t\n\t\tif (hasColorTransform)\n\t\t{\n\t\t\tif (openfl_HasColorTransform)\n\t\t\t{\n\t\t\t\topenfl_ColorOffsetv = (openfl_ColorOffsetv * colorMultiplier) + (colorOffset / 255.0);\n\t\t\t\topenfl_ColorMultiplierv *= colorMultiplier;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\topenfl_ColorOffsetv = colorOffset / 255.0;\n\t\t\t\topenfl_ColorMultiplierv = colorMultiplier;\n\t\t\t}\n\t\t}\n\t",true)@:glFragmentHeader("\n\t\tuniform bool hasTransform; // TODO: Is this still needed? Apparently, yes!\n\t\tuniform bool hasColorTransform;\n\t\tvec4 flixel_texture2D(sampler2D bitmap, vec2 coord)\n\t\t{\n\t\t\tvec4 color = texture2D(bitmap, coord);\n\t\t\tif (!(hasTransform || openfl_HasColorTransform))\n\t\t\t\treturn color;\n\t\t\t\n\t\t\tif (color.a == 0.0)\n\t\t\t\treturn vec4(0.0, 0.0, 0.0, 0.0);\n\t\t\t\n\t\t\tif (openfl_HasColorTransform || hasColorTransform)\n\t\t\t{\n\t\t\t\tcolor = vec4 (color.rgb / color.a, color.a);\n\t\t\t\tvec4 mult = vec4 (openfl_ColorMultiplierv.rgb, 1.0);\n\t\t\t\tcolor = clamp (openfl_ColorOffsetv + (color * mult), 0.0, 1.0);\n\t\t\t\t\n\t\t\t\tif (color.a == 0.0)\n\t\t\t\t\treturn vec4 (0.0, 0.0, 0.0, 0.0);\n\t\t\t\t\n\t\t\t\treturn vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);\n\t\t\t}\n\t\t\t\n\t\t\treturn color * openfl_Alphav;\n\t\t}\n\t",true)@:glFragmentBody("\n\t\tgl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);\n\t",true)new()