/* =================== idPlayerView::RenderPlayerView =================== */ void idPlayerView::RenderPlayerView(idUserInterface *hud) { const renderView_t *view = player->GetRenderView(); if (g_skipViewEffects.GetBool()) { SingleView(hud, view); } else { if (player->GetInfluenceMaterial() || player->GetInfluenceEntity()) { InfluenceVision(hud, view); } else if (gameLocal.time < dvFinishTime) { DoubleVision(hud, view, dvFinishTime - gameLocal.time); } else if (player->PowerUpActive(BERSERK)) { BerserkVision(hud, view); } else { SingleView(hud, view); } ScreenFade(); } if (net_clientLagOMeter.GetBool() && lagoMaterial && gameLocal.isClient) { renderSystem->SetColor4(1.0f, 1.0f, 1.0f, 1.0f); renderSystem->DrawStretchPic(10.0f, 380.0f, 64.0f, 64.0f, 0.0f, 0.0f, 1.0f, 1.0f, lagoMaterial); } }
/* =================== idPlayerView::InfluenceVision =================== */ void idPlayerView::InfluenceVision(idUserInterface *hud, const renderView_t *view) { float distance = 0.0f; float pct = 1.0f; if (player->GetInfluenceEntity()) { distance = (player->GetInfluenceEntity()->GetPhysics()->GetOrigin() - player->GetPhysics()->GetOrigin()).Length(); if (player->GetInfluenceRadius() != 0.0f && distance < player->GetInfluenceRadius()) { pct = distance / player->GetInfluenceRadius(); pct = 1.0f - idMath::ClampFloat(0.0f, 1.0f, pct); } } if (player->GetInfluenceMaterial()) { SingleView(hud, view); renderSystem->CaptureRenderToImage("_currentRender"); renderSystem->SetColor4(1.0f, 1.0f, 1.0f, pct); renderSystem->DrawStretchPic(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 0.0f, 1.0f, 1.0f, player->GetInfluenceMaterial()); } else if (player->GetInfluenceEntity() == NULL) { SingleView(hud, view); return; } else { int offset = 25 + sinf(gameLocal.time); DoubleVision(hud, view, pct * offset); } }
/* =================== idPlayerView::RenderPlayerView =================== */ void idPlayerView::RenderPlayerView( idUserInterface *hud ) { const renderView_t *view = player->GetRenderView(); if(g_skipViewEffects.GetBool()) { SingleView( hud, view ); } else { /*if ( player->GetInfluenceMaterial() || player->GetInfluenceEntity() ) { InfluenceVision( hud, view ); } else if ( gameLocal.time < dvFinishTime ) { DoubleVision( hud, view, dvFinishTime - gameLocal.time ); } else {*/ // greebo: For underwater effects, use the Doom3 Doubleview if (static_cast<idPhysics_Player*>(player->GetPlayerPhysics())->GetWaterLevel() >= WATERLEVEL_HEAD) { DoubleVision(hud, view, cv_tdm_underwater_blur.GetInteger()); } else { // Do not postprocess the HUD // if ( r_bloom_hud.GetBool() || !r_bloom.GetBool() ) // If HUD blooming is enabled or bloom is disabled // { // SingleView( hud, view ); // } // else { SingleView( hud, view, false ); } } //} // Bloom related - J.C.Denton /* Update post-process */ this->m_postProcessManager.Update(); ScreenFade(); } player->DrawHUD(hud); // TDM Ambient Method checking. By Dram // Modified by JC Denton if ( cv_ambient_method.IsModified() ) // If the ambient method option has changed { UpdateAmbientLight(); } }
//Draw our post process effects using ping pong void Renderer::DrawPostProcess(){ glDisable(GL_DEPTH_TEST); SetupPPMatrices(); glBindFramebuffer(GL_FRAMEBUFFER, processFBO); if (sobel) Sobel(); if (sobelDepth) SobelDepth(); if (quantizeCol) QuantizeCol(); if (fog) Fog(); if (bloom) Bloom(); if (dubVis) DoubleVision(); if (blur) Blur(); glBindFramebuffer(GL_FRAMEBUFFER, 0); glUseProgram(0); glEnable(GL_DEPTH_TEST); }
/* =================== idPlayerView::RenderPlayerView =================== */ void idPlayerView::RenderPlayerView( idUserInterface *hud ) { if ( !player ) { return; } const renderView_t *view = player->GetRenderView(); if ( !view ) { return; } bool guiRendered = false; // place the sound origin for the player soundSystem->PlaceListener( view->vieworg, view->viewaxis, player->entityNumber + 1, gameLocal.time, "Undefined" ); InfluenceVision( hud, view ); if ( g_skipViewEffects.GetBool() ) { SingleView( hud, view ); } else { if ( player->GetInfluenceMaterial() || player->GetInfluenceEntity() ) { InfluenceVision( hud, view ); guiRendered = true; } else if ( g_doubleVision.GetBool() && gameLocal.time < dvFinishTime ) { DoubleVision( hud, view, dvFinishTime - gameLocal.time ); guiRendered = false; } else { SingleView( hud, view, RF_NO_GUI | RF_PRIMARY_VIEW ); } // Now draw GUI's. if ( !guiRendered ) { SingleView( hud, view, RF_GUI_ONLY ); } ScreenFade(); } if ( net_clientLagOMeter.GetBool() && lagoMaterial && gameLocal.isClient && !( gameLocal.GetDemoState() == DEMO_PLAYING && ( gameLocal.IsServerDemo() || gameLocal.IsTimeDemo() ) ) ) { renderSystem->SetColor4( 1.0f, 1.0f, 1.0f, 1.0f ); renderSystem->DrawStretchPic( 10.0f, 380.0f, 64.0f, 64.0f, 0.0f, 0.0f, 1.0f, 1.0f, lagoMaterial ); } }
/* =================== idPlayerView::RenderPlayerView =================== */ void idPlayerView::RenderPlayerView( idUserInterface *hud ) { const renderView_t *view = player->GetRenderView(); if ( g_skipViewEffects.GetBool() ) { SingleView( hud, view ); } else { /* Render the standard view */ if ( player->GetInfluenceMaterial() || player->GetInfluenceEntity() ) { InfluenceVision( hud, view ); } else if ( gameLocal.time < dvFinishTime ) { DoubleVision( hud, view, dvFinishTime - gameLocal.time ); } else if ( player->PowerUpActive( BERSERK ) ) { BerserkVision( hud, view ); } else { SingleView( hud, view ); } #ifdef _DENTONMOD // HDR related - J.C.Denton /* Update HDR post-process */ this->m_postProcessManager.Update(); #endif ScreenFade(); } /* Render the hud on top of everything */ if ( !pm_thirdPerson.GetBool() && !g_skipViewEffects.GetBool() && !player->objectiveSystemOpen && !player->spectating ) { player->DrawHUD( hud ); } if ( net_clientLagOMeter.GetBool() && lagoMaterial && gameLocal.isClient ) { renderSystem->SetColor4( 1.0f, 1.0f, 1.0f, 1.0f ); renderSystem->DrawStretchPic( 10.0f, 380.0f, 64.0f, 64.0f, 0.0f, 0.0f, 1.0f, 1.0f, lagoMaterial ); } }