AGAL - Optcode NRM - 将矢量标准化为1号 - 为什么使用它?

时间:2014-02-12 20:58:53

标签: flash starling-framework stage3d agal

大家晚上好!

我有一些我想要了解的代码示例:

// fragment
tex ft0, v0, fs0 <2d,repeat,linear,miplinear>
nrm ft1.xyz, v1
nrm ft2.xyz, v2
nrm ft3.xyz, v3
dp3 ft5.x, ft1.xyz, ft2.xyz
max ft5.x, ft5.x, fc0.x
add ft5, fc1, ft5.x
mul ft0, ft0, ft5
mov oc, ft0

虽然我无法想象大多数操作(我试图在纸上进行所有计算以低估程序的含义 - 我想这是可能的)但是NRM optcode最让我困惑。我不明白为什么我们这样做。正如我发现每个向量的长度从0,0,0到它的坐标。标准化向量的长度为1.这对计算有何帮助?提前谢谢!

1 个答案:

答案 0 :(得分:1)

归一化向量可用于计算两个向量之间的点积。例如,如果模型面部的“正常”(指向与面部成90度的向量)未标准化,则如果将其与另一个向量相加,则会得到非常奇怪的结果。