We deal with an inverse problem where we want to determine the surface of an object using the information contained in two or more pictures which correspond to different light conditions. In particular, we will examine the case where the light source direction varies between the pictures, and we will show how this additional information allows us to obtain a uniqueness result solving the well-known convex/concave ambiguity of the shape-from-shading problem. We will prove a uniqueness result for weak (Lipschitz continuous) solutions that improves previous results in [R. Kozera, Appl. Math. Comput., 44 (1991), pp. 1--103] and [R. Onn and A. Bruckstein, Int. J. Comput. Vision, 5 (1990), pp. 105--113]. We also propose some approximation schemes for the numerical solution of this problem and analyze the properties of two approximation schemes: an upwind finite difference scheme and a semi-Lagrangian scheme. Finally, we present some numerical tests on smooth and nonsmooth surfaces coming from virtual and real images.