马赛克渲染

Constructor

@:value({ mosaicHeight : 8, mosaicWidth : 8 })@:glFragmentSource("\n\n #pragma header\n\n\t\tuniform vec2 mosaicSize;\n\t\t\t\t\t\n\t\tvoid main(void) {\n\t\t\t\n\t\t\t#pragma body\n\n\t\t\tvec2 xy = vec2(openfl_TextureCoordv.x * openfl_TextureSize.x, openfl_TextureCoordv.y * openfl_TextureSize.y);\n\t\t\tvec2 xyMosaic = vec2(floor(xy.x / mosaicSize.x) * mosaicSize.x, \n\t\t\t\t\tfloor(xy.y / mosaicSize.y) * mosaicSize.y )\n\t\t\t\t\t+ .5*mosaicSize;\n\t\t\tvec2 delXY = xyMosaic - xy;\n\t\t\tfloat delL = length(delXY);\n\t\t\tvec2 uvMosaic = vec2(xyMosaic.x / openfl_TextureSize.x, xyMosaic.y / openfl_TextureSize.y);\n\t\t\t\n\t\t\tvec4 finalColor;\n\t\t\tif(delL<0.5*mosaicSize.x)\n\t\t\t{\n\t\t\t\tfinalColor = texture2D(openfl_Texture, uvMosaic);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfinalColor = texture2D(openfl_Texture, uvMosaic);\n\t\t\t\t// finalColor = vec4(0., 0., 0., 1.);\n\t\t\t}\n\t\t\tgl_FragColor = finalColor * openfl_Alphav;\n\t\t\t\n\t\t}\n\t\t\n\t")new (mosaicWidth:Int = 8, mosaicHeight:Int = 8)

Variables

@:keepmosaicSize:ShaderParameter<Float>