-extern void GL_Draw_Init();
-extern void GL_Main_Init();
-extern void GL_Models_Init();
-extern void GL_Poly_Init();
-extern void GL_Surf_Init();
-extern void GL_Screen_Init();
-extern void GL_Misc_Init();
-extern void R_Crosshairs_Init();
-extern void R_Light_Init();
-extern void R_Particles_Init();
-extern void R_Explosion_Init();
-extern void CL_Effects_Init();
-
-void Render_Init()
+vec3_t r_farclip_origin;
+vec3_t r_farclip_direction;
+vec_t r_farclip_directiondist;
+vec_t r_farclip_meshfarclip;
+int r_farclip_directionbit0;
+int r_farclip_directionbit1;
+int r_farclip_directionbit2;
+
+// start a farclip measuring session
+void R_FarClip_Start(vec3_t origin, vec3_t direction, vec_t startfarclip)
+{
+ VectorCopy(origin, r_farclip_origin);
+ VectorCopy(direction, r_farclip_direction);
+ r_farclip_directiondist = DotProduct(r_farclip_origin, r_farclip_direction);
+ r_farclip_directionbit0 = r_farclip_direction[0] < 0;
+ r_farclip_directionbit1 = r_farclip_direction[1] < 0;
+ r_farclip_directionbit2 = r_farclip_direction[2] < 0;
+ r_farclip_meshfarclip = r_farclip_directiondist + startfarclip;
+}
+
+// enlarge farclip to accomodate box
+void R_FarClip_Box(vec3_t mins, vec3_t maxs)
+{
+ float d;
+ d = (r_farclip_directionbit0 ? mins[0] : maxs[0]) * r_farclip_direction[0]
+ + (r_farclip_directionbit1 ? mins[1] : maxs[1]) * r_farclip_direction[1]
+ + (r_farclip_directionbit2 ? mins[2] : maxs[2]) * r_farclip_direction[2];
+ if (r_farclip_meshfarclip < d)
+ r_farclip_meshfarclip = d;
+}
+
+// return farclip value
+float R_FarClip_Finish(void)
+{
+ return r_farclip_meshfarclip - r_farclip_directiondist;
+}
+
+/*
+===============
+R_NewMap
+===============
+*/
+void CL_ParseEntityLump(char *entitystring);
+void R_NewMap (void)
+{
+ int i;
+
+ for (i = 0;i < 256;i++)
+ d_lightstylevalue[i] = 264; // normal light value
+
+ r_viewleaf = NULL;
+ if (cl.worldmodel->entities)
+ CL_ParseEntityLump(cl.worldmodel->entities);
+ R_Modules_NewMap();
+
+ r_farclip = 64.0f;
+}
+
+extern void R_Textures_Init(void);
+extern void Mod_RenderInit(void);
+extern void GL_Draw_Init(void);
+extern void GL_Main_Init(void);
+extern void GL_Models_Init(void);
+extern void R_Sky_Init(void);
+extern void GL_Surf_Init(void);
+extern void R_Crosshairs_Init(void);
+extern void R_Light_Init(void);
+extern void R_Particles_Init(void);
+extern void R_Explosion_Init(void);
+extern void ui_init(void);
+extern void gl_backend_init(void);
+
+void Render_Init(void)