@Adam Miles:
1. When I set the view port and texture size to a smaller resolution, the GPU will handle the down sampling for me, should I let the GPU handle all the downsamples for me instead of creating Downscale2x2 function in the pixel shader? or I should write Downscale2x2 in pixel shader? What is the difference?
2. Why I can't just downsample to 1x1 in one single pass?