getImageData(x, y, width, height) {
		// clamp values
		x = clamp(Math.floor(x), 0, this.canvas.width - 1);
		y = clamp(Math.floor(y), 0, this.canvas.height - 1);
		width = clamp(width, 1, this.canvas.width - x);
		height = clamp(height, 1, this.canvas.height - y);
		// return imageData
		return this.context.getImageData(x, y, width, height);
	}
Returns an ImageData object representing the underlying pixel data for a specified portion of this canvas texture.
(Note: when using getImageData(), it is highly recommended to use the `willReadFrequently` attribute when creatimg the corresponding canvas texture)
@param {number} x - The x-axis coordinate of the top-left corner of the rectangle from which the ImageData will be extracted
@param {number} y - The y-axis coordinate of the top-left corner of the rectangle from which the ImageData will be extracted
@param {number} width - The width of the rectangle from which the ImageData will be extracted. Positive values are to the right, and negative to the left
@param {number} height - The height of the rectangle from which the ImageData will be extracted. Positive values are down, and negative are up
@returns {ImageData} The ImageData extracted from this CanvasRenderTarget.