Complex calculations often require more than one single rendering process. Therefore the rendering pipeline is passed multiple times. This is usually done in a serial order, where every render pass works on specific input data. Filter- and post processing operations typically require multiple render passes. Of course this concept has to make heavy use of a render to texture approach using multiple render targets in order to provide the input data and store temporary results.