-void R_MarkLeaves (void);
-
-//cvar_t r_norefresh = {"r_norefresh","0"};
-cvar_t r_drawentities = {"r_drawentities","1"};
-cvar_t r_drawviewmodel = {"r_drawviewmodel","1"};
-cvar_t r_speeds = {"r_speeds","0"};
-cvar_t r_speeds2 = {"r_speeds2","0"};
-cvar_t r_fullbright = {"r_fullbright","0"};
-//cvar_t r_lightmap = {"r_lightmap","0"};
-cvar_t r_shadows = {"r_shadows","0"};
-cvar_t r_wateralpha = {"r_wateralpha","1"};
-cvar_t r_dynamic = {"r_dynamic","1"};
-cvar_t r_novis = {"r_novis","0"};
-cvar_t r_waterripple = {"r_waterripple","0"};
-cvar_t r_fullbrights = {"r_fullbrights", "1"};
-
-cvar_t contrast = {"contrast", "1.0", TRUE}; // LordHavoc: a method of operating system independent color correction
-cvar_t brightness = {"brightness", "1.0", TRUE}; // LordHavoc: a method of operating system independent color correction
-cvar_t gl_lightmode = {"gl_lightmode", "1", TRUE}; // LordHavoc: overbright lighting
-//cvar_t r_dynamicbothsides = {"r_dynamicbothsides", "1"}; // LordHavoc: can disable dynamic lighting of backfaces, but quake maps are weird so it doesn't always work right...
-cvar_t r_farclip = {"r_farclip", "6144"};
-
-cvar_t gl_fogenable = {"gl_fogenable", "0"};
-cvar_t gl_fogdensity = {"gl_fogdensity", "0.25"};
-cvar_t gl_fogred = {"gl_fogred","0.3"};
-cvar_t gl_foggreen = {"gl_foggreen","0.3"};
-cvar_t gl_fogblue = {"gl_fogblue","0.3"};
-cvar_t gl_fogstart = {"gl_fogstart", "0"};
-cvar_t gl_fogend = {"gl_fogend","0"};
-cvar_t glfog = {"glfog", "0"};
-
-qboolean lighthalf;
+cvar_t r_ser = {CVAR_SAVE, "r_ser", "1"};
+//cvar_t gl_viewmodeldepthhack = {0, "gl_viewmodeldepthhack", "1"};
+
+cvar_t r_multitexture = {0, "r_multitexture", "1"};
+
+/*
+====================
+R_TimeRefresh_f
+
+For program optimization
+====================
+*/
+qboolean intimerefresh = 0;
+static void R_TimeRefresh_f (void)
+{
+ int i;
+ float start, stop, time;
+
+ intimerefresh = 1;
+ start = Sys_DoubleTime ();
+ glDrawBuffer (GL_FRONT);
+ for (i = 0;i < 128;i++)
+ {
+ r_refdef.viewangles[0] = 0;
+ r_refdef.viewangles[1] = i/128.0*360.0;
+ r_refdef.viewangles[2] = 0;
+ R_RenderView();
+ }
+ glDrawBuffer (GL_BACK);
+
+ stop = Sys_DoubleTime ();
+ intimerefresh = 0;
+ time = stop-start;
+ Con_Printf ("%f seconds (%f fps)\n", time, 128/time);
+}
+
+extern cvar_t r_drawportals;
+
+int R_VisibleCullBox (vec3_t mins, vec3_t maxs)
+{
+ int sides;
+ mnode_t *nodestack[8192], *node;
+ int stack = 0;
+
+ if (R_CullBox(mins, maxs))
+ return true;
+
+ node = cl.worldmodel->nodes;
+loc0:
+ if (node->contents < 0)
+ {
+ if (((mleaf_t *)node)->visframe == r_framecount)
+ return false;
+ if (!stack)
+ return true;
+ node = nodestack[--stack];
+ goto loc0;
+ }
+
+ sides = BOX_ON_PLANE_SIDE(mins, maxs, node->plane);
+
+// recurse down the contacted sides
+ if (sides & 1)
+ {
+ if (sides & 2) // 3
+ {
+ // put second child on the stack for later examination
+ nodestack[stack++] = node->children[1];
+ node = node->children[0];
+ goto loc0;
+ }
+ else // 1
+ {
+ node = node->children[0];
+ goto loc0;
+ }
+ }
+ // 2
+ node = node->children[1];
+ goto loc0;
+}