Поверхностный шейдер Unity3d дает другой результат в игре и в редакторе - PullRequest
0 голосов
/ 02 декабря 2018

Я работаю над поверхностным шейдером, который делает объекты частично прозрачными в зависимости от положения другого Gameobject.Однако шейдер работает как часть прозрачной очереди, что не позволяет ему получать тени.Итак, теперь у меня есть очередь AlphaTest, и она прекрасно работает, однако в игре она выглядит странно и рендерится несколько раз, в то время как в редакторе пауза работает именно так, как я хочу, чтобы она выглядела.В игре я также замечаю некоторый эффект перетаскивания при перемещении вида, например, когда он рисует несколько раз.И также кажется, что первый кадр правильный, но он быстро становится неправильным, как показано ниже.Что может быть причиной этого?

В игре:

enter image description here

В редакторе приостановлена:

enter image description here

Используемые теги и смесь:

SubShader {
     /*
     Tags {  "RenderType"="Transparent" "Queue"="Transparent"}
     Blend SrcAlpha OneMinusSrcAlpha
     */

     /*
         TODO
         This allows to cast shadows but for some reason it doens't clear the pixels between draws or something
         Could also be draw order
         Pausing in editor shows that it is working
     */

     //
     Tags { "Queue"="AlphaTest"
     "IgnoreProjector"="True"
     "RenderType"="TransparentCutout" }
     Blend SrcAlpha OneMinusSrcAlpha
     //

     CGPROGRAM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...