CustomSosigToonSkin
Cel shading, #FF06B5 outline and rim light for custom Sosig models. RealToon based, stereo-safe, configurable.
By Niko666
| Last updated | 7 hours ago |
| Total downloads | 40 |
| Total rating | 0 |
| Categories | Tools |
| Dependency string | Niko666-CustomSosigToonSkin-1.0.0 |
| Dependants | 1 other package depends on this package |
This mod requires the following mods to function
NotGodlike-CustomSosigModelFramework
A modular custom sosig model framework for H3VR
Preferred version: 1.0.0README
Now with 200% more edge
"Rendering is 90% making sure the model shows up in both eyes." — every VR shader I have ever written
Swaps the plain Standard material that CustomSosigModelFramework builds for custom Sosig models with a cel-shaded RealToon material: flat toon ramp, #FF06B5 outline and a matching rim light. The framework does not expose a shader hook, so this is a small BepInEx companion plugin that patches the framework's material factory and hands back a prebuilt AssetBundle material instead.
Built for NikoSosig, but it is not locked to it — point NameFilter somewhere else and it will shade whatever model you like.
Features
- Cel shading with configurable ramp, shadow tint and rim light
#FF06B5inverted-hull outline (colour and width configurable)- Normal maps, alpha cutout and vanilla tint are carried over from the framework's material
Toon.ShaderModeswitches between four bundled materials at runtime:RealToon(default),RealToonLite,Simple(my own single-pass cel shader, no outline) andProbe(a stereo diagnostic that paints the per-eye state)Toon.NameFilterkeeps it from touching other people's model addons- Bonus: patches the framework's hand IK reach gate (
Motion.HandIkReachMeters), which is useful for any model whose arms are not Sosig-proportioned - Delete the folder and you are back to the vanilla look instantly — nothing is written outside the config
Known Issues and Limitations
The bundle ships a modified copy of the RealToon shader. If the shader author ever objects to that,
Toon.ShaderMode = Simpleuses a shader I wrote myself, so the plugin keeps working- The patch targets the framework's internal
CreateMaterialsignature. If a framework update changes it, the plugin logs the failure and stays passive instead of breaking Sosigs — but then it needs an update from me - The toon material is 4 passes (outline + forward + variants) instead of 1, so it costs a bit more than the default material. Fine on modern GPUs, noticeable on potatoes
- Outline width is in the shader's own units — very large values start to clip at close range
- It only rebuilds materials whose name or albedo path contains
NameFilter(defaultNiko). Other model addons keep the default look on purpose - The cel look is tuned for Niko's texture palette (
#FF06B5). Apply it to another model and you may want to changeOutlineColor/RimLightColor
I Asked Myself These Questions
How do I make it affect another model addon?
- Set
Toon.NameFilterinBepInEx/config/niko666.customsosigtoonskin.cfgto something that appears in that addon's material name or texture path. Leave it empty to shade every addon the framework loads
My model has no outline / is not cel shaded
- Check the log for
Toon material '...': mode=.... If the plugin never mentions your model,NameFilterdid not match it. If the log never mentions the plugin at all, the framework was not found
How do I turn it off?
Toon.Enabled = falsein the config (then restart), or just delete the plugin folder
One eye renders the model in the wrong place
- That is the classic symptom of a homemade AssetBundle whose shaders were compiled in a Unity project without VR enabled — the shader has no per-eye code path, so it renders for one eye only. It is fixed in this bundle; if you repackage it yourself, set
PlayerSettings.virtualRealitySupported = trueandstereoRenderingPath = SinglePassbefore building Toon.ShaderMode = Probeprints what the shader sees per eye if it ever comes back
The hands are still not on the gun
- That is the model, not the shader. Raise
Motion.HandIkReachMetersfrom0.22to0.35–0.5and restart
It looks broken
- Tell me on Discord: 妮可_Niko666 (UTC+8, slow replies). Or just change the config —
OutlineWidth = 0andRimLightPower = 0get you a plain flat-shaded look
Credits
- RealToon by MJQ Studio Works for the shader this is built on
- NotGodlike for CustomSosigModelFramework
- The H3VR community for the endless shader debugging lore
- You
Generative AI Disclosure
This plugin, its shader variants and the bundle build pipeline were written with Deepseek (The Blue Fat Whale) 's help. The stereo failure that wasted an evening was diagnosed with in-game probes rather than guesswork, and the final build was verified in a headset (both eyes, outline, rim light, hands).
