创建支持服务单
关注

Q100407:Mari 3.4v1和4.1v1中的混合模式缓存

摘要

在Mari 3.3v1及更早版本中,更改图层的混合模式有时可能是一个非常艰巨的过程,因为着色器需要重新编译。本文介绍如何在Mari 3.4v1 / 4.1v1中使用混合模式缓存来提高性能并减少动态模式下所需的着色器重新编译次数。

更多信息

Mari 3.3v1中引入的动态着色器编译模式以成为一个相当重的着色器为代价提高着色器编译速度。虽然这种动态模式通过缓存多个操作来降低编译速率,但是当在层的不同混合模式之间切换时,一些艺术家仍然经常遇到着色器重新编译。

从Mari 3.4v1开始,混合模式现在包含在动态缓存系统中,以减少重新编译的次数。现在,如果用户更改图层,合并节点或“绘制缓冲区”的混合模式,则应立即进行更改,而不必等待在视口中完成旋转轮。

缓存系统支持五种混合模式的“历史”,艺术家可以使用它而无需重新编译。

注意:有关混合模式的更多信息,请参阅Mari在线帮助中的“ 涂料混合模式”部分。

如何调整自定义节点从混合模式缓存状态中受益

在自定义节点中使用混合模式属性的开发人员可能在其自定义节点XML中具有以下内容或类似内容:
<Attribute Name =“BlendMode”PrettyName =“Mode”Group =“”Type =“userenum”>动态: MriBlendMode:Comp_Default </ 属性>
为了使用混合模式,开发人员有两种可能的选择:
  1. 动态:MriBlendMode:Comp_ 默认 -适用于普通混合模式类型(所有模式)。

  2. 动态:MriBlendModeNoAlpha: Comp_Default - 适用于不包含任何alpha混合模式的类型。
为了增加对更快编译混合模式的支持,需要修改XML文件以启用这些更改,如下所示:
之前:

Output = $BlendMode(_Base, _Over, #Mask.r * AdvancedBlendAmount);
之后
 #if defined(MRI_GENERAL_  COMPOSITION)
Output = Comp_General($BlendMode, _Base, _Over, #Mask.r * AdvancedBlendAmount);
#else
Output = $BlendMode(_Base, _Over, #Mask.r * AdvancedBlendAmount);
#endif // defined(MRI_GENERAL_C OMPOSITION)

这篇文章有帮助吗?
/

We're sorry to hear that!

Please tell us why.
2 人中有 2 人觉得有帮助

评论