1.1.7 - Texture fixes, keyboard, etc
Texture corruption gone, textures stop reloading themselves, a new audio backend, and a titlebar where the compositor draws none!
Textures:
The block encoders are now bc7enc_rdo's rather than hand-written ones, and the
corrupted patterns are gone.
- Fixed the faint stripes and squares that showed up in transparent textures and
normal maps - Fixed transparent areas revealing the canvas behind them. A fully transparent
texel's hidden colour was dragging the block's endpoints around, so it bled
back through as a faint square - BC7 now reaches for a two-subset mode on the blocks that need one. A block
holding two distinct colours cannot be described by a single line through it,
which is what a square on a normal map was - BC1, BC3, BC4 and BC5 come from bc7enc_rdo now instead of Stud's own encoders
- The block pool scales with the machine instead of stopping at three
Textures reloading over and over:
Seeing the same texture a second time made Stud decode and re-encode it from
scratch, all the way back down to the mips, every time. Three separate faults,
all fixed:
- The cache only kept levels of 1024x1024 and larger, so everything below that
was re-encoded on every sighting - Dead cache generations were never deleted, so an old encoder's output sat on
disk forever while the current one had no room - The cache was too small to hold what a single session actually uses
- Cache keys come from xxHash now
Audio:
- Stud no longer needs PortAudio, or any audio library, installed. miniaudio is
compiled in and speaks ALSA, PulseAudio, JACK and OSS itself, so audio is
simply always there - Fixed audio sounding compressed and harsh on loud, bassy passages. Samples
were being flattened at full scale before the sound server ever saw them,
instead of keeping their headroom until your volume is applied - Stud appears once in the volume mixer, instead of as "Stud . Stud"
Desktop Environment:
- A titlebar on compositors that draw none of their own, GNOME above all, via
libdecor. Where the compositor does draw them (KDE, sway, Hyprland, river)
nothing changes and you keep the real one. libdecor is optional: without it
installed, such a compositor leaves the window undecorated exactly as before
Underneath:
- The render host's Vulkan entry points are resolved by volk
- Every vendored library's licence now installs with the package
Known bugs:
- On NVIDIA, a 12 seconds freeze may or may not happen, randomly, a single time. This bug is already investigated (unfixable from stud's side), documented and will be soon reported to NVIDIA.
- X11 may show a black screen for a few milisseconds when the minimized window is brought to foreground
- Sometimes, clicking to join a game on Roblox launcher, stud may or may not hang on home screen for a few seconds.
Warning
Stud is still a work in progress: it boots, logs in, renders the real app and joins real games, and it also breaks in ways nobody has measured yet. A log from a machine that isn't ours is the most useful thing you can send (the tray's Export logs puts a session in one file)