Skip to content

Releases: SteamDatabase/ValveResourceFormat


04 Apr 09:08
Choose a tag to compare

View commits since 0.3.1


  • Improved deleted file recovery in vpks
    • Recover possible file path and names
    • Recover files in archives in trailing data after last possible entry for that archive
  • Replaced "Show triggers" and "Show entity colliders" with a list of entities that can be toggled individually
  • Fixed winforms message events not processing while OpenGL is active (was causing controls to not refresh)
  • Added a setting to specify max texture size (default to 1024) to reduce VRAM usage when opening big maps
  • Added Ctrl+F support to search text tabs (Ctrl+Shift+F to repeat search)
  • Added file contents search within a vpk (essentially a grep)
  • Added support for changing camera movement speed by scrolling up and down
  • Holding Shift or Alt and moving the mouse is now an alternative camera movement
  • Saving and deleting a camera will now synchronize it to all other open tabs
  • Skyboxes are now rendered with different znear/zfar values so it is possible to see them further
  • Fixed skybox origin to be scaled correctly


  • Added support for newer shader versions
  • Added shader metadata extraction
  • Added support for newer binary keyvalues 3
  • Updated known entity lump keys for CS2
  • Texture packing improvements for CS2 in glTF export
  • Exported normal textures are no longer have Y inverted
  • Fixed glTF export for files that are over 2GiB by splitting buffers (only for .gltf, not .glb)
  • Fixed NaN bone scales in glTF


23 Mar 18:14
Choose a tag to compare

View commits since 0.3.0


  • --stats now uses memory mapped files when reading from vpk


  • Enabled high DPI support
  • Optimized package tree
  • Optimized uploading decompressed textures to the GPU
  • Added support for picking objects in map viewer
    • Double click to open selected object in a new tab
  • Added new file type icons
  • Added support for new entity lump values
  • Automatically expand lone folders in package tree (common in maps vpks)
  • Fixed closed resources not releasing memory
  • Fixed some bugs
  • Fixed Counter-Strike 2 vpks not opening
  • Removed SkiaSharp.Views.WindowsForms dependency


  • Added support for new binary keyvalues 3 (0x4B563303)
  • Added support for ResponseRules (vrr)
  • Added support for extracting snapshots (SnapshotExtract, vsnap)
  • Use ArrayPool when decompressing binary keyvalues 3
  • Use ArrayPool in MeshOptimizer
  • Use ArrayPool when decompressing textures
  • All texture decompressors now implement ITextureDecoder interface
  • Reduced memory usage by not keeping textures during glTF export


29 Dec 17:39
Choose a tag to compare

View commits since 0.2.2


  • Added --gltf_textures_adapt - perform any glTF spec adaptations on textures (e.g. split metallic map)
  • Fixed output files being dumped to disk root when input path did not end with a slash


  • Improved performance of text views by disabling word wrapping
  • Improved performance of map and model viewer
  • Added support for opening files directly inside of a vpk file by providing a path as an argument to VRF.exe, for example vpk:pak01_dir.vpk:file/inside.vmdl_c
  • Added memory mapped file support when reading package file to reduce memory usage
  • Added support for selecting multiple files in the package viewer
  • Added support for aggregate scene objects in map viewer
  • Added a checkbox to hide tools materials in map viewer
  • Added basic rendering of entity models and sprites similar to Hammer
  • Added automatic folder discovery when folders contain addoninfo.txt or .addon files
  • Opening files inside of game addons folders will now automatically discover folders to load files (by looking for addoninfo.txt)
  • Added export and decompile items to tab context menu (this replaces the Export menu)
  • Exporting (and decompiling) a folder now attempts to deduplicate files, for example when a model exports, it won't export mesh and animation files separately
  • Animated models now calculate their bounding box dynamically, they should no longer disappear out of view in map viewer
  • Animation scrubber now pauses while dragging it
  • Fixed FPS counter to correctly count frames
  • Fixed binary blobs in PhysSceneNode
  • Fixed loading skyboxes in Half-Life: Alyx maps
  • Fixed model viewer having issues with skeletons when the are multiple meshes
  • Fixed export dialog cancel button not actually cancelling the export
  • Fixed particles never decaying
  • Use Cascadia Mono font when available


  • Improved animation handling
    • Implemented CCompressedDeltaVector3 and CCompressedStaticVector3
    • Implemented bone scaling
    • Decode frames on demand to reduce memory usage
    • Bones are now remapped to a model
  • Improved glTF exporting
    • Improved performance and file sizes
    • Reuse animations, skeletons, models, and meshes whenever possible
    • Decompiling a folder will now use glTF exporter
    • Generate PBR texture that glTF can understand
    • Embedded meshes now have names
    • Vertex buffers are no longer duplicated per draw call
    • Added morph position data
    • Only well known vertex accessors are output now
    • Fixed some bugs
  • Improved material and texture extraction
    • Sprite textures will now export into individual frames
    • Materials will now produce a vmat file and individual textures
  • Added support for sound phoneme reading
  • Added support for post processing file reading
  • Added support for newer shader file versions
  • Mesh and Morph are now resource data types
  • Fixed lz4 ring decoder frame size in binary kv3
  • Fixed heap corruption after decompressing zstd binary kv3
  • Fixed NTRO Color type
  • Fixed CBlockDecompress::FastDecompress implementation
  • Use native Half type


05 Sep 10:55
Choose a tag to compare

View commits since 0.2.1


  • Allow double clicking external refs to open file
  • Draw bounding boxes for sprite frame
  • Fixed some deprecated OpenGL usages
  • Some performance optimizations


  • AnimationGroupLoader is now in the library
  • EntityLumpKeyLookup is now called StringToken
  • Implemented sprite sheets in Texture
  • Improved material attribute exporting
  • Added support for R16G16_SNORM vertex attributes
  • Added .vts resource type (typescript)
  • Added faster path for UTF-8 in ReadNullTermString
  • Fixed parsing negative numbers in text kv3
  • Extract binary kv3 files with a kv3 header
  • Do not output format:generic when we know it's not generic for kv3 files


07 Apr 12:29
Choose a tag to compare

View commits since 0.2.0


  • Added arm/arm64 builds
  • Added --recursive_vpk option


  • Added support for recovering deleted files in vpk archives
  • 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


  • 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) to Resource.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


29 Dec 09:26
Choose a tag to compare

View commits since 0.1.10

This release targets .NET 6.


  • 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


  • 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


  • 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


03 Aug 11:10
Choose a tag to compare

View commits since 0.1.9

  • Removed AppVeyor CI


  • 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)


  • 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


28 Jun 12:53
Choose a tag to compare

View commits since 0.1.8


  • Added vphys rendering


  • Find all vpks when collecting stats in a folder
  • Split exceptions per file type when collecting stats


  • Added support for RED2 block (It's REDI 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)
  • EntityLumpKeyLookup is now thread-safe
  • Multiple fixes to binary keyvalues3 (fixes s&box compatibility)
  • Disabled glTF buffer merging for files over 1GiB in size


25 Apr 17:17
Choose a tag to compare

View commits since 0.1.7


  • 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


  • 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


  • 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 now IProgress<string>
  • VBIB structs were changed to match Valve's format more closely


22 Dec 22:32
Choose a tag to compare

View commits since 0.1.6

This release targets .NET 5.


  • Added trackbar for playing animations
  • Added support for exporting as GLB instead of GLTF
  • Binary kv1 files can be opened now (like chat.cfg)


  • 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