Microsoft DirectX 8.1 (vertex shader versions 1.0, 1.1) |
Compares sources to see which source is less. Sets the destination to 1.0 if the first source operand is less than the second source operand; otherwise, the destination is set to 0.0.
slt dest, src0, src1
To learn more about registers, see Registers.
The following code fragment shows the operations performed by the slt instruction.
dest.x = (src0.x < src1.x) ? 1.0f : 0.0f; dest.y = (src0.y < src1.y) ? 1.0f : 0.0f; dest.z = (src0.z < src1.z) ? 1.0f : 0.0f; dest.w = (src0.w < src1.w) ? 1.0f : 0.0f;
// The following example compares the component color values of the two sources. vs.1.0 m4x4 oPos, v0, c0 ; transform vertices by view/projection matrix mov r0, c5 ; load pink slt r2, c4, r0 ; compare green to pink mov oD0, r2 ; output result // The resultant vertex color is red (1, 0, 0) and is shown below. The red // component is 1 because src0.x > src1.x. The green component is 0 // because src0.y < src1.y and the blue component is 0 because // src0.z < src1.z.
// Additional code is used to initialize the constant 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 colorGreen[] = {0, 1, 0, 0}; m_pd3dDevice->SetVertexShaderConstant(4, &colorGreen, 1); // set register C5 float colorPink[] = {0.75, 0, 0, 0}; m_pd3dDevice->SetVertexShaderConstant(5, &colorPink, 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 data for the color green. The last SetVertexShaderConstant // method binds the C5 register with data for the color pink.