This is an automated email from the git hooks/post-receive script. fabian-guest pushed a commit to branch master in repository prboom+.
commit c7884cb7e19a8f7540e436734b32024364533dd2 Author: Fabian Greffrath <[email protected]> Date: Thu Mar 26 13:51:38 2015 +0100 Imported Upstream version 2.5.1.4~svn4425+dfsg1 --- data/lumps/glfp.lmp | 3 ++- src/MUSIC/flplayer.c | 3 +++ src/SDL/i_sound.c | 2 ++ src/am_map.c | 8 +++---- src/i_sound.h | 2 ++ src/m_misc.c | 2 ++ src/r_main.c | 4 ++-- src/r_main.h | 2 +- src/r_plane.c | 64 +++++++++++----------------------------------------- src/r_segs.c | 26 ++++++++++----------- src/r_things.c | 6 ++--- 11 files changed, 47 insertions(+), 75 deletions(-) diff --git a/data/lumps/glfp.lmp b/data/lumps/glfp.lmp index 888d14b..f76efd2 100644 --- a/data/lumps/glfp.lmp +++ b/data/lumps/glfp.lmp @@ -10,7 +10,8 @@ void main() // Doom lighting equation ripped from EDGE. float L = 63.0 * lightlevel; float min_L = clamp(36.0 - L, 0.0, 31.0); - float index = 59.0 + DOOMLIGHTFACTOR - L - DOOMLIGHTFACTOR / gl_FragCoord.z; + float dist = max(0.0, gl_FragCoord.z); + float index = 59.0 + DOOMLIGHTFACTOR - L - DOOMLIGHTFACTOR / dist; color.rgb *= (1.0 - clamp(index, min_L, 31.0) / 31.0); gl_FragColor = color * texture2D(tex, gl_TexCoord[0].st); diff --git a/src/MUSIC/flplayer.c b/src/MUSIC/flplayer.c index 7b05ca6..c356db9 100644 --- a/src/MUSIC/flplayer.c +++ b/src/MUSIC/flplayer.c @@ -148,6 +148,9 @@ static int fl_init (int samplerate) FSET (num, "synth.sample-rate", f_soundrate); + FSET (int, "synth.chorus.active", mus_fluidsynth_chorus); + FSET (int, "synth.reverb.active", mus_fluidsynth_reverb); + // gain control FSET (num, "synth.gain", mus_fluidsynth_gain / 100.0); // 0.0 - 0.2 - 10.0 // behavior wrt bank select messages diff --git a/src/SDL/i_sound.c b/src/SDL/i_sound.c index 2ba9a8f..41a08f4 100644 --- a/src/SDL/i_sound.c +++ b/src/SDL/i_sound.c @@ -1260,6 +1260,8 @@ static const void *music_handle = NULL; // won't have this static void *song_data = NULL; +int mus_fluidsynth_chorus; +int mus_fluidsynth_reverb; int mus_fluidsynth_gain; // NSM fine tune fluidsynth output level int mus_opl_gain; // NSM fine tune OPL output level diff --git a/src/am_map.c b/src/am_map.c index 0138a01..79572eb 100644 --- a/src/am_map.c +++ b/src/am_map.c @@ -1225,8 +1225,8 @@ static void AM_drawGrid(int color) // Figure out start of vertical gridlines start = minx - extx; - if ((start - bmaporgx) % gridsize) - start -= ((start - bmaporgx) % gridsize); + if ((start - (bmaporgx>>FRACTOMAPBITS)) % gridsize) + start -= ((start - (bmaporgx>>FRACTOMAPBITS)) % gridsize); end = minx + minlen - extx; // draw vertical gridlines @@ -1251,8 +1251,8 @@ static void AM_drawGrid(int color) // Figure out start of horizontal gridlines start = miny - exty; - if ((start - bmaporgy) % gridsize) - start -= ((start - bmaporgy) % gridsize); + if ((start - (bmaporgy>>FRACTOMAPBITS)) % gridsize) + start -= ((start - (bmaporgy>>FRACTOMAPBITS)) % gridsize); end = miny + minlen - exty; // draw horizontal gridlines diff --git a/src/i_sound.h b/src/i_sound.h index 7768d5e..5cf0fb2 100644 --- a/src/i_sound.h +++ b/src/i_sound.h @@ -133,6 +133,8 @@ extern int snd_samplerate; extern int use_experimental_music; +extern int mus_fluidsynth_chorus; +extern int mus_fluidsynth_reverb; extern int mus_fluidsynth_gain; // NSM fine tune fluidsynth output level extern int mus_opl_gain; // NSM fine tune OPL output level diff --git a/src/m_misc.c b/src/m_misc.c index f83bf8f..2d15718 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -389,6 +389,8 @@ default_t defaults[] = {"mus_extend_volume",{&mus_extend_volume},{0},0,1, def_bool,ss_none}, // e6y: apply midi volume to all midi devices #endif + {"mus_fluidsynth_chorus",{&mus_fluidsynth_chorus},{1},0,1,def_bool,ss_none}, + {"mus_fluidsynth_reverb",{&mus_fluidsynth_reverb},{1},0,1,def_bool,ss_none}, {"mus_fluidsynth_gain",{&mus_fluidsynth_gain},{50},0,1000,def_int,ss_none}, // NSM fine tune fluidsynth output level {"mus_opl_gain",{&mus_opl_gain},{50},0,1000,def_int,ss_none}, // NSM fine tune opl output level diff --git a/src/r_main.c b/src/r_main.c index a2165e9..f38da14 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -106,7 +106,7 @@ angle_t viewangle; fixed_t viewcos, viewsin; player_t *viewplayer; // e6y: Added for more precise flats drawing -float viewfocratio; +fixed_t viewfocratio; int r_nearclip = 5; @@ -836,7 +836,7 @@ void R_ExecuteSetViewSize (void) // calculate projectiony using int_64_t math to avoid overflow when SCREENWIDTH>4228 projectiony = (fixed_t)((((int_64_t)cheight * centerx * 320) / 200) / SCREENWIDTH * FRACUNIT); // e6y: this is a precalculated value for more precise flats drawing (see R_MapPlane) - viewfocratio = (1.6f * centerx / wide_centerx) / ((float)SCREENWIDTH / (float)cheight); + viewfocratio = projectiony / wide_centerx; R_SetupViewScaling(); diff --git a/src/r_main.h b/src/r_main.h index 311a4f3..56d2423 100644 --- a/src/r_main.h +++ b/src/r_main.h @@ -72,7 +72,7 @@ extern int wide_offset2y; extern fixed_t projectiony; extern int validcount; // e6y: Added for more precise flats drawing -extern float viewfocratio; +extern fixed_t viewfocratio; // // Rendering stats diff --git a/src/r_plane.c b/src/r_plane.c index 19b3bed..c100815 100644 --- a/src/r_plane.c +++ b/src/r_plane.c @@ -104,9 +104,6 @@ static fixed_t planeheight; static fixed_t basexscale, baseyscale; static fixed_t *cachedheight = NULL; -static fixed_t *cacheddistance = NULL; -static fixed_t *cachedxstep = NULL; -static fixed_t *cachedystep = NULL; static fixed_t xoffs,yoffs; // killough 2/28/98: flat offsets // e6y: resolution limitation is removed @@ -120,9 +117,6 @@ void R_InitPlanesRes(void) if (spanstart) free(spanstart); if (cachedheight) free(cachedheight); - if (cacheddistance) free(cacheddistance); - if (cachedxstep) free(cachedxstep); - if (cachedystep) free(cachedystep); if (yslope) free(yslope); if (distscale) free(distscale); @@ -132,9 +126,6 @@ void R_InitPlanesRes(void) spanstart = calloc(1, SCREENHEIGHT * sizeof(*spanstart)); cachedheight = calloc(1, SCREENHEIGHT * sizeof(*cachedheight)); - cacheddistance = calloc(1, SCREENHEIGHT * sizeof(*cacheddistance)); - cachedxstep = calloc(1, SCREENHEIGHT * sizeof(*cachedxstep)); - cachedystep = calloc(1, SCREENHEIGHT * sizeof(*cachedystep)); yslope = calloc(1, SCREENHEIGHT * sizeof(*yslope)); distscale = calloc(1, SCREENWIDTH * sizeof(*distscale)); @@ -179,8 +170,8 @@ void R_InitPlanes (void) static void R_MapPlane(int y, int x1, int x2, draw_span_vars_t *dsvars) { - angle_t angle; - fixed_t distance, length; + int_64_t den; + fixed_t distance; unsigned index; #ifdef RANGECHECK @@ -188,8 +179,6 @@ static void R_MapPlane(int y, int x1, int x2, draw_span_vars_t *dsvars) I_Error ("R_MapPlane: %i, %i at %i",x1,x2,y); #endif - // e6y - // // [RH]Instead of using the xtoviewangle array, I calculated the fractional values // at the middle of the screen, then used the calculated ds_xstep and ds_ystep // to step from those to the proper texture coordinate to start drawing at. @@ -199,45 +188,18 @@ static void R_MapPlane(int y, int x1, int x2, draw_span_vars_t *dsvars) // Visplanes with the same texture now match up far better than before. // // See cchest2.wad/map02/room with sector #265 + if (centery == y) + return; + den = (int_64_t)FRACUNIT * FRACUNIT * D_abs(centery - y); + distance = FixedMul (planeheight, yslope[y]); + + dsvars->xstep = (fixed_t)((int_64_t)viewsin * planeheight * viewfocratio / den); + dsvars->ystep = (fixed_t)((int_64_t)viewcos * planeheight * viewfocratio / den); - if (!render_precise) - { - if (planeheight != cachedheight[y]) - { - cachedheight[y] = planeheight; - distance = cacheddistance[y] = FixedMul (planeheight, yslope[y]); - dsvars->xstep = cachedxstep[y] = FixedMul (distance,basexscale); - dsvars->ystep = cachedystep[y] = FixedMul (distance,baseyscale); - } - else - { - distance = cacheddistance[y]; - dsvars->xstep = cachedxstep[y]; - dsvars->ystep = cachedystep[y]; - } - - length = FixedMul (distance,distscale[x1]); - angle = (viewangle + xtoviewangle[x1])>>ANGLETOFINESHIFT; - - // killough 2/28/98: Add offsets - dsvars->xfrac = viewx + FixedMul(finecosine[angle], length) + xoffs; - dsvars->yfrac = -viewy - FixedMul(finesine[angle], length) + yoffs; - } - else - { - float slope, realy; - - distance = FixedMul (planeheight, yslope[y]); - slope = (float)(planeheight / 65535.0f / D_abs(centery - y)); - realy = (float)distance / 65536.0f; - - dsvars->xstep = (fixed_t)(viewsin * slope * viewfocratio); - dsvars->ystep = (fixed_t)(viewcos * slope * viewfocratio); - - dsvars->xfrac = viewx + xoffs + (int)(viewcos * realy) + (x1 - centerx) * dsvars->xstep; - dsvars->yfrac = -viewy + yoffs - (int)(viewsin * realy) + (x1 - centerx) * dsvars->ystep; - } - + // killough 2/28/98: Add offsets + dsvars->xfrac = viewx + xoffs + FixedMul(viewcos, distance) + (x1 - centerx) * dsvars->xstep; + dsvars->yfrac = -viewy + yoffs - FixedMul(viewsin, distance) + (x1 - centerx) * dsvars->ystep; + if (drawvars.filterfloor == RDRAW_FILTER_LINEAR) { dsvars->xfrac -= (FRACUNIT>>1); dsvars->yfrac -= (FRACUNIT>>1); diff --git a/src/r_segs.c b/src/r_segs.c index ba5df64..5718192 100644 --- a/src/r_segs.c +++ b/src/r_segs.c @@ -88,13 +88,13 @@ static int worldtop; static int worldbottom; static int worldhigh; static int worldlow; -static fixed_t pixhigh; -static fixed_t pixlow; +static int_64_t pixhigh; // R_WiggleFix +static int_64_t pixlow; // R_WiggleFix static fixed_t pixhighstep; static fixed_t pixlowstep; -static fixed_t topfrac; +static int_64_t topfrac; // R_WiggleFix static fixed_t topstep; -static fixed_t bottomfrac; +static int_64_t bottomfrac; // R_WiggleFix static fixed_t bottomstep; static int *maskedtexturecol; // dropoff overflow @@ -365,7 +365,7 @@ void R_RenderMaskedSegRange(drawseg_t *ds, int x1, int x2) if (t + (int_64_t) textureheight[texnum] * spryscale < 0 || t > (int_64_t) SCREENHEIGHT << FRACBITS*2) continue; // skip if the texture is out of screen's range - sprtopscreen = (int_64_t)(t >> FRACBITS); + sprtopscreen = (int_64_t)(t >> FRACBITS); // R_WiggleFix } dcvars.iscale = 0xffffffffu / (unsigned) spryscale; @@ -424,8 +424,8 @@ static void R_RenderSegLoop (void) // mark floor / ceiling areas - int yh = bottomfrac>>HEIGHTBITS; - int yl = (topfrac+HEIGHTUNIT-1)>>HEIGHTBITS; + int yh = (int)(bottomfrac>>HEIGHTBITS); + int yl = (int)((topfrac+HEIGHTUNIT-1)>>HEIGHTBITS); // no space above wall? int bottom,top = ceilingclip[rw_x]+1; @@ -528,7 +528,7 @@ static void R_RenderSegLoop (void) if (toptexture) { // top wall - int mid = pixhigh>>HEIGHTBITS; + int mid = (int)(pixhigh>>HEIGHTBITS); pixhigh += pixhighstep; if (mid >= floorclip[rw_x]) @@ -562,7 +562,7 @@ static void R_RenderSegLoop (void) if (bottomtexture) // bottom wall { - int mid = (pixlow+HEIGHTUNIT-1)>>HEIGHTBITS; + int mid = (int)((pixlow+HEIGHTUNIT-1)>>HEIGHTBITS); pixlow += pixlowstep; // no space above wall? @@ -948,10 +948,10 @@ void R_StoreWallRange(const int start, const int stop) worldbottom >>= invhgtbits; topstep = -FixedMul (rw_scalestep, worldtop); - topfrac = (centeryfrac>>invhgtbits) - FixedMul (worldtop, rw_scale); + topfrac = ((int_64_t)centeryfrac>>invhgtbits) - (((int_64_t)worldtop*rw_scale)>>FRACBITS); // R_WiggleFix bottomstep = -FixedMul (rw_scalestep,worldbottom); - bottomfrac = (centeryfrac>>invhgtbits) - FixedMul (worldbottom, rw_scale); + bottomfrac = ((int_64_t)centeryfrac>>invhgtbits) - (((int_64_t)worldbottom*rw_scale)>>FRACBITS); // R_WiggleFix if (backsector) { @@ -960,12 +960,12 @@ void R_StoreWallRange(const int start, const int stop) if (worldhigh < worldtop) { - pixhigh = (centeryfrac>>invhgtbits) - FixedMul (worldhigh, rw_scale); + pixhigh = ((int_64_t)centeryfrac>>invhgtbits) - (((int_64_t)worldhigh*rw_scale)>>FRACBITS); // R_WiggleFix pixhighstep = -FixedMul (rw_scalestep,worldhigh); } if (worldlow > worldbottom) { - pixlow = (centeryfrac>>invhgtbits) - FixedMul (worldlow, rw_scale); + pixlow = ((int_64_t)centeryfrac>>invhgtbits) - (((int_64_t)worldlow*rw_scale)>>FRACBITS); // R_WiggleFix pixlowstep = -FixedMul (rw_scalestep,worldlow); } } diff --git a/src/r_things.c b/src/r_things.c index f900a3e..f90c266 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -441,7 +441,7 @@ static vissprite_t *R_NewVisSprite(void) int *mfloorclip; // dropoff overflow int *mceilingclip; // dropoff overflow fixed_t spryscale; -int_64_t sprtopscreen; +int_64_t sprtopscreen; // R_WiggleFix void R_DrawMaskedColumn( const rpatch_t *patch, @@ -453,8 +453,8 @@ void R_DrawMaskedColumn( ) { int i; - int_64_t topscreen; - int_64_t bottomscreen; + int_64_t topscreen; // R_WiggleFix + int_64_t bottomscreen; // R_WiggleFix fixed_t basetexturemid = dcvars->texturemid; dcvars->texheight = patch->height; // killough 11/98 -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/prboom+.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

