1
votes

Que signifie la dose 1.-1 dans tous les shaders

J'ai vu du code glsl comme celui-ci:

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

Que signifie color + = 1.-step (0.2, var) , Je trouve que cela fonctionne aussi pour le langage cg et il a une autre forme: 1.-1 , 1.-0 , etc

.- est-il un opérateur?


0 commentaires

3 Réponses :


0
votes

Il n'y a pas d'opérateur .- . 1. est un littéral à virgule flottante ( 1.0 ). Donc 1.-step (0.2, var) est exactement le même que 1.0 - step (0.2, var) . .0 est identique à 0.0 .

Voir OpenGL Shading Language 4.60 Specification- 4.1. 4. Flottants


0 commentaires

0
votes

Le . fait partie de la constante 1. , ce qui en fait une constante à virgule flottante plutôt qu'une constante entière. Le - est juste un opérateur de soustraction.

Ceci n'est généralement pertinent que dans GLSL qui ne permet pas de mélanger des valeurs entières et flottantes dans les expressions (pas de conversions implicites) - vous avez besoin d'un cast explicite. Ainsi, une expression comme 1.-step (0.2, var) est une soustraction, où comme 1-step (0.2, var) serait une erreur de type (en essayant de soustraire une valeur à virgule flottante de et un entier.

Une expression comme 1.-0 serait également une erreur de type.


1 commentaires

" 1-step (0.2, var) serait une erreur de type" - Cela dépend de la version glsl. La version la plus récente effectue automatiquement des conversions.



1
votes

1. est appelé une constante à virgule flottante (voir section 4.1.4 Flottants de la spécification GLSL). - est appelé opérateur de soustraction binaire arithmétique (voir section 5.9 Expressions de la spécification GLSL).


0 commentaires