Multiple visible canvases can be created with the '2d' rendering context, and an invisible WebGL-rendered canvas drawn to them using CanvasRenderingContext2D.drawImage. Afaik this would be pretty slow as it'll perform a readback to obtain pixel data to put into the 2D canvas buffer does it not?