/* ================= R_RenderGuiSurf Create a texture space on the given surface and call the GUI generator to create quads for it. ================= */ static void R_RenderGuiSurf( idUserInterface* gui, const drawSurf_t* drawSurf ) { SCOPED_PROFILE_EVENT( "R_RenderGuiSurf" ); // for testing the performance hit if( r_skipGuiShaders.GetInteger() == 1 ) { return; } // don't allow an infinite recursion loop if( tr.guiRecursionLevel == 4 ) { return; } tr.pc.c_guiSurfs++; // create the new matrix to draw on this surface idVec3 origin, axis[3]; R_SurfaceToTextureAxis( drawSurf->frontEndGeo, origin, axis ); float guiModelMatrix[16]; float modelMatrix[16]; guiModelMatrix[0 * 4 + 0] = axis[0][0] * ( 1.0f / 640.0f ); guiModelMatrix[1 * 4 + 0] = axis[1][0] * ( 1.0f / 480.0f ); guiModelMatrix[2 * 4 + 0] = axis[2][0]; guiModelMatrix[3 * 4 + 0] = origin[0]; guiModelMatrix[0 * 4 + 1] = axis[0][1] * ( 1.0f / 640.0f ); guiModelMatrix[1 * 4 + 1] = axis[1][1] * ( 1.0f / 480.0f ); guiModelMatrix[2 * 4 + 1] = axis[2][1]; guiModelMatrix[3 * 4 + 1] = origin[1]; guiModelMatrix[0 * 4 + 2] = axis[0][2] * ( 1.0f / 640.0f ); guiModelMatrix[1 * 4 + 2] = axis[1][2] * ( 1.0f / 480.0f ); guiModelMatrix[2 * 4 + 2] = axis[2][2]; guiModelMatrix[3 * 4 + 2] = origin[2]; guiModelMatrix[0 * 4 + 3] = 0.0f; guiModelMatrix[1 * 4 + 3] = 0.0f; guiModelMatrix[2 * 4 + 3] = 0.0f; guiModelMatrix[3 * 4 + 3] = 1.0f; R_MatrixMultiply( guiModelMatrix, drawSurf->space->modelMatrix, modelMatrix ); tr.guiRecursionLevel++; // call the gui, which will call the 2D drawing functions tr.guiModel->Clear(); gui->Redraw( tr.viewDef->renderView.time[0] ); tr.guiModel->EmitToCurrentView( modelMatrix, drawSurf->space->weaponDepthHack ); tr.guiModel->Clear(); tr.guiRecursionLevel--; }
/* ================= R_RenderGuiSurf Create a texture space on the given surface and call the GUI generator to create quads for it. ================= */ void R_RenderGuiSurf( idUserInterface *gui, drawSurf_t *drawSurf ) { idVec3 origin, axis[3]; // for testing the performance hit if ( r_skipGuiShaders.GetInteger() == 1 ) { return; } // don't allow an infinite recursion loop if ( tr.guiRecursionLevel == 4 ) { return; } tr.pc.c_guiSurfs++; // create the new matrix to draw on this surface R_SurfaceToTextureAxis( drawSurf->geo, origin, axis ); float guiModelMatrix[16]; float modelMatrix[16]; guiModelMatrix[0] = axis[0][0] / 640.0; guiModelMatrix[4] = axis[1][0] / 480.0; guiModelMatrix[8] = axis[2][0]; guiModelMatrix[12] = origin[0]; guiModelMatrix[1] = axis[0][1] / 640.0; guiModelMatrix[5] = axis[1][1] / 480.0; guiModelMatrix[9] = axis[2][1]; guiModelMatrix[13] = origin[1]; guiModelMatrix[2] = axis[0][2] / 640.0; guiModelMatrix[6] = axis[1][2] / 480.0; guiModelMatrix[10] = axis[2][2]; guiModelMatrix[14] = origin[2]; guiModelMatrix[3] = 0; guiModelMatrix[7] = 0; guiModelMatrix[11] = 0; guiModelMatrix[15] = 1; myGlMultMatrix( guiModelMatrix, drawSurf->space->modelMatrix, modelMatrix ); tr.guiRecursionLevel++; // call the gui, which will call the 2D drawing functions tr.guiModel->Clear(); gui->Redraw( tr.viewDef->renderView.time ); tr.guiModel->EmitToCurrentView( modelMatrix, drawSurf->space->weaponDepthHack ); tr.guiModel->Clear(); tr.guiRecursionLevel--; }