Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Normalisieren sie einen 3D-Vektor.
Syntax
| nrm dst, src |
|---|
where
- dst ist das Zielregister.
- src ist ein Quellregister.
Bemerkungen
| Vertexshaderversionen | 1_1 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
|---|---|---|---|---|---|---|
| Nrm | x | x | x | x | x |
Diese Anweisung funktioniert konzeptuell, wie hier gezeigt.
squareRootOfTheSum = (src0.x*src0.x + src0.y*src0.y + src0.z*src0.z)1/2;
dest.x = src0.x * (1 / squareRootOfTheSum);
dest.y = src0.y * (1 / squareRootOfTheSum);
dest.z = src0.z * (1 / squareRootOfTheSum);
dest.w = src0.w * (1 / squareRootOfTheSum);
Die Register dest und src können nicht identisch sein. Das dest-Register muss ein temporäres Register sein.
Diese Anweisung führt die lineare Interpolation basierend auf der folgenden Formel aus.
float f = src0.x*src0.x + src0.y*src0.y + src0.z*src0.z;
if (f != 0)
f = (float)(1/sqrt(f));
else
f = FLT_MAX;
dest.x = src0.x*f;
dest.y = src0.y*f;
dest.z = src0.z*f;
dest.w = src0.w*f;
Zugehörige Themen