IDirect3DPixelShader9* pShader;
UINT pSizeOfData;
//in dip
if(SUCCEEDED(Device->GetPixelShader(&pShader)))
if(pShader!=NULL)
if(SUCCEEDED(pShader->GetFunction(NULL,&pSizeOfData)))
if( pShader != NULL ){ pShader->Release(); pShader = NULL; }
//wallhack
if(pSizeOfData == 640)//all models
Device->SetRenderState( D3DRS_ZENABLE, FALSE );
else
Device->SetRenderState( D3DRS_ZENABLE, TRUE );


void SetLightChams(float A, float R, float G, float B, IDirect3DDevice9 *pDevice)
{
D3DMATERIAL9 pMaterial;
ZeroMemory(&pMaterial, sizeof(D3DMATERIAL9));
pDevice->SetRenderState(D3DRS_LIGHTING, TRUE); //Enable Lighting
//Ambient
pMaterial.Ambient.a = (A/255);
pMaterial.Ambient.r = (R/255);
pMaterial.Ambient.g = (G/255);
pMaterial.Ambient.b = (B/255);
//Diffuse
pMaterial.Diffuse.a = (A/255);
pMaterial.Diffuse.r = (R/255);
pMaterial.Diffuse.g = (G/255);
pMaterial.Diffuse.b = (B/255);
//Specular
pMaterial.Specular.a = (A/255);
pMaterial.Specular.r = (R/255);
pMaterial.Specular.g = (G/255);
pMaterial.Specular.b = (B/255);
pDevice->SetMaterial(&pMaterial);
}
if(PSizeOfData == 640)//All Models
{
pDevice->SetRenderState( D3DRS_ZENABLE, false );
SetLightChams(255,60,73,196, pDevice);
pDevice->SetTexture( 0, texGreen);
}