2

我编写了一个像素着色器(3.0 版)并使用 fxc 命令对其进行了编译。编译没有问题,但有一点我无法理解。

有一些 swizzling 操作具有未记录的行为。这是一个例子:

添加 r1.xyz,-r0.z,c3

(r1.xyz 的长度为 3,-r0.z 的长度为 1,c3 的长度为 4)

任何人都知道当操作数/结果寄存器长度不同时,哪个值将写入 r1 的每个向量分量?

http://msdn.microsoft.com/en-us/library/windows/desktop/bb172242(v=vs.85).aspx上的文档并不清楚这种情况。文档的某些部分说,如果操作数的通道字母少于结果,则重复最后一个字母。但是,它没有说明当操作数的字母多于结果或操作数根本没有字母(并且结果没有 4 个组件)时会发生什么。

谢谢

4

1 回答 1

1

结果将是:r1.xyz = -r0.zzz + c3.xyz

阅读http://msdn.microsoft.com/en-us/library/windows/desktop/bb219869(v=vs.85).aspxhttp://msdn.microsoft.com/en-us/library/windows/桌面/bb219870(v=vs.85).aspx

于 2012-11-13T21:49:33.137 回答