CLI
- Added arm/arm64 builds
- Added
--recursive_vpk
option
GUI
- Added support for recovering deleted files in vpk archives
- It tries to automatically detect resource types
- See @PistonMiner's post here for more details on this
- Added support for embedded animations in vagrp
- Added support for automatically finding bare files on disk when opening a model
- Render entity lumps into a separate tab
- Normalize line endings in text viewer
- Do not crash when settings.txt fails to load
Library
- New vcs (compiled shader) decompiler, thanks to @robert-hoff
- Added entity I/O output in entity lump dump
- Added
Resource.FullFileSize
to attempt to calculate full buffer size of a resource file- Metadata does have a file size, but it excludes sound and texture data
- Added
Texture.CalculateTextureDataSize
method to return full texture buffer size- For block compressed textures this is as simple as summing up all mipmap level sizes
- For PNG textures, it will check for a valid header and scan all the PNG chunks until the end
- This does not work for JPEG files at the moment
- Added
verifyFileSize
(default true) toResource.Read
to verify that the provided stream was fully consumed by VRF - Added vanmgrph, vcdlist, and vdata resource type auto detection
- Added detection of resource type from singular input dependency in REDI
- Skip weights that are not vec4 during glTF export
- Fixed crash when determining file type from extensionless file name
- Fixed crash with duplicate key names in
SoundStackScriptValue
- Fixed mipmap level calculation for small textures
This release targets .NET 6.
CLI
- Added support for extension filter on recursive folders outside of vpks
- VPKs in VPKs are now recursed into
- Allow collecting stats on anything supported, not just resources
GUI
- Save and restore main window position and dimensions
- Added vmat tab that renders as keyvalues1
- Fixed exception after exporting to root of disk
- Removed "wtf" exception
Library
- Added support for dynamic expressions in material exports
- Added support for reconstructing xml files from vxml AST
- Added support for pretty printing css
- Added support for new versions of ToolsAssetInfo
- Corrected implementation of audio bits
- Refuse to export huge models that don't merge into one glb buffer
- Determine resource type from file name first
- Removed AppVeyor CI
GUI
- Material (vmat) renderer now uses correct vertex shader (fixes crashing on Intel drivers)
- Fallback particle number and vector providers to static value (fixes HL:A maps not loading)
Library
- Implemented Zstandard decompression of binary keyvalue3 binary blobs
- Implemented
CUBEMAP_RADIANCE_SH
reading - Fixed corrupted texture due to lz4 compression
- Fixed
CCompressedFullQuaternion
animation decoder decompression
GUI
- Added vphys rendering
CLI
- Find all vpks when collecting stats in a folder
- Split exceptions per file type when collecting stats
Library
- Added support for
RED2
block (It'sREDI
but keyvalues3) - Added support for Zstandard binary keyvalues3 compression
- Added
INSG
block - Added plaintext resource type
- Artifact's DotaItem (item_c)
- s&box's plain text data (SBData)
- Added
VTexExtraData.CUBEMAP_RADIANCE_SH
EntityLumpKeyLookup
is now thread-safe- Multiple fixes to binary keyvalues3 (fixes s&box compatibility)
- Disabled glTF buffer merging for files over 1GiB in size
GUI
- Default open dialog to
steamapps/common
folder for new users - Added material group support in model viewer
- Fixed crash on missing layers in map viewer
- Fixed color tinting in vr_standard shader
- Updated
vcdlist
icon
CLI
- Added
--vpk_list
- lists all resources in given VPK - Added
--gltf_export_format
- exports meshes/models in given glTF format - Added
--gltf_export_materials
- whether to export materials during glTF exports - Fixed macOS binaries in GitHub releases
Library
- Added support for exporting worlds (maps) and world nodes
- Added support for newer tool asset info files
- Added support for old pre-
VBIB
meshes - Added support for
SrMa
block (source maps) - Resource type is now determined from file extension if all other methods fail
- Texture names in glTF exports are now preserved
- Textures are now external in GLB exports
- Updated
KVFlaggedValue
with new flags (resource_name, panorama, soundevent, subclass) - Updated known entity lump keys
- Multiple improvements to texture exporting in glTF
- Improved byte array support in
NTRO
- Fixed glTF rotation
GltfModelExporter.ProgressReporter
is nowIProgress<string>
VBIB
structs were changed to match Valve's format more closely
This release targets .NET 5.
GUI
- Added trackbar for playing animations
- Added support for exporting as GLB instead of GLTF
- Binary kv1 files can be opened now (like chat.cfg)
Library
- Added partial support for exporting animations to glTF
- Added support for binary keyvalues 1 (to parse patchnotes.vdpn_c)
- Added support for vsnap files
- Added support for vrman files
- Updated known entity lump keys
GUI
- Fixed case sensitive searching
- Search will automatically search paths if input contains a slash
Library
- Added support for new version of compressed binary keyvalues3
- Fixed ETC textures decompressing upside down
- Fixed Rgba8888 colors
- Most texture decompressors use Span now (this change may have introduced some decoding bugs)
GUI
- GUI will now automatically try to find required game content vpks based on
gameinfo.gi
- Added new audio player
- GUI is now able to open mp3/wav/gif/jpg/png files without having to extract them
- Made navigating vpk file tree more consistent, now works with keyboard
- Added support for multiple animation textures
- Added checkered background in texture viewer
- Added more pixel formats for opengl rendering
- Added more file type icons
- Fixed various crashes
CLI
- CLI is now able to extract meshes and models into glTF
- File extraction is now able to find required files in the open vpk
- Changed thread partitioner
- Added osx build
Library
GltfModelExporter
is now in the library and not in GUI- Added
IFileLoader
andIProgressReporter
for extraction purposes - Added support for
DXGI_FORMAT.R16G16_SINT
- Fixed DXT5 non-power-two texture extraction
- Fixed a couple of null exceptions during model extraction
GUI
- Fixes to glTF model exporting
- Fixed null joint indices
- Fixed index buffers overflowing
- Fixed zero-length normals so the model can at least export
- Fixed remapping tables for meshes
- Fixed progress text overflowing during export
Library
- Added material exporting into keyvalues 1 format
- Added more entity key names
- Fixed package metadata
GUI
- Implemented glTF exporting for models and meshes (see #232)
- Models and meshes can be exported from vpk without opening it in the viewer
- Improved rendering for HemiOct normals
- Fixed GUI softlock when changing viewer background color
- Fixed a crash on some HL: Alyx maps
CLI
- Use invariant culture to fix exporting floats
Library
- Added a lot more known entity keys for HL: Alyx
- Added support for
R32G32B32A32_FLOAT
,R32_FLOAT
,R16G16B16A16_SINT
vertex attributes - Added support for
LegacySource1InvertNormals
- Fixed null bytes in closed captions
- Fixed a crash when there are no frames in an animation
- Removed
MeshWriter