当我阅读nvidia上的关于投影纹理(9.3.2)的文章this article on Projective Texturing (9.3.2)时,我看到了这张图片:
(来源:nvidia.com)
(来源:nvidia.com)
矩阵乘法不满足交换律,那么我应该按什么顺序进行乘法运算?
如果确实是与正常对象的变换序列相同的顺序,为什么要这样书写?
所谓的相同顺序指的是类似于这个 hlsl 代码:
float4 worldPosition = mul(input.Position, World);
float4 viewPosition = mul(worldPosition, View);
output.Position = mul(viewPosition, Projection);
最后(这是可选的,但对于其他想知道相同内容的人可能会有用),您将如何编写HLSL代码以执行此投影纹理乘法,或者如果通过XNA传递完整矩阵,则将如何进行转换。
y = TPVWx
和yt = xt Wt Vt Pt Tt
是等价的。我更喜欢使用数学中通常的y = TPVWx
。 (b) HLSL编译器可以推断正确的操作,因为在任何mul(A,B)
中,矩阵A
和B
的内部维度必须相等。参见例如 link。 - Jiri Kriz