MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / ApplyPostEffects

Function ApplyPostEffects

Source/Main/engine.cpp:2479–2898  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2477}
2478
2479void ApplyPostEffects(std::string post_shader, Engine::DrawingViewport drawing_viewport, vec2 active_screen_start, vec2 active_screen_end, Engine::PostEffectsType post_effects_type, const VBOContainer& quad_vert_vbo, const VBOContainer& quad_index_vbo) {
2480 ;
2481 Shaders* shaders = Shaders::Instance();
2482 Textures* textures = Textures::Instance();
2483 Graphics* graphics = Graphics::Instance();
2484 Camera* camera = ActiveCameras::Get();
2485
2486 PROFILER_GPU_ZONE(g_profiler_ctx, "Apply post effects");
2487 graphics->PopFramebuffer();
2488
2489 if (graphics->multisample_framebuffer_exists) {
2490 PROFILER_GPU_ZONE(g_profiler_ctx, "Blit MSAA color buffer");
2491 graphics->BlitColorBuffer();
2492 }
2493
2494 if (kDrawHistogram) {
2495 CreateHistogram(graphics->screen_color_tex);
2496 }
2497
2498 GLState gl_state;
2499 gl_state.blend = false;
2500 gl_state.cull_face = false;
2501 gl_state.depth_test = false;
2502 gl_state.depth_write = false;
2503 graphics->setGLState(gl_state);
2504
2505 // Blur screen
2506 quad_vert_vbo.Bind();
2507 quad_index_vbo.Bind();
2508 CHECK_GL_ERROR();
2509
2510 if (post_effects_type == Engine::kStraight) {
2511 PROFILER_GPU_ZONE(g_profiler_ctx, "Draw unfiltered screen quad");
2512 // Draw unfiltered HDR scene (e.g. for reflection capture)
2513 int shader_id = shaders->returnProgram(post_shader);
2514 graphics->PushViewport();
2515 if (drawing_viewport != Engine::kViewport) {
2516 graphics->setViewport(0, 0, graphics->window_dims[0], graphics->window_dims[1]);
2517 } else {
2518 glViewport(0, 0, graphics->window_dims[0], graphics->window_dims[1]);
2519 }
2520 shaders->setProgram(shader_id);
2521 textures->bindTexture(graphics->screen_color_tex);
2522 // glEnable(GL_FRAMEBUFFER_SRGB );
2523 DrawQuad(shader_id);
2524 // glDisable(GL_FRAMEBUFFER_SRGB );
2525 graphics->PopViewport();
2526 graphics->PopViewport();
2527 } /*else if(post_effects_type == Engine::kFinal && drawing_viewport == Engine::kViewport){
2528 PROFILER_GPU_ZONE(g_profiler_ctx, "Tone map only");
2529 int shader_id = shaders->returnProgram(post_shader + " #TONE_MAP");
2530 graphics->PushViewport();
2531 glViewport(0,0,graphics->window_dims[0],graphics->window_dims[1]);
2532 shaders->setProgram(shader_id);
2533 textures->bindTexture(graphics->screen_color_tex);
2534 glEnable(GL_FRAMEBUFFER_SRGB );
2535 DrawQuad(shader_id);
2536 glDisable(GL_FRAMEBUFFER_SRGB );

Callers 1

DrawSceneMethod · 0.85

Calls 15

CreateHistogramFunction · 0.85
maxFunction · 0.85
RangedRandomFloatFunction · 0.85
PopFramebufferMethod · 0.80
BlitColorBufferMethod · 0.80
setGLStateMethod · 0.80
returnProgramMethod · 0.80
PushViewportMethod · 0.80
setProgramMethod · 0.80
bindTextureMethod · 0.80
PopViewportMethod · 0.80
PushFramebufferMethod · 0.80

Tested by

no test coverage detected