Mais alors, alors alors, pourquoi ne pas laisser faire les spécialistes

Je veux dire, il y a plein de gens qui aimeraient taffer en freelance toussa 
Je plaisante 
Pour ton souci: premier truc à vérifier: Quelle version de GLSL utilise-tu?
Spécifie la version au début de chacun de tes codes sources de shader.
Je pense que cela va résoudre pas mal de problèmes, puisque le GLSL change de manière substantielle de version en version et s'il n'y a pas de version je suppose que le compilo ne sait pas trop comment prendre le code source (c'est la toute première version 110 ou bien 330 -shader model 4- ? ou la 410? -shader model 5-).
Hum aucune idée... Je le répète : je fais un projet Unity et c'est du Cg, pas du GLSL. Le Cg sert de langage de base pour toutes les plateformes et est compilé à la fois en GLSL et en HLSL selon le cas (HLSL sur PC et GLSL sur Mac par exemple).
T'as bien un #pragma pour spécifier que tu veux les SM3 mais pas d'autre info sinon...
Deuxième étape, DL le manuel correspondant depuis le site web opengl.org et s'y tenir en termes de spécification.
Même combat : je sais pas quelle version utiliser...
Troisième truc à vérifier, je suis un peut benêt et je suppose que tu le sais, mais normalement, le mipmapping et l'aniso marchent très bien tous seuls depuis un texture2D classique si tu paramétrise bien ton état d’échantillonnage de texture sous opengl2. En fait la fonction texture2DLod n'est à utiliser que si tu souhaites ajouter un bias ou programmer la sélection du niveau de mipmap. En appli normale, je dirais, n'y touches pas et laisse le compilo/driver gérer cela pour toi (je suppose que ça va faire du bien à la framerate aussi comme par hasard!). 
Hum, je veux pas m'avancer mais ça sera a priori toujours plus rapide d'utiliser un tex2Dlod qu'un tex2D tout court, puisque la carte n'a pas besoin de calculer les gradients elle-même. Et dans le cas où tu veux juste relire des tables depuis des textures, ou une shadow map, bah il faut utiliser tex2Dlod avec le mip level 0 quoi qu'il arrive...
D'autre part, le problème principal vient du fait que je fais des tex2Dlod à l'intérieur de boucles et de conditions, donc les gradients sont indisponibles et donc on peut jamais utiliser tex2D. Alors je sais pas comment ça se fait que toi tu sembles y arriver mais c'est normalement physiquement impossible : la carte ne peut pas calculer les gradients de sampling dans des conditions ou dans des boucles dont le nombre de steps n'est pas figé !
Et pour finir, comme c'est un projet Unity je le répète, je n'ai pas les moyens de configurer les GL_TEXTURE_MIN_FILTER and so on... C'est Unity qui fait sa tambouille, toi tu fais que lui réclamer une texture en lui disant que tu veux qu'elle boucle ou clamp, qu'elle ait tel format, qu'elle utilise les mips maps ou non, je sais pas ce qu'il fait derrière en l'occurence...