nrm - vs

规范化 3D 矢量。

语法

nrm dst、src

 

其中

  • dst 是目标寄存器。
  • src 是源寄存器。

备注

顶点着色器版本 1_1 2_0 2_x 2_sw 3_0 3_sw
nrm x x x x x

 

此指令在概念上有效,如下所示。

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);

dest 和 src 寄存器不能相同。 dest 寄存器必须是临时寄存器。

此指令基于以下公式执行线性内插。

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;

顶点着色器说明