February 2020
-
General
polymost.cpp: In gloadtile_art_indexed(), reallocate a texture when the tile changes dimensions even if it is shrinking
January 2020
-
General
game.h: fix calc_smoothratio_demo() to take into account differences between timerGetClockRate() and TICRATE when calculating the refresh frequency to interpolate between
September 2019
-
General
polymost.cpp: fix buffer overflow issue in uploadpalswap() & correct the code to initialize an extra row of black pixels
August 2019
-
General
clockticks.hpp: Fix issue where higher precision comparisons would cause unexpected behaviour with game loop code due to ototalclock being incremented rather than set to totalclock (causing a lack of subtick precision and potential doubled up/dropped game updates).
Show details
Provide compareHighPrecision() for any code that needs higher precision comparisons.
-
General
kenbuild/src/game.cpp: Fix compilation issue due to removal of sqr() from pragmas.h in r7597
-
General
Change some clocks to support sub-tick precision using a new class, ClockTicks.
Show details
Using that higher precision, interpolate at a higher granularity. Further, truncate the target interpolation time to vertical blank boundaries to avoid producing temporal artifacts. Fix issues caused by interpolation calculations being handled differently in multiple places (and fix cases where smoothratios were being thrown away only to be redone without checking all proper conditions). Ensure ClockTicks changes do not break other targets (EKenBuild, VoidSW), but note any interpolation there is not similarly updated.
-
General
timer.cpp: fix order of operations issue with timerUpdate()
-
General
timer.cpp: avoid using floating point arithmetic in timerUpdate()
-
General
sdlayer.cpp: use glFinish() to synchronize with the buffer swap
-
General
timer.cpp: improve cross-platform & cross-compiler issues relating to precision & period.
Show details
Handle timerlastsample such that we don't throw away time & run slow in certain cases. Ensure when calculating n, we do the double division first before multiplying for sake of floating point precision.
-
General
sounds.cpp: fix infinite loop caused by removal of "else" in r7939
-
General
Fix issue with indexed colour textures where in the case that tiles entered the texcache while !waloff[picnum] & were later (re)loaded, the earlier pth pointing to the tilesheet containing the blank tile would never be properly replaced with an updated gl texture.
-
General
game.cpp: move check for quitevent during start-up so that if start-up is cancelled during definitions parsing, the game won't continue to play in a half-loaded state.
-
General
gameexec.cpp: allow G_ShowView() to execute regardless of the state of g_screenCapture.
Show details
This fixes skyboxes not rendering in TILE_SAVESHOT.
-
General
tiles.cpp: backup & restore picsiz, walock, & waloff alongside other per tile arrays in artClearMapArt() and artSetupMapArt()
Show details
This fixes an issue with viewscreens as tiles that are setup game-side after a map is loaded could have their sizes reset to 0 while not being properly cleared from walock/waloff
-
General
sector.cpp: ensure that if scripts have told us not to render normally to the tile, that we still handle restoring our target & setting up the tile appropriately for what the script may have rendered
-
General
engine.cpp: make renderSetTarget() more robust so that passing an xsiz or ysiz <= 0 is not accepted and can't cause a segmentation fault
-
General
polymer.cpp: fix issue where assert could fail due to HUD model sprites having an owner >= MAXSPRITES
-
General
polymost.cpp: Fix issue where tiles whose dimensions had grown would not have their sizes updated in GL and could fail to update their texture data
-
General
polymost.cpp: If a tile in the tilesheet is large enough to fit a redefined tile, use that space rather than allocating a new texture
-
General
polymost.cpp: if an indexed colour tile is being reloaded, changed dimensions, and no longer matches the calculated tilesheets, generate a separate texture for it.
Show details
Similarly, if the tile does match the calculated tilesheets but was a separate texture, delete the texture and load the tile back into the tilesheet.
-
General
build.vcxproj: Execute custom build tools & step before BuildGenerateSources
July 2019
-
General
polymost_scansector(): avoid using a culling method not designed for voxels when handling 1-sided wall aligned sprites that have voxel replacements
-
General
Fix mixing offscreenrendering (render targets) and mirrors. Don't allow recursing beyond 1 level of mirroring through multiple levels of render targets.
-
General
Fix rendering skyboxes to a tile by altering renderSetTarget() & renderRestoreTarget() to set & reset xdim & ydim so that G_ShowView() can render while a render target is set,
Show details
and additionally modifying G_SetupCamTile() to call EVENT_DISPLAYROOMSCAMERATILE after calling renderSetTarget()
-
General
tilepacker.cpp: enclose macro substituted values in parenthesis
-
General
Add updatesectorneighbour() and updatesectorneighbourz() and make them accessible to CON to allow searching for nearby neighbouring sectors from a known sector.
Show details
These updatesector counterparts are more performant for tasks that require determining whether nearby sectors exist at a point as they will not exhaustively search the map. This also leads to more correct behaviour when sectors are disjoint, as queries will breadth-first search neighbouring sectors rather than risk accidentally stumbling first across accomodating disjoint sectors.
-
General
Fix edge case where mirrors & TROR could interact and render over skyboxes in the classic software renderer
-
General
Fix parallel build by switching to generating .obj files from .glsl files and treat the shader source as an externed global resolved at link time.
Show details
Additionally, remove the no longer necessary shader generated headers folder from .gitignore
-
General
Support separate .glsl shaders in Windows MSVC builds
-
General
osdfuncs.cpp: fix OSD background sometimes not rendering with the correct gl state
-
General
Support clamping in polymost1Frag.glsl and use it for sprites
-
General
Separate out polymost1Frag and polymost1Vert shaders from polymost.cpp and add rules for building in the GNUmakefile.
Show details
Additionally, git ignore the shader's generated headers folder.
-
General
polymost.cpp: Adjust shaders to use texture2DGradARB() if available
-
General
Improve depth fighting by pushing out the near plane and improve near plane clipping by depth clamping.
Show details
Suggest reducing SCISDIST when there's time to debug SCISDIST issues.
-
General
If GL_ARB_clip_control & GL_ARB_depth_clamp are available, reflect that in glinfo
-
General
Update GLAD to 0.1.30 and add GL_ARB_clip_control, GL_ARB_depth_clamp, and GL_ARB_shader_texture_lod extensions
June 2019
-
General
game.cpp: temporarily limit A_Spawn() owner changes from r7738 to locators
-
General
Disable -malign-double on i386 as libraries would need to be compiled with it.
-
General
Fix 32-bit Polymost issues by enabling SSE instructions and setting GCC to use SSE floating point math exclusively.
Show details
Additionally, enable SSE2 to better match 64-bit builds and use -malign-double for the potential performance benefit.
-
General
actors.cpp: Change demo camera path following behaviour to search for locators based on a hitag channel to avoid locator lotag contention.
Show details
Now, destination and subject locators should be assigned one hitag channel. Destination locators will be visited starting from lotag 0 and counting upward. Subject locators can have any lotag within the same hitag channel, and may also be a destination if the lotag is not separated from the destination locator ids. Destination locators must now specify their subject locator in their owner field by lotag.
-
General
game.cpp: When A_Spawn() is spawning from an already existing sprite, do not reset the owner field if it has been overridden from the default.
-
General
polymost.cpp: Fix polymost_domost() issue with COMBINE_STRIPS where in certain cases, merging with the viewport nodes caused accidental reading of sentinel node values.
Show details
Additional debug code is included for visualizing the state of the vsp data structure. Further, fix issue in drawpoly where it would access out of bounds of dpxy if fewer than 3 vertices were passed in and fix issue where multiple calls to polymost_setVisibility() were repeatedly setting the visibility factor to the same value.
-
General
Use stencil buffer in Polymost to restrict mirrors to only render within the region of the screen occupied by the mirror wall.
Show details
Additionally, raise minimum number of stencil buffer bits to accomodate future use of the stencil buffer.
-
General
winlayer.cpp: fix videoBeginDrawing() to return an intptr_t to mirrorBuffer when inpreparemirror
-
General
Add EVENT_RESETGOTPICS which gives scripts the chance to reset gotpics (and similar effects trackers) for effects that run in EVENT_DISPLAYROOMS.
Show details
EVENT_RESETGOTPICS is called after the last call to EVENT_DISPLAYROOMS in a frame, but before any engine-side calls to renderDrawRoomsQ16()
-
General
Fix TROR & skyboxes to work with mirrors in Software & Polymost
-
General
game.cpp: fix issue where tilt angle was not being reset to 0 at times when it should have been disabled
-
General
game.cpp: improve G_FPSLimit() to be more stable with regard to floating point precision.
Show details
Additionally, prefer rendering early and compensating with a late frame due to clock precision rather than the other way around so that we are more consistently within a target vblank period.
-
General
Fix latency issue introduced by G_FPSLimit() handling of videoNextPage() that was causing frames to be delayed presentation until after the next frame is prepared.
Show details
videoNextPage() is now called immediately after preparing the frame for drawing, outside of G_FPSLimit() but on the condition that its return value is true.