Assembly Direct3D像素着色器汇编语言中的滑动操作

Assembly Direct3D像素着色器汇编语言中的滑动操作,assembly,shader,gpu,direct3d,hlsl,Assembly,Shader,Gpu,Direct3d,Hlsl,我编写了一个像素着色器(3.0版),并使用fxc命令进行编译。编译没有问题,但有一件事我不能理解 有一些swizzling操作具有未记录的行为。下面是一个例子: 加上r1.xyz,-r0.z,c3 (r1.xyz的长度为3,-r0.z的长度为1,c3的长度为4) 有人知道当操作数/结果寄存器长度不相同时,将向r1的每个向量分量写入哪个值吗 在的文档中不清楚此案例。 文档的某些部分指出,若操作数的通道字母数少于结果,则重复最后一个字母。但是,它并没有说明当操作数的字母数大于结果数或操作数根本并没有

我编写了一个像素着色器(3.0版),并使用fxc命令进行编译。编译没有问题,但有一件事我不能理解

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

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

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

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

在的文档中不清楚此案例。 文档的某些部分指出,若操作数的通道字母数少于结果,则重复最后一个字母。但是,它并没有说明当操作数的字母数大于结果数或操作数根本并没有字母(并且结果并没有4个分量)时会发生什么情况

谢谢

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

阅读 和