/* ============= RB_DrawView ============= */ void RB_DrawView( const void *data ) { const drawSurfsCommand_t *cmd; cmd = (const drawSurfsCommand_t *)data; backEnd.viewDef = cmd->viewDef; // we will need to do a new copyTexSubImage of the screen // when a SS_POST_PROCESS material is used backEnd.currentRenderCopied = false; // if there aren't any drawsurfs, do nothing if ( !backEnd.viewDef->numDrawSurfs ) { return; } // skip render bypasses everything that has models, assuming // them to be 3D views, but leaves 2D rendering visible if ( r_skipRender.GetBool() && backEnd.viewDef->viewEntitys ) { return; } // skip render context sets the wgl context to NULL, // which should factor out the API cost, under the assumption // that all gl calls just return if the context isn't valid if ( r_skipRenderContext.GetBool() && backEnd.viewDef->viewEntitys ) { GLimp_DeactivateContext(); } backEnd.pc.c_surfaces += backEnd.viewDef->numDrawSurfs; RB_ShowOverdraw(); // render the scene, jumping to the hardware specific interaction renderers RB_STD_DrawView(); // restore the context for 2D drawing if we were stubbing it out if ( r_skipRenderContext.GetBool() && backEnd.viewDef->viewEntitys ) { GLimp_ActivateContext(); RB_SetDefaultGLState(); } }
/* ============= RB_DrawSSAOView ============= */ void RB_DrawSSAOView( const void *data ) { const drawSurfsCommand_t *cmd; cmd = (const drawSurfsCommand_t *)data; backEnd.viewDef = cmd->viewDef; // we will need to do a new copyTexSubImage of the screen // when a SS_POST_PROCESS material is used backEnd.currentRenderCopied = false; // if there aren't any drawsurfs, do nothing if ( !backEnd.viewDef->numDrawSurfs ) { return; } // skip render bypasses everything that has models, assuming // them to be 3D views, but leaves 2D rendering visible if ( r_skipRender.GetBool() && backEnd.viewDef->viewEntitys ) { return; } // skip render context sets the wgl context to NULL, // which should factor out the API cost, under the assumption // that all gl calls just return if the context isn't valid if ( r_skipRenderContext.GetBool() && backEnd.viewDef->viewEntitys ) { GLimp_DeactivateContext(); } backEnd.pc.c_surfaces += backEnd.viewDef->numDrawSurfs; // RB_ShowOverdraw(); // render the scene, jumping to the hardware specific interaction renderers // RB_STD_DrawView(); drawSurf_t **drawSurfs; int numDrawSurfs; RB_LogComment( "---------- RB_STD_DrawView ----------\n" ); backEnd.depthFunc = GLS_DEPTHFUNC_EQUAL; drawSurfs = (drawSurf_t **)&backEnd.viewDef->drawSurfs[0]; numDrawSurfs = backEnd.viewDef->numDrawSurfs; // clear the z buffer, set the projection matrix, etc RB_BeginDrawingView(); // decide how much overbrighting we are going to do //RB_DetermineLightScale(); // fill the depth buffer and clear color buffer to black except on // subviews RB_STD_FillDepthBuffer( drawSurfs, numDrawSurfs ); // ---> sikk - copy of current depth buffer globalImages->currentDepthImage->CopyDepthbuffer( backEnd.viewDef->viewport.x1, backEnd.viewDef->viewport.y1, backEnd.viewDef->viewport.x2 - backEnd.viewDef->viewport.x1 + 1, backEnd.viewDef->viewport.y2 - backEnd.viewDef->viewport.y1 + 1 ); // <--- sikk - copy of current depth buffer // restore the context for 2D drawing if we were stubbing it out if ( r_skipRenderContext.GetBool() && backEnd.viewDef->viewEntitys ) { GLimp_ActivateContext(); RB_SetDefaultGLState(); } }