It was a shock to me when I found that in `Graphics3D` a surface is always transparent to the light sources:

```
lightSources = {{"Directional", Red, Scaled[{1/2, 1, 1}]}, 
                {"Directional", Green, Scaled[{1, 1/2, 1}]}, 
                {"Directional", Blue, Scaled[{0, 0, 0}]}};
Show[Plot3D[Sin[x y], {x, 0, Pi}, {y, 0, Pi}, 
  Lighting -> lightSources], 
 Graphics3D[{PointSize[Large], 
   Point[lightSources[[All, 3]], 
    VertexColors -> lightSources[[All, 2]]]}]]

```

![plot](https://i.stack.imgur.com/8W8Sa.png)

One can see the surface on the right is blue-illumunated although this surface is completely shaded from the blue light source located at the point `{0,0,-1}`.

I feel such rendering is unacceptable. Is it possible to produce shadows in *Mathematica*?

UPDATE
------

To clear up: by "shadows" I mean that the surfaces on the scene must not be transparent to the light sources (or, better, their transparency could be defined by a user). I need not drop shadows shown in the linked threads: [(1)](https://mathematica.stackexchange.com/questions/938/how-to-make-a-drop-shadow-for-graphics3d-objects), [(2)](https://stackoverflow.com/questions/6955692/shadows-in-mathematica-graphics3d).