我看到了这样的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
等
.-
是运算符吗? .-
运算符。 1.
是浮点文字(1.0
)。因此,1.-step(0.2,var)
与1.0 - step(0.2,var)
完全相同。 .0
与0.0
相同。请参见OpenGL Shading Language 4.60 Specification- 4.1.4. Floats
.
是常量1.
的一部分,使其成为浮点常量而不是整数常量。 -
只是一个减法运算符。这主要仅在GLSL中相关,GLSL不允许在表达式中混合整数和浮点值(无隐式转换)-您需要显式转换。因此,像1.-step(0.2,var)
的表达式就是一个减法,其中1-step(0.2,var)
的表达式是类型错误(尝试从和减去一个浮点值。
类似1.-0
的表达式将同样是类型错误。
1.
被称为浮点常数(请参阅GLSL规范的第4.1.4节浮点数)。 -
被称为算术二进制减法运算符(请参阅GLSL规范的5.9节表达式。)>