Какая доза 1.-1 означает на всех шейдерном языке - PullRequest
1 голос
/ 18 апреля 2020

Я видел код glsl, подобный этому:

vec3 color = vec3(.0);
float var = 0;
color += 1.-step(0.2,var);

Что означает color += 1.-step(0.2,var), я нашел, что он также работает для языка cg. И он имеет другую форму: 1.-1 , 1.-0, et c

Является ли .- оператором?

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

. является частью константы 1., что делает ее константой с плавающей запятой, а не целочисленной константой. - - это просто оператор вычитания.

Это в основном относится только к GLSL, который не позволяет смешивать целочисленные значения и значения с плавающей запятой в выражениях (без неявных преобразований) - вам нужно явное приведение. Таким образом, выражение типа 1.-step(0.2,var) является вычитанием, где 1-step(0.2,var) будет ошибкой типа (попытка вычесть значение с плавающей запятой из целого числа.

Выражение типа 1.-0 аналогично будет типом ошибка.

0 голосов
/ 18 апреля 2020

1. называется константой с плавающей точкой (см. раздел 4.1.4 Плавающие спецификации GLSL). - называется арифметическим c двоичным оператором вычитания (см. раздел 5.9 Выражения спецификации GLSL).

0 голосов
/ 18 апреля 2020

Нет оператора .-. 1. - литерал с плавающей точкой (1.0). Так что 1.-step(0.2,var) точно так же, как 1.0 - step(0.2,var). .0 совпадает с 0.0.

См. Язык затенения OpenGL 4.60 Спецификация - 4.1.4. Поплавки

...