Constructor
@:value({ color : 0x0, size : 1.5 })@:glFragmentSource("#pragma header\nuniform vec3 u_textcolor;\nuniform float u_storksize;\nbool inAlpha(vec2 v2, float offestX, float offestY){\n\treturn texture2D(openfl_Texture, v2 + vec2(offestX, offestY)).a > 0.;\n}\nbool circleCheck(vec2 v2, float len){\n\tfloat setpX = 1. / openfl_TextureSize.x * len;\n\tfloat setpY = 1. / openfl_TextureSize.y * len;\n\tfloat checkTimes = 36.;\n\tfloat setp = 3.14 / checkTimes;\n\tfor(int i = 0;i < 36;i ++){\n\t\tfloat r = setp * float(i);\n\t\tif(inAlpha(v2, setpX * sin(r), setpY * cos(r)) || inAlpha(v2, setpX *- sin(r), setpY *- cos(r))){\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\nvoid main(void){\n\t#pragma body\n\tfor(int i = 0;i < 5;i ++){\n\t\tif(float(i) > u_storksize){\n\t\t\tbreak;\n\t\t}\n\t\tif(circleCheck(openfl_TextureCoordv, float(i))){\n\t\t\tgl_FragColor = vec4(u_textcolor, 1.);\n\t\t\tif(color.a > 0.){\n\t\t\t\tgl_FragColor = vec4(color.rgb, 1);\n\t\t\t}\n\t\t}\n\t}\n\tgl_FragColor *= openfl_Alphav;\n}")new (size:Float = 1.5, color:UInt = 0x0)
Variables
Methods
@:glslcircleCheck (v2:Vec2, len:Float):Bool
每个点都做一次圆检测
Parameters:
Returns:
@:glslinAlpha (v2:Vec2, offestX:Float, offestY:Float):Bool
检测当前这个点的偏移位置是否包含透明度
Parameters:
Returns: