Microsoft DirectX 8.1 (pixel shader versions 1.0, 1.1, 1.2, 1.3, 1.4) |
Interpolates linearly between the second and third source registers by a proportion specified in the first source register.
lrp dest, src0, src1, src2
Argument | Description | Registers | Version | |||
---|---|---|---|---|---|---|
vn | cn | tn | rn | |||
dest | Destination register | x | 1.0 | |||
x | x | 1.1, 1.2, 1.3 | ||||
x | 1.4 | |||||
src0, src1, src2 | Source register | x | x | x | x | 1.0, 1.1, 1.2, 1.3 |
x | x | 1.4 phase 1 | ||||
x | x | x | 1.4 phase 2 |
To learn more about registers, see Registers.
This instruction performs the linear interpolation based on the following formula.
dest = src0 * src1 + (1-src0) * src2 // which is the same as dest = src2 + src0 * (src1 - src2)
This example is for illustration only. The C code accompanying the shader has not been optimized for performance.
// This example combines a texture color with a diffuse color value. // The shader is shown below. ps.1.0 // Version instruction. tex t0 // Declare texture. lrp r0, t0, v0, t0 // Blend from v0 to t0 by t0 amount. // The input colors and the output colors are shown below. The first image // (src0) determines the amount of the second image (src1) and the third image // (src2) that are blended to make the final image (dest). Where the first image // is white, the second image appears in the output. Where the first image is // black, the third images appears in the output. Where the first is gray, the // final image contains color values from the second and third image. // Additional code loads the texture in texture stage 0. LPDIRECT3DDEVICE8 m_pd3dDevice; // initialize the pointer LPDIRECT3DTEXTURE8 m_pTexture0; // a pointer to the texture. TCHAR strPath[512] = "textureFile.jpg"; D3DUtil_CreateTexture( m_pd3dDevice, strPath, &m_pTexture0, D3DFMT_R5G6B5 ); m_pd3dDevice->SetTexture( 0, m_pTexture0 );