Skip to main content

自定义着色器问题

Custom Shaders(自定义着色器)

同义词: User Shaders, Unity Shaders, Shader Support

Resonite 目前不支持任何形式的自定义着色器(Custom Shaders)。

这包括但不限于:

  • Poiyomi's Shader
  • 任何其他基于 Unity 的着色器
  • 其他外部编写的自定义着色器

不支持的原因

目前无法支持自定义着色器的原因有很多:

  1. 渲染系统尚不稳定: Resonite 正致力于将渲染器从 Unity 迁移到自研引擎。这意味着许多图形决策、功能和限制目前仍处于不确定状态,可能会随时发生变化。根据通往新渲染器的道路 - 第一阶段 - 需求 ·黄狗工作室/Resonite问题 ·讨论#5831的相关讨论,
  2. 无法支持 Unity 专属着色器: 由于我们正在脱离 Unity 环境,Resonite 永远无法直接支持 Unity 的自定义着色器。
  3. 安全性(Safety): 自定义着色器在其他平台上经常引发安全担忧,Resonite 也不例外。例如:
    • 导致显卡崩溃或驱动重置的着色器。
    • 恶意着色器(如剧烈闪烁、刺耳噪音、破坏性视觉干扰)。
    我们希望在可能的情况下尽量避免这些问题。
  4. 向下兼容性(Backwards Compatibility): Resonite 以强大的向下兼容性为傲——几年前制作的物品至今仍能正常工作。任何形式的自定义着色器系统都必须能够适应这种长期的技术承诺。

未来规划

针对自定义着色器的长期计划是结合 Sauce 渲染引擎与 ProtoFlux,在 Resonite 内部实现一套基于节点的着色器系统

届时,你将能够直接使用 ProtoFlux 节点来创建、连接和管理着色器逻辑。

进度追踪

如果你想了解实现自定义着色器所需的开发进度,可以关注以下 GitHub 议题:

当前的替代方案

虽然缺乏自定义着色器支持可能会让部分用户望而却步,但通过合理的配置、知识和时间投入,你依然可以获得与主流第三方着色器非常相似的视觉效果。

建议: 尝试实验 Resonite 现有的着色器和技术来实现类似的外观表现。
  • 动画效果:通常用户想要自定义着色器是为了实现纹理动画或特效。在 Resonite 中,你可以通过材质叠加(Material Layering)或者使用 Flux 来驱动材质参数(如 Offset、Color)来实现。
  • 特殊视觉效果:利用 Resonite 的内置材质库,结合粒子系统和动态参数控制,往往能复刻出大部分常见的二次元或特效着色效果。