Build 9879
GIT-
fix building against SDL older than 2.0.9
SVN handles and Git names are merged into one person.
fix building against SDL older than 2.0.9
extra const in libtess2
fix use of value before validation in polymer_updatewall()
prevent potential deferencing of null ptr
this sort of type punning isn't necessary anymore
fix copy/paste error in screentextRender()
For some reason, this error didn't propagate into screentextGetSize().
tiny polymost optimization; swap 4 floating point divisions for multiplications in polymost_bindPth()
fix more stupid errors in b6740a7b32d352e6d71a5be0bc118f381599933e
fix dumbass GL state oversights
fix stupid copy/paste error in b6740a7b32d352e6d71a5be0bc118f381599933e
work on controller features
fix oversight in current A_RadiusDamage() implementation that allowed a sprite to inflict radius damage on itself
fix animvpx
allow r_pr_shadowdetail 6 (8192x8192)
add missing buildgl_bindSamplerObject() calls
add SAMPLER_NEAREST_NEAREST_CLAMP and SAMPLER_NEAREST_NEAREST_WRAP, samplers which use GL_NEAREST_MIPMAP_NEAREST for the minification filter
It looks like mipmapping actually works with the indexed color texture shader in Polymost as-is, but it doesn't work with Polymer art mapping so we're disabling it there.
oops, this still needs to be called here for Polymer to work in the editor
fix warning
add amalgamated version of the vector math library found at https://github.com/glampert/vectormath
clean up r_persistentstreambuffer so you can turn it on and off without having to restart anything
move all the cvars in polymost.cpp so that they're at least in the same spot
fix a few polymer lighting bugs, add interpolation to light positions, etc
improve GL state management, add support for GL sampler objects, add libtess2 and implement in polymer in place of the GLU tesselator, drop dependency on libGLU, improve GL debug output (in debug builds), fix various GL resource leaks
This should prevent a few more state changes, and address issues arising from rendermode changes wiping our state but not any of our accounting data for said state. Because libtess2 seems to be abandoned and because there were a few issues I needed to fix anyway, I went ahead and made a custom single-file header-only version for improved performance.
detect GL_ARB_sampler_objects, drop detection of GL_ARB_vertex_buffer_object, GL_EXT_texture_edge_clamp, and GL_SGIS_texture_edge_clamp
remove unfinished x86_64 port of the original x86 classic renderer
It never worked.
move yax_updown[] reset to yax_update()
don't use SDL_WINDOW_FULLSCREEN_DESKTOP and don't call SDL_SetWindowBordered in fullscreen
ignore SDL_WINDOWEVENT_MOVED and SDL_WINDOWEVENT_RESIZED in fullscreen
I'm not sure if this is going to end up being the correct thing to do here, but it's what we shipped in the Fury 2.0 binary.
better multi-monitor support
fix console logging issue on Linux introduced by logging rework
TIL vsnprintf and _vsnprintf are not, in fact, the same thing.
add "notrans" .def token for voxels to disable drawing with translucency in GL modes
address defect in c653ba7fc09257ed3590cd2ce29d155ef6752032
add libasync (async++), https://github.com/Amanieu/asyncplusplus/
update libdivide to b322221677351ebb11f0a42fe9a9a2794da5bfe5, add libdivide_config.h
engine: update libdivide to b322221677351ebb11f0a42fe9a9a2794da5bfe5, add libdivide_config.h
print commit hash from SDL_GetRevision() to log at startup when using SDL dev builds (odd-numbered patch level)
This is admittedly terrible, but it shouldn't break unless the SDL_GetRevision() output format changes, in which case it just won't print the string anymore.
prune SDL_mixer stuff from sdl_inc.h
We will never NEED_SDL_MIXER.
fix tabs in random.h
Revert "engine: make floor sprites clip a little more like floors"
clipmove() really needs concrete indication of a moving point's starting floor height for this optimization to work correctly, and inferring that ourselves without it being explicitly passed in isn't something that would work.
fix SDL fullscreen issues
remove r_pr_vbos cvar and the code paths used for values 0 and 1
r_pr_vbos 0 was broken and r_pr_vbos 1 became useless once it was clear r_pr_vbos 2 wasn't causing issues.
add GL context version to glinfo, allow in 8 bpp mode (it's still backed by a GL surface, after all...)
manually flush console log file ptr in crash handler
add coordinates to log output from clipmove()
make floor sprites clip a little more like floors
bump MAXCLIPNUM to 4096
This isn't really ideal, but neither is hitting the limit due to maps with an excessive number of sprites that use clipshapes.
fix double free on exit
implement buildvfs_exists() using GetFileAttributes() on Windows and stat() elsewhere, FORCE_INLINE some stuff in vfs.h
The rationale behind this change is that I was profiling CPU use during loads of particularly heavy .def files (10000+ items) and discovered an inappropriate amount of CPU time was being spent inside access(). So, I did some research and found several cases where people on stackoverflow etc had asked what the fastest method of determining whether or not a file exists was, with the results of several benchmarks being given as answers. GetFileAttributes() seemed to win on Windows and stat() seemed to win on Linux, and I did not see any results where access() was a serious contender when included in the spread of tested functions, with the best I saw being 1100-something nanoseconds for access() and 800-something for stat(). This whole thing would be faster if we just read in the entire directory index and matched files against it ourselves with just the few API calls involved with retrieving the index, but access to uncooked data littered across a directory tree isn't really something I give a shit about optimizing further at the moment.
fix incorrect lower bound for r_anisotropy
inline openfrompath_internal
disable SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING if _MSC_VER is defined
include mimalloc-new-delete.h in smmalloc_generic.cpp
This defines global new/delete overrides, so look here if problems stemming from those ever arise.
don't crash when loading corrupt maps with sectors with zero walls
This also makes the editor recognize corrupt sectors with < 3 walls and try to repair the map. It works for the corrupt sectors in E4L1, at least. Please immediately report any problems caused by this change directly to me.
engine/mact: reimplement controller dead zone so that it isn't just naively applied to each axis independently
rename r_windowpositioning var in source, default to 1
allow pasting into the console from the system clipboard with RMB
Disable with "osdclipboard 0".
clear mouse buttons when toggling the console