mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-07 00:11:39 +00:00
Reduce ifs a bit, clean up init a bit. Minor problem with gl_doublebright. LIH.
This commit is contained in:
parent
e29e469646
commit
fde6e5bf61
2 changed files with 59 additions and 72 deletions
|
@ -75,6 +75,8 @@ qboolean lightmap_modified[MAX_GLTEXTURES];
|
||||||
glpoly_t *lightmap_polys[MAX_LIGHTMAPS];
|
glpoly_t *lightmap_polys[MAX_LIGHTMAPS];
|
||||||
glRect_t lightmap_rectchange[MAX_LIGHTMAPS];
|
glRect_t lightmap_rectchange[MAX_LIGHTMAPS];
|
||||||
|
|
||||||
|
static int lshift, lshift2;
|
||||||
|
|
||||||
void (*R_BuildLightMap) (msurface_t *surf);
|
void (*R_BuildLightMap) (msurface_t *surf);
|
||||||
|
|
||||||
|
|
||||||
|
@ -290,31 +292,20 @@ R_BuildLightMap_1 (msurface_t *surf)
|
||||||
dest = lightmaps[surf->lightmaptexturenum]
|
dest = lightmaps[surf->lightmaptexturenum]
|
||||||
+ (surf->light_t * BLOCK_WIDTH + surf->light_s) * lightmap_bytes;
|
+ (surf->light_t * BLOCK_WIDTH + surf->light_s) * lightmap_bytes;
|
||||||
|
|
||||||
switch (gl_overbright->int_val) {
|
if (lshift2) {
|
||||||
case 2:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
for (i = 0; i < tmax; i++, dest += stride) {
|
||||||
for (j = smax; j; j--) {
|
for (j = smax; j; j--) {
|
||||||
*dest++ = min (*bl >> 9, 255);
|
*dest++ = min ((*bl >> lshift) + (*bl >> lshift2), 255);
|
||||||
bl++;
|
bl++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
case 1:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
for (i = 0; i < tmax; i++, dest += stride) {
|
||||||
for (j = smax; j; j--) {
|
for (j = smax; j; j--) {
|
||||||
*dest++ = min ((*bl >> 9) + (*bl >> 10), 255);
|
*dest++ = min (*bl >> lshift, 255);
|
||||||
bl++;
|
bl++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
default:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
|
||||||
for (j = smax; j; j--) {
|
|
||||||
*dest++ = min (*bl >> 8, 255);
|
|
||||||
bl++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,43 +362,28 @@ R_BuildLightMap_3 (msurface_t *surf)
|
||||||
dest = lightmaps[surf->lightmaptexturenum]
|
dest = lightmaps[surf->lightmaptexturenum]
|
||||||
+ (surf->light_t * BLOCK_WIDTH + surf->light_s) * lightmap_bytes;
|
+ (surf->light_t * BLOCK_WIDTH + surf->light_s) * lightmap_bytes;
|
||||||
|
|
||||||
switch (gl_overbright->int_val) {
|
if (lshift2) {
|
||||||
case 2:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
for (i = 0; i < tmax; i++, dest += stride) {
|
||||||
for (j = 0; j < smax; j++) {
|
for (j = 0; j < smax; j++) {
|
||||||
*dest++ = min (*bl >> 9, 255);
|
*dest++ = min ((*bl >> lshift) + (*bl >> lshift2), 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min (*bl >> 9, 255);
|
*dest++ = min ((*bl >> lshift) + (*bl >> lshift2), 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min (*bl >> 9, 255);
|
*dest++ = min ((*bl >> lshift) + (*bl >> lshift2), 255);
|
||||||
bl++;
|
bl++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
case 1:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
for (i = 0; i < tmax; i++, dest += stride) {
|
||||||
for (j = 0; j < smax; j++) {
|
for (j = 0; j < smax; j++) {
|
||||||
*dest++ = min ((*bl >> 9) + (*bl >> 10), 255);
|
*dest++ = min (*bl >> lshift, 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min ((*bl >> 9) + (*bl >> 10), 255);
|
*dest++ = min (*bl >> lshift, 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min ((*bl >> 9) + (*bl >> 10), 255);
|
*dest++ = min (*bl >> lshift, 255);
|
||||||
bl++;
|
bl++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
default:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
|
||||||
for (j = 0; j < smax; j++) {
|
|
||||||
*dest++ = min (*bl >> 8, 255);
|
|
||||||
bl++;
|
|
||||||
*dest++ = min (*bl >> 8, 255);
|
|
||||||
bl++;
|
|
||||||
*dest++ = min (*bl >> 8, 255);
|
|
||||||
bl++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -464,46 +440,30 @@ R_BuildLightMap_4 (msurface_t *surf)
|
||||||
dest = lightmaps[surf->lightmaptexturenum]
|
dest = lightmaps[surf->lightmaptexturenum]
|
||||||
+ (surf->light_t * BLOCK_WIDTH + surf->light_s) * lightmap_bytes;
|
+ (surf->light_t * BLOCK_WIDTH + surf->light_s) * lightmap_bytes;
|
||||||
|
|
||||||
switch (gl_overbright->int_val) {
|
if (lshift2) {
|
||||||
case 2:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
for (i = 0; i < tmax; i++, dest += stride) {
|
||||||
for (j = 0; j < smax; j++) {
|
for (j = 0; j < smax; j++) {
|
||||||
*dest++ = min (*bl >> 9, 255);
|
*dest++ = min ((*bl >> lshift) + (*bl >> lshift2), 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min (*bl >> 9, 255);
|
*dest++ = min ((*bl >> lshift) + (*bl >> lshift2), 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min (*bl >> 9, 255);
|
*dest++ = min ((*bl >> lshift) + (*bl >> lshift2), 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = 255;
|
*dest++ = 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
case 1:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
for (i = 0; i < tmax; i++, dest += stride) {
|
||||||
for (j = 0; j < smax; j++) {
|
for (j = 0; j < smax; j++) {
|
||||||
*dest++ = min ((*bl >> 9) + (*bl >> 10), 255);
|
*dest++ = min (*bl >> lshift, 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min ((*bl >> 9) + (*bl >> 10), 255);
|
*dest++ = min (*bl >> lshift, 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = min ((*bl >> 9) + (*bl >> 10), 255);
|
*dest++ = min (*bl >> lshift, 255);
|
||||||
bl++;
|
bl++;
|
||||||
*dest++ = 255;
|
*dest++ = 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
default:
|
|
||||||
for (i = 0; i < tmax; i++, dest += stride) {
|
|
||||||
for (j = 0; j < smax; j++) {
|
|
||||||
*dest++ = min (*bl >> 8, 255);
|
|
||||||
bl++;
|
|
||||||
*dest++ = min (*bl >> 8, 255);
|
|
||||||
bl++;
|
|
||||||
*dest++ = min (*bl >> 8, 255);
|
|
||||||
bl++;
|
|
||||||
*dest++ = 255;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,11 +523,7 @@ R_BlendLightmaps (void)
|
||||||
glpoly_t *p;
|
glpoly_t *p;
|
||||||
|
|
||||||
qfglDepthMask (GL_FALSE); // don't bother writing Z
|
qfglDepthMask (GL_FALSE); // don't bother writing Z
|
||||||
|
qfglBlendFunc (lm_src_blend, lm_dest_blend);
|
||||||
if (gl_doublebright->int_val)
|
|
||||||
qfglBlendFunc (GL_DST_COLOR, GL_SRC_COLOR);
|
|
||||||
else
|
|
||||||
qfglBlendFunc (GL_ZERO, GL_SRC_COLOR);
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_LIGHTMAPS; i++) {
|
for (i = 0; i < MAX_LIGHTMAPS; i++) {
|
||||||
p = lightmap_polys[i];
|
p = lightmap_polys[i];
|
||||||
|
@ -597,9 +553,33 @@ gl_overbright_f (cvar_t *var)
|
||||||
model_t *m;
|
model_t *m;
|
||||||
msurface_t *fa;
|
msurface_t *fa;
|
||||||
|
|
||||||
|
if (!var)
|
||||||
|
return;
|
||||||
if (R_BuildLightMap == 0)
|
if (R_BuildLightMap == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
switch (var->int_val) {
|
||||||
|
case 2:
|
||||||
|
lshift = 8;
|
||||||
|
lshift2 = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
lshift = 8;
|
||||||
|
lshift2 = 9;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
lshift = 7;
|
||||||
|
lshift2 = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (gl_doublebright) {
|
||||||
|
if (gl_doublebright->int_val) {
|
||||||
|
lshift++;
|
||||||
|
if (lshift2)
|
||||||
|
lshift2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < r_numvisedicts; i++) {
|
for (i = 0; i < r_numvisedicts; i++) {
|
||||||
m = r_visedicts[i]->model;
|
m = r_visedicts[i]->model;
|
||||||
|
|
||||||
|
@ -648,10 +628,7 @@ R_CalcAndBlendLightmaps (void)
|
||||||
glpoly_t *p;
|
glpoly_t *p;
|
||||||
|
|
||||||
qfglDepthMask (GL_FALSE); // don't bother writing Z
|
qfglDepthMask (GL_FALSE); // don't bother writing Z
|
||||||
if (gl_doublebright->int_val)
|
qfglBlendFunc (lm_src_blend, lm_dest_blend);
|
||||||
qfglBlendFunc (GL_DST_COLOR, GL_SRC_COLOR);
|
|
||||||
else
|
|
||||||
qfglBlendFunc (GL_ZERO, GL_SRC_COLOR);
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_LIGHTMAPS; i++) {
|
for (i = 0; i < MAX_LIGHTMAPS; i++) {
|
||||||
p = lightmap_polys[i];
|
p = lightmap_polys[i];
|
||||||
|
|
|
@ -95,6 +95,7 @@ qboolean gl_mtex_fullbright = false;
|
||||||
|
|
||||||
// Combine
|
// Combine
|
||||||
qboolean gl_combine_capable = false;
|
qboolean gl_combine_capable = false;
|
||||||
|
int lm_src_blend, lm_dest_blend;
|
||||||
|
|
||||||
QF_glColorTableEXT qglColorTableEXT = NULL;
|
QF_glColorTableEXT qglColorTableEXT = NULL;
|
||||||
qboolean is8bit = false;
|
qboolean is8bit = false;
|
||||||
|
@ -142,10 +143,19 @@ gl_doublebright_f (cvar_t *var)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (var->int_val) {
|
if (var->int_val) {
|
||||||
if (!gl_combine_capable && gl_mtex_capable)
|
if (!gl_combine_capable && gl_mtex_capable) {
|
||||||
Con_Printf ("Warning: gl_doublebright has no effect with "
|
Con_Printf ("Warning: gl_doublebright has no effect with "
|
||||||
"gl_multitexture enabled if you don't have "
|
"gl_multitexture enabled if you don't have "
|
||||||
"GL_COMBINE_ARB support in your driver.\n");
|
"GL_COMBINE_ARB support in your driver.\n");
|
||||||
|
lm_src_blend = GL_ZERO;
|
||||||
|
lm_dest_blend = GL_SRC_COLOR;
|
||||||
|
} else {
|
||||||
|
lm_src_blend = GL_DST_COLOR;
|
||||||
|
lm_dest_blend = GL_SRC_COLOR;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lm_src_blend = GL_ZERO;
|
||||||
|
lm_dest_blend = GL_SRC_COLOR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue