Страница 1 из 1

Проверка работоспособности шейдера.

СообщениеДобавлено: 29 авг 2016, 14:12
IDoNotExist
Как проверить работает ли шейдер в билде, у него нет никаких FallBack, в логе билда появляется сообщение "Note: Creation of internal variant of shader 'Test/TestShader' failed", и визуально видно что он не работает, но тем не менее Material.shader.isSupported возвращает true.

Re: Проверка работоспособности шейдера.

СообщениеДобавлено: 29 авг 2016, 14:36
jetyb
Material.passCount > 0?

Re: Проверка работоспособности шейдера.

СообщениеДобавлено: 29 авг 2016, 14:49
IDoNotExist
jetyb писал(а):Material.passCount > 0?

Вывел passCount в лог, возвращает 2.

Так же попробовал вывести Material.shader.isSupported в Update (до этого я выводил его в Start) и там уже он возвращает false, и passCount уже равно 1, я так думаю шейдер ломается после первой попытки что либо отрендерить.

Re: Проверка работоспособности шейдера.

СообщениеДобавлено: 29 авг 2016, 15:20
jetyb
Не знаю, тут надо шейдер и платформу смотреть.
Попробуйте еще с классами ShaderVariant поиграться.

Re: Проверка работоспособности шейдера.

СообщениеДобавлено: 29 авг 2016, 16:48
IDoNotExist
jetyb писал(а):Попробуйте еще с классами ShaderVariant поиграться.

Почитал про ShaderVariant, насколько понял он нужен для того, чтобы сделать Shader.WarmupAllShaders, только не для всех шейдеров, а для отдельного у меня шейдеров не много, поэтому попробовал делать Shader.WarmupAllShaders перед первоначальной проверкой шейдера на работоспособность, не помогло.

В общем пока что написал свой костыль, который создает сферу (GameObject.CreatePrimitive(PrimitiveType.Sphere)), перед камерой и вешает на её материал данный шейдер, после этого жду один кадр и записываю в статическую bool переменную значение Shader.isSupported, после этого уничтожаю сферу, а в скриптах которые юзают данный шейдер делаю инициализацию с задержкой, и проверяю данную статическую переменную, решение так себе, но зато работает.

Re: Проверка работоспособности шейдера.

СообщениеДобавлено: 30 авг 2016, 08:00
jetyb
Возможно еще шейдер (или его вариант компиляции) не включается в билд, см Projectsettings/Graphics