I have needs for shader work as part of a system build on threeJS. We will start with a project to solve some issues with the lighting shader in ThreeJS, specifically for WebVR. With the right skills around threejs and Node/Vue on the back end, I have full-time contract positions available.
I have a project where I am using a THREE.SpotLight. On WebVR, the light generated by the spotlight wiggles when I turn my head.
This example shows the issue for the THREEJS SpotLight. You should be able to execute this example in a desktop browser and see the effect. The code in the example is very simple: Just rotate the camera from right to left using a sin wave (just to make it smoother) similarly as you do when you move your head.
The issue is visible in the example: the light on the object is being updated when the camera is rotated, which is not a representation of the real world. In the real world a spotlight shines on the object and the camera rotation should not affect it. In this example you see the light appearing and disappearing as the camera turns.
I have attached the simplest example of a point light I could find. Execute it in any browser and you will see as the camera rotates from left to right, the point light rendering varies.
A prior developer had this analysis:
I have performed some tests and the problem is effectively that as the ModelView matrix of the camera is being modified, the shader calculations for the lights are affected. In the case of point lights, the model view matrix is used to calculate the vector between the light position and the object position in the camera space.