我编写了一个像素着色器(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 个组件)时会发生什么。
谢谢