In raytracing engines, how do they simulate these lens designs? At first thought you could have a function that changes the direction of your rays slightly depending on your lenses.
Edit: I looked it up. It seems a common way is just to physical model a (series of) lens and put it in front of your camera. This is interesting too, and corresponds to the philosophy of physically realistic rendering.