#unity3d #shader #shader-graph
Вопрос:
Я создаю свой первый шейдер, используя график шейдера, и я вижу странное поведение с моими позициями вершин, когда у меня есть несколько объектов в сцене, использующих шейдер/материал, который я создал.
Похоже, что 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/
Короче говоря: Как я могу добавить теги, и в частности DisableBatching
тег в моем шейдере, созданный с помощью графика шейдеров?
Ответ №1:
Это не отвечает на ваш вопрос, но в итоге я сделал то, что сделал d2clon в опубликованном вами сообщении на форуме, а именно продублировал материал во время выполнения с помощью скрипта, который вы добавляете в объект.
Я публикую это в качестве ответа, чтобы люди могли попробовать что-то, что сработало (для меня), без необходимости читать все темы, которые вы опубликовали. Мне также интересно, как самому отключить флаг пакетной обработки, но этого будет достаточно.
public class MaterialDuplicator : MonoBehaviour
{
void Awake()
{
Renderer renderer = gameObject.GetComponent<Renderer>();
renderer.material = new Material(renderer.material);
}
}