🔬 Valve's Source 2 resource file format parser, decompiler, and exporter.
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.
influenceradius
is a string in map loaderFLCI
and DSTF
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.
--gltf_export_extras
to export entity keyvalues as mesh.extrasDotaVisualNovels
resource typeGltfModelExporter.ExportExtras
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 👀
core
mod so that game mod ends up with higher priorityskybox_reference
transform in map viewerFlexSceneFile
to read and export .vfe
files[PR#]
prefix from entity values in vmap exportContinuousIntegrationBuild
not being set for deterministic buildsAdded support for dynamic shadows and light probes
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.
idleanim
in animated entitiesSerialization.NTRO
has been removed, instead all NTRO files are upconverted to KV3ChoreoExtract
)IFileLoader.LoadFileCompiled
GetArray
support for NTROValue<NTROStruct>
Model viewer now supports morphs
Texture viewer has been rewritten It is now more powerful and faster.
--vpk_verify
now verifies hashes of every archive (or every file checksum if hashes are unavailable)ClosedCaptions.ToString
Texture.RetrieveCodecFromResourceEditInfo
to get specific decoder instructionsmipLevel
parameter to Texture.GenerateBitmap
GetDecompressedTextureAtMipLevel(mipLevel)
VTexExtraData.DATA_METADATA
to METADATA
RubikonPhysics.Shapes.Mesh.Triangle
to be a XYZ structCompressedDeltaVector3
and CompressedAnimVector3
decoderIHardwareTextureDecoder
which is implemented by the GUISystem.IO.Hashing.Crc32
BinaryKV3
readingKVObject
now has a debugger displayThis release targets .NET 8. This release is mostly bug fixes.
Exporting a folder now has a dialog asking which file types you want to export
VPK viewer now calculates recursive folder size, and allows sorting by column
The GUI application was renamed to Source 2 Viewer, including a new icon by Gabe Follower, and website was redesigned.
We have optimized away a lot of heap allocations during frame rendering, which practically removes garbage collection. We have also reduced memory usage by not keeping some things in memory after loading them.
It is now possible to make Windows Explorer open vpk files in Source 2 Viewer with a single click of a button.
This also registers vpk:
protocol handler (used by Source 2 workshop tools), so links like vpk:path/to/pak.vpk:file/inside/thing.vmdl_c
will open directly to that file.
As a reminder, you do not have to look for _dir.vpk
file, if you open any numbered archive (like _001.vpk
), it will correctly open _dir.vpk
Our ValvePak library gained functionality to pack files into a new VPK archive, and to dogfood (?) this code, we have added this as a feature in Source 2 Viewer.
Fog | No fog (old) |
---|---|
We have replaced our basic text viewer with a more advanced one, it has an improved find window (Ctrl+F), and allows folding matching brackets.
You can now add files to bookmarks.
vpk:
protocol in Windows Explorersettings.txt
to %LocalAppData%/Source2Viewer/settings.vdf
vpk:
are now supported when passed in as arguments to the exeServerGarbageCollection
--stats_vbib
to collect vertex attributes--tools_asset_info_short
to only print filenamesGameFileLoader
which was only previously available in the GUI
PanoramaDynamicImages.ToString
(vdpi)STAT
blockDXBC
and SPRV
block support in s&box shaders$keyvalues
and refAnimIncludeModels
in model extractmodeldoc28
format instead of modeldoc32
Texture
keeping a reference to resource stream even after it was disposedWe have shifted our versioning scheme, so instead of this release being 0.5.0
, it is 5.0
.
VRF | CS2 |
---|---|
Player clips | Bomb plant |
---|---|
setpos
and getpos
buttons
getpos
in game, click setpos
in VRF and vice versa(readonly_)tools_asset_info.bin
filesvjs
and vts
file formats.Texture.GenerateBitmap
now accepts specific depth and cubemap face argumentsPhysAggregateData