Microsoft DirectX 8.1 (vertex shader versions 1.0, 1.1)

mul

Multiplies sources into the destination.

mul dest, src0, src1

Registers

dest
Destination register.
src0
Input source register.
vSrc1
Input source register.

To learn more about registers, see Registers.

Remarks

The following code fragment shows the operations performed.

dest.x = src0.x * src1.x;
dest.y = src0.y * src1.y;
dest.z = src0.z * src1.z;
dest.w = src0.w * src1.w;

Example

This example combines two constant colors.

vs.1.0
m4x4 oPos, v0, c0	; transform vertices by view/projection matrix

mov r0, c4  		; load green
mov r1, c7	    	; load gray
mul r2, r0, r1		; rgb component wise multiply
mov oD0, r2                ; output dark green

// The resultant vertex color is a a dark green and is shown below.
// Additional code is used to initialize the constant registers. 
// The c0 register is loaded with the view and projection matrix 
// using the m4x4 instruction (the m4x4 instruction also uses the 
// c1, c2 and c3 registers). The last two methods set the constant 
// color registers.

D3DXMATRIX mat, matView, matProj;
D3DXMatrixMultiply(&mat, &matView, &matProj);
D3DXMatrixTranspose(&mat, &mat);
// set C0 with the view and projection matrix
m_pd3dDevice->SetVertexShaderConstant(0, &mat, 4);

// set register c4
float color[4] = {0, 1, 0, 0};
m_pd3dDevice->SetVertexShaderConstant(4, &color, 1);

// set register c7
float colorGray[] = {0.5f, 0.5f, 0.5f, 0.5f};
m_pd3dDevice->SetVertexShaderConstant(7, &colorGray, 1);

// The first SetVertexShaderConstant method binds the C0 register 
// with the first row of the view/projection matrix (rows 2, 3 and 4 are 
// bound to registers C2, C3 and c4 also). The m4x4 instruction (in the 
// shader file) loads the data.
// The second SetVertexShaderConstant method binds the C4 register 
// with the color green. The last SetVertexShaderConstant method 
// binds the C7 register with the color gray.