Указывает ли переменная, в которую вы вводите значения, с какой точностью вы работаете, справа от знака равенства?
Например, есть ли какое-либо различие в значении спецификатора точности здесь:
gl_FragColor = lowp vec4(1);
Вот еще один пример:
lowp float floaty = 1. * 2.;
floaty = lowp 1. * lowp 2.;
И если вы возьмете некоторые числа с плавающей точкой и создадите из них вектор или матрицу, будет ли этот вектор или матрица принимать точность значений, с которыми вы его заполняете, или эти значения преобразуются в другой уровень точности?
Я думаю, что оптимизация лучше всего ответит на вопрос:
dot(gl_LightSource[0].position.xyz, gl_NormalMatrix * gl_Normal)
Я имею в виду, нужно ли заходить так далеко, если вы хотите, чтобы это было как можно быстрее, или это бесполезно?
lowp dot(lowp gl_LightSource[0].position.xyz, lowp gl_NormalMatrix * lowp gl_Normal)
Я знаю, что вы можете определить точность по умолчанию для числа с плавающей запятой, и что это предположительно используется для векторов и матриц впоследствии. Предположим для целей образования, что мы определили это ранее:
precision highp float;