//±×¸²ÀÚ¿ë ¸Þ½¬À̸é
if(RF_MESH_PROJECTION_SHADOW & pRAD->dwRenderFlags)
{
xDevice::sSetTexture(0, pRAD->pTexReplace);
xDevice::sSetTextureStageState( 0, D3DTSS_COLOROP,D3DTOP_SELECTARG1 );
xDevice::sSetTextureStageState( 0, D3DTSS_COLORARG1,D3DTA_TEXTURE);
xDevice::sSetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
xDevice::sSetTextureStageState(0, D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
xDevice::sSetTextureStageState(0, D3DTSS_ALPHAARG2,D3DTA_CURRENT);
xDevice::sSetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
xDevice::sSetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
xDevice::sSetSamplerState( 0, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP);
// ÅØ½ºÃÄ ÁÂÇ¥¸¦ Ä«¸Þ¶ó °ø°£¿¡ º¯È¯µÈ Á¤Á¡ÀÇ À§Ä¡¸¦ »ç¿ëÇÑ´Ù.
xDevice::sSetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION );
// µ¿Â÷ÁÂÇ¥°è ÅØ½ºÃÄ º¯È¯ Çà·ÄÀ» »ç¿ëÇϵµ·Ï ¼³Á¤ÇØÁØ´Ù.
// ÀÌ·¸°Ô ÇØ¾ß D3D°¡ Åõ¿µ ³ª´°¼À(projection divide)¿¬»êÀ» ÇÑ´Ù.
xDevice::sSetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT4|D3DTTFF_PROJECTED );
// ÅØ½ºÃÄ Çà·Ä ¼³Á¤.
xDevice::sSetTransform( D3DTS_TEXTURE0, &(pRAD->mtxTex[0]) );
//¾ËÆÄ¸ÊÀÌ ÀÖ´Ù¸é
if(xProjectionShadow::s_lpTexAlpha)
{
iStart++;
xDevice::sSetTexture(1, xProjectionShadow::s_lpTexAlpha);
xDevice::sSetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION );
xDevice::sSetTextureStageState( 1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT4|D3DTTFF_PROJECTED );
xDevice::sSetTransform( D3DTS_TEXTURE1, &(pRAD->mtxTex[1]) );
xDevice::sSetTextureStageState( 1, D3DTSS_COLOROP,D3DTOP_SELECTARG1 );
xDevice::sSetTextureStageState( 1, D3DTSS_COLORARG1,D3DTA_CURRENT);
xDevice::sSetTextureStageState( 1, D3DTSS_COLORARG2,D3DTA_TEXTURE);
xDevice::sSetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
xDevice::sSetTextureStageState(1, D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
xDevice::sSetTextureStageState(1, D3DTSS_ALPHAARG2,D3DTA_CURRENT);
xDevice::sSetSamplerState( 1, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
xDevice::sSetSamplerState( 1, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
xDevice::sSetSamplerState( 1, D3DSAMP_ADDRESSW, D3DTADDRESS_CLAMP);
}
}
|