Store the source path and the files last modified date for each shader. Then, everytime the window gets back its focus, find the modified files and recreate their shaders.
Use an upstanding cylinder as collision shape for the camera. It has a mass and can move freely. But can only be rotated along one axis, so that it always stays upright.
How to separate camera rotation from collision shape rotation? For example, the camera should be able to look up and down while the collision shape shouldn't be affected by that.
Moreover, move the camera by enabling and disabling forces. Implement jumping by applying an impulse.
When using the same texture file in multiple material files, materials get mixed up on live reload. If a texture changes that is also used by other objects, they get changed, too.
Rotate the camera by mouse movement and move the view by arrow keys. It would be more fundamental to create a player component or a camera component handling everything.
The sky should not be shaded with Ambient Occlusion and Lighting. The current depth based solution is inaccurate and doesn't work with extreme fields of view.