Ejemplo n.º 1
0
HRESULT KG3DPointLightShadow::ComputeCubeMapForPosition(D3DXVECTOR3 vPosition,KG3DScenePvsEditor* pScene,LPDIRECT3DCUBETEXTURE9 pCubeColor,LPDIRECT3DCUBETEXTURE9 pCubeDepth,KG3DRenderTargetTool* pToolColor,KG3DRenderTargetTool* pToolDepth)
{
	HRESULT hr = E_FAIL;


	for( UINT i = 0; i < 6; i++ ) 
	{ 

		// Set the view transform for this cubemap surface 
		D3DUtil_GetCubeMapViewMatrix( (D3DCUBEMAP_FACES) i ,vPosition,m_vShadowMap.m_vCameraLight); 

		m_vShadowMap.m_vCameraLight.SetPerspective(D3DX_PI / 2,1,5,40000 );
		m_vShadowMap.m_vCameraLight.SetCamera();

		m_vShadowMap.ProcessShadowMapWithPVS((KG3DRepresentObjectPVS*)pScene->GetPvs());

		//////////////////////////////////////////////////////////////////////////
		if(pCubeDepth)
		{
			LPDIRECT3DSURFACE9 pDest = NULL;
			hr = pCubeDepth->GetCubeMapSurface((D3DCUBEMAP_FACES)i,0,&pDest);
			KGLOG_COM_PROCESS_ERROR(hr);

			ExportToCubeSurface(pToolDepth,pDest,TRUE);

			SAFE_RELEASE(pDest);
		}

		if(pCubeColor)
		{
			LPDIRECT3DSURFACE9 pDest = NULL;
			hr = pCubeColor->GetCubeMapSurface((D3DCUBEMAP_FACES)i,0,&pDest);
			KGLOG_COM_PROCESS_ERROR(hr);

			ExportToCubeSurface(pToolColor,pDest,FALSE);

			SAFE_RELEASE(pDest);
		}
	} 

	//////////////////////////////////////////////////////////////////////////

	hr = S_OK;
Exit0:
	return hr;
}
Ejemplo n.º 2
0
void UpdateCube()
{
	int i;
	Proj = MatrixPerspectiveFov(DegToRad(90.0f), 1, 0.5f , 200.0f);
	RenderToEnvMap->BeginCube( CubeMap ) &&VERIFY_RESULT;
	for(i=0;i<6;i++)
	{
		RenderToEnvMap->Face( (D3DCUBEMAP_FACES) i, 0 )&&VERIFY_RESULT;
		View = D3DUtil_GetCubeMapViewMatrix( (D3DCUBEMAP_FACES) i );
		ViewInv = Inverse(View);
		ViewProj = View*Proj;
		g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER|D3DCLEAR_STENCIL,
							 D3DCOLOR_COLORVALUE(clearcolor.x,clearcolor.y,clearcolor.z,1.0f), 1.0f, 0L ); // color macro maps floating point channels (0.f to 1.f range) to D3DCOLOR
		//RenderAreaTest();

//		BrushRenderTest();



	}
	RenderToEnvMap->End(0)&&VERIFY_RESULT;
}