Unity3d Surface Shader在游戏和编辑器中产生不同的结果

时间:2018-12-02 01:41:58

标签: unity3d shader

我正在研究一个表面着色器,该着色器根据另一个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

0 个答案:

没有答案