Instructions - vs_2_x

This section contains reference information for the vertex shader version 2_x instructions.

There are several types of vertex shader instructions, as shown in the table. Columns to the right mean the following:

  • Instruction slots - Number of instruction slots used by each instruction.
  • Setup - Non-arithmetic instructions. Every shader must have a version instruction and it must be the first instruction.
  • Arithmetic - These instructions provide the mathematical operations in a shader.
  • Flow control - These instructions add flow control capabilities such as loop - vs...endloop - vs, if bool - vs...else...endif, and subroutine calls.
  • New - These instructions are new to this version.

Instruction Set

Name Description Instruction slots Setup Arithmetic Flow control New
abs - vs Absolute value 1 x
add - vs Add two vectors 1 x
break - vs Break out of a loop - vs...endloop - vs or rep...endrep block 1 x x
break_comp - vs Conditionally break out of a loop - vs...endloop - vs or rep...endrep block, with a comparison 3 x x
breakp - vs Break out of a loop - vs...endloop - vs or rep...endrep block, based on a predicate 3 x x
call - vs Call a subroutine 2 x
callnz bool - vs Call a subroutine if a Boolean register is not zero 3 x
callnz pred - vs Call a subroutine if a predicate register is not zero 3 x x
crs - vs Cross product 2 x
dcl_usage input (sm1, sm2, sm3 - vs asm) Declare input vertex registers (see Registers - vs_2_x) 0 x
def - vs Define constants 0 x
defb - vs Define a Boolean constant 0 x
defi - vs Define an integer constant 0 x
dp3 - vs Three-component dot product 1 x
dp4 - vs Four-component dot product 1 x
dst - vs Calculate the distance vector 1 x
else - vs Begin an else - vs block 1 x
endif - vs End an if bool - vs...else - vs block 1 x
endloop - vs End of a loop - vs block 2 x
endrep - vs End of a repeat block 2 x
exp - vs Full precision 2x 1 x
expp - vs Partial precision 2x 1 x
frc - vs Fractional component 1 x
if bool - vs Begin an if bool - vs block (using a Boolean condition) 3 x
if_comp - vs Begin an if bool - vs block, with a comparison 3 x x
if pred - vs Begin an if bool - vs block with a predicate condition 3 x x
label - vs Label 0 x
lit - vs Partial lighting calculation 3 x
log - vs Full precision log₂(x) 1 x
logp - vs Partial precision log₂(x) 1 x
loop - vs Loop 3 x
lrp - vs Linear interpolation 2 x
m3x2 - vs 3x2 multiply 2 x
m3x3 - vs 3x3 multiply 3 x
m3x4 - vs 3x4 multiply 4 x
m4x3 - vs 4x3 multiply 3 x
m4x4 - vs 4x4 multiply 4 x
mad - vs Multiply and add 1 x
max - vs Maximum 1 x
min - vs Minimum 1 x
mov - vs Move 1 x
mova - vs Move data from a floating-point register to the address register (a0) 1 x
mul - vs Multiply 1 x
nop - vs No operation 1 x
nrm - vs Normalize a 4D vector 3 x
pow - vs xy 3 x
rcp - vs Reciprocal 1 x
rep - vs Repeat 3 x
ret - vs End of either a subroutine or main 1 x
rsq - vs Reciprocal square root 1 x
setp_comp - vs Set the predicate register 1 x x
sge - vs Greater than or equal compare 1 x
sgn - vs Sign 3 x
sincos - vs Sine and cosine 8 x
slt - vs Less than compare 1 x
sub - vs Subtract 1 x
vs Version 0 x

 

Vertex Shader Instructions