🔬 Valve's Source 2 resource file format parser, decompiler, and exporter.
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
.gltf
, not .glb
)--stats
now uses memory mapped files when reading from vpkSkiaSharp.Views.WindowsForms
dependencyResponseRules
(vrr)SnapshotExtract
, vsnap
)ArrayPool
when decompressing binary keyvalues 3ArrayPool
in MeshOptimizer
ArrayPool
when decompressing texturesITextureDecoder
interface