Name Value Description
mov 0x00 move move data from source1 to destination, componentwise
add 0x01 add destination = source1 + source2, componentwise
sub 0x02 subtract destination = source1 - source2, componentwise
mul 0x03 multiply destination = source1 * source2, componentwise
div 0x04 divide destination = source1 / source2, componentwise
rcp 0x05 reciprocal destination = 1/source1, componentwise
min 0x06 minimum destination = minimum(source1,source2), componentwise
max 0x07 maximum destination = maximum(source1,source2), componentwise
frc 0x08 fractional destination = source1 - (float)floor(source1), componentwise
sqt 0x09 square root destination = sqrt(source1), componentwise
rsq 0x0a recip. root destination = 1/sqrt(source1), componentwise
pow 0x0b power destination = pow(source1,source2), componentwise
log 0x0c logarithm destination = log_2(source1), componentwise
exp 0x0d exponential destination = 2^source1, componentwise
nrm 0x0e normalize destination = normalize(source1), componentwise
sin 0x0f sine destination = sin(source1), componentwise
cos 0x10 cosine destination = cos(source1), componentwise
crs 0x11 cross product destination.x = source1.y * source2.z - source1.z * source2.y
destination.y = source1.z * source2.x - source1.x * source2.z
destination.z = source1.x * source2.y - source1.y * source2.x
dp3 0x12 dot product destination = source1.x*source2.x + source1.y*source2.y + source1.z*source2.z
dp4 0x13 dot product destination = source1.x*source2.x + source1.y*source2.y + source1.z*source2.z + source1.w*source2.w
abs 0x14 absolute destination = abs(source1), componentwise
neg 0x15 negate destination = -source1, componentwise
sat 0x16 saturate destination = maximum(minimum(source1,1),0), componentwise
m33 0x17 multiply destination.x = (source1.x * source2[0].x) + (source1.y * source2[0].y) + (source1.z * source2[0].z)
matrix 3x3 destination.y = (source1.x * source2[1].x) + (source1.y * source2[1].y) + (source1.z * source2[1].z)
destination.z = (source1.x * source2[2].x) + (source1.y * source2[2].y) + (source1.z * source2[2].z)
m44 0x18 multiply destination.x = (source1.x * source2[0].x) + (source1.y * source2[0].y) + (source1.z * source2[0].z) + (source1.w * source2[0].w)
matrix 4x4 destination.y = (source1.x * source2[1].x) + (source1.y * source2[1].y) + (source1.z * source2[1].z) + (source1.w * source2[1].w)
destination.z = (source1.x * source2[2].x) + (source1.y * source2[2].y) + (source1.z * source2[2].z) + (source1.w * source2[2].w)
destination.w = (source1.x * source2[3].x) + (source1.y * source2[3].y) + (source1.z * source2[3].z) + (source1.w * source2[3].w)
m34 0x19 multiply destination.x = (source1.x * source2[0].x) + (source1.y * source2[0].y) + (source1.z * source2[0].z) + (source1.w * source2[0].w)
matrix 3x4 destination.y = (source1.x * source2[1].x) + (source1.y * source2[1].y) + (source1.z * source2[1].z) + (source1.w * source2[1].w)
destination.z = (source1.x * source2[2].x) + (source1.y * source2[2].y) + (source1.z * source2[2].z) + (source1.w * source2[2].w)
kil 0x27 kill / discard (fragment shader only)
If single scalar source component is less than zero, fragment is discarded and not drawn to the frame buffer.
The destination register must be all 0.
tex 0x28 texture sample (fragment shader only)
destination = load from texture source2 at coordinates source1. In this source2 must be in sampler format.
sge 0x29 set-if-greater-equal
destination = source1 >= source2 ? 1 : 0, componentwise
slt 0x2a set-if-less-than
destination = source1 < source2 ? 1 : 0, componentwise