Skip to content

Releases: ValveResourceFormat/ValveResourceFormat

11.1

19 Dec 10:28
11.1
Compare
Choose a tag to compare

This update was released to support new binary keyvalues 3 version added in Deadlock.

Reminder that you can always download a dev build before a new release is made to test the fixes.

Added navigation mesh visualization
Available in the map viewer, and when opening standalone nav files.
image

Happy holidays!
Certain models have procedural cloth bones which did not animate, and now they do. Also added support for new 8 boneweights per vertex.
image

GUI

  • Added support for visualizing navigation meshes (.nav files)
  • Added rendering support for 8 boneweights per vertex (new Deadlock hero models)
  • Added support for animating procedural cloth bones (fixes clothes not animating)
  • Added basic css file highlighter
  • Catch gltf export exceptions in export dialog for better reporting
  • Fixed incorrect scroll jump when expanding a nested folder that has only one item
  • Fixed paused animations being off by a frame
  • Fixed multiple issues with animations
  • Implemented parsing Steam's librarycache/assets.vdf to get the game icons in beta client

CLI

  • --vpk_cache now writes a header with version which invalidates the cache when S2V version changes
  • Added special --i steam when using --stats to scan all Steam libraries automatically

Library

  • Rewritten binary keyvalues 3 parser, added support for v5
  • Added NavMeshFile to parse nav files
  • Added PCM8 sound format
  • Removed VBIB.CombineRemapTables
  • Fixed KV3 text parser incorrectly adding double quotes when reading flagged value inside an array

View commits since 11.0

11.0

03 Dec 17:54
11.0
Compare
Choose a tag to compare

NET .9

This release updates to the .NET 9 runtime. This brings a breaking change in form of enabling CET support, which may cause it to crash on unpatched Windows installations.

Signed binaries

The Windows executables are now signed!
Free code signing provided by SignPath.io, certificate by SignPath Foundation.

Experimental lights
Added a checkbox to activate experimental lights. If you love shaders, help us improve the rendering of these!

j

GUI

  • Executable is now signed
  • Added a welcome screen for new users
  • Added post processing (color correction) support to map viewer
  • Added an option to check for new updates daily
  • Added a button in settings that sets the FOV to match CS2
  • Added setting for shadow resolution
  • Added basic syntax highlighting in text viewer
  • Added render exposure slider in map viewer
  • Added hardware occlusion culling
  • Added a checkbox to activate experimental lights
  • Fixed mouse not moving past right edge in fullscreen
  • Various fixes for Deadlock updates
  • Improved lighting in SteamVR Home

CLI

  • Executable is now signed
  • Added --gltf_export_animations and --gltf_animation_list
  • Added --texture_decode_flags
  • --vpk_filepath now supports multiple paths separated by a comma
  • Parameters -a and -b will also process VPK inner files
  • Changed output of --vpk_list

Library

  • Updated to .NET 9
  • Removed REDIBlock, and upconvert it to KV3 based Resource Edit Info
  • Upconverted old EntityLump to KV3
  • Added SIMD implementation of MeshOptimizer vertex decoder
  • Added support for exporting HDR textures in EXR format
  • Implemented int16/uint16 in binary KV3
  • Added NmGraph resource types
  • Added GameFolderLocator (functions the same as the Explorer in GUI)
  • FindFileWithContext now support rooted paths
  • Do not fail material decompiler if the texture parameter no longer exists in shader file
  • Reduced allocations in various places
  • Updated ObjectTypeFlags
  • Fixed reading quoted keys in text kv3

View commits since 10.2

10.2

03 Sep 20:05
10.2
Compare
Choose a tag to compare

Implemented post processing and color correction, fixed lights in Half-Life: Alyx
We still have overall brightness to figure out, but maps looks closer to in-game now.
Some maps didn't even render the sun correctly, but now they do.

Initial support for Deadlock

Added a welcome screen for new users
Promotes basic things like setting default app for vpk files, enabling the new auto update checks, and shows the explorer right away.

GUI

  • Added a welcome screen for first time users
  • Added an automatic update check
    • Runs once upon app start
    • Will not check more than once a day
    • Disabled by default (can be toggle from the "Check for updates" menu)
  • Added color correction support with a new post processing shader in map viewer
  • FOV can now be specified with decimal points which allows matching in-game field of view exactly
    • Added a button to set the FOV to 4:3 which matches CS2 FOV exactly
  • Added a setting for changing shadow resolution
  • Fixed mouse not moving past right edge in fullscreen
  • Fixed incorrect lighting in Half-Life: Alyx
  • Fixed some shader issues in Deadlock

CLI

  • Added --gltf_export_animations and --gltf_animation_list to control which animations to export
  • Added --decompile as an alias to --vpk_decompile
  • Added --texture_decode_flags to control HDR exports
  • Changed --vpk_filepath to accept multiple paths with a comma
  • Changed output of --vpk_list to be more verbose
  • Parameters -a -b will also process VPK inner files

Library

  • Added ValveResourceFormat.IO.GameFolderLocator to find Steam game paths
  • Added support for exporting HDR textures in EXR format
  • Added SIMD optimized implementation of the meshoptimizer vertex decoder
  • Added support for int16 and uint16 types in binary kv3
  • Added resource types for animgraph2
  • Reduced allocations in various places
  • Only export default animation for entities in glTF map export

View commits since 10.1

10.1

13 Jul 11:28
10.1
Compare
Choose a tag to compare

GUI

  • Append _d suffix when exporting vmap
  • Use PreviewModel in material viewer
  • Added basic fgd generation for games that do not ship tools
    • Open maps/xxx/entities/default_ents.vents_c file and it will have an extra FGD tab
  • Added explicit check for available OpenGL version
  • Added citadel entities
  • Added flags to object dialog
  • Fixed initial game scan blocking the explorer window
  • Fixed opening incorrect file when double clicking a game in explorer
  • Fixed extract dialog progress being synchronized incorrectly
  • New users will now have open explorer by default option enabled by default

CLI

  • Switched to ConsoleAppFramework from McMaster.Extensions.CommandLineUtils for parsing arguments

Library

  • Added support for new meshoptimizer index buffer encoding
  • Added enum values for new resource types
  • Added new VfxEval functions
  • Added Texture.ReadTextureMipLevel()
  • Fixed handling root null in binary kv3
  • Fixed slowness in BC7 texture decoder
  • Fixed 'times to fire' in entity lump when it is not 1

View commits since 10.0

10.0

27 May 10:53
10.0
Compare
Choose a tag to compare

Improved vmap decompiler
The vmap decompiler now exports various types of geometry and entities, including toolbrushes and world geometry, as editable hammer meshes,
while also maintaining correct physics surface properties with procedural textures and correct tints.

Added path input to package viewer
Similar to regedit, the package viewer now features an address field that updates when
you select a file or folder in the file tree. Additionally, you can type or
paste a path into this field, and it will attempt to select the closest existing file.

Faster render mode switching
Render modes no longer recompile shaders, and switch instantly as a result.
Different modes have also been organized into logical groups.

GUI

  • Added path input to package viewer
  • Added partial support for baked light maps
  • Added bone names when using show skeleton checkbox
  • Filtering in explorer now remembers the collapsed state of game nodes
  • Draw 2D skybox before 3D skybox translucents
  • Fixed old Dota 2 map versions missing from the explorer
  • Fixed incorrect shadows in model viewer
  • Fixed a crash when influenceradius is a string in map loader
  • Fixed a crash when cancelling package verification
  • Fixed save button in texture viewer not actually working
  • Fixed quick previews not being disabled when only play audio is checked
  • Fixed animated node bounding box becoming extremely large
  • Only verify file checksums if archive has no MD5 hashes during package verification
  • Render modes are now switched using a shader uniform
  • Multiple shader and rendering improvements

CLI

  • Dump to folder when output exists as a folder and we're trying to write a file

Library

  • Added support for new blocks: FLCI and DSTF
  • Added support for choreo files version 19
  • Improved support for certain vcs file versions
  • vmap decompiler improvements:
    • vmap decompiler will now export geometry generated from hammer meshes as hammer meshes
    • Added support for exporting toolbrushes to hammer meshes
    • Added support for exporting mesh entities to hammer meshes
    • Added support for exporting world geometry to hammer meshes
    • vmap physics mesh is now also exported as a hammer mesh, to make it easily editable
    • Added physVertexMatcher to separate hammer geometry out of the physics mesh
    • Added procedural physics tool textures so that the exported physics mesh maintains correct physics surface properties
    • Added correct tints to exported hammer meshes
    • Fixed exporting vertex streams on worldnode models and hammer meshes
    • Added automatically generated selection sets that group the different parts of the decompiled vmap
  • glTF export improvements:
    • Split aggregate meshes into individual mesh fragments
    • Allow exporting entity lump (vents) file
    • Clamp color and metallic factor
  • Fixed unnecessary allocation in ETC2 decoders
  • Fixed panorama files to only check CRC if data is not empty

View commits since 9.2

9.2

26 Apr 18:30
9.2
Compare
Choose a tag to compare
9.2

Optimized package viewer

The file tree is now created lazily, which vastly improves performance and memory usage on large VPKs.
For example, the Dota 2 pak01_dir.vpk contains 325k files (which also create 40k folders).

This VPK now opens 8 times faster, and consumes 3 times less memory.
This also makes closing the tab much faster as it no longer needs dispose every single tree node.

9.1 (Old) 9.2 (New)
2.43 seconds 0.29 seconds
241mb memory (GC) 74mb memory (GC)
650mb memory (process) 193mb memory (process)

File previews

There is now a setting to preview files right from the package viewer,
including an option to autoplay sounds.

Selecting a file in the tree view will automatically load it in the right pane,
and selecting a folder will show the folder contents as it did before.

This may be slow for certain big files like models with many animations.
Preview-on-click feature can be enabled in settings.

GUI

  • Added file previews
  • Added an option to automatically open explorer on app start (if no arguments were provided)
  • Package viewer tree list is now constructed lazily
  • Enabled explorer theme in package viewer and disabled lines (this replaced the plus/minus buttons with arrows)
  • Expanding a folder that contains a single folder will now automatically expand that folder for you
  • Fixed a couple of issues which prevented Explorer from opening when Steam is not installed or libraries are missing
  • Fixed enviroment blending on certain community maps
  • Fixed some default values being omitted in shader extract

CLI

  • Added option --gltf_export_extras to export entity keyvalues as mesh.extras

Library

  • Added support for new sound file format (Dota 2)
  • Added DotaVisualNovels resource type
  • Fixed support for reading hitboxes in older models
  • Added GltfModelExporter.ExportExtras

View commits since 9.1

9.1

16 Apr 09:26
9.1
Compare
Choose a tag to compare
9.1

View commits since 9.0

Highlights

Added a .vpk extension icon in Windows Explorer
Icon designed by Gabe Follower

If you have registered file association before, you have to register it again in settings to get the icon.

Added support for animating character eyes in CS2 models 👀

GUI

  • Renamed unstable builds to dev builds
  • Added .vpk file extension icon for the Windows Explorer
  • Added message box when detecting settings downgrade on app start
  • Added support for CS2 character eyes (#762)
  • Improved map/model viewer sidebar to be resizable and scrollable
  • Package viewer will now remember tree sidebar width between packages
  • Opening workshop files will now skip core mod so that game mod ends up with higher priority
  • Loading bar will now continue displaying until the file is fully loaded and ready (although the progress bar will be frozen)
  • Added I8 support for the texture viewer
  • Added particle force generators
  • Fixed mod2x blending in particles
  • Fixed multiple issues with blending overlays and decals
  • Fixed multiple issues in particle operators
  • Fixed skybox_reference transform in map viewer
  • Fixed hardware texture decoder thread initialization
  • Fixed null references in map loader
  • Fixed an exception on app start when search path settings contain non existing files
  • Fixed different sky texture format in CS2
  • Fixed cubemap and light probe flicker on certain maps
  • Map viewer: Always put aggregate meshes into opaque drawcalls
  • Rendering improvements

Library

  • Updated nuget package icon
  • Added FlexSceneFile to read and export .vfe files
  • Added DotaPatchnotes resource type
  • Added exporting vmdl body groups
  • Remove [PR#] prefix from entity values in vmap export
  • Improved shader extract texture definition
  • Fixed null references in model exports
  • Fixed ContinuousIntegrationBuild not being set for deterministic builds
  • Fixed shader extraction in s&box
  • glTF exporter will now create 1x1 images for missing textures

9.0

14 Mar 16:01
9.0
Compare
Choose a tag to compare
9.0

View commits since 8.1

Highlights

Added support for dynamic shadows and light probes

Source2Viewer_YH3YWvtVBY.webm

Improved rendering of clip brushes and physics groups

Added support for exporting and rendering hitboxes
As you can also notice, we also have a better lighting setup and background (dark/light) in the model viewer. You can move light by holding Ctrl and left mouse button.

Capture transparent screenshots from model viewer
When you press Ctrl+C, it will copy a transparent PNG to the clipboard.

GUI

  • Added support for rendering model hitboxes
  • Added support for picking objects in the 3d skybox
  • Added support for idleanim in animated entities
  • Added support for SteamVR workshop addon dependencies
  • Added support for light probes in map viewer
  • Added dynamic shadows
  • Added fancier background for model/single-node viewer
    • Allows switching to light background
    • Removed setting to change background color
  • Added a few new asset type icons
  • Model viewer now has a static light angle which can be moved with mouse while holding Ctrl and left mouse button
  • Opening entity info dialog no longer blocks the main window, switches to other entities upon click
  • Improved rendering of physics groups (clips)
  • Fixed multiple cameras in map viewer when they have same name
  • Fixed VBIB hash collisions
  • Fixed drawing occluder meshes in map viewer
  • Fixed double click opening files in inner map vpks
  • Fixed rendering mod2x overlays
  • Fixed not drawing tools materials in material viewer

CLI

  • Fixed "Enumeration already finished"

Library

  • Serialization.NTRO has been removed, instead all NTRO files are upconverted to KV3
  • Added vcdlist reading and decompilation (ChoreoExtract)
  • Added IFileLoader.LoadFileCompiled
  • Added more data to vmdl exports
  • Fixed a few issues with exporting maps from older games
  • Fixed shader files incorrectly disposing stream in some cases
  • Fixed broken animations when exporting vmdl
  • Fixed Angle Shear Vector for light_barn entity in vmap

8.1

06 Feb 19:42
8.1
Compare
Choose a tag to compare
8.1

View commits since 8.0

GUI

  • Added outline to FPS counter
  • Switched OpenGL buffer APIs to more modern direct state access APIs
  • Double-clicking particle entity in map viewer will now open the particle itself
  • Enabled logging of high severity OpenGL debug messages
  • Fixed double-click to expand folders in package tree view opening files incorrectly
  • Fixed creating animation texture for models with no bones
  • Fixed a couple of rendering bugs on specific graphics drivers
  • Fixed compatibility with some old files

Library

  • Added GetArray support for NTROValue<NTROStruct>

8.0

31 Jan 18:40
8.0
Compare
Choose a tag to compare
8.0

View commits since 7.0

Highlights

Model viewer now supports morphs

morph.mp4

Texture viewer has been rewritten
It is now more powerful and faster.

textures.mp4

GUI

  • New texture viewer with more features
    • Hardware accelerated decoding and rendering
    • Smoother mooving and scaling experience
    • Support SVG files
    • Switch channels, opaque, transparent, or opaque with split alpha, mip levels, depth, cubemap faces
    • Cubemaps allow switching between individual face, cube projection, and equirectangular projections
    • Save (Ctrl-S) or copy (Ctrl-C) to save currently visible texture
  • Textures are now decoded with GPU for faster exporting and more correctness
  • Creating new vpk now uses rudimentary editing ui where you can add or remove files before saving
  • Added morph composite rendering
  • Added Ctrl-C keybind for any model/map viewer which copies current viewport to clipboard
  • Added confirmation dialog when trying to open over 5 files in the default app
  • Improved physics/clip brush rendering
  • Fixed cubemap fog rendering on maps like de_inferno
  • Partially fixed Half-Life: Alyx character animations to play correctly
  • Multiple improvements and fixes to our shaders
  • Renderer now uses separate framebuffer for more precise depth buffer
  • Renderer now uses reverse-Z and infinite far plane
  • Replaced our default HDRi cubemap in the model viewer
  • Converted all textures to immutable storage
  • 3D skybox is now prescaled to simplify some things and avoid jittering on some maps like de_mirage
  • FPS counter is now rendered with OpenGL with addition of CPU and GPU times (can be disabled in settings)

CLI

  • Added support for dumping closed captions
  • Used array pool during vpk dump for less memory use in certain cases
  • --vpk_verify now verifies hashes of every archive (or every file checksum if hashes are unavailable)

Library

  • Added model morph flex rules
  • Reduced png encoder zlib compression to 4 (from default 6) for faster encodes
  • Added ClosedCaptions.ToString
  • Added Texture.RetrieveCodecFromResourceEditInfo to get specific decoder instructions
  • Added Dota herolist resource type
  • Added skeleton to vmdl export
  • Added animation root motion to vmdl export
  • Added extracted animations as simple AnimFile nodes to vmdl export
  • Added mipLevel parameter to Texture.GenerateBitmap
  • Removed GetDecompressedTextureAtMipLevel(mipLevel)
  • Map decompiles now include particle snapshots
  • Map decompiles now set aggregate props contribute to vis and disable merging
  • Split aggregate draw calls in map export for correct tints
  • Renamed VTexExtraData.DATA_METADATA to METADATA
  • Optimized RubikonPhysics.Shapes.Mesh.Triangle to be a XYZ struct
  • Fixed game file loader not finding main game vpks when opening a file from {game}_addons folder
  • Fixed decoding issues with certain RGBA16161616F textures
  • Fixed some textures exporting as 1x1
  • Fixed jittery animations caused by CompressedDeltaVector3 and CompressedAnimVector3 decoder
  • Added IHardwareTextureDecoder which is implemented by the GUI
  • Switched to System.IO.Hashing.Crc32
  • Optimized memory allocations in multiple places, including BinaryKV3 reading
  • KVObject now has a debugger display