Указывает ли переменная, в которую вы вставляете значения, справа от знака равенства с какой точностью вы работаете?
Например, есть ли здесь какое-либо различие в значении спецификатора точности:
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;