If non-NULL, filesearch will begin in that subfolder of the desired searchpath, but can go back up to the root of the search later if not found in that location.
Primarily a small optimisation for checking the addons folder first
On most devices these days, there is a mandatory microphone indicator
when an input device is being used. Moreover, on macOS and some Linux
distros, the user will be prompted to grant permission to the game for
microphone access. To ensure we're playing nicely with these
expectations, instead of just leaving the device on at all times on
first use, close and reopen the device as sound input is needed.
This manages a lump list of shader lumps from a shaders.pk3, separate
from the loaded wadlist, so that shaders do not participate in the
wadlist system at all.
Implemented using libopus for the Opus codec, same as is used in Discord.
This adds the following cvars:
- `voice_chat` On/Off, triggers self-deafen state on server via weaponprefs
- `voice_mode` Activity/PTT
- `voice_selfmute` On/Off, triggers self-mute state on server via weaponprefs
- `voice_inputamp` -30 to 30, scales input by value in decibels
- `voice_activationthreshold` -30 to 0, if any peak in a frame is higher, activates voice
- `voice_loopback` On/Off, plays back local transcoded voice
- `voice_proximity` On/Off, enables proximity effects for server
- `voice_distanceattenuation_distance` distance in fracunits to scale voice volume over
- `voice_distanceattenuation_factor` distance in logarithmic factor to scale voice volume by distance to. e.g. 0.5 for "half as loud" at or above max distance
- `voice_stereopanning_factor` at 1.0, player voices are panned to left or right speaker, scaling to no effect at 0.0
- `voice_concurrentattenuation_factor` the logarithmic factor to attenuate player voices with concurrent speakers
- `voice_concurrentattenuation_min` the minimum concurrent speakers before global concurrent speaker attenuation
- `voice_concurrentattenuation_max` the maximum concurrent speakers for full global concurrent speaker attenuation
- `voice_servermute` whether voice chat is enabled on this server. visible from MS via bitflag
- `voicevolume` local volume of all voice playback
A Voice Options menu is added with a subset of these options, and Server Options has server mute.
The pipeline abstraction mimicked Vulkan and d3d12 explicit pipeline state objects
but, like GraphicsContext, was ill-considered for the kinds of drawing
behavior SRB2 uses. Rather than push this complexity into the drawing
code, it will instead be the responsibility of the backend to manage
explicit pipeline objects if necessary.
Now, drawing code must create a Program instance, bind it, and set the
rasterizer state to do the equivalent. Uniform, sampler, and vertex
attribute bindings are significantly simpler to set up now.
Takes two screenshots for a list of maps that have an "Alternate View Point" thing with tag 0 -- one intended for level select pictures and another for Discord Rich Presence. If no view point exists, the map is skipped.
Since there are less crashes than ever before, and there are risks
with trying to do anything inside a signal handler beyond the most
basic recovery stuff, we should avoid doing *anything* in here.
There are a few (void) casts of unused variables in some gamepad-
related functions which do not compile on old SDL versions because
their parameters don't match up. This fixes that.
Allows the user to configure the mixing buffer size to reduce
latency at the cost of higher CPU usage, or vice versa.
This also raises the default buffer size from 1024 to 2048, to
address some underrun problems people have with the current buffer
size.