Browse Source

ref_soft: enable stiple alpha by default, cache conveyors

pull/2/head
mittorn 6 years ago
parent
commit
56ef16b0f9
  1. 23
      r_edge.c
  2. 2
      r_main.c
  3. 16
      r_poly.c
  4. 22
      r_surf.c

23
r_edge.c

@ -847,14 +847,15 @@ void D_CalcGradients (msurface_t *pface)
tadjust = ((fixed16_t)(DotProduct (p_temp1, p_taxis) * 0x10000 + 0.5)) - tadjust = ((fixed16_t)(DotProduct (p_temp1, p_taxis) * 0x10000 + 0.5)) -
((pface->texturemins[1] << 16) >> miplevel) ((pface->texturemins[1] << 16) >> miplevel)
+ pface->texinfo->vecs[1][3]*t; + pface->texinfo->vecs[1][3]*t;
#if 0 #if 1
// PGM - changing flow speed for non-warping textures. // PGM - changing flow speed for non-warping textures.
if (pface->texinfo->flags & SURF_FLOWING) if (pface->flags & SURF_CONVEYOR)
{ {
if(pface->texinfo->flags & SURF_WARP)
sadjust += 0x10000 * (-128 * ( (r_newrefdef.time * 0.25) - (int)(r_newrefdef.time * 0.25) )); if(pface->flags & SURF_DRAWTURB)
sadjust += 0x10000 * (-128 * ( (gpGlobals->time * 0.25) - (int)(gpGlobals->time * 0.25) ));
else else
sadjust += 0x10000 * (-128 * ( (r_newrefdef.time * 0.77) - (int)(r_newrefdef.time * 0.77) )); sadjust += 0x10000 * (-128 * ( (gpGlobals->time * 0.77) - (int)(gpGlobals->time * 0.77) ));
} }
// PGM // PGM
#endif #endif
@ -1010,7 +1011,15 @@ void D_SolidSurf (surf_t *s)
RI.currententity = gEngfuncs.GetEntityByIndex(0); //r_worldentity; RI.currententity = gEngfuncs.GetEntityByIndex(0); //r_worldentity;
pface = s->msurf; pface = s->msurf;
if( !pface )
return;
#if 1 #if 1
if( pface->flags & SURF_CONVEYOR )
miplevel = 1;
else
miplevel = D_MipLevelForScale(s->nearzi * scale_for_mip ); miplevel = D_MipLevelForScale(s->nearzi * scale_for_mip );
#else #else
{ {
@ -1039,8 +1048,6 @@ void D_SolidSurf (surf_t *s)
} }
#endif #endif
if( !pface )
return;
// FIXME: make this passed in to D_CacheSurface // FIXME: make this passed in to D_CacheSurface
pcurrentcache = D_CacheSurface (pface, miplevel); pcurrentcache = D_CacheSurface (pface, miplevel);
@ -1125,7 +1132,7 @@ void D_DrawSurfaces (void)
#if 1 #if 1
if(s->flags & SURF_DRAWSKY) if(s->flags & SURF_DRAWSKY)
D_BackgroundSurf (s); D_BackgroundSurf (s);
else if (s->flags & SURF_DRAWTURB) else if (s->flags & SURF_DRAWTURB )
D_TurbulentSurf (s); D_TurbulentSurf (s);
else else
D_SolidSurf (s); D_SolidSurf (s);

2
r_main.c

@ -1945,7 +1945,7 @@ qboolean R_Init()
sw_mipscale = gEngfuncs.Cvar_Get ("sw_mipscale", "1", 0, ""); sw_mipscale = gEngfuncs.Cvar_Get ("sw_mipscale", "1", 0, "");
sw_reportedgeout = gEngfuncs.Cvar_Get ("sw_reportedgeout", "0", 0, ""); sw_reportedgeout = gEngfuncs.Cvar_Get ("sw_reportedgeout", "0", 0, "");
sw_reportsurfout = gEngfuncs.Cvar_Get ("sw_reportsurfout", "0", 0, ""); sw_reportsurfout = gEngfuncs.Cvar_Get ("sw_reportsurfout", "0", 0, "");
sw_stipplealpha = gEngfuncs.Cvar_Get( "sw_stipplealpha", "0", FCVAR_ARCHIVE, "" ); sw_stipplealpha = gEngfuncs.Cvar_Get( "sw_stipplealpha", "1", FCVAR_ARCHIVE, "" );
sw_surfcacheoverride = gEngfuncs.Cvar_Get ("sw_surfcacheoverride", "0", 0, ""); sw_surfcacheoverride = gEngfuncs.Cvar_Get ("sw_surfcacheoverride", "0", 0, "");
sw_waterwarp = gEngfuncs.Cvar_Get ("sw_waterwarp", "1", 0, ""); sw_waterwarp = gEngfuncs.Cvar_Get ("sw_waterwarp", "1", 0, "");
sw_mode = gEngfuncs.Cvar_Get( "sw_mode", "0", FCVAR_ARCHIVE, ""); sw_mode = gEngfuncs.Cvar_Get( "sw_mode", "0", FCVAR_ARCHIVE, "");

16
r_poly.c

@ -252,8 +252,8 @@ void R_DrawSpanletTurbulentBlended66( void )
{ {
pixel_t screen = *s_spanletvars.pdest; pixel_t screen = *s_spanletvars.pdest;
pixel_t src = btemp; pixel_t src = btemp;
byte alpha = 4; byte alpha = 5;
*s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0x7f) >> 3 | ((src & 0xff)); *s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0xff) | ((src & 0xff));
} }
s_spanletvars.izi += s_spanletvars.izistep; s_spanletvars.izi += s_spanletvars.izistep;
@ -281,8 +281,8 @@ void R_DrawSpanletTurbulentBlended33( void )
{ {
pixel_t screen = *s_spanletvars.pdest; pixel_t screen = *s_spanletvars.pdest;
pixel_t src = btemp; pixel_t src = btemp;
byte alpha = 4; byte alpha = 2;
*s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0x7f) >> 3 | ((src & 0xff)); *s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0xff)| ((src & 0xff));
} }
s_spanletvars.izi += s_spanletvars.izistep; s_spanletvars.izi += s_spanletvars.izistep;
@ -316,8 +316,8 @@ void R_DrawSpanlet33( void )
{ {
pixel_t screen = *s_spanletvars.pdest; pixel_t screen = *s_spanletvars.pdest;
pixel_t src = btemp; pixel_t src = btemp;
byte alpha = 4; byte alpha = 2;
*s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0x7f) >> 3 | ((src & 0xff)); *s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0xff)| ((src & 0xff));
} }
} }
@ -367,8 +367,8 @@ void R_DrawSpanlet66( void )
{ {
pixel_t screen = *s_spanletvars.pdest; pixel_t screen = *s_spanletvars.pdest;
pixel_t src = btemp; pixel_t src = btemp;
byte alpha = 4; byte alpha = 5;
*s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0x7f) >> 3 | ((src & 0xff)); *s_spanletvars.pdest = vid.alphamap[( alpha << 16)|(src & 0xff00)|(screen>>8)] << 8 | (screen & 0xff)| ((src & 0xff));
} }
} }

22
r_surf.c

@ -187,6 +187,14 @@ static void R_BuildLightMap( )
size = smax * tmax; size = smax * tmax;
if( surf->flags & SURF_CONVEYOR )
{
smax = ( info->lightextents[0] * 3 / sample_size ) + 1;
size = smax * tmax;
memset( blocklights, 0xff, sizeof( uint ) * size );
return;
}
lm = surf->samples; lm = surf->samples;
memset( blocklights, 0, sizeof( uint ) * size ); memset( blocklights, 0, sizeof( uint ) * size );
@ -1101,6 +1109,19 @@ surfcache_t *D_CacheSurface (msurface_t *surface, int miplevel)
// //
r_drawsurf.image = R_GetTexture(R_TextureAnimation (surface)->gl_texturenum); r_drawsurf.image = R_GetTexture(R_TextureAnimation (surface)->gl_texturenum);
if( surface->flags & SURF_CONVEYOR )
{
if( miplevel >= 1)
{
surface->extents[0] = surface->info->lightextents[0] * gEngfuncs.Mod_SampleSizeForFace( r_drawsurf.surf ) * 2 ;
surface->texturemins[0] = -surface->info->lightextents[0] * gEngfuncs.Mod_SampleSizeForFace( r_drawsurf.surf );
}
else
{
surface->extents[0] = surface->info->lightextents[0] * gEngfuncs.Mod_SampleSizeForFace( r_drawsurf.surf ) ;
surface->texturemins[0] = -surface->info->lightextents[0] * gEngfuncs.Mod_SampleSizeForFace( r_drawsurf.surf )/2;
}
}
/// todo: port this /// todo: port this
//r_drawsurf.lightadj[0] = r_newrefdef.lightstyles[surface->styles[0]].white*128; //r_drawsurf.lightadj[0] = r_newrefdef.lightstyles[surface->styles[0]].white*128;
//r_drawsurf.lightadj[1] = r_newrefdef.lightstyles[surface->styles[1]].white*128; //r_drawsurf.lightadj[1] = r_newrefdef.lightstyles[surface->styles[1]].white*128;
@ -1139,6 +1160,7 @@ surfcache_t *D_CacheSurface (msurface_t *surface, int miplevel)
r_drawsurf.rowbytes = r_drawsurf.surfwidth; r_drawsurf.rowbytes = r_drawsurf.surfwidth;
r_drawsurf.surfheight = surface->extents[1] >> miplevel; r_drawsurf.surfheight = surface->extents[1] >> miplevel;
// //
// allocate memory if needed // allocate memory if needed
// //

Loading…
Cancel
Save