La variable dans laquelle vous introduisez des valeurs détermine-t-elle la précision avec laquelle vous travaillez, à droite du signe égal ?
Par exemple, y a-t-il une différence, de sens, au spécificateur de précision ici :
gl_FragColor = lowp vec4(1);
Voici un autre exemple :
lowp float floaty = 1. * 2.;
floaty = lowp 1. * lowp 2.;
Et si vous prenez des flottants et que vous créez un vecteur ou une matrice à partir de ceux-ci, ce vecteur ou cette matrice aura-t-il la précision des valeurs que vous lui donnez, ou ces valeurs seront-elles transformées en un autre niveau de précision ?
Je pense que l'optimiser répondrait mieux à la question :
dot(gl_LightSource[0].position.xyz, gl_NormalMatrix * gl_Normal)
Je veux dire, est-il nécessaire d'aller aussi loin, si vous voulez que ça aille le plus vite possible, ou est-ce qu'une partie est inutile ?
lowp dot(lowp gl_LightSource[0].position.xyz, lowp gl_NormalMatrix * lowp gl_Normal)
Je sais que vous pouvez définir la précision par défaut pour les flottants, et que cette supposée précision est ensuite utilisée pour les vecteurs et les matrices. Supposons, pour les besoins de l'enseignement, que nous l'ayons déjà définie :
precision highp float;