mov
|
0x00
|
move
|
gegevens verplaatsen van bron1 naar doel, componentsgewijs
|
add
|
0x01
|
add
|
doel = bron1 + bron2, componentsgewijs
|
sub
|
0x02
|
subtract
|
doel = bron1 - bron2, componentsgewijs
|
mul
|
0x03
|
meerdere
|
doel = bron1 * bron2, componentsgewijs
|
div
|
0x04
|
delen
|
doel = bron1 / bron2, componentsgewijs
|
rcp
|
0x05
|
wederkerig
|
doel = 1/bron1, componentsgewijs
|
min
|
0x06
|
minimum
|
doel = minimum(bron1,bron2), componentsgewijs
|
max
|
0x07
|
maximum
|
doel = maximum(bron1,bron2), componentsgewijs
|
frc
|
0x08
|
fractioneel
|
doel = bron1 - (zwevend)ondergrens(bron1), componentsgewijs
|
sqt
|
0x09
|
vierkantswortel
|
doel = sqrt(bron1), componentsgewijs
|
rsq
|
0x0a
|
wederkerige vierkantswortel
|
doel = 1/sqrt(bron1), componentsgewijs
|
pow
|
0x0b
|
macht
|
doel = pow(bron1,bron2), componentsgewijs
|
log
|
0x0c
|
logaritme
|
doel = log_2(bron1), componentsgewijs
|
exp
|
0x0d
|
exponentieel
|
doel = 2^bron1, componentsgewijs
|
nrm
|
0x0e
|
normalize
|
doel = normalize(bron1), componentsgewijs (produceert alleen een resultaat met drie componenten, het doel moet worden gemaskeerd in .xyz of minder)
|
sin
|
0x0f
|
sinus
|
doel = sin(bron1), componentsgewijs
|
cos
|
0x10
|
cosinus
|
doel = cos(bron1), componentsgewijs
|
crs
|
0x11
|
kruisproduct
|
doel.x = bron1.y * bron2.z - bron1.z * bron2.y
doel.y = bron1.z * bron2.x - bron1.x * bron2.z
doel.z = bron1.x * bron2.y - bron1.y * bron2.x
(produceert alleen een resultaat met 3 componenten, het doel moet worden gemaskeerd in .xyz of minder)
|
dp3
|
0x12
|
scalair product
|
doel = bron1.x*bron2.x + bron1.y*bron2.y + bron1.z*bron2.z
|
dp4
|
0x13
|
scalair product
|
doel = bron1.x*bron2.x + bron1.y*bron2.y + bron1.z*bron2.z + bron1.w*bron2.w
|
abs
|
0x14
|
absoluut
|
doel = abs(bron1), componentsgewijs
|
neg
|
0x15
|
negatief maken
|
doel = -bron1, componentsgewijs
|
sat
|
0x16
|
satureren
|
doel = maximum(minimum(bron1,1),0), componentsgewijs
|
m33
|
0x17
|
matrix vermenigvuldigen 3x3
|
doel.x = (bron1.x * bron2[0].x) + (bron1.y * bron2[0].y) + (bron1.z * bron2[0].z)
doel.y = (bron1.x * bron2[1].x) + (bron1.y * bron2[1].y) + (bron1.z * bron2[1].z)
doel.z = (bron1.x * bron2[2].x) + (bron1.y * bron2[2].y) + (bron1.z * bron2[2].z)
(produceert alleen een resultaat met 3 componenten, het doel moet worden gemaskeerd in .xyz of minder)
|
m44
|
0x18
|
matrix vermenigvuldigen 4x4
|
doel.x = (bron1.x * bron2[0].x) + (bron1.y * bron2[0].y) + (bron1.z * bron2[0].z) + (bron1.w * bron2[0].w)
doel.y = (bron1.x * bron2[1].x) + (bron1.y * bron2[1].y) + (bron1.z * bron2[1].z) + (bron1.w * bron2[1].w)
doel.z = (bron1.x * bron2[2].x) + (bron1.y * bron2[2].y) + (bron1.z * bron2[2].z) + (bron1.w * bron2[2].w)
doel.w = (bron1.x * bron2[3].x) + (bron1.y * bron2[3].y) + (bron1.z * bron2[3].z) + (bron1.w * bron2[3].w)
|
m34
|
0x19
|
matrix vermenigvuldigen 3x4
|
doel.x = (bron1.x * bron2[0].x) + (bron1.y * bron2[0].y) + (bron1.z * bron2[0].z) + (bron1.w * bron2[0].w)
doel.y = (bron1.x * bron2[1].x) + (bron1.y * bron2[1].y) + (bron1.z * bron2[1].z) + (bron1.w * bron2[1].w)
doel.z = (bron1.x * bron2[2].x) + (bron1.y * bron2[2].y) + (bron1.z * bron2[2].z) + (bron1.w * bron2[2].w)
(produceert alleen een resultaat met 3 componenten, het doel moet worden gemaskeerd in .xyz of minder)
|
kil
|
0x27
|
verwijderen/negeren (alleen fragmentshader)
|
Als de enige scalaire broncomponent minder is dan nul, wordt het fragment genegeerd en niet naar de framebuffer getekend. (Het doelregister moet volledig ingesteld zijn op 0).
|
tex
|
0x28
|
structuurvoorbeeld (alleen fragmentshader)
|
doel is gelijk aan laden van bron2 van structuur op bron1 van coördinaten. In dit geval moet bron2 de samplerindeling hebben.
|
sge
|
0x29
|
instellen als groter of gelijk aan
|
doel = bron1 >= bron2 ? 1 : 0, componentsgewijs
|
slt
|
0x2a
|
instellen als kleiner dan
|
doel = bron1 < bron2 ? 1 : 0, componentsgewijs
|
seq
|
0x2c
|
instellen indien gelijk
|
doel = bron1 == bron2 ? 1 : 0, componentsgewijs
|
sne
|
0x2d
|
instellen indien niet gelijk
|
doel = bron1 != bron2 ? 1 : 0, componentsgewijs
|