Merge pull request #8 from ScatterBox/main

This commit is contained in:
Ian 2023-01-14 18:41:54 -05:00 committed by GitHub
commit 005a8a92aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 302 additions and 172 deletions

View file

@ -76,7 +76,7 @@ const char *svc_strings[] =
"svc_useprint", // 38
"", // 39
"svc_bf", // 40 // no data
"svc_fog", // 41 // [byte] density [byte] red [byte] green [byte] blue [float] time
"svc_fog", // 41 // [byte] start [byte] end [byte] red [byte] green [byte] blue [float] time
"svc_spawnbaseline2", //42 // support for large modelindex, large framenum, alpha, using flags
"svc_spawnstatic2", // 43 // support for large modelindex, large framenum, alpha, using flags
"svc_spawnstaticsound2", // 44 // [coord3] [short] samp [byte] vol [byte] aten

View file

@ -1203,10 +1203,12 @@ void Con_DrawConsole (int lines, qboolean drawinput)
GL_SetCanvas (CANVAS_CONSOLE);
// draw the background
Draw_ConsoleBackground ();
if (!console_enabled && !developer.value)
return;
Draw_ConsoleBackground ();
// draw the buffer text
rows = (con_vislines +7)/8;
y = vid.conheight - rows*8;

View file

@ -862,37 +862,10 @@ Draw_ConsoleBackground -- johnfitz -- rewritten
*/
void Draw_ConsoleBackground (void)
{
float alpha;
//pic = Draw_CachePic ("gfx/conback.lmp");
//pic->width = vid.conwidth;
//pic->height = vid.conheight;
//GL_SetCanvas (CANVAS_CONSOLE); //in case this is called from weird places
alpha = (con_forcedup) ? 1.0 : scr_conalpha.value;
GL_SetCanvas (CANVAS_CONSOLE); //in case this is called from weird places
if (alpha > 0.0)
{
if (alpha < 1.0)
{
glEnable (GL_BLEND);
glColor4f (1,1,1,alpha);
glDisable (GL_ALPHA_TEST);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
}
Draw_FillByColor (0, 0, vid.conwidth, vid.conheight, 0, 0, 0, alpha);
if (alpha < 1.0)
{
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glEnable(GL_ALPHA_TEST);
glDisable (GL_BLEND);
glColor4f (1,1,1,1);
}
}
Draw_FillByColor (0, 0, vid.conwidth, vid.conheight, 0, 0, 0, 1);
}
/*
@ -1232,6 +1205,11 @@ gltexture_t *loadtextureimage (char* filename)
int w, h;
data = Image_LoadImage (filename, &w, &h);
if(data == NULL)
{
Sys_Error("loadtextureimage: Cannot load the image %s\n", filename);
return 0;
}
gl.gltexture = TexMgr_LoadImage (NULL, filename, w, h, SRC_RGBA, data, filename, sizeof(int)*2, TEXPREF_ALPHA | TEXPREF_NEAREST | TEXPREF_NOPICMIP);

View file

@ -21,6 +21,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
//gl_fog.c -- global and volumetric fog
//sB EDITED THIS AND GOT RID OF VOLUMETRIC FOG IN ORDER TO ADD CONSISTENCY TO NZP BUILDS. SWITCHED TO A START/END VALUE.
#include "quakedef.h"
//==============================================================================
@ -29,17 +31,23 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
//==============================================================================
#define DEFAULT_DENSITY 0.0
#define DEFAULT_DENSITY 1.0
#define DEFAULT_GRAY 0.3
float fog_start;
float fog_end;
//extern refdef_t r_refdef;
float density = 1.0;
float fog_density_gl;
float fog_red;
float fog_green;
float fog_blue;
float fog_start;
float fog_end;
float fog_red;
float fog_green;
float fog_blue;
float old_density;
float old_start;
float old_end;
float old_red;
float old_green;
float old_blue;
@ -54,7 +62,7 @@ Fog_Update
update internal variables
=============
*/
void Fog_Update (float density, float red, float green, float blue, float time)
void Fog_Update (float start, float end, float red, float green, float blue, float time)
{
//save previous settings for fade
if (time > 0)
@ -65,26 +73,32 @@ void Fog_Update (float density, float red, float green, float blue, float time)
float f;
f = (fade_done - cl.time) / fade_time;
old_density = f * old_density + (1.0 - f) * fog_density_gl;
old_start = f * old_start + (1.0 - f) * fog_start;
old_end = f * old_end + (1.0 - f) * fog_end;
old_red = f * old_red + (1.0 - f) * fog_red;
old_green = f * old_green + (1.0 - f) * fog_green;
old_blue = f * old_blue + (1.0 - f) * fog_blue;
old_density = f * old_density + (1.0 - f) * fog_density_gl;
}
else
{
old_density = fog_density_gl;
old_start = fog_start;
old_end = fog_end;
old_red = fog_red;
old_green = fog_green;
old_blue = fog_blue;
old_density = fog_density_gl;
}
}
fog_density_gl = density;
fog_start = start;
fog_end = end;
fog_red = red;
fog_green = green;
fog_blue = blue;
fade_time = time;
fade_done = cl.time + time;
fog_density_gl = ((fog_start / fog_end))/3.5;
}
/*
@ -96,15 +110,16 @@ handle an SVC_FOG message from server
*/
void Fog_ParseServerMessage (void)
{
float density, red, green, blue, time;
float start, end, red, green, blue, time;
density = MSG_ReadByte() / 255.0;
start = MSG_ReadByte() / 255.0;
end = MSG_ReadByte() / 255.0;
red = MSG_ReadByte() / 255.0;
green = MSG_ReadByte() / 255.0;
blue = MSG_ReadByte() / 255.0;
time = q_max(0.0, MSG_ReadShort() / 100.0);
Fog_Update (density, red, green, blue, time);
Fog_Update (start, end, red, green, blue, time);
}
/*
@ -121,49 +136,67 @@ void Fog_FogCommand_f (void)
default:
case 1:
Con_Printf("usage:\n");
Con_Printf(" fog <density>\n");
Con_Printf(" fog <fade>\n");
Con_Printf(" fog <start> <end>\n");
Con_Printf(" fog <red> <green> <blue>\n");
Con_Printf(" fog <density> <red> <green> <blue>\n");
Con_Printf(" fog <fade> <red> <green> <blue>\n");
Con_Printf(" fog <start> <end> <red> <green> <blue>\n");
Con_Printf(" fog <start> <end> <red> <green> <blue> <fade>\n");
Con_Printf("current values:\n");
Con_Printf(" \"density\" is \"%f\"\n", fog_density_gl);
Con_Printf(" \"start\" is \"%f\"\n", fog_start);
Con_Printf(" \"end\" is \"%f\"\n", fog_end);
Con_Printf(" \"red\" is \"%f\"\n", fog_red);
Con_Printf(" \"green\" is \"%f\"\n", fog_green);
Con_Printf(" \"blue\" is \"%f\"\n", fog_blue);
Con_Printf(" \"fade\" is \"%f\"\n", fade_time);
break;
case 2:
case 2: //TEST
Fog_Update(fog_start,
fog_end,
fog_red,
fog_green,
fog_blue,
q_max(0.0, atof(Cmd_Argv(1))));
break;
case 3:
Fog_Update(q_max(0.0, atof(Cmd_Argv(1))),
q_max(0.0, atof(Cmd_Argv(2))),
fog_red,
fog_green,
fog_blue,
0.0);
break;
case 3: //TEST
Fog_Update(q_max(0.0, atof(Cmd_Argv(1))),
fog_red,
fog_green,
fog_blue,
atof(Cmd_Argv(2)));
break;
case 4:
Fog_Update(fog_density_gl,
CLAMP(0.0, atof(Cmd_Argv(1)), 1.0),
CLAMP(0.0, atof(Cmd_Argv(2)), 1.0),
CLAMP(0.0, atof(Cmd_Argv(3)), 1.0),
Fog_Update(fog_start,
fog_end,
CLAMP(0.0, atof(Cmd_Argv(1)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(2)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(3)), 255.0),
0.0);
break;
case 5:
case 5: //TEST
Fog_Update(fog_start,
fog_end,
CLAMP(0.0, atof(Cmd_Argv(1)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(2)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(3)), 255.0),
q_max(0.0, atof(Cmd_Argv(4))));
break;
case 6:
Fog_Update(q_max(0.0, atof(Cmd_Argv(1))),
CLAMP(0.0, atof(Cmd_Argv(2)), 1.0),
CLAMP(0.0, atof(Cmd_Argv(3)), 1.0),
CLAMP(0.0, atof(Cmd_Argv(4)), 1.0),
q_max(0.0, atof(Cmd_Argv(2))),
CLAMP(0.0, atof(Cmd_Argv(3)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(4)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(5)), 255.0),
0.0);
break;
case 6: //TEST
case 7:
Fog_Update(q_max(0.0, atof(Cmd_Argv(1))),
CLAMP(0.0, atof(Cmd_Argv(2)), 1.0),
CLAMP(0.0, atof(Cmd_Argv(3)), 1.0),
CLAMP(0.0, atof(Cmd_Argv(4)), 1.0),
atof(Cmd_Argv(5)));
q_max(0.0, atof(Cmd_Argv(2))),
CLAMP(0.0, atof(Cmd_Argv(3)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(4)), 255.0),
CLAMP(0.0, atof(Cmd_Argv(5)), 255.0),
q_max(0.0, atof(Cmd_Argv(6))));
break;
}
}
@ -180,16 +213,22 @@ void Fog_ParseWorldspawn (void)
char key[128], value[4096];
const char *data;
//initially no fog
fog_density_gl = DEFAULT_DENSITY;
fog_red = DEFAULT_GRAY;
fog_green = DEFAULT_GRAY;
fog_blue = DEFAULT_GRAY;
//initially no fog
fog_start = 0;
old_start = 0;
old_density = DEFAULT_DENSITY;
old_red = DEFAULT_GRAY;
old_green = DEFAULT_GRAY;
old_blue = DEFAULT_GRAY;
fog_end = -1;
old_end = -1;
fog_red = 0.0;
old_red = 0.0;
fog_green = 0.0;
old_green = 0.0;
fog_blue = 0.0;
old_blue = 0.0;
fade_time = 0.0;
fade_done = 0.0;
@ -222,7 +261,7 @@ void Fog_ParseWorldspawn (void)
sscanf(value, "%f %f %f %f %f", &fog_start, &fog_end, &fog_red, &fog_green, &fog_blue);
}
fog_density_gl = ((fog_end - fog_start))/6000;
fog_density_gl = ((fog_start / fog_end))/3.5;
}
}
@ -235,8 +274,8 @@ calculates fog color for this frame, taking into account fade times
*/
float *Fog_GetColor (void)
{
static float c[4] = {0.3f, 0.3f, 0.3f, 1.0f};
#ifndef VITA
static float c[4]; // = {0.1f, 0.1f, 0.1f, 1.0f}
//#ifndef VITA
float f;
int i;
@ -257,9 +296,9 @@ float *Fog_GetColor (void)
}
//find closest 24-bit RGB value, so solid-colored sky can match the fog perfectly
for (i=0;i<3;i++)
c[i] = (float)(Q_rint(c[i] * 255)) / 255.0f;
#endif
//for (i=0;i<3;i++)
//c[i] = (float)(Q_rint(c[i] * 255)) / 255.0f;
//#endif
return c;
}
@ -268,6 +307,7 @@ float *Fog_GetColor (void)
Fog_GetDensity
returns current density of fog
=============
*/
float Fog_GetDensity (void)
@ -292,8 +332,81 @@ called at the beginning of each frame
*/
void Fog_SetupFrame (void)
{
//glFogfv(GL_FOG_COLOR, Fog_GetColor());
//glFogf(GL_FOG_DENSITY, Fog_GetDensity() / 64.0);
/*float c[4];
float f, s, e;
if (fade_done > cl.time)
{
f = (fade_done - cl.time) / fade_time;
s = f * old_start + (1.0 - f) * fog_start;
e = f * old_end + (1.0 - f) * fog_end;
c[0] = f * old_red + (1.0 - f) * fog_red;
c[1] = f * old_green + (1.0 - f) * fog_green;
c[2] = f * old_blue + (1.0 - f) * fog_blue;
c[3] = 1.0;
//c[3] = r_skyfog.value;
}
else
{
s = fog_start;
e = fog_end;
c[0] = fog_red;
c[1] = fog_green;
c[2] = fog_blue;
c[3] = 1.0;
//c[3] = r_skyfog.value;
}
if(e == 0)
e = -1;*/
glFogfv(GL_FOG_COLOR, Fog_GetColor());
glFogf(GL_FOG_DENSITY, Fog_GetDensity() / 64.0);
glFogf(GL_FOG_DENSITY, fog_density_gl);
//glFogf(GL_FOG_COLOR, *c);
//if(s == 0 || e < 0)
//glDisable(GL_FOG);
}
/*
=============
Fog_GetStart
returns current start of fog
=============
*/
float Fog_GetStart (void)
{
float f;
if (fade_done > cl.time)
{
f = (fade_done - cl.time) / fade_time;
return f * old_start + (1.0 - f) * fog_start;
}
else
return fog_start;
}
/*
=============
Fog_GetEnd
returns current end of fog
=============
*/
float Fog_GetEnd (void)
{
float f;
if (fade_done > cl.time)
{
f = (fade_done - cl.time) / fade_time;
return f * old_start + (1.0 - f) * fog_end;
}
else
return fog_end;
}
/*
@ -305,7 +418,7 @@ called before drawing stuff that should be fogged
*/
void Fog_EnableGFog (void)
{
if (Fog_GetDensity() > 0)
if (Fog_GetDensity() > 0 || !Fog_GetStart() == 0 || (!Fog_GetEnd()) <= 0)
glEnable(GL_FOG);
}
@ -318,7 +431,7 @@ called after drawing stuff that should be fogged
*/
void Fog_DisableGFog (void)
{
if (Fog_GetDensity() > 0)
if (!Fog_GetStart() == 0 || (!Fog_GetEnd()) <= 0)
glDisable(GL_FOG);
}
@ -346,6 +459,8 @@ called after drawing stuff that is additive blended -- restores fog color
*/
void Fog_StopAdditive (void)
{
vec3_t color = {0,0,0};
if (Fog_GetDensity() > 0)
glFogfv(GL_FOG_COLOR, Fog_GetColor());
}
@ -358,8 +473,8 @@ void Fog_StopAdditive (void)
cvar_t r_vfog = {"r_vfog", "1", CVAR_NONE};
void Fog_DrawVFog (void){}
void Fog_MarkModels (void){}
//void Fog_DrawVFog (void){}
//void Fog_MarkModels (void){}
//==============================================================================
//
@ -377,7 +492,7 @@ called whenever a map is loaded
void Fog_NewMap (void)
{
Fog_ParseWorldspawn (); //for global fog
Fog_MarkModels (); //for volumetric fog
//Fog_MarkModels (); //for volumetric fog
}
/*
@ -394,10 +509,20 @@ void Fog_Init (void)
//Cvar_RegisterVariable (&r_vfog);
//set up global fog
/*
fog_density_gl = DEFAULT_DENSITY;
fog_red = DEFAULT_GRAY;
fog_green = DEFAULT_GRAY;
fog_blue = DEFAULT_GRAY;
*/
fog_start = 0;
fog_end = -1;
fog_red = 0.5;
fog_green = 0.5;
fog_blue = 0.5;
fade_time = 1;
fog_density_gl = DEFAULT_DENSITY;
Fog_SetupState ();
}

View file

@ -334,9 +334,11 @@ qmodel_t *Mod_LoadModel (qmodel_t *mod, qboolean crash)
buf = COM_LoadStackFile (mod->name, stackbuf, sizeof(stackbuf), & mod->path_id);
if (!buf)
{
if (crash)
Host_Error ("Mod_LoadModel: %s not found", mod->name); //johnfitz -- was "Mod_NumForName"
return NULL;
buf = (unsigned*)COM_LoadStackFile ("models/missing_model.mdl", stackbuf, sizeof(stackbuf), NULL);
if (buf){
Con_Printf ("Missing model %s substituted\n", mod->name);
}
return mod;
}
//
@ -700,7 +702,7 @@ void Mod_LoadTextures (lump_t *l)
}
}
strcpy(loading_name, mt->name);
//free (tx_pixels);
//free (pixels);
loading_cur_step++;
SCR_UpdateScreen();
//johnfitz

View file

@ -717,7 +717,7 @@ void Sky_DrawSkyBox (void)
rs_skypolys++;
rs_skypasses++;
if (Fog_GetDensity() > 0 && skyfog > 0)
/*if (Fog_GetDensity() > 0 && skyfog > 0)
{
float *c;
@ -738,7 +738,7 @@ void Sky_DrawSkyBox (void)
glDisable (GL_BLEND);
rs_skypasses++;
}
}*/
}
}
@ -835,7 +835,7 @@ void Sky_DrawFaceQuad (glpoly_t *p)
{
GL_Bind (solidskytexture);
if (r_skyalpha.value < 1.0)
//if (r_skyalpha.value < 1.0)
glColor3f (1, 1, 1);
glBegin (GL_QUADS);
@ -847,28 +847,28 @@ void Sky_DrawFaceQuad (glpoly_t *p)
}
glEnd ();
GL_Bind (alphaskytexture);
glEnable (GL_BLEND);
//GL_Bind (alphaskytexture);
//glEnable (GL_BLEND);
if (r_skyalpha.value < 1.0)
glColor4f (1, 1, 1, r_skyalpha.value);
//if (r_skyalpha.value < 1.0)
//glColor4f (1, 1, 1, r_skyalpha.value);
glBegin (GL_QUADS);
for (i=0, v=p->verts[0] ; i<4 ; i++, v+=VERTEXSIZE)
{
Sky_GetTexCoord (v, 16, &s, &t);
glTexCoord2f (s, t);
glVertex3fv (v);
}
glEnd ();
//glBegin (GL_QUADS);
//for (i=0, v=p->verts[0] ; i<4 ; i++, v+=VERTEXSIZE)
//{
//Sky_GetTexCoord (v, 16, &s, &t);
//glTexCoord2f (s, t);
//glVertex3fv (v);
//}
//glEnd ();
glDisable (GL_BLEND);
//glDisable (GL_BLEND);
rs_skypolys++;
rs_skypasses += 2;
}
if (Fog_GetDensity() > 0 && skyfog > 0)
/*if (Fog_GetDensity() > 0 && skyfog > 0)
{
float *c;
@ -887,7 +887,7 @@ void Sky_DrawFaceQuad (glpoly_t *p)
glDisable (GL_BLEND);
rs_skypasses++;
}
}*/
}
/*
@ -959,15 +959,15 @@ void Sky_DrawSkyLayers (void)
{
int i;
if (r_skyalpha.value < 1.0)
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//if (r_skyalpha.value < 1.0)
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
for (i=0 ; i<6 ; i++)
if (skymins[0][i] < skymaxs[0][i] && skymins[1][i] < skymaxs[1][i])
Sky_DrawFace (i);
if (r_skyalpha.value < 1.0)
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
//if (r_skyalpha.value < 1.0)
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
/*
@ -999,10 +999,12 @@ void Sky_DrawSky (void)
//
Fog_DisableGFog ();
glDisable (GL_TEXTURE_2D);
if (Fog_GetDensity() > 0)
/*if (Fog_GetDensity() > 0)
glColor3fv (Fog_GetColor());
else
glColor3fv (skyflatcolor);
else*/
//glColor3fv (skyflatcolor);
//glColor3fv (Fog_GetColor());
Sky_ProcessTextureChains ();
Sky_ProcessEntities ();
glColor3f (1, 1, 1);
@ -1011,7 +1013,7 @@ void Sky_DrawSky (void)
//
// render slow sky: cloud layers or skybox
//
if (!r_fastsky.value && !(Fog_GetDensity() > 0 && skyfog >= 1))
/*if (!r_fastsky.value && !(Fog_GetDensity() > 0))
{
glDepthFunc(GL_GEQUAL);
glDepthMask(0);
@ -1023,7 +1025,11 @@ void Sky_DrawSky (void)
glDepthMask(1);
glDepthFunc(GL_LEQUAL);
}
}*/
glDepthFunc(GL_GEQUAL);
glDepthMask(0);
Sky_DrawSkyBox ();
glDepthMask(1);
glDepthFunc(GL_LEQUAL);
Fog_EnableGFog ();
}

View file

@ -411,13 +411,13 @@ void M_Paused_Menu_Key (int key)
{
switch (key)
{
/*case K_BBUTTON:
case K_BBUTTON:
case K_ESCAPE:
paused_hack = false;
key_dest = key_game;
m_state = m_none;
break;
*/
case K_DOWNARROW:
S_LocalSound ("sounds/menu/navigate.wav");
if (++M_Paused_Cusor >= Max_Paused_Items)
@ -580,7 +580,13 @@ void M_Main_Draw (void)
case 1: Draw_ColoredStringScale(10, y + 305, "Adjust your Settings to Optimize your Experience.", 1, 1, 1, 1, 1.5f); break;
//case 2: Draw_ColoredStringScale(10, y + 305, "View locked or unlocked Achievements.", 1, 1, 1, 1, 1.5f); break;
case 2: Draw_ColoredStringScale(10, y + 305, "See who made NZ:P possible.", 1, 1, 1, 1, 1.5f); break;
case 3: Draw_ColoredStringScale(10, y + 305, "Return to Horizon (SwitchOS).", 1, 1, 1, 1, 1.5f); break;
case 3:
#ifdef NX
Draw_ColoredStringScale(10, y + 305, "Return to Horizon (SwitchOS).", 1, 1, 1, 1, 1.5f);
#else
Draw_ColoredStringScale(10, y + 305, "Return to Vita Homescreen.", 1, 1, 1, 1, 1.5f);
#endif
break;
default: break;
}
}

View file

@ -1191,9 +1191,9 @@ void R_DrawAliasModel (entity_t *e)
glBlendFunc (GL_ONE, GL_ONE);
glDepthMask(GL_FALSE);
glColor3f(entalpha,entalpha,entalpha);
Fog_StartAdditive ();
//Fog_StartAdditive ();
GL_DrawAliasFrame (paliashdr, lerpdata);
Fog_StopAdditive ();
//Fog_StopAdditive ();
glDepthMask(GL_TRUE);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_BLEND);
@ -1254,9 +1254,9 @@ void R_DrawAliasModel (entity_t *e)
glDepthMask(GL_FALSE);
shading = false;
glColor3f(entalpha,entalpha,entalpha);
Fog_StartAdditive ();
//Fog_StartAdditive ();
GL_DrawAliasFrame (paliashdr, lerpdata);
Fog_StopAdditive ();
//Fog_StopAdditive ();
glDepthMask(GL_TRUE);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_BLEND);
@ -1273,9 +1273,9 @@ void R_DrawAliasModel (entity_t *e)
glEnable(GL_BLEND);
glBlendFunc (GL_ONE, GL_ONE);
glDepthMask(GL_FALSE);
Fog_StartAdditive ();
//Fog_StartAdditive ();
GL_DrawAliasFrame (paliashdr, lerpdata);
Fog_StopAdditive ();
//Fog_StopAdditive ();
glDepthMask(GL_TRUE);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@ -1290,9 +1290,9 @@ void R_DrawAliasModel (entity_t *e)
glDepthMask(GL_FALSE);
shading = false;
glColor3f(entalpha,entalpha,entalpha);
Fog_StartAdditive ();
//Fog_StartAdditive ();
GL_DrawAliasFrame (paliashdr, lerpdata);
Fog_StopAdditive ();
//Fog_StopAdditive ();
glDepthMask(GL_TRUE);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_BLEND);
@ -1331,9 +1331,9 @@ void R_DrawAliasModel (entity_t *e)
glDepthMask(GL_FALSE);
shading = false;
glColor3f(entalpha,entalpha,entalpha);
Fog_StartAdditive ();
//Fog_StartAdditive ();
GL_DrawAliasFrame (paliashdr, lerpdata);
Fog_StopAdditive ();
//Fog_StopAdditive ();
glDepthMask(GL_TRUE);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_BLEND);

View file

@ -373,7 +373,7 @@ void R_DrawSequentialPoly (msurface_t *s)
Fog_DisableGFog ();
GL_Bind (t->gltexture);
DrawGLPoly (s->polys);
Fog_EnableGFog ();
//
rs_brushpasses++;
//second pass -- lightmap with black fog, modulate blended
@ -382,7 +382,7 @@ void R_DrawSequentialPoly (msurface_t *s)
glDepthMask (GL_FALSE);
glEnable (GL_BLEND);
glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR); //2x modulate
Fog_StartAdditive ();
//Fog_StartAdditive ();
#ifdef VITA
glBegin(GL_TRIANGLE_FAN);
#else
@ -395,11 +395,11 @@ void R_DrawSequentialPoly (msurface_t *s)
glVertex3fv (v);
}
glEnd ();
Fog_StopAdditive ();
//Fog_StopAdditive ();
rs_brushpasses++;
//third pass -- black geo with normal fog, additive blended
if (Fog_GetDensity() > 0)
/*if (Fog_GetDensity() > 0)
{
glBlendFunc(GL_ONE, GL_ONE); //add
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
@ -408,17 +408,19 @@ void R_DrawSequentialPoly (msurface_t *s)
glColor3f(1,1,1);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
rs_brushpasses++;
}
}*/
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable (GL_BLEND);
glDepthMask (GL_TRUE);
Fog_EnableGFog ();
}
}
else
{
if (gl_mtexable) //case 4: texture and lightmap in one pass, regular modulation
{
Fog_DisableGFog ();
GL_DisableMultitexture(); // selects TEXTURE0
GL_Bind (t->gltexture);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
@ -441,12 +443,15 @@ void R_DrawSequentialPoly (msurface_t *s)
glEnd ();
GL_DisableMultitexture ();
rs_brushpasses++;
Fog_EnableGFog ();
}
else if (entalpha < 1 || (s->flags & SURF_DRAWFENCE)) //case 5: can't do multipass if entity has alpha, so just draw the texture
{
Fog_DisableGFog ();
GL_Bind (t->gltexture);
DrawGLPoly (s->polys);
rs_brushpasses++;
Fog_EnableGFog ();
}
else //case 6: texture in one pass, lightmap in a second pass, fog in third pass
{
@ -454,7 +459,7 @@ void R_DrawSequentialPoly (msurface_t *s)
Fog_DisableGFog ();
GL_Bind (t->gltexture);
DrawGLPoly (s->polys);
Fog_EnableGFog ();
//
rs_brushpasses++;
//second pass -- lightmap with black fog, modulate blended
@ -463,7 +468,7 @@ void R_DrawSequentialPoly (msurface_t *s)
glDepthMask (GL_FALSE);
glEnable (GL_BLEND);
glBlendFunc (GL_ZERO, GL_SRC_COLOR); //modulate
Fog_StartAdditive ();
//Fog_StartAdditive ();
#ifdef VITA
glBegin(GL_TRIANGLE_FAN);
#else
@ -476,11 +481,11 @@ void R_DrawSequentialPoly (msurface_t *s)
glVertex3fv (v);
}
glEnd ();
Fog_StopAdditive ();
//Fog_StopAdditive ();
rs_brushpasses++;
//third pass -- black geo with normal fog, additive blended
if (Fog_GetDensity() > 0)
/*if (Fog_GetDensity() > 0)
{
glBlendFunc(GL_ONE, GL_ONE); //add
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
@ -489,12 +494,14 @@ void R_DrawSequentialPoly (msurface_t *s)
glColor3f(1,1,1);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
rs_brushpasses++;
}
}*/
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable (GL_BLEND);
glDepthMask (GL_TRUE);
Fog_EnableGFog ();
}
}
if (entalpha < 1)
@ -517,9 +524,9 @@ fullbrights:
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor3f (entalpha, entalpha, entalpha);
GL_Bind (t->fullbright);
Fog_StartAdditive ();
//Fog_StartAdditive ();
DrawGLPoly (s->polys);
Fog_StopAdditive ();
//Fog_StopAdditive ();
glColor3f(1, 1, 1);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

View file

@ -140,6 +140,8 @@ void R_DrawSpriteModel (entity_t *e)
return;
}
Fog_DisableGFog ();
//johnfitz: offset decals
if (psprite->type == SPR_ORIENTED)
GL_PolygonOffset (OFFSET_DECAL);
@ -179,4 +181,6 @@ void R_DrawSpriteModel (entity_t *e)
//johnfitz: offset decals
if (psprite->type == SPR_ORIENTED)
GL_PolygonOffset (OFFSET_NONE);
Fog_EnableGFog ();
}

View file

@ -1197,24 +1197,24 @@ void R_DrawTextureChains (qmodel_t *model, entity_t *ent, texchain_t chain)
//to make fog work with multipass lightmapping, need to do one pass
//with no fog, one modulate pass with black fog, and one additive
//pass with black geometry and normal fog
Fog_DisableGFog ();
//Fog_DisableGFog ();
R_DrawTextureChains_TextureOnly (model, ent, chain);
Fog_EnableGFog ();
//Fog_EnableGFog ();
glDepthMask (GL_FALSE);
glEnable (GL_BLEND);
glBlendFunc (GL_DST_COLOR, GL_SRC_COLOR); //2x modulate
Fog_StartAdditive ();
//Fog_StartAdditive ();
R_DrawLightmapChains ();
Fog_StopAdditive ();
if (Fog_GetDensity() > 0)
{
glBlendFunc(GL_ONE, GL_ONE); //add
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor3f(0,0,0);
//Fog_StopAdditive ();
//if (Fog_GetDensity() > 0)
//{
//glBlendFunc(GL_ONE, GL_ONE); //add
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//glColor3f(0,0,0);
R_DrawTextureChains_TextureOnly (model, ent, chain);
glColor3f(1,1,1);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
//glColor3f(1,1,1);
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
//}
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable (GL_BLEND);
glDepthMask (GL_TRUE);
@ -1239,24 +1239,24 @@ void R_DrawTextureChains (qmodel_t *model, entity_t *ent, texchain_t chain)
//to make fog work with multipass lightmapping, need to do one pass
//with no fog, one modulate pass with black fog, and one additive
//pass with black geometry and normal fog
Fog_DisableGFog ();
//Fog_DisableGFog ();
R_DrawTextureChains_TextureOnly (model, ent, chain);
Fog_EnableGFog ();
//Fog_EnableGFog ();
glDepthMask (GL_FALSE);
glEnable (GL_BLEND);
glBlendFunc(GL_ZERO, GL_SRC_COLOR); //modulate
Fog_StartAdditive ();
//Fog_StartAdditive ();
R_DrawLightmapChains ();
Fog_StopAdditive ();
if (Fog_GetDensity() > 0)
{
glBlendFunc(GL_ONE, GL_ONE); //add
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor3f(0,0,0);
//Fog_StopAdditive ();
//if (Fog_GetDensity() > 0)
//{
//glBlendFunc(GL_ONE, GL_ONE); //add
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//glColor3f(0,0,0);
R_DrawTextureChains_TextureOnly (model, ent, chain);
glColor3f(1,1,1);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
//glColor3f(1,1,1);
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
//}
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable (GL_BLEND);
glDepthMask (GL_TRUE);
@ -1273,9 +1273,9 @@ fullbrights:
glBlendFunc (GL_ONE, GL_ONE);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glColor3f (entalpha, entalpha, entalpha);
Fog_StartAdditive ();
//Fog_StartAdditive ();
R_DrawTextureChains_Glow (model, ent, chain);
Fog_StopAdditive ();
//Fog_StopAdditive ();
glColor3f (1, 1, 1);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);