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中修复我的问题