Unity,如何在Shader Graph中设置shader标签“DisableBatching”=“True”?

Posted

技术标签:

【中文标题】Unity,如何在Shader Graph中设置shader标签“DisableBatching”=“True”?【英文标题】:Unity, how to set the shader tag "DisableBatching" = "True" in the Shader Graph? 【发布时间】:2021-09-16 05:12:57 【问题描述】:

我正在使用 Shader Graph 创建我的第一个着色器,当我使用我创建的 Shader/Material 在场景中有多个对象时,我看到顶点位置出现奇怪的行为。

Unity 似乎正在对对象进行批处理,尚不确定这意味着什么,但看起来我必须停用批处理,以便我的着色器上的顶点位置保持相对于对象而不是对象。

一些未解决的开放线程:

https://forum.unity.com/threads/shader-graph-object-position-node-is-wrong-on-multiple-objects.744917/ https://answers.unity.com/questions/267794/mark-object-do-not-batch-it-dynamic.html https://forum.unity.com/threads/how-to-add-a-pass-tag-to-a-shadergraph.865594/

长话短说:如何在使用 Shader Graph 创建的着色器中添加标签,特别是 DisableBatching 标签?

【问题讨论】:

【参考方案1】:

这并不能回答你的问题,但我最终做了d2clon did in the forum post you posted,即通过添加到对象的脚本在运行时复制材料。

我将此作为答案发布,以便人们可以尝试(对我而言)有用的东西,而无需阅读您发布的所有主题。我也想知道如何自己禁用批处理标志,但这就足够了。

public class MaterialDuplicator : MonoBehaviour

  void Awake()
  
    Renderer renderer = gameObject.GetComponent<Renderer>();
    renderer.material = new Material(renderer.material);
  

【讨论】:

以上是关于Unity,如何在Shader Graph中设置shader标签“DisableBatching”=“True”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的Mac OS的Unity Shader Graph 2018.2中修复我的问题

Unity Shader Graph尝试

unity shader可视化工具——Shader Graph

Unity使用Shader Graph实现遮挡剔除

Unity使用Shader Graph实现遮挡剔除

Unity使用Shader Graph实现遮挡剔除