I am working with Blender to generate defocus images using the Defocus filter it provides in the Node Editor. The official doc says that the blurring is done as a "post-process" using the Z values in the Z-Buffer. Can someone explain to me what is the actual algorithm in place for doing that? How does blender's defocus give pretty realistic images with just a post-process? Thanks in advance.