Где в OpenGL ES 2.0 / GLSL вам нужны спецификаторы точности?

Указывает ли переменная, в которую вы вставляете значения, справа от знака равенства с какой точностью вы работаете?

Например, есть ли здесь какое-либо различие в значении спецификатора точности:

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;
48
задан Jessy 20 March 2011 в 02:51
поделиться