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::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 CDrawQuadRendererCommand::Execute(CRenderManager &RM) { ActivateTextures(); CRenderableObjectTechnique *l_Rot= CORE->GetRenderableObjectsTechniqueManager()->GetResource(CORE->GetRenderableObjectsTechniqueManager()->GetRenderableObjectTechniqueNameByVertexType(SCREEN_TEXTURE_COLORED_VERTEX::GetVertexType()),""); if (l_Rot != NULL) DrawColoredQuad2DTexturedInPixelsByEffectTechnique(&RM, l_Rot->GetEffectTechnique(), m_Rect, colWHITE, NULL); }
void CDrawQuadSceneEffect::PostRender(CRenderManager *RM) { if(m_Technique!=NULL) { RECT l_Rect; l_Rect.top=l_Rect.left=0; uint32 l_ScreenHeight,l_ScreenWidth; RM->GetWandH(l_ScreenWidth,l_ScreenHeight); l_Rect.bottom = l_ScreenHeight; l_Rect.right = l_ScreenWidth; m_Technique->BeginRender(); ActivateTextures(); LPD3DXEFFECT l_Effect = m_Technique->GetEffect()->GetD3DEffect(); if(l_Effect!=NULL) { l_Effect->SetTechnique(m_Technique->GetD3DTechnique()); UINT l_NumPasses; l_Effect->Begin(&l_NumPasses, 0); for (UINT iPass = 0; iPass < l_NumPasses; iPass++) { l_Effect->BeginPass(iPass); //RM->DrawColoredQuad2DTexturedInPixels( l_Rect, m_Color, m_StageTextures[0].m_Texture); RM->DrawTexturedQuad2D(Vect2i(0,0), l_ScreenWidth, l_ScreenHeight, CRenderManager::UPPER_LEFT,m_StageTextures[0].m_Texture, m_Color); /* if(CORE->GetInputManager()->GetActionToInput()->DoAction("Screenshot") != 0.0f ) { char pathFoto[256]; sprintf(pathFoto, "./Data/Screenshots/screen%d.bmp", (int) CORE->GetTimer()->GetTotalTime()); this->m_StageTextures[0].m_Texture->Save(pathFoto); } std::string pathFoto = "C:\\texturasjuego\\postrend_zblur"; pathFoto += ::timeGetTime(); pathFoto += ".bmp"; this->m_StageTextures[0].m_Texture->Save(pathFoto); */ l_Effect->EndPass(); } l_Effect->End(); } } }
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(); }
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 CDrawQuadRendererCommand::Execute( CGraphicsManager& GM ) { BROFILER_CATEGORY( "CDrawQuadRendererCommand::Execute", Profiler::Color::Orchid ) ActivateTextures(); CRenderableObjectTechniqueManager* lROTM = ROTMInstance; const std::string& l_EffectTechName = lROTM->GetRenderableObjectTechniqueNameByVertexType( SCREEN_COLOR_VERTEX::GetVertexType() ); CRenderableObjectTechnique* l_ROT = lROTM->GetResource( l_EffectTechName ); CEffectTechnique* l_EffectTech = l_ROT->GetEffectTechnique(); uint32 width, height; GM.GetWidthAndHeight( width, height ); RECT l_Rect = { 0, 0, ( long )width - 1, ( long )height - 1 }; l_EffectTech->GetEffect()->SetLight( 0 ); if( mSetPlayerLife ) { CEffect* lEffect = l_EffectTech->GetEffect(); float lLife = GUIInstance->GetWindow("HUD.xml")->GetElement("Life")->GetProgress(); //LOG_INFO_APPLICATION("Setting life %5.2f", lLife); lLife = Math::Utils::Clamp(lLife, 0.05f, 100.0f); lEffect->SetLife(lLife); } if ( l_EffectTech ) { GM.DrawColoredQuad2DTexturedInPixelsByEffectTechnique( l_EffectTech, l_Rect, m_Color, m_StageTextures[0].m_Texture, 0.0f, 0.0f, 1.0f, 1.0f ); } else { GM.DrawColoredQuad2DTexturedInPixels( l_Rect, m_Color, m_StageTextures[0].m_Texture, 0.0f, 0.0f, 1.0f, 1.0f ); } }
void Material::ActivateForDraw() { GetShader()->Activate(); ActivateTextures(); }