1. A non-transitory program storage device, readable by a programmable control device and comprising instructions stored thereon to cause one or more processing units to: (a) obtain a representation of a first two-dimensional image, wherein the representation comprises a first plurality of pixels, and wherein each pixel in the first plurality of pixels comprises a first plurality of pixel color values and a transparency value; (b) convert the first plurality of pixel color values into a luminance value for each pixel in the first plurality of pixels; (c) create a height map over the first two-dimensional image using the converted luminance values for each pixel in the first plurality of pixels, wherein each position in the height map corresponds to a pixel from the first plurality of pixels; (d) create a first normal map over the first two-dimensional image by calculating a normal vector for each pixel in the height map; (e) create a first blurred height map according to a first parameter; (f) create a second normal map over the first two-dimensional image by calculating a normal vector for each pixel in the first blurred height map; (g) scale the second normal map in accordance with a range of the first normal map; (h) blend the second normal map with the previously-created normal map to create a resultant normal map; and (i) repeat steps (e)-(h) iteratively, increasing the value of the first parameter with each iteration, until the resultant normal map has a desired level of smoothness.