| Microsoft DirectX 8.1 (vertex shader versions 1.0, 1.1) | 
Multiplies sources into the destination.
mul dest, src0, src1
To learn more about registers, see Registers.
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;
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.