void CDeferredShadingSceneRendererCommand::ExecuteDeferredShading(CRenderManager &RenderManager)
{
	CContextManager* l_ContextManager = RenderManager.GetContextManager();
	l_ContextManager->EnableDeferredShadingBlendState();

	CLightManager* l_LightManager = CEngine::GetSingleton().GetLightManager();
	std::vector<CLight*> l_Lights = l_LightManager->GetResourcesVector();
	size_t l_Size = l_Lights.size();

	int l_Width = l_ContextManager->GetFrameBufferWidth();
	int l_Height = l_ContextManager->GetFrameBufferHeight();

	ActivateTextures();

	for (size_t i = 0; i < l_Size; ++i)
	{
		if (l_Lights[i]->GetActive())
		{
			CEngine::GetSingleton().GetEffectManager()->SetLightConstants(0, l_Lights[i]);
			m_RenderableObjectTechnique->GetEffectTechnique()->SetConstantBuffer(1, &CEffectManager::m_LightEffectParameters);
			RenderManager.DrawScreenQuad(m_RenderableObjectTechnique->GetEffectTechnique(), NULL, 0, 0, 1.0f, 1.0f, CColor(v4fZERO));
		}
	}

	CEngine::GetSingleton().GetRenderManager()->GetContextManager()->DisableAlphaBlendState();
}
void CDeferredShadingSceneRendererCommand::SecondPass(CRenderManager &RenderManager)
{
	RenderManager.GetContextManager()->EnableDeferredShadingBlendState();
	RenderManager.GetContextManager()->SetRasterizerState(CContextManager::RS_CULL_FRONT); //Back(far) faces only

	D3D11_DEPTH_STENCIL_DESC depthstencil_desc;
	depthstencil_desc.DepthEnable = FALSE;
	depthstencil_desc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO;
	depthstencil_desc.DepthFunc = D3D11_COMPARISON_LESS;

	depthstencil_desc.StencilEnable = TRUE;
	depthstencil_desc.StencilReadMask = D3D11_DEFAULT_STENCIL_READ_MASK;
	depthstencil_desc.StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK;

	depthstencil_desc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
	depthstencil_desc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP;
	depthstencil_desc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_INVERT;
	depthstencil_desc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;

	depthstencil_desc.BackFace.StencilFunc = D3D11_COMPARISON_NOT_EQUAL;
	depthstencil_desc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_KEEP;
	depthstencil_desc.BackFace.StencilPassOp = D3D11_STENCIL_OP_ZERO;
	depthstencil_desc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;

	//Stencil function is 'Equal' (Stencil ref = zero)

	HRESULT l_Result = CEngine::GetSingleton().GetRenderManager()->GetContextManager()->GetDevice()->CreateDepthStencilState(&depthstencil_desc, &m_DepthStencilState);

	RenderManager.GetContextManager()->UnsetRenderTargets();

	UINT l_StencilRef = 0;
	RenderManager.GetContextManager()->GetDeviceContext()->OMSetDepthStencilState(m_DepthStencilState, l_StencilRef);
	//Always clears Stencil to zero
}
void CDirectionalLight::SetBlackAndWhiteMap(CRenderManager &RenderManager, bool Blurred)
{
	CDynamicTexture* l_Texture = m_BlackAndWhiteMap;
	if (Blurred)
		l_Texture = m_BlackAndWhiteBlurredMap;

	if (l_Texture == NULL)
	{
		assert(false);
		return;
	}

	Vect3f l_ShadowMapFrameDisplacement = v3fZERO;

	CGameObject* l_PlayerGameObject = CEngine::GetSingleton().GetGameObjectManager()->GetPlayer();
	CRenderableObject* l_Player = l_PlayerGameObject->GetRenderableObject();
	Vect3f l_PlayerPos = l_Player->GetPosition();
	SetPosition(l_PlayerPos + m_PlayerOffset);

	unsigned int l_ShadowMapWidth = l_Texture->GetWidth();
	unsigned int l_ShadowMapHeight = l_Texture->GetHeight();

	ID3D11RenderTargetView *l_RenderTargetViews[1];
	l_RenderTargetViews[0] = l_Texture->GetRenderTargetView();
	D3D11_VIEWPORT m_viewport;
	m_viewport.Width = (float)l_ShadowMapWidth;
	m_viewport.Height = (float)l_ShadowMapHeight;
	m_viewport.MinDepth = 0.0f;
	m_viewport.MaxDepth = 1.0f;
	m_viewport.TopLeftX = 0.0f;
	m_viewport.TopLeftY = 0.0f;
	RenderManager.GetContextManager()->GetDeviceContext()->RSSetViewports(1, &m_viewport);
	RenderManager.GetContextManager()->SetRenderTargets(1, l_RenderTargetViews, l_Texture->GetDepthStencilView());
}
void CDrawQuadRendererCommand::Execute(CRenderManager &RenderManager)
{	
	if (m_Material)	{ m_Material->Apply(); }
	
	ActivateTextures();
	RenderManager.DrawScreenQuad(m_RenderableObjectTechnique->GetEffectTechnique(),NULL,0,0,1.0f,1.0f,CColor(1.0f, 1.0f, 1.0f, 1.0f));
} 
void CDeferredShadingSceneRendererCommand::FirstPast(CRenderManager &RenderManager)
{
	CContextManager* l_ContextManager = RenderManager.GetContextManager();
	l_ContextManager->Clear(false, true);
	l_ContextManager->EnableDeferredShadingBlendState();
	l_ContextManager->SetRasterizerState(CContextManager::RS_CULL_BACK); //Front (near) faces only

	D3D11_DEPTH_STENCIL_DESC depthstencil_desc;
	depthstencil_desc.DepthEnable = TRUE;
	depthstencil_desc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO;
	depthstencil_desc.DepthFunc = D3D11_COMPARISON_LESS;

	depthstencil_desc.StencilEnable = TRUE;
	depthstencil_desc.StencilReadMask = D3D11_DEFAULT_STENCIL_READ_MASK;
	depthstencil_desc.StencilWriteMask = D3D11_DEFAULT_STENCIL_WRITE_MASK;

	depthstencil_desc.FrontFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
	depthstencil_desc.FrontFace.StencilDepthFailOp = D3D11_STENCIL_OP_INVERT;
	depthstencil_desc.FrontFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
	depthstencil_desc.FrontFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;

	depthstencil_desc.BackFace.StencilFunc = D3D11_COMPARISON_ALWAYS;
	depthstencil_desc.BackFace.StencilDepthFailOp = D3D11_STENCIL_OP_INVERT;
	depthstencil_desc.BackFace.StencilPassOp = D3D11_STENCIL_OP_KEEP;
	depthstencil_desc.BackFace.StencilFailOp = D3D11_STENCIL_OP_KEEP;
	
	HRESULT l_Result = CEngine::GetSingleton().GetRenderManager()->GetContextManager()->GetDevice()->CreateDepthStencilState(&depthstencil_desc, &m_DepthStencilState);
	UINT l_StencilRef = 0;
	l_ContextManager->UnsetColorRenderTarget();
	l_ContextManager->GetDeviceContext()->OMSetDepthStencilState(m_DepthStencilState, l_StencilRef);
}
void CDeferredShadingSceneRendererCommand::ExecuteDeferredShadingUsingLightVolumes(CRenderManager &RenderManager)
{
	CLightManager* l_LightManager = CEngine::GetSingleton().GetLightManager();
	std::vector<CLight*> l_Lights = l_LightManager->GetResourcesVector();
	size_t l_Size = l_Lights.size();

	int l_Width = RenderManager.GetContextManager()->GetFrameBufferWidth();
	int l_Height = RenderManager.GetContextManager()->GetFrameBufferHeight();

	ActivateTextures();

	for (size_t i = 0; i<l_Size; ++i)
	{
		/*Only 1 light*/
		if (l_Lights[i]->GetActive())
		{
			CEngine::GetSingleton().GetEffectManager()->SetLightConstants(0, l_Lights[i]);
			m_RenderableObjectTechnique->GetEffectTechnique()->SetConstantBuffer(1, &CEffectManager::m_LightEffectParameters);

			if (l_Lights[i]->GetType() != CLight::OMNI) //
			{
				RenderManager.GetContextManager()->SetRasterizerState(CContextManager::RS_SOLID);
				RenderManager.DrawScreenQuad(m_RenderableObjectTechnique->GetEffectTechnique(), NULL, 0, 0, 1.0f, 1.0f, CColor(v4fZERO));
			}
			else
			{
				float l_LightRadius = l_Lights[i]->GetEndRangeAttenuation();
				Mat44f l_Scale;
				l_Scale.SetFromScale(l_LightRadius, l_LightRadius, l_LightRadius);

				Mat44f l_LightTransform = l_Lights[i]->GetTransform();

				RenderManager.GetContextManager()->SetWorldMatrix(l_Scale*l_LightTransform);

				FirstPast(RenderManager);
				CRenderableObjectTechnique* l_Technique  = CEngine::GetSingleton().GetRenderableObjectTechniqueManager()->GetResource("deferred_shading_omnilight_sphere_renderable_object_technique");
				m_SphereFirstPass->Render(&RenderManager, l_Technique);
				SecondPass(RenderManager);
				m_SphereFirstPass->Render(&RenderManager);
			}
		}
	}

	CEngine::GetSingleton().GetRenderManager()->GetContextManager()->DisableAlphaBlendState();
}
/*
	Renders entity
*/
void CEntity::Render(unsigned int &prevMeshID) const 
{
	if (mRenderEntity)
	{
		CRenderManager* rm = CRenderManager::GetInstance();
		ID3D11DeviceContext* deviceContext = rm->GetDeviceContext();
		geom::CMesh* mesh = mTemplate->mMesh;

		if (mesh != NULL)
		{
			if (mesh->GetUID() != prevMeshID)
			{		
				/* Sets the buffers */
				ID3D11Buffer* vertexBuffer = mesh->GetVertexBuffer();
				ID3D11Buffer* indexBuffer = mesh->GetIndexBuffer();

				UINT stride = mesh->GetVertexSize();
				UINT offset = 0;

				deviceContext->IASetVertexBuffers( 0, 1, &vertexBuffer, &stride, &offset );
				deviceContext->IASetIndexBuffer( indexBuffer, DXGI_FORMAT_R16_UINT, 0 );

				deviceContext->IASetPrimitiveTopology( mesh->GetTopology() );

				/* Sets texture */
				ID3D11ShaderResourceView* texture = mesh->GetTexture();
				if (texture != NULL)
				{
					ID3D11SamplerState* sample = mesh->GetSample();
					int startSlot = mesh->GetStartSlot();

					deviceContext->PSSetShaderResources( startSlot, 1, &texture );
					deviceContext->PSSetSamplers( startSlot, 1, &sample );

					deviceContext->RSSetState( mTemplate->mRasterState );
				}
			}

			deviceContext->DrawIndexed( mesh->GetNumberOfIndices(), 0, 0 );

			prevMeshID = mesh->GetUID();
		}
	}
}
void CGenerateBlackAndWhiteMapsSceneRendererCommand::Execute(CRenderManager &RenderManager)
{
	CLightManager* l_LightManager = CEngine::GetSingleton().GetLightManager();
	std::vector<CLight*> l_Lights = l_LightManager->GetResourcesVector();
	size_t l_Size = l_Lights.size();

	ActivateTextures();

	//We are going to render from camera perspective
	//RenderManager.GetContextManager()->SetMatrices(RenderManager.GetCurrentCamera());

	for (size_t i = 0; i<l_Size; ++i)
	{
		if (l_Lights[i]->GetActive() && l_Lights[i]->GetGenerateShadowMap())
		{
			l_Lights[i]->SetBlackAndWhiteMap(RenderManager, false); //Set BlackAndWhiteTexture as rendertarget
			//Doens't change matrix, beacuse we must render from camera perspective

			CEngine::GetSingleton().GetEffectManager()->SetBlackAndWhiteLightConstants(l_Lights[i]);
			RenderManager.DrawScreenQuad(m_RenderableObjectTechnique->GetEffectTechnique(), NULL, 0, 0, 1.0f, 1.0f, CColor(1.0f, 1.0f, 1.0f, 1.0f));

			CMaterial* l_GaussianFilterMaterial = CEngine::GetSingleton().GetMaterialManager()->GetResource("GaussianFilterMaterial");
			CMaterial* l_GuiMaterial = CEngine::GetSingleton().GetMaterialManager()->GetResource("GUIMaterial");

			RenderManager.GetContextManager()->UnsetRenderTargets();
			RenderManager.GetContextManager()->SetDefaultViewPort();

			l_Lights[i]->SetBlackAndWhiteMap(RenderManager, true);
			CPoolRenderableObjectTechnique* l_GaussianFilterPool = CEngine::GetSingleton().GetRenderableObjectTechniqueManager()->GetPoolRenderableObjectTechniques().GetResource("gaussian_filter_pool_renderable_object_technique");
			l_GaussianFilterPool->Apply();

			l_Lights[i]->GetBlackAndWhiteMap()->Activate(0);
			l_GaussianFilterMaterial->Apply();

			RenderManager.DrawScreenQuad(l_GaussianFilterMaterial->GetRenderableObjectTechnique()->GetEffectTechnique(), NULL, 0, 0, 1.0f, 1.0f, CColor(0.0, 0.0, 0.0, 0.0));
		}
	}

	RenderManager.GetContextManager()->UnsetRenderTargets();
	RenderManager.GetContextManager()->SetDefaultViewPort();
}
void CDirectionalLight::SetShadowMap(CRenderManager &RenderManager)
{
	if (m_ShadowMap == NULL)
	{
		assert(false);
		return;
	}
	Vect3f l_ShadowMapFrameDisplacement = v3fZERO;

	CGameObject* l_PlayerGameObject = CEngine::GetSingleton().GetGameObjectManager()->GetPlayer();
	CRenderableObject* l_Player = l_PlayerGameObject->GetRenderableObject();
	Vect3f l_PlayerPos = l_Player->GetPosition();
	SetPosition(l_PlayerPos + m_PlayerOffset);
	
	m_ViewShadowMap.SetIdentity();
	m_ViewShadowMap.SetFromLookAt(m_Position, m_Position+m_Direction, v3fY);
	
	unsigned int l_ShadowMapWidth=m_ShadowMap->GetWidth();
	unsigned int l_ShadowMapHeight=m_ShadowMap->GetHeight();
	
	m_ProjectionShadowMap.SetFromOrtho(m_OrthoShadowMapSize.x,m_OrthoShadowMapSize.y, 0.1f, m_EndRangeAttenuation);
	
	CEffectManager::m_SceneEffectParameters.m_View=m_ViewShadowMap;
	CEffectManager::m_SceneEffectParameters.m_Projection=m_ProjectionShadowMap;
	
	ID3D11RenderTargetView *l_RenderTargetViews[1];
	l_RenderTargetViews[0]=m_ShadowMap->GetRenderTargetView();
	D3D11_VIEWPORT m_viewport;
	m_viewport.Width=(float)l_ShadowMapWidth;
	m_viewport.Height=(float)l_ShadowMapHeight;
	m_viewport.MinDepth=0.0f;
	m_viewport.MaxDepth=1.0f;
	m_viewport.TopLeftX=0.0f;
	m_viewport.TopLeftY=0.0f;
	RenderManager.GetContextManager()->GetDeviceContext()->RSSetViewports(1, &m_viewport);
	RenderManager.GetContextManager()->SetRenderTargets(1, l_RenderTargetViews, m_ShadowMap->GetDepthStencilView());
}
bool CDeferredShadingSceneRendererCommand::IsCameraInsideLight(CRenderManager &RenderManager, COmniLight* Light)
{
	Vect3f l_CameraPos = RenderManager.GetCurrentCamera().GetPosition();
	Vect3f l_LightPosition = Light->GetPosition();

	float l_Distance = (l_CameraPos - l_LightPosition).Length();

	if (l_Distance >= Light->GetEndRangeAttenuation()*1.2f)
	{
		//Use the front-face cull method as described above with those render states. Turn the stencil buffer off and don't mess with it.
		return false;
	}
	else
	{
		//(The first thing you need to (do is make sure that on your depth / stencil buffer, the stencil buffer is one solid value all the way across.I make my value 4.0 all over it.
		return true;
	}
}
Exemple #11
0
void CBillboard::RenderBySoftware ( CRenderManager &_RM, const CColor &_Color )
{
	TCOLOREDTEXTURE1_VERTEX l_Points[4];
    unsigned short l_Indexes[6] = { 0, 2, 3, 1 };
	
	unsigned long color_aux = _Color.GetUint32Argb();

    l_Points[0].x		= m_PointA.x;
    l_Points[0].y		= m_PointA.y;
    l_Points[0].z		= m_PointA.z;
    l_Points[0].tu		= 0.0f;
    l_Points[0].tv		= 0.0f;
    l_Points[0].color	= color_aux;
        
    l_Points[1].x		= m_PointB.x;
    l_Points[1].y		= m_PointB.y;
    l_Points[1].z		= m_PointB.z;
    l_Points[1].tu		= 1.0f;
    l_Points[1].tv		= 0.0f;
    l_Points[1].color	= color_aux;

    l_Points[2].x		= m_PointC.x;
    l_Points[2].y		= m_PointC.y;
    l_Points[2].z		= m_PointC.z;
    l_Points[2].tu		= 0.0f;
    l_Points[2].tv		= 1.0f;
    l_Points[2].color	= color_aux;

    l_Points[3].x		= m_PointD.x;
    l_Points[3].y		= m_PointD.y;
    l_Points[3].z		= m_PointD.z;
    l_Points[3].tu		= 1.0f;
    l_Points[3].tv		= 1.0f;        
    l_Points[3].color	= color_aux;
	
	LPDIRECT3DDEVICE9 Device = _RM.GetDevice();
	Device->SetTexture( 0, m_Texture->GetDXTexture() );
    Device->SetFVF((DWORD ) TCOLOREDTEXTURE1_VERTEX::GetFVF() );
    Device->DrawIndexedPrimitiveUP( D3DPT_TRIANGLEFAN, 0, 4, 2, l_Indexes ,D3DFMT_INDEX16, l_Points, sizeof(TCOLOREDTEXTURE1_VERTEX) );
}
void CUnsetRenderTargetSceneRendererCommand::Execute(CRenderManager &RenderManager)
{
	RenderManager.GetContextManager()->UnsetRenderTargets();
}
Exemple #13
0
 void Start()
 {
     m_RenderManager.Start(SamplingFrequency, &m_InSource, &m_Renderer);
 }
void GLAnimationCanvas::OnMouse(wxMouseEvent& event)
{
    if (m_iType == TYPE_CURVE)
    {
        wxPoint wxpt = event.GetPosition();
        Spline::Point pt(wxpt.x, wxpt.y);
        if (event.ButtonDown(wxMOUSE_BTN_LEFT))
        {
            size_t index;
            if(m_spline->findKont(pt, index))
            {
                m_selectedIndex = index;
            }
            else
            {
                m_selectedIndex = -1;
            }
        }
        else if(event.ButtonDown(wxMOUSE_BTN_RIGHT))
        {
            size_t index;
            if(m_spline->findKont(pt, index))
            {
                m_spline->removeKnot(index);
                m_selectedIndex = -1;
            }
            else
            {
                m_selectedIndex = m_spline->addKnots(pt);
            }
        }
        else if (event.Dragging())
        {
            if(m_selectedIndex >= 0)
            {
                m_spline->setKnot(m_selectedIndex, pt);    
            }
        }
    }
    else if (m_iType == TYPE_ANIMATION)
    {
        if(event.ButtonDown(wxMOUSE_BTN_RIGHT))
        {
            ShowCursor(false);
            SetFocus();
            if (!HasCapture())
            {
                CaptureMouse();
            }
            m_bRightDown = true;
        }
        else if(event.ButtonUp(wxMOUSE_BTN_RIGHT))
        {
            ShowCursor(true);
            if (HasCapture())
            {
                ReleaseMouse(); 
            }
            ResetKeyStates();
            m_bRightDown = false;
        }
        else if(event.ButtonDown(wxMOUSE_BTN_LEFT))
        {
            ShowCursor(false);
            SetFocus();
            if (!HasCapture())
            {
                CaptureMouse();
            }
            m_bLeftDown = true;
        }
        else if(event.ButtonUp(wxMOUSE_BTN_LEFT))
        {
            ShowCursor(true);
            if (!HasCapture())
            {
                CaptureMouse();
            }
            ResetKeyStates();
            m_bLeftDown = false;
        }
        else if(event.Dragging())
        {
            wxPoint curPos = event.GetPosition();
            wxPoint pnt = ClientToScreen(curPos);
            SetCursorPos(pnt.x, pnt.y);
            CRenderManager* pRenderMgr = CRenderManager::GetInstance();
            if (m_bRightDown)
            {
                int nDeltaX = curPos.x - m_lastPosition.x;
                int nDeltaY = curPos.y - m_lastPosition.y;
                wxSize clientSize = GetClientSize();
                pRenderMgr->GetCamera()->Yaw((float)nDeltaX / clientSize.x);
                pRenderMgr->GetCamera()->Pitch((float)nDeltaY / clientSize.y);
            }
        }
        else if(event.GetWheelAxis() == wxMOUSE_WHEEL_VERTICAL)
        {
            kmVec3 vec3Speed;
            kmVec3Fill(&vec3Speed, SHIFTWHEELSPEED, SHIFTWHEELSPEED, SHIFTWHEELSPEED);
            if (event.GetWheelRotation() > 0)
            {
                CRenderManager::GetInstance()->GetCamera()->Update(vec3Speed, (1 << CCamera::eCMT_STRAIGHT));
            }
            else if (event.GetWheelRotation() < 0)
            {
                kmVec3Scale(&vec3Speed, &vec3Speed, -1.0f);
                CRenderManager::GetInstance()->GetCamera()->Update(vec3Speed, (1 << CCamera::eCMT_STRAIGHT));
            }
        }
        m_lastPosition = event.GetPosition();
    }
}
// -----------------------------------------
//			  MÈTODES PRINCIPALS
// -----------------------------------------
void CEndRenderSceneRendererCommand::Execute( CRenderManager &_RM )
{
	_RM.GetDevice()->EndScene();
}
Exemple #16
0
void CBillboard::RenderByHardware ( CRenderManager &_RM, const CColor &_Color )
{
	//CORE->GetRenderableObjectsTechniqueManager()->GetPoolRenderableObjectTechniques().GetResource(
	std::string l_TechniqueName = "DrawSingleTextureTechnique"; // CORE->GetEffectsManager()->GetTechniqueEffectNameByVertexDefault( ( int ) TGEOMETRYCOLORTEXTURA1VERTEX::GetVertexType() );
	CEffectTechnique* l_pTechnique = CORE->GetEffectManager()->GetEffectTechnique ( l_TechniqueName );

	CEffect* l_pEffect = l_pTechnique->GetEffect();
	l_pTechnique->BeginRender();
	LPD3DXEFFECT l_Effect = l_pTechnique->GetEffect()->GetD3DEffect();

	if ( l_Effect != NULL )
	{
		l_Effect->SetTechnique ( l_pTechnique->GetD3DTechnique() );
		UINT l_NumPasses;
		if ( SUCCEEDED ( l_Effect->Begin ( &l_NumPasses, 0 ) ) )
		{
			
			for ( UINT iPass = 0; iPass < l_NumPasses; iPass++ )
			{
				l_Effect->BeginPass(iPass);
	
				//_RM->DrawColoredQuad2DTexturedInPixels ( _Color, _U0, _V0, _U1, _V1 );

				TCOLOREDTEXTURE1_VERTEX l_Points[4];
				unsigned short l_Indexes[6] = { 0, 2, 3, 1 };
	
				unsigned long color_aux = _Color.GetUint32Argb();

				l_Points[0].x		= m_PointA.x;
				l_Points[0].y		= m_PointA.y;
				l_Points[0].z		= m_PointA.z;
				l_Points[0].tu		= 0.0f;
				l_Points[0].tv		= 0.0f;
				l_Points[0].color	= color_aux;
        
				l_Points[1].x		= m_PointB.x;
				l_Points[1].y		= m_PointB.y;
				l_Points[1].z		= m_PointB.z;
				l_Points[1].tu		= 1.0f;
				l_Points[1].tv		= 0.0f;
				l_Points[1].color	= color_aux;

				l_Points[2].x		= m_PointC.x;
				l_Points[2].y		= m_PointC.y;
				l_Points[2].z		= m_PointC.z;
				l_Points[2].tu		= 0.0f;
				l_Points[2].tv		= 1.0f;
				l_Points[2].color	= color_aux;

				l_Points[3].x		= m_PointD.x;
				l_Points[3].y		= m_PointD.y;
				l_Points[3].z		= m_PointD.z;
				l_Points[3].tu		= 1.0f;
				l_Points[3].tv		= 1.0f;        
				l_Points[3].color	= color_aux;

				Mat44f mat, rotYaw, rotPitch, rotRoll;          
	  
				//mat.SetIdentity ( );         
				//rotYaw.SetIdentity ( );         
				//rotPitch.SetIdentity ( );         
				//rotRoll.SetIdentity ( );          
				//mat.Translate( GetPosition ( ) );                          
				///*rotPitch.SetRotByAngleX( mathUtils::Deg2Rad<float> ( GetPitch()) );           
				//rotYaw.SetRotByAngleY ( mathUtils::Deg2Rad<float> ( GetYaw()) );         
				//rotRoll.SetRotByAngleZ ( mathUtils::Deg2Rad<float> ( GetRoll()) ); */                         
				//mat = mat * rotYaw * rotPitch * rotRoll;                          
	  
				//_RM->SetTransform ( mat );          


				LPDIRECT3DDEVICE9 Device = _RM.GetDevice();
				Device->SetTexture( 0, m_Texture->GetDXTexture() );
				if ( SUCCEEDED ( Device->SetVertexDeclaration( TCOLOREDTEXTURE1_VERTEX::GetVertexDeclaration() ) ) )
				{
					Device->DrawIndexedPrimitiveUP( D3DPT_TRIANGLEFAN, 0, 4 ,2 , l_Indexes, D3DFMT_INDEX16, l_Points, sizeof( TCOLOREDTEXTURE1_VERTEX ) );
				}

				l_Effect->EndPass();
			}
			l_Effect->End();
		}
	}
}
void CScissorRectSceneRendererCommand::Execute(CRenderManager &RM)
{
	RM.GetDevice()->SetScissorRect(&m_Rect);
	RM.GetDevice()->SetRenderState(D3DRS_SCISSORTESTENABLE, TRUE);
}
void CEnableAlphaBlendSceneRendererCommand::Execute(CRenderManager &RenderManager)
{
	RenderManager.GetContextManager()->EnableAlphaBlendState();
}