# High-Tech And Vertex Juggling - NVIDIA's New GeForce3 GPU

Above you see a typical example for EMBM.

Here's a list of the rather simple texture blending instructions:

Texture Blending Instruction Parameters Explanation
add dest, src1, src2 dest = src1 + sr2
sub dest, src1, src2 dest = src1 - src2
dp3 dest, src1, src2 dest = ( src1.x * src2.x + src1.y * src2.y ...)
lrp dest, factor, src1, src2 dest = (factor)src1 + ( 1-factor)src2
mul dest, src0, src1 dest = src0 * src1
mad dest, src0, src1, src2 dest = ( src0 + src1 * src2 )
mov dest, src dest = src
cnd dest, r0.a, src1, src2 if ( r0.a > 0.5 ) { dest = src1; } else { dest = src2; }

The pixel shader supports argument and instruction modifiers as well, to make life easier for programmers:

Modifier Explanation
r0.a Alpha Replicate
1 - r0 Invert
-r0 Negate
r0_bias Bias - subtract 0.5
r1+bx2 Signed Scale - 2 * ( x - 0.5f )
_x2 double result
_d2 halve result
_sat clamp < 0 to 0 and < 1 to 1

So far about the dry theory of pixel shader programming. Let's get to something more interesting.

Summary