1. Pixel distortion:
Pixel rows and columns are rendered with varying thicknesses (plaid-like) rather than as a uniform pixel grid.
(see image below)
...Note: If the patch dimensions are powers-of-2, then the distortion will not occur in webGL, but any other dimensions cause the distortion. Possibly related to gl.REPEAT requiring power-of-2 textures. The power-of-two dimensions does not fix the other UV coverage issues though.
You hit the nail on the head with the power-of-2 issue. After cutting the image in to patches, if tile mode is enabled then each patch is put on a repeating texture. However WebGL 1 does not support non-power-of-two repeat textures, so the renderer stretches the image to a power-of-two size using the project's sampling mode (point/linear) when creating the texture. This stretching produces artefacts, and that's what you're seeing in the bug report. The good news is WebGL 2 has full support for non-power-of-two textures and so should fix this particular problem. WebGL 2 is in active development for all major browsers (except Edge, where its status is "development is likely for a future release"), so rather than come up with a fix for this case I think I'd rather wait for WebGL 2 support.
[quote:2kdd31z7]2: UV coverage issues:
If multiple instances of a 9Patch object have different margin settings, only instances with settings matching those of the instances at the backmost z-index will render correctly.
(see image below)
In Construct 2 the general model is that image data is stored in the ObjectType and instances all share the same set of images. This is to avoid wasting memory. For example if you created 100 9-patch objects and gave them all slightly different margins, it would have to load 100 sets of textures. I also assumed that for any given image, there would only be one correct set of margins, so why would it be necessary to support that feature? Right now it's by design... although I guess it's a problem it's possible to give different instances different settings when really they share images. So are there really some compelling cases where it's great to be able to set different margins on the same image?
BTW, kudos for writing an essentially perfect bug report, I wish everyone's reports were like this!