sincos - ps

以弧度计算正弦和余弦。

语法

ps_2_0和ps_2_x

sincos dst.{x|y|xy},src0。{x|y|z|w}, src1, src2

 

其中:

  • dst 是目标寄存器,必须是 临时注册 (r#) 。 目标寄存器必须具有以下三个掩码之一:.x | .y | .xy。
  • src0 是一个源寄存器,它提供输入角度,必须位于 [-pi, +pi] 内。 {x|y|z|w} 是所需的复制重排。
  • src1 和 src2 是源寄存器,必须是两个不同的 常量浮点寄存器 (c#) 。 src1 和 src2 的值必须是宏 D3DSINCOSCONST1D3DSINCOSCONST2 的值。

ps_3_0

sincos dst.{x|y|xy},src0。{x|y|z|w}

 

其中:

  • dst 是目标寄存器,必须是 临时注册 (r#) 。 目标寄存器必须具有以下三个掩码之一:.x | .y | .xy。
  • src0 是一个源寄存器,它提供输入角度,必须位于 [-pi, +pi] 内。 {x|y|z|w} 是所需的复制重排。

注解

像素着色器版本 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
sincos x x x x x

 

ps_2_0和ps_2_x

对于ps_2_0和ps_2_x,sincos 可用于谓词,但对 谓词寄存器 (p0) 的重排有一个限制:仅允许复制重排 (.x | .y | .z | .w) 。

对于ps_2_0和ps_2_x,指令按如下所示操作, (V = src0 中的标量值,其中包含复制重排) :

  • 如果写入掩码为 .x:

    dest.x = cos(V)
    dest.y is undefined when the instruction completes
    dest.z is undefined when the instruction completes
    dest.w is not touched by the instruction
    
  • 如果写入掩码为 .y:

    dest.x is undefined when the instruction completes
    dest.y = sin(V)
    dest.z is undefined when the instruction completes
    dest.w is not touched by the instruction
    
  • 如果写入掩码为 .xy:

    dest.x = cos(V)
    dest.y = sin(V)
    dest.z is undefined when the instruction completes
    dest.w is not touched by the instruction
    

ps_3_0

对于ps_3_0,sincos 可与谓词一起使用,没有任何限制。 请参阅 谓词寄存器

对于ps_3_0,指令按如下所示操作, (V = 具有复制重排) 的 src0 的标量值:

  • 如果写入掩码为 .x:

    dest.x = cos(V)
    dest.y is not touched by the instruction
    dest.z is not touched by the instruction
    dest.w is not touched by the instruction
    
  • 如果写入掩码为 .y:

    dest.x is not touched by the instruction
    dest.y = sin(V)
    dest.z is not touched by the instruction
    dest.w is not touched by the instruction
    
  • 如果写入掩码为 .xy:

    dest.x = cos(V)
    dest.y = sin(V)
    dest.z is not touched by the instruction
    dest.w is not touched by the instruction
    

应用程序可以使用以下着色器伪代码将任意角度 (以弧度) 映射到范围 [-pi, +pi] :

def c0, pi, 0.5, 2*pi, 1/(2*pi)
mad r0.x, input_angle, c0.w, c0.y
frc r0.x, r0.x
mad r0.x, r0.x, c0.z, -c0.x

像素着色器说明