Correction d'un crash par stack overflow

App est allouée sur la pile dans main.
10 000 Object3D alloués statiquement étaient beaucoup trop.
sizeof(App) renvoyait une grande valeur (par rapport aux limites de l'OS) et a été ramené à des valeurs raisonables après ce commit.
glProgramUniform permet d'envoyer des données sans glUseProgram pour activer le shader

Il semble que glProgramUniform nécessite OpenGL 4.x, à vérifier...
Libération des textures de la RAM une fois qu'elles ont étés envoyées sur la carte graphique.

Diminue énormément la conso mémoire du programme ~250 Mo -> ~30Mo
Première version des ombres
Réorgarnisation de l'architecture: ajout de Renderer, Scene, ShaderLibrary
La direction du soleil est maintenant extraite directement de sa matrice de vue
Correction des reflets des lumières directionnelles, optimisations et clarification des shaders

Les reflets utilisaient light.pos - surface pour calculer le vecteur de la surface vers la lumière.
Or pour une lumière directionnelle, on à déjà le vecteur, faire la soustraction rendait le résultat incorrect.
On calcule juste ce vecteur dans Light, pos est du coup inutile et est supprimé.
La condition sur le produit scalaire du vecteur surfaceToLight et la normale semblait une bonne optimisation pour éviter toutes les instructions suivantes mais en réalité, elle introduisait un "non-uniform flow control" qui pénalisait lourdement le rendu (~4-6 ms). Comme de plus elle était inutile, la condition à donc été enlevée.
Des normalisations en trop et des variables non-utilisées ont également été enlevées.
Début de refonte du code de rendu

Qui n'était jusque-la qu'un copier-coller de App_Draw()