Picking implementation using WebGL renderbuffer. Advantages: pixel-perfect accuracy, works for both 2d and 3d. Disadvantages: doubles number of draw calls, high cost of transfering pixel data from GPU to CPU.