CustomSosigToonSkin

版本 v1.0.0·更新於 2026-10-01

Cel shading, #FF06B5 outline and rim light for custom Sosig models. RealToon based, stereo-safe, configurable.

模組介紹 作者原文

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
  • #FF06B5 inverted-hull outline (colour and width configurable)
  • Normal maps, alpha cutout and vanilla tint are carried over from the framework's material
  • Toon.ShaderMode switches between four bundled materials at runtime: RealToon (default), RealToonLite, Simple (my own single-pass cel shader, no outline) and Probe (a stereo diagnostic that paints the per-eye state)
  • Toon.NameFilter keeps 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 = Simple uses a shader I wrote myself, so the plugin keeps working
  • The patch targets the framework's internal CreateMaterial signature. 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 (default Niko). 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 change OutlineColor/RimLightColor

I Asked Myself These Questions

How do I make it affect another model addon?

  • Set Toon.NameFilter in BepInEx/config/niko666.customsosigtoonskin.cfg to 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, NameFilter did 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 = false in 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 = true and stereoRenderingPath = SinglePass before building
  • Toon.ShaderMode = Probe prints 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.HandIkReachMeters from 0.22 to 0.35–0.5 and restart

It looks broken

  • Tell me on Discord: 妮可_Niko666 (UTC+8, slow replies). Or just change the config — OutlineWidth = 0 and RimLightPower = 0 get 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 A

安裝與使用 安裝:BepInEx 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

NotGodlike-CustomSosigModelFramework

檔案與校驗

檔案名稱
CustomSosigToonSkin-1.0.0.zip
檔案大小
168.8 KiB