1. A system, comprising: one or more processors; memory coupled to the one or more processors, wherein the memory is configured to store program instructions executable by the one or more processors to: determine a transparency value for each of a plurality of rays between a target pixel of an image and a light source for calculating shadow values cast from a foreground plane of the image to an imaginary background plane extended a specified vertical distance below the foreground plane; wherein each of the plurality of rays comprises an endpoint at an intersection of that ray and the foreground plane, wherein the endpoints of two or more of the rays align in the foreground plane along a line between the target pixel and the light source, and wherein the transparency value for at least one of the two or more rays is based on the transparency value of another of the two or more rays; and determine, based on the transparency values for the plurality of rays, a new pixel value for the target pixel.