Skip to content

Releases: njsgdd10086/NonToonLightLimit

NonToon Light Limit 1.2.1

Choose a tag to compare

@github-actions github-actions released this 02 Oct 15:00

NonToon Light Limit 1.2.1 —— 放宽依赖范围,兼容 NonToon 0.2.0 / Shader Core 0.2.0

[1.2.1] - 2026-10-02

变更

  • 放宽依赖范围:jp.lilxyzw.shadercore / jp.lilxyzw.nontoon 由 ^0.1.5 / ^0.1.3 改成
    >=0.1.5 / >=0.1.3,com.nontoon.modules 改成 >=0.1.0 ✓ ——
    否则 NonToon 0.2.0 一发布,本插件就会因为版本冲突装不上 ✗。

兼容性说明

亮度模块依赖的 Shader Core 模块机制(ProjectSettings 白名单、SCConstValue 关键字)在 0.2.0 里没有变化 ✓,
所以本版代码无变化,只是依赖范围放开。

NonToon Light Limit 1.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 17:02

NonToon Light Limit 1.2.0 —— 亮度模块拆分为独立的 NonToon Modules 包

[1.2.0] - 2026-09-17

这一版做了架构调整:亮度模块从插件里拆出去,做成独立的模块包。功能不变,但模块可以单独安装使用了。

变更

  • 亮度上下限(LightLimit)模块搬到新包 com.nontoon.modules(仓库 NonToon Modules)✓ ——
    本插件现在通过 VPM 依赖订阅它(vpmDependencies)✓,插件里不再包含任何 Shader Core 模块文件 ✓;
  • 登记模块的逻辑改为调用模块包的 API ✓(通过反射 ✓ —— 模块包没装时仍能编译 ✓,并回退到本插件自带的老实现 ✓,功能不中断 ✓);
  • 用本插件时会自动勾选亮度模块 ✓(保持原来的行为 ✓:编辑器就绪后自动登记 ✓,也可以在 Tools/NonToon 模块 里手动开关 ✓)。

说明

  • 升级后请让 VCC/ALCOM 一并安装 com.nontoon.modules(依赖会自动带上 ✓);
  • 如果之前手动把本插件的 Shaders 目录拷进过工程,请删掉那份旧副本 ✗ ——
    同一个模块 id 出现两次会被 Shader Core 重复编入 shader 导致编译错误。

模块本身没变

亮度模块的算法与参数同 1.1.9,只是换了家。

NonToon Light Limit 1.1.9

Choose a tag to compare

@github-actions github-actions released this 18 Sep 17:49

NonToon 亮度控制 1.1.9 —— 加了版本号显示与更新检查。

新增

  • 菜单 Tools > NonToon 亮度控制 > 关于与更新检查…:显示当前版本、索引里的最新版本,可「检查更新 / 打开发布页」。
  • 菜单 Tools > NonToon 亮度控制 > 检查更新。
  • 窗口顶部显示版本号 + 检查更新 / 发布页按钮。
  • 编辑器启动后每天自动检查一次(失败静默,发现新版只在 Console 提示)。

检查读的是总 VPM 索引:https://njsgdd10086.github.io/vpm-listing/index.json(不用额外设置)。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库):

https://njsgdd10086.github.io/vpm-listing/index.json

NonToon Light Limit 1.1.8

Choose a tag to compare

@github-actions github-actions released this 15 Sep 08:23

NonToon Light Limit 1.1.8 —— 修掉「某些材质怎么调亮度都没反应」,原因是共享遮罩的通道被别处占用。

根因

亮度模块的「生效范围」以前是直接读 NonToon 共享遮罩(_SharedMask)的 A 通道,没设遮罩时才全生效。
但 _SharedMask 是 NonToon 所有模块共用的一张 RGBA 贴图:转换插件(LilToNonToon Switcher)
会把 lilToon 的描边 / 高光 / 材质捕获等遮罩烘进各自的通道。只要有一个模块占用了 A 通道,
其它材质在 A 通道是黑色的部位就会 llMask = 0 —— 表现就是:

  • 这块材质(例如身体 / 脖子)怎么调亮度都不动;
  • 把材质上的共享遮罩删掉,又一切正常。

现在

「生效范围」改成显式开关:

Mask Range(默认关闭)   关闭 = 整块材质都生效
Mask Channel            勾上以后用共享遮罩的哪个通道(R/G/B/A)

默认关闭意味着:转换插件烘出来的共享遮罩留着也没关系,亮度依旧整块生效;
想要「只在某个范围内提亮」再自己勾上并选通道。

升级后

  1. ALCOM 更新到 1.1.8;
  2. 之前为了绕开这个问题删掉的共享遮罩可以放回去了(放回去能让描边 / 高光 / 材质捕获的遮罩继续起作用);
  3. 如果你的材质确实需要按范围生效,打开材质上的 NonToon Light Limit → Mask Range 并选通道。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库,本插件与转换插件都在这份索引里):

https://njsgdd10086.github.io/vpm-listing/index.json

NonToon Light Limit 1.1.7

Choose a tag to compare

@github-actions github-actions released this 15 Sep 06:08

NonToon Light Limit 1.1.7 —— 修掉「退出菜单数值归零 / 滑过一半跳回 0 / 部分部件不跟着走」的问题。

根因

VRChat 官方文档(Expressions Menu and Controls)规定:
Puppet 类控件的 Parameter 字段不是数值参数,而是「这个 puppet 是否打开」的开关(打开时=1,退出菜单时清零);
真正的数值要写在 Sub-Parameters 里(径向就是 0..1 的那一个)。

之前把数值参数写进了 Parameter,于是:

  • 拖动时客户端往这个字段写 0/1 → 动画只收到跳变;
  • 退出菜单时该字段按语义清零 → 你看到的"退出变 0";
  • 滑过一半触发状态翻转 → "滑到 50 以上变回 0";
  • 数值参数从未真正被写入 → 部分材质看起来"不跟着走"。

现在改成

type: 203                                     # RadialPuppet
parameter:  { name: "" }                      # 开关字段留空,不额外占参数
subParameters:
- { name: NonToonBrightness }                 # 0..1 的数值写到这里

已验证(从构建产物 .vrca 里读出来的)

参数: NonToonBrightness  valueType=Float  saved=True  defaultValue=0.5714286  synced=False
菜单项: type=RadialPuppet  "NonToon亮度菜单"
    parameter     = ""
    subParameters = NonToonBrightness

synced=False 是正常的:Puppet 参数在 VRChat 里本来就是"打开时用 IK 同步"的本地参数,
官方文档里也写了 Puppet 的参数不走普通 Playable 同步。

升级后请这样做

  1. ALCOM 更新到 1.1.7;
  2. 工具窗口点 删除已生成 → 生成 / 更新;
  3. 上传,在真机里确认:拖动滑块 → 亮度连续变化;退出菜单后数值保留。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库,本插件与 LilToNonToon Switcher 都在这份索引里):

https://njsgdd10086.github.io/vpm-listing/index.json

NonToon Light Limit 1.1.6

Choose a tag to compare

@github-actions github-actions released this 15 Sep 05:22

NonToon Light Limit 1.1.6 —— 修掉「生成菜单和参数」后上传失败(Index was outside the bounds of the array)的问题。

修复内容

  • 菜单改用 Modular Avatar 自己的组件来挂,和 MA 的 GameObject → Modular Avatar → Create Toggle
    完全同一条路:同一个物体上放

    • MA Menu Item(RadialPuppet 控件 + 参数名,isSynced / isSaved / isDefault 都开)
    • MA Menu Installer(Menu to Append 留空)

    菜单由 Modular Avatar 在构建时生成。之前的写法是插件自己 CreateInstance 造一个
    VRCExpressionsMenu 资源再挂到 Menu to Append 上,有用户的工程在这种写法下上传会失败
    (BuilderException: Index was outside the bounds of the array),换成 MA 的标准写法后恢复正常。

  • 因此不再生成 *_Brightness_Menu.asset,输出文件夹里只剩两条动画 + 一个 AnimatorController。

  • 另外这一版把生成内容拆成两个可单独勾选的部分(动画层 / 菜单和参数),方便只想用一半的情况。

已经验证过

  • 生成后组件为:MA Merge Animator + MA Menu Item(RadialPuppet / NonToonBrightness)+ MA Menu Installer + MA Parameters;
  • 完整构建(Build & Test 的导出路径)通过,构建产物里的合并菜单包含
    NonToon亮度菜单 / type 203 / NonToonBrightness;
  • 动画层单独生成时上传也正常(用户实测)。

升级后请这样做

  1. ALCOM 更新到 1.1.6;
  2. 工具窗口点 删除已生成(清掉旧写法留下的菜单资源引用),再点 生成 / 更新;
  3. 旧版本生成的 *_Brightness_Menu.asset 已经没用了,可以连同 Assets/NonToonLightLimit 里那一份一起删掉;
  4. 然后 Build & Test。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库,本插件与 LilToNonToon Switcher 都在这份索引里):

https://njsgdd10086.github.io/vpm-listing/index.json

NonToon Light Limit 1.1.5

Choose a tag to compare

@github-actions github-actions released this 15 Sep 04:50

NonToon Light Limit 1.1.3 —— 修掉「生成物被挪进 prefab 实例后清理不掉」导致菜单挂错位置 / 构建报错的问题。

修复内容

  • 清理生成物改用 Undo.DestroyObjectImmediate:之前用 DestroyImmediate,如果 _NonToonLightLimit
    被挪进了服装的「装饰开关」之类属于 prefab 实例 的物体里,就删不掉,会留下重复的
    MA Merge Animator / Menu Installer / Menu Install Target,于是:
    • Modular Avatar 把菜单挂到了别的位置 → 游戏 / Gesture Manager 里看不到亮度滑块;
    • 构建阶段报 Index was outside the bounds of the array。
  • 现在生成/删除时还会:
    • 把被挪到别处的同名物体删掉,并在 Console 里说明它在哪;
    • 发现同名物体上挂着 MA 的「菜单安装点」(Menu Install Target)时一并清掉;
    • 始终把新建的 _NonToonLightLimit 放在 avatar 根目录下。

建议操作

  1. ALCOM 更新到 1.1.3;
  2. 打开 Tools → NonToon 亮度控制 → 生成全局亮度动画 + 菜单;
  3. 先点 删除已生成(会清掉所有同名物体,包括被挪走的和带 Menu Install Target 的),
    再点 生成 / 更新;
  4. 生成的 _NonToonLightLimit 不要再拖进服装的装饰开关里(保持在 avatar 根目录),然后 Build & Test。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库,本插件与 LilToNonToon Switcher 都在这份索引里):

https://njsgdd10086.github.io/vpm-listing/index.json

NonToon Light Limit 1.1.4

Choose a tag to compare

@github-actions github-actions released this 15 Sep 04:40

NonToon Light Limit 1.1.3 —— 修掉「生成物被挪进 prefab 实例后清理不掉」导致菜单挂错位置 / 构建报错的问题。

修复内容

  • 清理生成物改用 Undo.DestroyObjectImmediate:之前用 DestroyImmediate,如果 _NonToonLightLimit
    被挪进了服装的「装饰开关」之类属于 prefab 实例 的物体里,就删不掉,会留下重复的
    MA Merge Animator / Menu Installer / Menu Install Target,于是:
    • Modular Avatar 把菜单挂到了别的位置 → 游戏 / Gesture Manager 里看不到亮度滑块;
    • 构建阶段报 Index was outside the bounds of the array。
  • 现在生成/删除时还会:
    • 把被挪到别处的同名物体删掉,并在 Console 里说明它在哪;
    • 发现同名物体上挂着 MA 的「菜单安装点」(Menu Install Target)时一并清掉;
    • 始终把新建的 _NonToonLightLimit 放在 avatar 根目录下。

建议操作

  1. ALCOM 更新到 1.1.3;
  2. 打开 Tools → NonToon 亮度控制 → 生成全局亮度动画 + 菜单;
  3. 先点 删除已生成(会清掉所有同名物体,包括被挪走的和带 Menu Install Target 的),
    再点 生成 / 更新;
  4. 生成的 _NonToonLightLimit 不要再拖进服装的装饰开关里(保持在 avatar 根目录),然后 Build & Test。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库,本插件与 LilToNonToon Switcher 都在这份索引里):

https://njsgdd10086.github.io/vpm-listing/index.json

NonToon Light Limit 1.1.3

Choose a tag to compare

@github-actions github-actions released this 15 Sep 04:29

NonToon Light Limit 1.1.3 —— 修掉「生成物被挪进 prefab 实例后清理不掉」导致菜单挂错位置 / 构建报错的问题。

修复内容

  • 清理生成物改用 Undo.DestroyObjectImmediate:之前用 DestroyImmediate,如果 _NonToonLightLimit
    被挪进了服装的「装饰开关」之类属于 prefab 实例 的物体里,就删不掉,会留下重复的
    MA Merge Animator / Menu Installer / Menu Install Target,于是:
    • Modular Avatar 把菜单挂到了别的位置 → 游戏 / Gesture Manager 里看不到亮度滑块;
    • 构建阶段报 Index was outside the bounds of the array。
  • 现在生成/删除时还会:
    • 把被挪到别处的同名物体删掉,并在 Console 里说明它在哪;
    • 发现同名物体上挂着 MA 的「菜单安装点」(Menu Install Target)时一并清掉;
    • 始终把新建的 _NonToonLightLimit 放在 avatar 根目录下。

建议操作

  1. ALCOM 更新到 1.1.3;
  2. 打开 Tools → NonToon 亮度控制 → 生成全局亮度动画 + 菜单;
  3. 先点 删除已生成(会清掉所有同名物体,包括被挪走的和带 Menu Install Target 的),
    再点 生成 / 更新;
  4. 生成的 _NonToonLightLimit 不要再拖进服装的装饰开关里(保持在 avatar 根目录),然后 Build & Test。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库,本插件与 LilToNonToon Switcher 都在这份索引里):

https://njsgdd10086.github.io/vpm-listing/index.json

NonToon Light Limit 1.1.2

Choose a tag to compare

@github-actions github-actions released this 15 Sep 03:25

NonToon Light Limit 1.1.2 —— 生成/删除小工具会清理掉所有重复的 _NonToonLightLimit 物体。

修复内容

  • 重复的生成物体:之前只查找 avatar 根目录下的第一个 _NonToonLightLimit,
    如果把它挪到别处、或者复制出了多份,再次生成就会留下多个同名的
    MA Merge Animator / Menu Installer / Parameters。
    重复挂菜单、重复声明参数会让上传阶段出错。
    现在改成在整个 avatar 下递归查找并全部清掉,再在 avatar 根目录下建一个干净的。

建议操作

  1. 在 ALCOM 里更新到 1.1.2;
  2. 打开 Tools → NonToon 亮度控制 → 生成全局亮度动画 + 菜单,点一次 删除已生成,再点 生成 / 更新;
  3. 如果你的场景里还有手改过 / 复制出来的同名 _NonToonLightLimit(例如只有 MA Menu Install Target 的那种),
    一并删掉再生成。

安装 / 升级

VCC / ALCOM 仓库地址(总仓库,本插件与 LilToNonToon Switcher 都在这份索引里):

https://njsgdd10086.github.io/vpm-listing/index.json