Quiet
  • 封面
  • 作品集
  • 铭记
  • 分栏
  • 标记
  • 时间线
  • 关于我
没有找到相关内容

可能是水桶吧

  • 封面
  • 作品集
  • 铭记
  • 分栏
  • 标记
  • 时间线
  • 关于我
Quiet主题 Quiet主题 Quiet主题 Quiet主题 Quiet主题
  • CG相关
  • Blender

Blender 5.2:一种判断当前渲染引擎方法

可能是水桶吧
Blender相关

2026-11-03 23:54:32

一、问题 / 需求

希望在材质节点组内部获取当前渲染引擎(Cycles / EEVEE)的判断信号,以便在节点源头切换颜色或着色逻辑。
而不是复制全部的节点组,就为了在开头改一个颜色。

要求:

  • 纯节点实现,不依赖 Driver 或脚本。
  • 输出 0/1 信号,方便后续分支控制。
  • 可封装为节点组,适用于资产库复用。

二、探索

尝试过几种思路:

  • Bevel:Cycles 独有节点,但受几何位置影响,无法保证全表面稳定判别。
  • Driver:可以读取 render.engine,但增加了资产复用和依赖上下文的维护成本。
  • Material Output 分流:官方支持按引擎指定输出,但需要维护重复的材质网络。

最终回到 Shader to RGB。该节点仅支持 EEVEE,可以利用它在两个引擎下的不同表现进行判断。

Blender 5.2 实测

使用固定 Emission 输入(Strength = 0.2):

  • EEVEE:Shader to RGB 正常输出 0.2。
  • Cycles:Shader to RGB 直接读取表现为 null / 0,但后续数值处理发现其实际输出并非普通的 0。

在 Shader to RGB 后增加 Math: Add(Clamp),可以将 Cycles 下的异常输出处理为 1。

三、结论

利用上述差异构造引擎识别信号:

节点 EEVEE Cycles
Emission (0.2) → Shader to RGB 0.2 异常输出
Add(Clamp)处理 — 1
Greater Than (0.3) 0 1

最终得到:

  • Cycles = 1
  • EEVEE = 0

这是一种利用节点支持范围差异实现的经验性 Workaround,并非官方提供的引擎识别接口。目前尚未确认 Cycles 异常输出的底层原因。

四、实践

将判别逻辑封装为 Is Cycles 节点组,输出 0/1 信号,连接到 Mix Color 等节点的 Factor,即可在材质源头切换不同引擎下的颜色或参数。

Blender 材质节点连接示意

注意: 该方法依赖未支持节点的异常输出,未来 Blender 版本可能改变相关行为。当前结论基于 Blender 5.2 实测,升级后需要重新验证。

下一篇

水桶的2025年终回顾

©2026 By 可能是水桶吧
备案信息:粤ICP备2025400795号
Quiet主题 Quiet主题 Quiet主题 Quiet主题 Quiet主题