Hermes - Performance Layer for VaM

Demo + Lite Hermes - Performance Layer for VaM

Download [1.42 MB]
Demos or "Lite" versions of Paid Content

golgotha

Member
Joined
Jun 11, 2022
Messages
10
Reactions
82
golgotha submitted a new resource:

Hermes - Performance Layer for VaM - Desktop-focused performance layer for VaM that reduces loading time and memory pressure

Hermes — Make VaM scale with your library

VaM should not become slower simply because your content library gets larger.

Hermes is an independent performance layer for Virt-A-Mate, designed primarily for users with medium to very large libraries.

Instead of allowing VaM to materialize an entire content catalog as Unity objects for every Person, Hermes builds lightweight local indexes and materializes morphs, clothing and hair only when they are actually needed.

Its current...

Read more about this resource...
 
The updater is not incremental. It is useless for larger libraries. Takes too much time, opens too much files at once, freezes PC. Don't be discouraged - I like your work but it requires work. I really appreciate the scene selector - simple 1 person/2 person/3+ changes a lot.
 
The updater is not incremental. It is useless for larger libraries. Takes too much time, opens too much files at once, freezes PC. Don't be discouraged - I like your work but it requires work. I really appreciate the scene selector - simple 1 person/2 person/3+ changes a lot.

This is still a wip. i'll work on that.

Thanks for the feedback. (y)
 
I don't know just me or others suffering this as well. I can't open hairs and clothes custom page, even i tried a clean version (disabled all other plugins) of VAM.
 
I don't know just me or others suffering this as well. I can't open hairs and clothes custom page, even i tried a clean version (disabled all other plugins) of VAM.

I view that today. Try to fix that in the next version.
 
An interesting plugin, but there are many problems that need to be fixed and improved. For example, from what I saw:
- an error occurs while loading person
this happens when person loaded:
!> Exception during Restore of geometry: System.NullReferenceException: Object reference not set to an instance of an object
at (wrapper dynamic-method) DAZCharacterSelector: DMD<DAZCharacterSelector::ResetHair> (DAZCharacterSelector,bool)
this happens when you reset pose:
!> Exception during Restore of geometry: System.NullReferenceException: Object reference not set to an instance of an object
at DAZCharacterRun.PrepRun (bool) <0x00212>
at DAZCharacterRun.SmoothApplyMorphsLite () <0x00036>
at (wrapper dynamic-method) DAZCharacterSelector.DMD<DAZCharacterSelector..RestoreFromJSON> (DAZCharacterSelector,SimpleJSON.JSONClass,bool,bool,SimpleJSON.JSONArray,bool) <0x01762>
at Atom.Restore (SimpleJSON.JSONClass,bool,bool,bool,SimpleJSON.JSONArray,bool,bool,bool,bool) <0x00fbf>

- hairs, morphs - don't work, the thumbnails are visible but just not used on person (clothes work), built in morphs works but not all are displayed
- you can't customize clothes, hairs; also clothing plugins don't work
[plugin#2_Regguise.CustomShaderLoader] [NONE] Initializing CustomShaderLoader
[plugin#2_Regguise.CustomShaderLoader] [NONE] RestoreFromJSON: [WARNING] jc is null or empty
id: plugin#2_Regguise.CustomShaderLoader AttemptLoadAssetBundle: Skynet.Latex_Shader.1:/Custom/Assets/Latex Shader/latex.assetbundle
[plugin#2_Regguise.CustomShaderLoader] [NONE] Found 1 shaders in bundle
id: plugin#2_Regguise.CustomShaderLoader Successfully loaded shader: Latex

- unable to load presets, except pose presets
... and many other problems if you just check the work of the other tabs on person

I don't think it's necessary to switch from showing active cloth, hair, morph to all every time, it's very convenient. And also scrolling through the plugin list is very fast, and flipping through pages in tabs is not very convenient. The halo under person feet should be switchable.
 
golgotha updated Hermes - Performance Layer for VaM with a new update entry:

Hermes 0.5.4

NEW

Hermes control panel. Press Q outside of loading to open a panel that drives the plugin: build version (number, commit, date), library figures (packages, scenes, memory, cold index sizes), the list of loaded BepInEx DLLs, and one options page per Hermes DLL with a switch on every line. Nothing is hardcoded — the rows are read from each plugin's own config, so a new module or option shows up on its own. Clicking a switch writes the same setting you would edit by...

Read the rest of this update entry...
 
and new plugin UI is incompatible with the stopper's built-in clothing manager plugin
 
What happens when VAM starts? There's a progress bar and this stage takes lot of time, also starting scene takes a long time. I have huge library - maybe 8k vars is not enough for tests. Adding new vars is a lot easier - are steps (ie. 500/2000) stored permanently and can be interrupted (I know the software says do not stop but again adding lots of scenes at once hits 32 GB)?
 
What happens when VAM starts? There's a progress bar and this stage takes lot of time, also starting scene takes a long time. I have huge library - maybe 8k vars is not enough for tests. Adding new vars is a lot easier - are steps (ie. 500/2000) stored permanently and can be interrupted (I know the software says do not stop but again adding lots of scenes at once hits 32 GB)?

Hello Kretos.

i'm not sur to undestrand your problem. When you install the plugin, the first step is to execture vam-storebuilder, the first time it can take times, and after that if you add some var, it should be fast.

Also, the fisrt time you start VaM with Hermes, it can be slow, just the first time, for building some index files.

After that, all of VaM should be faster.
 
Thanks for the feedback, i'll try to fix that.

If you can send me your LogOutput.log file (in the BePinEx folder), that would help me a lot.
Hey mate,

Here it goes. For context, I'm attempting to load PURE's #47. I'm having issues with several of their looks, but also from other creators. The Person Atom spawns with the default body morphs when attempting to load the scene.

[Message: BepInEx] BepInEx 5.4.23.5 - VaM (2/3/2026 8:27:20 PM)
[Info : BepInEx] Running under Unity v2018.1.9.10931241
[Info : BepInEx] CLR runtime version: 2.0.50727.1433
[Info : BepInEx] Supports SRE: True
[Info : BepInEx] System platform: Bits64, Windows
[Message: BepInEx] Preloader started
[Info : BepInEx] Loaded 1 patcher method from [BepInEx.Preloader 5.4.23.5]
[Info : BepInEx] 1 patcher plugin loaded
[Info : BepInEx] Patching [UnityEngine.CoreModule] with [BepInEx.Chainloader]
[Message: BepInEx] Preloader finished
[Warning: HarmonyX] AccessTools.Property: Could not find property for type UnityEngine.Application and name isBatchMode
[Message: BepInEx] Chainloader ready
[Message: BepInEx] Chainloader started
[Info : BepInEx] 2 plugins to load
[Info : BepInEx] Loading [Hermes Optimization 0.5.4]
[Info :Hermes Optimization] [MorphStore] store loaded — 8016 morphs. Signature v1;s1;4c0102b64732ba08.
[Info :Hermes Optimization] [MorphStore] active. 5 patches, 0 failures.
[Info :Hermes Optimization] [MorphStore] panel rebind active (list/filter/pagination from the store).
[Info :Hermes Optimization] [MorphStore] geometry param API rebind active (on-demand materialization on GetFloatJSONParam).
[Info :Hermes Optimization] [LazyItems] active. 12 patches, 0 failures. Index: path to \hermes-cache
[Info :Hermes Optimization] [RestoreFix] active. 5 patches. early-out=True debounce=True
[Info :Hermes Optimization] [LazyPackages] active. 3 patches, 0 failures. Cache: path to \packages.bin (1704 known packages)
[Info :Hermes Optimization] [LazyPackages] jsonCache trim active (the parsed JSON tree is no longer kept in RAM).
[Info :Hermes Optimization] [BootFix] active.
[Info :Hermes Optimization] [ImageLoader] active. Budget 8 ms, max 128/frame. Parallel decoding: 4 threads.
[Info :Hermes Optimization] [LoadGate] active. Timeout 30 s. Audio: waited.
[Info :Hermes Optimization] [SceneBrowser] lever 1 active. 2 patches.
[Info :Hermes Optimization] [SceneBrowser] Filter zone active (side panel of the scene dialog).
[Info :Hermes Optimization] [FileIndex] disabled by configuration.
[Info :Hermes Optimization] [MemoryFix] active. deltas=True thumbnails=True assets=True (delay 3.0 s)
[Info :Hermes Optimization] Hermes Optimization 0.5.4 (git 6dc34776, 2026-08-03): 9/10 modules started.
[Info : BepInEx] Loading [Hermes UI 0.5.4]
[Info : Hermes UI] No scene loading background in path to \hermes-background — the loading screen shows how to add some.
[Info : Hermes UI] Patched: FileManager.Refresh
[Info : Hermes UI] Patched: SuperController.Start
[Info : Hermes UI] Patched: SuperController.LoadCo
[Info : Hermes UI] Patched: SuperController.UpdateLoadingStatus
[Info : Hermes UI] Patched: SuperController.IncrementLoadingSlider
[Info : Hermes UI] Patched: SuperController.CheckResumeSimulation
[Info : Hermes UI] Patched: ImageLoaderThreaded.Update
[Info : Hermes UI] Patched: ImageLoaderThreaded.QueueImage
[Info : Hermes UI] Patched: ImageLoaderThreaded.QueueThumbnail
[Info : Hermes UI] Patched: QueuedImage.Process
[Info : Hermes UI] Patched: DAZCharacterSelector.RestoreFromJSON
[Info : Hermes UI] Patched: URLAudioClipManager.QueueClip
[Info : Hermes UI] Patched: CustomUnityAssetLoader.DoLoadedCallbacks
[Info : Hermes UI] [PluginPanel] active.
[Info : Hermes UI] Hermes UI 0.5.4 (git 6dc34776, 2026-08-03) loaded. Progress overlay active.
[Message: BepInEx] Chainloader startup complete
[Info :Hermes Optimization] [BootFix] indexes pre-sized from the previous run (pathToVarFileEntry : 468,138 entrees).
[Info :Hermes Optimization] cache packages sauve (1711 packages) : path to \packages.bin
[Info :Hermes Optimization] Refresh done — rebuilt from cache = 1096 | captured (native scan) = 13 | zips opened on demand = 0
[Info :Hermes Optimization] index [Custom/Hair/Female/] perime — reconstruction
[Info :Hermes Optimization] index [Custom/Hair/Female/] BUILT: 838 items in 1971 ms (once, 8 duplicates)
[Info :Hermes Optimization] item materialized on demand: kemenate.Female_Body_Hair.1:/Custom/Hair/Female/kemenate/Brows/La Artista Brows d.vam
[Info :Hermes Optimization] item materialized on demand: Roac.Straight3.1:/Custom/Hair/Female/Roac/ROAC/Straight 3.vam
[Info :Hermes Optimization] item materialized on demand: VL_13.Lashes_3.2:/Custom/Hair/Female/VL_13/Lashes_3.0/Lashes_lower.vam
[Info :Hermes Optimization] item materialized on demand: VL_13.Lashes_3.2:/Custom/Hair/Female/VL_13/Lashes_3.0/Lashes_upper.vam
[Info :Hermes Optimization] index [Custom/Clothing/Female/] perime — reconstruction
[Info :Hermes Optimization] index [Custom/Clothing/Female/] BUILT: 2043 items in 4977 ms (once, 161 duplicates)
[Info :Hermes Optimization] index [Custom/Clothing/Male/] perime — reconstruction
[Info :Hermes Optimization] index [Custom/Clothing/Male/] BUILT: 463 items in 637 ms (once, 102 duplicates)
[Warning:Hermes Optimization] item without index entry: BooMoon.Piercing_pack.2:/Custom/Clothing/Female/BooMoon/Belly Piercing Star/Belly Piercing Star.vam (clothing)
[Warning:Hermes Optimization] item without index entry: BooMoon:Belly Piercing Star (clothing)
[Warning:Hermes Optimization] item without index entry: BooMoon.Piercing_pack.2:/Custom/Clothing/Female/BooMoon/Belly Piercing Star/Belly Piercing Star.vam (clothing)
[Info :Hermes Optimization] item materialized on demand: tolborg.Layered_Makeups.5:/Custom/Clothing/Female/tolborg/Layered Makeup Mask/Layered Makeup Blush.vam
[Info :Hermes Optimization] item materialized on demand: tolborg.Layered_Makeups.5:/Custom/Clothing/Female/tolborg/Layered Makeup Mask/Layered Makeup EyeShadow2.vam
[Info :Hermes Optimization] item materialized on demand: CMA.CMA_IRIS_REFLEX_SHADOW.5:/Custom/Clothing/Female/CMA/CMA_IRIS REFLEX/CMA_IRIS REFLEX.vam
[Info :Hermes Optimization] item materialized on demand: CMA.CMA_IRIS_REFLEX_SHADOW.5:/Custom/Clothing/Female/CMA/CMA_EYESSHADOW/CMA_EYESSHADOW F.vam
[Info :Hermes Optimization] item materialized on demand: CMA.CMA_IRIS_REFLEX_SHADOW.5:/Custom/Clothing/Female/CMA/CMA_EYESSHADOW UP/CMA_EYESSHADOW UP.vam
[Info :Hermes Optimization] item materialized on demand: JohnSaken.Freckles.3:/Custom/Clothing/Female/JohnSaken/Freckles/Freckles.vam
[Warning:Hermes Optimization] UID lookup with no store entry: PURE.47v2.1:/Custom/Atom/Person/Morphs/female/PURE_47v2_FullBody-80205fed.vmi (bank Custom/Atom/Person/Morphs/female)
[Warning:Hermes Optimization] UID lookup with no store entry: PURE.47v2.1:/Custom/Atom/Person/Morphs/female_genitalia/PURE_47v2_FullBody-80205fed-Genital.vmi (bank Custom/Atom/Person/Morphs/female_genitalia)
[Info :Hermes Optimization] [LoadGate] scene held 28.05 s (drained) — 72 texture(s), 0 audio.
[Info :Hermes Optimization] cleanup: 0 morphs cleared of their deltas (0 objects), 115 thumbnails, tas 4444 -> 4444 Mo, en 944 ms
 
Once I open this screen, I get stuck and can't go back to the previous one. What should I do?
 

Attachments

  • VaM 2026-08-11 13-13-11.png
    VaM 2026-08-11 13-13-11.png
    1.8 MB · Views: 0
Hi,
the plugin seems to work well enough, some hick-ups but I do not experience any major problems. Good work !
A question regarding adding new VARs: do I need to re-run the vamstorebuilder.exe each time I have added new VARs?
 
I did run into a few issues: LazyItems sometimes hides clothing items that are already equipped on the character, making it impossible to remove them individually. MorphStore also makes the same morph appear multiple times in the morph list, and it only shows up to 8 pages. ui in the VaM plugin tab are also a bit too small.

Other than these issues, everything works amazingly well. This optimization has improved my loading times by several times and made my VR experience much smoother. Great work!
 
Back
Top Bottom