]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_rmain.c
added r_surfaceworldnode and r_cullsurface cvars (it is recommended that these both...
[xonotic/darkplaces.git] / gl_rmain.c
index b16a2bda9d66f3d0f51518fa74c030e928e3b219..684e22482f314d81c9ba418d986d721b688109fa 100644 (file)
@@ -121,8 +121,6 @@ static void R_TimeRefresh_f (void)
        Con_Printf ("%f seconds (%f fps)\n", time, 128/time);
 }
 
-extern cvar_t r_drawportals;
-
 vec3_t fogcolor;
 vec_t fogdensity;
 float fog_density, fog_red, fog_green, fog_blue;
@@ -401,6 +399,28 @@ int R_DrawBrushModelsSky (void)
        return sky;
 }
 
+/*
+=============
+R_DrawViewModel
+=============
+*/
+void R_DrawViewModel (void)
+{
+       entity_render_t *ent;
+
+       // FIXME: move these checks to client
+       if (!r_drawviewmodel.integer || chase_active.integer || envmap || !r_drawentities.integer || cl.items & IT_INVISIBILITY || cl.stats[STAT_HEALTH] <= 0 || !cl.viewent.render.model)
+               return;
+
+       ent = &cl.viewent.render;
+       Mod_CheckLoaded(ent->model);
+       R_LerpAnimation(ent);
+       Matrix4x4_CreateFromQuakeEntity(&ent->matrix, ent->origin[0], ent->origin[1], ent->origin[2], -ent->angles[0], ent->angles[1], ent->angles[2], ent->scale);
+       Matrix4x4_Invert_Simple(&ent->inversematrix, &ent->matrix);
+       R_UpdateEntLights(ent);
+       ent->model->Draw(ent);
+}
+
 void R_DrawNoModel(entity_render_t *ent);
 void R_DrawModels (void)
 {
@@ -410,6 +430,7 @@ void R_DrawModels (void)
        if (!r_drawentities.integer)
                return;
 
+       R_DrawViewModel();
        for (i = 0;i < r_refdef.numentities;i++)
        {
                ent = r_refdef.entities[i];
@@ -426,28 +447,6 @@ void R_DrawModels (void)
        }
 }
 
-/*
-=============
-R_DrawViewModel
-=============
-*/
-void R_DrawViewModel (void)
-{
-       entity_render_t *ent;
-
-       // FIXME: move these checks to client
-       if (!r_drawviewmodel.integer || chase_active.integer || envmap || !r_drawentities.integer || cl.items & IT_INVISIBILITY || cl.stats[STAT_HEALTH] <= 0 || !cl.viewent.render.model)
-               return;
-
-       ent = &cl.viewent.render;
-       Mod_CheckLoaded(ent->model);
-       R_LerpAnimation(ent);
-       Matrix4x4_CreateFromQuakeEntity(&ent->matrix, ent->origin[0], ent->origin[1], ent->origin[2], -ent->angles[0], ent->angles[1], ent->angles[2], ent->scale);
-       Matrix4x4_Invert_Simple(&ent->inversematrix, &ent->matrix);
-       R_UpdateEntLights(ent);
-       ent->model->Draw(ent);
-}
-
 static void R_SetFrustum (void)
 {
        int i;
@@ -576,35 +575,6 @@ void R_RenderView (void)
        if (R_DrawBrushModelsSky())
                R_TimeReport("bmodelsky");
 
-       if (world->model)
-       {
-               R_DrawWorld(world);
-               R_TimeReport("worldnode");
-
-               R_SurfMarkLights(world);
-               R_TimeReport("marklights");
-
-               R_PrepareSurfaces(world);
-               R_TimeReport("surfprep");
-
-               R_DrawSurfaces(world, SHADERSTAGE_SKY);
-               R_DrawSurfaces(world, SHADERSTAGE_NORMAL);
-               R_TimeReport("surfdraw");
-
-               if (r_drawportals.integer)
-               {
-                       R_DrawPortals(world);
-                       R_TimeReport("portals");
-               }
-       }
-
-       // don't let sound skip if going slow
-       if (!intimerefresh && !r_speeds.integer)
-               S_ExtraUpdate ();
-
-       R_DrawViewModel();
-       R_TimeReport("viewmodel");
-
        R_DrawModels();
        R_TimeReport("models");
 
@@ -614,8 +584,15 @@ void R_RenderView (void)
        R_DrawExplosions();
        R_TimeReport("explosions");
 
+       // don't let sound skip if going slow
+       if (!intimerefresh && !r_speeds.integer)
+               S_ExtraUpdate ();
+
+       R_DrawWorld(world);
+       R_TimeReport("world");
+
        R_MeshQueue_RenderTransparent();
-       R_TimeReport("addtrans");
+       R_TimeReport("drawtrans");
 
        R_DrawCoronas();
        R_TimeReport("coronas");