S2V now features dark mode, texture viewer improvements, improved model decompiler, fixes to the explorer and the package viewer.
Dark mode
Dark mode is now available thanks to the release of .NET 9! By default it will follow your system theme, but you can change it in the settings.
There are a few issues in a some controls, but we expect these to be fixed in the next .NET 10 release.
Texture conversions
We've replaced our BCn (DXT5, BC7, ATI1N, etc…) texture decoders with another library (which we've helped test) to have more correct
and faster decoding of these textures.
As a reminder, when exporting textures in GUI, they will be decoded using your GPU when possible, so it avoids these CPU reimplementations.
We've also fixed a few bugs in the GPU-based decoders and the texture viewer.
There are also new options in the texture viewer such as viewing separate channels and UV wrapping. Read more below.
Breaking change
If you are using the CLI to export resources into glTF, you must now specify --gltf_export_format
argument.
Reminder that you can always download a dev build before a new release to test new fixes.
GUI
- Added a setting to toggle the theme
- Texture viewer
- Added support for viewing standalone .svg files
- Added R/G/B/A channel separation option
- Added option to repeat texture twice to view the UV wrapping
- Added texture sampling selection
- Removed FPS counter
- Texture viewer will no longer render frames if nothing changed (saves battery)
- Fixed software mips to render at full size
- Fixed decode flags resetting sometimes
- Explorer
- Added support for detecting workshop content with split vpks (CS2)
- Files in bookmarks and recent will now display game icon
- Paths in bookmarks and recent are now abridged with the game name
- Fixed loading game icons after Steam update
- Package viewer
- Added sort arrow to headers
- Fixed clicking size column to sort by descending on first click
- Fixed right clicking files in search results not expanding the tree view nodes
- Fixed performance of rendering large lists (e.g. if search results display 10k files)
- Added Root Motion visualization to model viewer
- Fixed baked lighting on the new Deadlock map
- Fixed container sound files to not throw to view the KV3 data
- Fixed mip levels being reduced to 0 pixels
- Fixed hardware texture decoder not handling mip levels (only full size is exported though)
CLI
- Breaking change:
--gltf_export_format
argument is now mandatory for exporting assets to glTF - Files outside of a vpk can now be exported to glTF
- Recursive scanning will now read more supported files that are not resources (fonts, nav, flex scenes, closed captions)
Library
- Added support for
TBUF
block (Deadlock) - Added
UIFontFilePackage
to decompile uifont files (you can decompile them with the CLI) - Added Animation Graph resource decompile support
- Model decompiler
- Groups animations into folders when available
- Added AnimGameplayTiming annotation exporting
- Added bone weightlist extracting
- Added support for exporting models with 8 bone weights (also in glTF)
- Fixed ragdoll colliders missing parent nodes
- Added support for parsing binary blobs in text keyvalues3
- Replaced BC1-BC7 texture decoders with a different implementation
- Added export support to EXR for BC6h textures
- Blocks now keep a reference to the parent
Resource
object - Fixed decoding non-power-of-two ETC2 textures
- Fixed glTF exports to have deterministic texture indices
- Fixed 3D textures not mip-mapping depth
- Skip exporting aggregate meshes with a scale of zero in glTF
- Exporting glTF with satellite textures will now save glTF to disk before textures finish exporting
- Improved VfxEval OpCode names, fixed radians function mislabeled as Remap01ScaleOffset