Hi again, just have time now to follow up this one 
So I modified my code a bit, by adding sh.setCullingMode(true) as suggested, and set the sun+projector position 400 unit above the ground, while (x,y) remains (0,0). Having this value, I think the shadow should be exactly below the teapot. But here is what I got on Xperia M:

Also, with the same code, I'm not sure why I got different shadow behaviour when I run my code on Nexus 9 tablet:

any idea why?

So I modified my code a bit, by adding sh.setCullingMode(true) as suggested, and set the sun+projector position 400 unit above the ground, while (x,y) remains (0,0). Having this value, I think the shadow should be exactly below the teapot. But here is what I got on Xperia M:

Also, with the same code, I'm not sure why I got different shadow behaviour when I run my code on Nexus 9 tablet:

any idea why?
