Временной узел графовых шейдеров URP-шейдеров не работает в определенных ситуациях

#unity3d #shader #shader-graph

#unity3d #шейдер #шейдер-граф

Вопрос:

У меня есть несколько шейдеров, которые используют временной узел для анимации определенных элементов пользовательского интерфейса для моей мобильной игры. В определенных случаях (которые я не могу воспроизвести) шейдеры будут зависать в определенное время и не будут анимироваться.

Например, шейдер shine может застрять в середине shine.

Некоторые важные моменты, на которые следует обратить внимание:

  1. Time.timeScale равно 1 — все мои подростки, использующие масштабированное дельта-время, работают правильно
  2. Когда это произойдет, все шейдеры, использующие временной узел в активной сцене, «зависнут во времени»
  3. Это воспроизводится только на реальных устройствах Android (iOS не тестировалась)
  4. Все параметры, влияющие на время в указанных шейдерах, являются положительными, допустимыми числами
  5. Ошибок или предупреждений нет
  6. Когда я перехожу из сцены главного меню в игровую сцену, временные шейдеры будут работать правильно — когда я вернусь к основной сцене, она снова воспроизведется (очевидно, это что-то особенное)
  7. Работает на Unity 2019.4.11f1 с URP amp; Shader Graph 7.5.1, но он воспроизводился и в более старых версиях Unity / URP

Пример шейдера — предварительный просмотр на самом деле выглядит точно так же, как проблема, поскольку она появится в игре при замораживании: Шейдер блеска пространства экрана пользовательского интерфейса

Ответ №1:

Для любых потерянных душ, которые натыкаются на эту проблему (хотя я сомневаюсь, что это сделано специально, поскольку это похоже на ошибку).

Проблема в том, что время не обновляется в шейдерах в сценах без камеры. Камера не должна ничего отображать; она просто должна существовать.

Мое главное меню — это чистые элементы пользовательского интерфейса, в нем не было камеры; добавление камеры в сцену устранило проблему.

Важно отметить, что такое поведение происходит только после сборки на устройстве Android; не уверен, воспроизводится ли оно на других платформах.