Skip to content

1.1.7 - Texture fixes, keyboard, etc

Choose a tag to compare

@CatPieLeaf CatPieLeaf released this 22 Sep 15:37
· 577 commits to main since this release

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)