From 8c9035723498841b847ce5352c3f1088971cb0e2 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sun, 17 Dec 2000 22:07:06 +0000 Subject: [PATCH] subdivided skys are back. it seems some cards don't like big polys. gl_sky_divide (default 1) controls this. --- include/glquake.h | 3 ++- source/gl_rmain.c | 1 + source/gl_rmisc.c | 2 ++ source/gl_rsurf.c | 2 ++ source/model_brush.c | 6 ++++-- source/r_main.c | 9 ++++----- source/sv_model.c | 1 + 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/include/glquake.h b/include/glquake.h index 8ef9f37..be13883 100644 --- a/include/glquake.h +++ b/include/glquake.h @@ -222,8 +222,9 @@ extern cvar_t *gl_max_size; extern cvar_t *gl_playermip; extern cvar_t *r_skyname; -extern cvar_t *gl_skymultipass; +extern cvar_t *gl_skymultipass; extern cvar_t *gl_sky_clip; +extern cvar_t *gl_sky_divide; extern float r_world_matrix[16]; diff --git a/source/gl_rmain.c b/source/gl_rmain.c index 9beb183..fa7b4d8 100644 --- a/source/gl_rmain.c +++ b/source/gl_rmain.c @@ -122,6 +122,7 @@ cvar_t *gl_lerp_anim; cvar_t *r_skyname; cvar_t *gl_skymultipass; cvar_t *gl_sky_clip; +cvar_t *gl_sky_divide; cvar_t *gl_fb_models; cvar_t *gl_fb_bmodels; diff --git a/source/gl_rmisc.c b/source/gl_rmisc.c index 426ded1..8817d48 100644 --- a/source/gl_rmisc.c +++ b/source/gl_rmisc.c @@ -270,6 +270,8 @@ R_Init_Cvars (void) "controls whether the skydome is single or double pass"); gl_sky_clip = Cvar_Get ("gl_sky_clip", "0", CVAR_NONE, "controls whether sky is drawn first (0) or later (1)"); + gl_sky_divide = Cvar_Get ("gl_sky_divide", "1", CVAR_ARCHIVE, + "subdivide sky polys"); } /* diff --git a/source/gl_rsurf.c b/source/gl_rsurf.c index f47ad3c..a1f0893 100644 --- a/source/gl_rsurf.c +++ b/source/gl_rsurf.c @@ -1304,6 +1304,8 @@ GL_BuildLightmaps (void) for (i = 0; i < m->numsurfaces; i++) { if (m->surfaces[i].flags & SURF_DRAWTURB) continue; + if (gl_sky_divide->int_val && (m->surfaces[i].flags & SURF_DRAWSKY)) + continue; GL_CreateSurfaceLightmap (m->surfaces + i); BuildSurfaceDisplayList (m->surfaces + i); } diff --git a/source/model_brush.c b/source/model_brush.c index d0986b2..51e8f8c 100644 --- a/source/model_brush.c +++ b/source/model_brush.c @@ -35,6 +35,7 @@ #include #include +#include "cvar.h" #include "model.h" #include "qendian.h" #include "server.h" @@ -48,6 +49,7 @@ extern const int mod_lightmap_bytes; byte mod_novis[MAX_MAP_LEAFS / 8]; void GL_SubdivideSurface (msurface_t *fa); +extern cvar_t *gl_sky_divide; /* =============== @@ -578,9 +580,9 @@ Mod_LoadFaces (lump_t *l) if (!strncmp (out->texinfo->texture->name, "sky", 3)) // sky { - void BuildSurfaceDisplayList (msurface_t *); - out->flags |= (SURF_DRAWSKY | SURF_DRAWTILED); + if (gl_sky_divide && gl_sky_divide->int_val) + GL_SubdivideSurface (out); continue; } diff --git a/source/r_main.c b/source/r_main.c index f2359ce..72d1735 100644 --- a/source/r_main.c +++ b/source/r_main.c @@ -164,6 +164,7 @@ cvar_t *r_aliastransbase; cvar_t *r_aliastransadj; cvar_t *gl_flashblend; +cvar_t *gl_sky_divide; extern cvar_t *scr_fov; @@ -282,11 +283,9 @@ R_Init_Cvars (void) r_numedges = Cvar_Get ("r_numedges", "0", CVAR_NONE, "None"); r_aliastransbase = Cvar_Get ("r_aliastransbase", "200", CVAR_NONE, "None"); r_aliastransadj = Cvar_Get ("r_aliastransadj", "100", CVAR_NONE, "None"); - gl_flashblend = Cvar_Get ("gl_flashblend", "0", CVAR_NONE, "None"); // FIXME: - // remove - // this! - // --KB - + gl_flashblend = Cvar_Get ("gl_flashblend", "0", CVAR_NONE, "None"); + gl_sky_divide = Cvar_Get ("gl_sky_divide", "1", CVAR_ARCHIVE, + "subdivide sky polys"); } /* diff --git a/source/sv_model.c b/source/sv_model.c index d051248..3806f58 100644 --- a/source/sv_model.c +++ b/source/sv_model.c @@ -41,6 +41,7 @@ const int mod_lightmap_bytes = 1; mplane_t frustum[4]; +cvar_t *gl_sky_divide; // not used but needed for linking void Mod_LoadBrushModel (model_t *mod, void *buffer);