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

Method DrawScene

Source/Main/engine.cpp:2900–3019  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2898}
2899
2900void Engine::DrawScene(DrawingViewport drawing_viewport, Engine::PostEffectsType post_effects_type, SceneGraph::SceneDrawType scene_draw_type) {
2901 PROFILER_GPU_ZONE(g_profiler_ctx, "Draw scene")
2902 Graphics* graphics = Graphics::Instance();
2903 PushGPUProfileRange(__FUNCTION__);
2904 GLenum buffers[] = {GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT};
2905
2906 {
2907 PROFILER_GPU_ZONE(g_profiler_ctx, "Setup Post Effects")
2908 graphics->PushFramebuffer();
2909 if (graphics->multisample_framebuffer_exists) {
2910 graphics->bindFramebuffer(graphics->multisample_framebuffer);
2911 } else {
2912 graphics->bindFramebuffer(graphics->framebuffer);
2913 }
2914 graphics->PushViewport();
2915 }
2916
2917 // Prepare for drawing
2918 {
2919 PROFILER_GPU_ZONE(g_profiler_ctx, "Clear screen");
2920 glDrawBuffers(2, buffers);
2921 glClearColor(0.0f, 0.0f, 0.0f, 0);
2922 graphics->drawing_shadow = false;
2923 graphics->Clear(true);
2924 glDrawBuffers(1, buffers);
2925 }
2926
2927 {
2928 PROFILER_GPU_ZONE(g_profiler_ctx, "Apply viewpoint");
2929 ActiveCameras::Get()->applyViewpoint();
2930
2931 std::vector<Camera>& virt_cam = ActiveCameras::Instance()->GetVirtualCameras();
2932
2933 for (auto& cam : virt_cam) {
2934 cam.applyViewpoint();
2935 }
2936 }
2937
2938 { // Perform per-frame, per-camera functions, like character LOD and spawning grass
2939 PROFILER_GPU_ZONE(g_profiler_ctx, "Pre-draw camera");
2940 ActiveCameras::Get()->tint = vec3(1.0);
2941 ActiveCameras::Get()->vignette_tint = vec3(1.0);
2942 float predraw_time = game_timer.GetRenderTime();
2943 for (auto obj : scenegraph_->objects_) {
2944 if (!obj->parent) {
2945 obj->PreDrawCamera(predraw_time);
2946 }
2947 }
2948 }
2949
2950 if (!g_no_decals) {
2951 scenegraph_->PrepareLightsAndDecals(active_screen_start, active_screen_end, vec2(graphics->render_dims[0], graphics->render_dims[1]));
2952 }
2953
2954 // Draw everything
2955 {
2956 PROFILER_GPU_ZONE(g_profiler_ctx, "Draw scenegraph");
2957 if (graphics->depth_prepass) {

Callers 1

DrawImGuiCameraPreviewFunction · 0.80

Calls 15

PushGPUProfileRangeFunction · 0.85
ApplyPostEffectsFunction · 0.85
PopGPUProfileRangeFunction · 0.85
PushFramebufferMethod · 0.80
bindFramebufferMethod · 0.80
PushViewportMethod · 0.80
applyViewpointMethod · 0.80
GetRenderTimeMethod · 0.80
GetProjMatrixMethod · 0.80
GetViewMatrixMethod · 0.80
BlitDepthBufferMethod · 0.80

Tested by

no test coverage detected