Febbraio 2020
-
Generale
polymost.cpp: In gloadtile_art_indexed(), reallocate a texture when the tile changes dimensions even if it is shrinking
Gennaio 2020
-
Generale
game.h: fix calc_smoothratio_demo() to take into account differences between timerGetClockRate() and TICRATE when calculating the refresh frequency to interpolate between
Settembre 2019
-
Generale
polymost.cpp: fix buffer overflow issue in uploadpalswap() & correct the code to initialize an extra row of black pixels
Agosto 2019
-
Generale
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).
Mostra dettagli
Provide compareHighPrecision() for any code that needs higher precision comparisons.
-
Generale
kenbuild/src/game.cpp: Fix compilation issue due to removal of sqr() from pragmas.h in r7597
-
Generale
Change some clocks to support sub-tick precision using a new class, ClockTicks.
Mostra dettagli
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.
-
Generale
timer.cpp: fix order of operations issue with timerUpdate()
-
Generale
timer.cpp: avoid using floating point arithmetic in timerUpdate()
-
Generale
sdlayer.cpp: use glFinish() to synchronize with the buffer swap
-
Generale
timer.cpp: improve cross-platform & cross-compiler issues relating to precision & period.
Mostra dettagli
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.
-
Generale
sounds.cpp: fix infinite loop caused by removal of "else" in r7939
-
Generale
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.
-
Generale
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.
-
Generale
gameexec.cpp: allow G_ShowView() to execute regardless of the state of g_screenCapture.
Mostra dettagli
This fixes skyboxes not rendering in TILE_SAVESHOT.
-
Generale
tiles.cpp: backup & restore picsiz, walock, & waloff alongside other per tile arrays in artClearMapArt() and artSetupMapArt()
Mostra dettagli
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
-
Generale
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
-
Generale
engine.cpp: make renderSetTarget() more robust so that passing an xsiz or ysiz <= 0 is not accepted and can't cause a segmentation fault
-
Generale
polymer.cpp: fix issue where assert could fail due to HUD model sprites having an owner >= MAXSPRITES
-
Generale
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
-
Generale
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
-
Generale
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.
Mostra dettagli
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.
-
Generale
build.vcxproj: Execute custom build tools & step before BuildGenerateSources
Luglio 2019
-
Generale
polymost_scansector(): avoid using a culling method not designed for voxels when handling 1-sided wall aligned sprites that have voxel replacements
-
Generale
Fix mixing offscreenrendering (render targets) and mirrors. Don't allow recursing beyond 1 level of mirroring through multiple levels of render targets.
-
Generale
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,
Mostra dettagli
and additionally modifying G_SetupCamTile() to call EVENT_DISPLAYROOMSCAMERATILE after calling renderSetTarget()
-
Generale
tilepacker.cpp: enclose macro substituted values in parenthesis
-
Generale
Add updatesectorneighbour() and updatesectorneighbourz() and make them accessible to CON to allow searching for nearby neighbouring sectors from a known sector.
Mostra dettagli
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.
-
Generale
Fix edge case where mirrors & TROR could interact and render over skyboxes in the classic software renderer
-
Generale
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.
Mostra dettagli
Additionally, remove the no longer necessary shader generated headers folder from .gitignore
-
Generale
Support separate .glsl shaders in Windows MSVC builds
-
Generale
osdfuncs.cpp: fix OSD background sometimes not rendering with the correct gl state
-
Generale
Support clamping in polymost1Frag.glsl and use it for sprites
-
Generale
Separate out polymost1Frag and polymost1Vert shaders from polymost.cpp and add rules for building in the GNUmakefile.
Mostra dettagli
Additionally, git ignore the shader's generated headers folder.
-
Generale
polymost.cpp: Adjust shaders to use texture2DGradARB() if available
-
Generale
Improve depth fighting by pushing out the near plane and improve near plane clipping by depth clamping.
Mostra dettagli
Suggest reducing SCISDIST when there's time to debug SCISDIST issues.
-
Generale
If GL_ARB_clip_control & GL_ARB_depth_clamp are available, reflect that in glinfo
-
Generale
Update GLAD to 0.1.30 and add GL_ARB_clip_control, GL_ARB_depth_clamp, and GL_ARB_shader_texture_lod extensions
Giugno 2019
-
Generale
game.cpp: temporarily limit A_Spawn() owner changes from r7738 to locators
-
Generale
Disable -malign-double on i386 as libraries would need to be compiled with it.
-
Generale
Fix 32-bit Polymost issues by enabling SSE instructions and setting GCC to use SSE floating point math exclusively.
Mostra dettagli
Additionally, enable SSE2 to better match 64-bit builds and use -malign-double for the potential performance benefit.
-
Generale
actors.cpp: Change demo camera path following behaviour to search for locators based on a hitag channel to avoid locator lotag contention.
Mostra dettagli
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.
-
Generale
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.
-
Generale
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.
Mostra dettagli
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.
-
Generale
Use stencil buffer in Polymost to restrict mirrors to only render within the region of the screen occupied by the mirror wall.
Mostra dettagli
Additionally, raise minimum number of stencil buffer bits to accomodate future use of the stencil buffer.
-
Generale
winlayer.cpp: fix videoBeginDrawing() to return an intptr_t to mirrorBuffer when inpreparemirror
-
Generale
Add EVENT_RESETGOTPICS which gives scripts the chance to reset gotpics (and similar effects trackers) for effects that run in EVENT_DISPLAYROOMS.
Mostra dettagli
EVENT_RESETGOTPICS is called after the last call to EVENT_DISPLAYROOMS in a frame, but before any engine-side calls to renderDrawRoomsQ16()
-
Generale
Fix TROR & skyboxes to work with mirrors in Software & Polymost
-
Generale
game.cpp: fix issue where tilt angle was not being reset to 0 at times when it should have been disabled
-
Generale
game.cpp: improve G_FPSLimit() to be more stable with regard to floating point precision.
Mostra dettagli
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.
-
Generale
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.
Mostra dettagli
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.