]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_rmain.c
added CGVM_Stain function
[xonotic/darkplaces.git] / gl_rmain.c
index 66b20cf8e73651cc6ebea4757f7d4f570e66e4b3..77932da8ba49004f8198ca86ff5ab04176b8f7cc 100644 (file)
@@ -61,7 +61,6 @@ unsigned short        d_lightstylevalue[256]; // 8.8 fraction of base light value
 cvar_t r_drawentities = {0, "r_drawentities","1"};
 cvar_t r_drawviewmodel = {0, "r_drawviewmodel","1"};
 cvar_t r_speeds = {0, "r_speeds","0"};
-cvar_t r_speeds2 = {0, "r_speeds2","0"};
 cvar_t r_fullbright = {0, "r_fullbright","0"};
 //cvar_t       r_lightmap = {0, "r_lightmap","0"};
 cvar_t r_wateralpha = {CVAR_SAVE, "r_wateralpha","1"};
@@ -256,7 +255,6 @@ void GL_Main_Init(void)
        Cvar_RegisterVariable (&r_drawentities);
        Cvar_RegisterVariable (&r_drawviewmodel);
        Cvar_RegisterVariable (&r_speeds);
-       Cvar_RegisterVariable (&r_speeds2);
        Cvar_RegisterVariable (&gl_lightmode);
 //     Cvar_RegisterVariable (&r_dynamicwater);
 //     Cvar_RegisterVariable (&r_dynamicbothsides);
@@ -377,9 +375,9 @@ static void R_MarkEntities (void)
        if (!r_drawentities.integer)
                return;
 
-       for (i = 0;i < cl_numvisedicts;i++)
+       for (i = 0;i < r_refdef.numentities;i++)
        {
-               currentrenderentity = &cl_visedicts[i]->render;
+               currentrenderentity = r_refdef.entities[i];
                Mod_CheckLoaded(currentrenderentity->model);
 
                // move view-relative models to where they should be
@@ -430,9 +428,9 @@ int R_DrawBModelSky (void)
        if (!r_drawentities.integer)
                return false;
 
-       for (i = 0;i < cl_numvisedicts;i++)
+       for (i = 0;i < r_refdef.numentities;i++)
        {
-               currentrenderentity = &cl_visedicts[i]->render;
+               currentrenderentity = r_refdef.entities[i];
                if (currentrenderentity->visframe == r_framecount && currentrenderentity->model->DrawSky)
                {
                        currentrenderentity->model->DrawSky();
@@ -449,9 +447,9 @@ void R_DrawModels (void)
        if (!r_drawentities.integer)
                return;
 
-       for (i = 0;i < cl_numvisedicts;i++)
+       for (i = 0;i < r_refdef.numentities;i++)
        {
-               currentrenderentity = &cl_visedicts[i]->render;
+               currentrenderentity = r_refdef.entities[i];
                if (currentrenderentity->visframe == r_framecount && currentrenderentity->model->Draw)
                        currentrenderentity->model->Draw();
        }
@@ -541,23 +539,8 @@ static void R_SetupFrame (void)
        r_oldviewleaf = r_viewleaf;
        r_viewleaf = Mod_PointInLeaf (r_origin, cl.worldmodel);
 
-       V_SetContentsColor (r_viewleaf->contents);
-       V_CalcBlend ();
-
 //     r_cache_thrash = false;
 
-       c_brush_polys = 0;
-       c_alias_polys = 0;
-       c_light_polys = 0;
-       c_faces = 0;
-       c_nodes = 0;
-       c_leafs = 0;
-       c_models = 0;
-       c_bmodels = 0;
-       c_sprites = 0;
-       c_particles = 0;
-//     c_dlights = 0;
-
        R_AnimateLight ();
 }
 
@@ -589,6 +572,13 @@ static void R_SetupGL (void)
        if (!r_render.integer)
                return;
 
+//     glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // LordHavoc: moved to SCR_UpdateScreen
+       gldepthmin = 0;
+       gldepthmax = 1;
+       glDepthFunc (GL_LEQUAL);
+
+       glDepthRange (gldepthmin, gldepthmax);
+
        // update farclip based on previous frame
        r_farclip = r_newfarclip;
 
@@ -628,36 +618,19 @@ static void R_SetupGL (void)
        glDepthMask(1);
 }
 
-/*
-=============
-R_Clear
-=============
-*/
-static void R_Clear (void)
-{
-       if (!r_render.integer)
-               return;
-//     glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // LordHavoc: moved to SCR_UpdateScreen
-       gldepthmin = 0;
-       gldepthmax = 1;
-       glDepthFunc (GL_LEQUAL);
-
-       glDepthRange (gldepthmin, gldepthmax);
-}
-
-static void GL_BlendView(void)
+static void R_BlendView(void)
 {
        if (!r_render.integer)
                return;
 
-       if (v_blend[3] < 0.01f)
+       if (r_refdef.viewblend[3] < 0.01f)
                return;
 
        glMatrixMode(GL_PROJECTION);
-    glLoadIdentity ();
+       glLoadIdentity ();
        glOrtho  (0, 1, 1, 0, -99999, 99999);
        glMatrixMode(GL_MODELVIEW);
-    glLoadIdentity ();
+       glLoadIdentity ();
        glDisable (GL_DEPTH_TEST);
        glDisable (GL_CULL_FACE);
        glDisable(GL_TEXTURE_2D);
@@ -665,9 +638,9 @@ static void GL_BlendView(void)
        glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glBegin (GL_TRIANGLES);
        if (lighthalf)
-               glColor4f (v_blend[0] * 0.5f, v_blend[1] * 0.5f, v_blend[2] * 0.5f, v_blend[3]);
+               glColor4f (r_refdef.viewblend[0] * 0.5f, r_refdef.viewblend[1] * 0.5f, r_refdef.viewblend[2] * 0.5f, r_refdef.viewblend[3]);
        else
-               glColor4fv (v_blend);
+               glColor4fv (r_refdef.viewblend);
        glVertex2f (-5, -5);
        glVertex2f (10, -5);
        glVertex2f (-5, 10);
@@ -686,76 +659,14 @@ R_RenderView
 r_refdef must be set before the first call
 ================
 */
-char r_speeds2_string[1024];
-int speedstringcount;
-
-void timestring(int t, char *desc)
-{
-       char tempbuf[256];
-       int length;
-       if (t < 1000000)
-               sprintf(tempbuf, "%6ius %s", t, desc);
-       else
-               sprintf(tempbuf, "%6ims %s", t / 1000, desc);
-       length = strlen(tempbuf);
-//     while (length < 20)
-//             tempbuf[length++] = ' ';
-//     tempbuf[length] = 0;
-       if (speedstringcount + length > (vid.conwidth / 8))
-       {
-               strcat(r_speeds2_string, "\n");
-               speedstringcount = 0;
-       }
-       // skip the space at the beginning if it's the first on the line
-       if (speedstringcount == 0)
-       {
-               strcat(r_speeds2_string, tempbuf + 1);
-               speedstringcount = length - 1;
-       }
-       else
-       {
-               strcat(r_speeds2_string, tempbuf);
-               speedstringcount += length;
-       }
-}
-
-#define TIMEREPORT(NAME) \
-       if (r_speeds2.integer)\
-       {\
-               temptime = currtime;\
-               currtime = Sys_DoubleTime();\
-               timestring((int) ((currtime - temptime) * 1000000.0), NAME);\
-       }
-
 void R_RenderView (void)
 {
-       double starttime, currtime, temptime;
-
        if (!cl.worldmodel)
                Host_Error ("R_RenderView: NULL worldmodel");
 
-       if (r_speeds2.integer)
-       {
-               speedstringcount = 0;
-               sprintf(r_speeds2_string, "org:'%c%6.2f %c%6.2f %c%6.2f' ang:'%c%3.0f %c%3.0f %c%3.0f' dir:'%c%2.3f %c%2.3f %c%2.3f'\n%6i walls %6i dlitwalls %7i modeltris %7i meshtris\nBSP: %6i faces %6i nodes %6i leafs\n%4i models %4i bmodels %4i sprites %5i particles %3i dlights\n",
-                       r_origin[0] < 0 ? '-' : ' ', fabs(r_origin[0]), r_origin[1] < 0 ? '-' : ' ', fabs(r_origin[1]), r_origin[2] < 0 ? '-' : ' ', fabs(r_origin[2]), r_refdef.viewangles[0] < 0 ? '-' : ' ', fabs(r_refdef.viewangles[0]), r_refdef.viewangles[1] < 0 ? '-' : ' ', fabs(r_refdef.viewangles[1]), r_refdef.viewangles[2] < 0 ? '-' : ' ', fabs(r_refdef.viewangles[2]), vpn[0] < 0 ? '-' : ' ', fabs(vpn[0]), vpn[1] < 0 ? '-' : ' ', fabs(vpn[1]), vpn[2] < 0 ? '-' : ' ', fabs(vpn[2]),
-                       c_brush_polys, c_light_polys, c_alias_polys, c_meshtris,
-                       c_faces, c_nodes, c_leafs,
-                       c_models, c_bmodels, c_sprites, c_particles, c_dlights);
-
-               starttime = currtime = Sys_DoubleTime();
-       }
-       else
-               starttime = currtime = 0;
-
        // FIXME: move to client
        R_MoveExplosions();
-       TIMEREPORT("mexplosion")
-
-       R_Clear();
-       TIMEREPORT("clear     ")
-
-       // render normal view
+       R_TimeReport("mexplosion");
 
        R_SetupFrame();
        R_SetFrustum();
@@ -767,70 +678,72 @@ void R_RenderView (void)
                R_Clip_StartFrame();
        R_BuildLightList();
 
-       TIMEREPORT("setup     ")
+       R_TimeReport("setup");
 
        R_DrawWorld();
-       TIMEREPORT("worldnode ")
+       R_TimeReport("worldnode");
 
        R_MarkEntities();
-       TIMEREPORT("markentity")
+       R_TimeReport("markentity");
 
        if (r_ser.integer)
        {
                R_Clip_EndFrame();
-       TIMEREPORT("hiddensurf")
+               R_TimeReport("hiddensurf");
        }
 
        R_MarkWorldLights();
-       TIMEREPORT("marklights")
+       R_TimeReport("marklights");
 
        if (skyrendermasked && R_DrawBModelSky())
        {
-       TIMEREPORT("bmodelsky ")
+               R_TimeReport("bmodelsky");
        }
 
        R_SetupForWorldRendering();
        R_PrepareSurfaces();
-       TIMEREPORT("surfprep  ")
+       R_TimeReport("surfprep");
 
        R_DrawSurfacesAll();
-       TIMEREPORT("surf      ")
+       R_TimeReport("surfdraw");
 
        if (r_drawportals.integer)
        {
                R_DrawPortals();
-       TIMEREPORT("portals   ")
+               R_TimeReport("portals");
        }
 
        // don't let sound skip if going slow
-       if (!intimerefresh && !r_speeds2.integer)
+       if (!intimerefresh && !r_speeds.integer)
                S_ExtraUpdate ();
 
        R_DrawViewModel();
        R_DrawModels();
-       TIMEREPORT("models    ")
+       R_TimeReport("models");
 
        R_DrawDecals();
-       TIMEREPORT("decals    ")
+       R_TimeReport("decals");
 
        R_DrawParticles();
-       TIMEREPORT("particles ")
+       R_TimeReport("particles");
 
        R_DrawExplosions();
-       TIMEREPORT("explosions")
+       R_TimeReport("explosions");
 
        // draw transparent meshs
        R_Mesh_AddTransparent();
-       TIMEREPORT("transmesh ")
+       R_TimeReport("addtrans");
+
+       R_DrawCoronas();
+       R_TimeReport("coronas");
 
        // render any queued meshs
        R_Mesh_Render();
-       TIMEREPORT("finishmesh")
+       R_TimeReport("meshrender");
 
-       GL_BlendView();
-       TIMEREPORT("blend     ")
+       R_BlendView();
+       R_TimeReport("blendview");
 
-       if (r_speeds2.integer)
-               timestring((int) ((Sys_DoubleTime() - starttime) * 1000000.0),
-                  "total     ");
+       //Mem_CheckSentinelsGlobal();
+       //R_TimeReport("memtest");
 }