Direct3D像素着色器汇编语言中的混合操作

时间:2012-11-13 12:31:56

标签: assembly shader gpu direct3d hlsl

我写了一个像素着色器(3.0版)并用fxc命令编译它。编译没有问题,但有一件事让我无法理解。

有一些混乱的操作,其行为没有记录。这是一个例子:

添加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个组件)。

由于