mirror of
https://github.com/nzp-team/fteqw.git
synced 2025-02-18 09:51:50 +00:00
r_wateralpha for software rendering
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2278 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
0634baab20
commit
ccf48364b1
4 changed files with 35 additions and 6 deletions
|
@ -279,7 +279,6 @@ void GLRenderer_Init(void)
|
||||||
|
|
||||||
//renderer
|
//renderer
|
||||||
Cvar_Register (&r_novis, GLRENDEREROPTIONS);
|
Cvar_Register (&r_novis, GLRENDEREROPTIONS);
|
||||||
Cvar_Register (&r_wateralpha, GLRENDEREROPTIONS);
|
|
||||||
Cvar_Register (&r_mirroralpha, GLRENDEREROPTIONS);
|
Cvar_Register (&r_mirroralpha, GLRENDEREROPTIONS);
|
||||||
Cvar_Register (&r_norefresh, GLRENDEREROPTIONS);
|
Cvar_Register (&r_norefresh, GLRENDEREROPTIONS);
|
||||||
|
|
||||||
|
@ -564,6 +563,7 @@ void Renderer_Init(void)
|
||||||
|
|
||||||
Cvar_Register (&r_fastsky, GRAPHICALNICETIES);
|
Cvar_Register (&r_fastsky, GRAPHICALNICETIES);
|
||||||
Cvar_Register (&r_fastskycolour, GRAPHICALNICETIES);
|
Cvar_Register (&r_fastskycolour, GRAPHICALNICETIES);
|
||||||
|
Cvar_Register (&r_wateralpha, GRAPHICALNICETIES);
|
||||||
|
|
||||||
Cvar_Register (&r_drawflat, GRAPHICALNICETIES);
|
Cvar_Register (&r_drawflat, GRAPHICALNICETIES);
|
||||||
Cvar_Register (&r_menutint, GRAPHICALNICETIES);
|
Cvar_Register (&r_menutint, GRAPHICALNICETIES);
|
||||||
|
|
|
@ -632,6 +632,7 @@ R_RenderFace
|
||||||
*/
|
*/
|
||||||
void R_RenderFace (msurface_t *fa, int clipflags)
|
void R_RenderFace (msurface_t *fa, int clipflags)
|
||||||
{
|
{
|
||||||
|
extern float r_wateralphaval;
|
||||||
int i, lindex;
|
int i, lindex;
|
||||||
unsigned mask;
|
unsigned mask;
|
||||||
mplane_t *pplane;
|
mplane_t *pplane;
|
||||||
|
@ -650,6 +651,16 @@ void R_RenderFace (msurface_t *fa, int clipflags)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (r_wateralphaval != 1.0 && fa->flags & SURF_DRAWTURB)
|
||||||
|
{
|
||||||
|
if (fa->nextalphasurface)
|
||||||
|
return;
|
||||||
|
|
||||||
|
fa->nextalphasurface = r_alpha_surfaces;
|
||||||
|
r_alpha_surfaces = fa;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( fa->texinfo->flags & SURF_SKY)
|
if ( fa->texinfo->flags & SURF_SKY)
|
||||||
{
|
{
|
||||||
if (R_EmitSkyBox ())
|
if (R_EmitSkyBox ())
|
||||||
|
@ -1351,7 +1362,7 @@ void R_8DrawSpanletAlphaBlend( void ) //8 bit rendering only
|
||||||
{
|
{
|
||||||
unsigned btemp;
|
unsigned btemp;
|
||||||
|
|
||||||
D_SetTransLevel(r_q2polydesc.alpha*255.0, BM_BLEND);
|
D_SetTransLevel(r_q2polydesc.alpha/255.0, BM_BLEND);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -1383,7 +1394,7 @@ void R_8DrawSpanletTurbulentAlphaBlend( void )
|
||||||
extern int *r_turb_turb;
|
extern int *r_turb_turb;
|
||||||
unsigned btemp;
|
unsigned btemp;
|
||||||
|
|
||||||
D_SetTransLevel(r_q2polydesc.alpha*255.0, BM_BLEND);
|
D_SetTransLevel(r_q2polydesc.alpha/255.0, BM_BLEND);
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -2099,6 +2110,8 @@ void R_ClipAndDrawPoly ( float alpha, int isturbulent, qboolean textured )
|
||||||
{
|
{
|
||||||
if (alpha == 1 && !isturbulent)
|
if (alpha == 1 && !isturbulent)
|
||||||
r_q2polydesc.drawspanlet = R_32DrawSpanletAlphaTest;
|
r_q2polydesc.drawspanlet = R_32DrawSpanletAlphaTest;
|
||||||
|
else if (alpha <= 0)
|
||||||
|
return;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
r_q2polydesc.alpha = alpha*255;
|
r_q2polydesc.alpha = alpha*255;
|
||||||
|
@ -2110,7 +2123,9 @@ void R_ClipAndDrawPoly ( float alpha, int isturbulent, qboolean textured )
|
||||||
}
|
}
|
||||||
else if (r_pixbytes == 2)
|
else if (r_pixbytes == 2)
|
||||||
{
|
{
|
||||||
if (alpha < 0.5)
|
if (alpha < 0.2)
|
||||||
|
return;
|
||||||
|
else if (alpha < 0.5)
|
||||||
r_q2polydesc.drawspanlet = R_16DrawSpanlet33Stipple;
|
r_q2polydesc.drawspanlet = R_16DrawSpanlet33Stipple;
|
||||||
else if (alpha < 0.9)
|
else if (alpha < 0.9)
|
||||||
r_q2polydesc.drawspanlet = R_16DrawSpanlet66Stipple;
|
r_q2polydesc.drawspanlet = R_16DrawSpanlet66Stipple;
|
||||||
|
@ -2121,6 +2136,8 @@ void R_ClipAndDrawPoly ( float alpha, int isturbulent, qboolean textured )
|
||||||
{
|
{
|
||||||
if (alpha >= TRANS_UPPER_CAP)
|
if (alpha >= TRANS_UPPER_CAP)
|
||||||
r_q2polydesc.drawspanlet = R_8DrawSpanletAlphaTest;
|
r_q2polydesc.drawspanlet = R_8DrawSpanletAlphaTest;
|
||||||
|
else if (alpha <= TRANS_LOWER_CAP)
|
||||||
|
return;
|
||||||
else if (isturbulent)
|
else if (isturbulent)
|
||||||
{
|
{
|
||||||
r_q2polydesc.alpha = alpha*255;
|
r_q2polydesc.alpha = alpha*255;
|
||||||
|
@ -2227,7 +2244,7 @@ void R_BuildPolygonFromSurface(msurface_t *fa)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PGM 09/16/98
|
// PGM 09/16/98
|
||||||
if ( fa->texinfo->flags & (SURF_WARP|SURF_FLOWING) )
|
if ( fa->texinfo->flags & (SURF_WARP|SURF_FLOWING) || (fa->flags & SURF_DRAWTURB) )
|
||||||
{
|
{
|
||||||
r_q2polydesc.pixels = (qbyte *)fa->texinfo->texture + fa->texinfo->texture->offsets[0];
|
r_q2polydesc.pixels = (qbyte *)fa->texinfo->texture + fa->texinfo->texture->offsets[0];
|
||||||
r_q2polydesc.pixel_width = fa->texinfo->texture->width;
|
r_q2polydesc.pixel_width = fa->texinfo->texture->width;
|
||||||
|
@ -2278,7 +2295,12 @@ void SWR_DrawAlphaSurfaces( void )
|
||||||
{
|
{
|
||||||
R_BuildPolygonFromSurface( s );
|
R_BuildPolygonFromSurface( s );
|
||||||
|
|
||||||
if (s->texinfo->flags & SURF_TRANS66)
|
if (s->flags & SURF_DRAWTURB)
|
||||||
|
{
|
||||||
|
extern float r_wateralphaval;
|
||||||
|
R_ClipAndDrawPoly( r_wateralphaval, true, true );
|
||||||
|
}
|
||||||
|
else if (s->texinfo->flags & SURF_TRANS66)
|
||||||
{
|
{
|
||||||
R_ClipAndDrawPoly( 0.66f, (s->texinfo->flags & (SURF_WARP|SURF_FLOWING)), true );
|
R_ClipAndDrawPoly( 0.66f, (s->texinfo->flags & (SURF_WARP|SURF_FLOWING)), true );
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,8 @@ float screenAspect;
|
||||||
float verticalFieldOfView;
|
float verticalFieldOfView;
|
||||||
float xOrigin, yOrigin;
|
float xOrigin, yOrigin;
|
||||||
|
|
||||||
|
float r_wateralphaval;
|
||||||
|
|
||||||
mplane_t screenedge[4];
|
mplane_t screenedge[4];
|
||||||
|
|
||||||
//colour bits (for 16 bit rendering)
|
//colour bits (for 16 bit rendering)
|
||||||
|
|
|
@ -457,12 +457,17 @@ void SWR_SetupFrame (void)
|
||||||
extern int r_dosirds;
|
extern int r_dosirds;
|
||||||
|
|
||||||
extern int scr_chatmode;
|
extern int scr_chatmode;
|
||||||
|
extern float r_wateralphaval;
|
||||||
|
|
||||||
int edgecount;
|
int edgecount;
|
||||||
vrect_t vrect;
|
vrect_t vrect;
|
||||||
float w, h;
|
float w, h;
|
||||||
|
|
||||||
|
|
||||||
// don't allow cheats in multiplayer
|
// don't allow cheats in multiplayer
|
||||||
|
r_wateralphaval = r_wateralpha.value;
|
||||||
|
if (!cls.allow_watervis)
|
||||||
|
r_wateralphaval = 1;
|
||||||
|
|
||||||
if (r_numsurfs.value)
|
if (r_numsurfs.value)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue