Moved the shadow-mapping matrix calculations to the vertex shader.
- the vertex shader now calculates the positions of the vertices on the shadow maps, and the fragment shader uses the interpolated values
- fine-tuned shadow map range boundaries
Implemented dynamic texture binding and vertex buffer binding management.
- textures can be bound to free texture units automatically, texture units can be reserved for certain textures
- object in scene.js now set the sampler uniforms to the dynamically acquired texture unit indices
- vertex buffer - attribute bindings are now propery managed and updated when needed
- updated the shaders considering the above changes