Unity内烘焙AlphaTest材质,比如植物树叶,有时候阴影会没有正确显示AlphaTest,比如这样
- 尝试了修改shadowcaster pass、meta pass、rendertype、shader name等方法都不奏效。
- 最后发现烘焙时需要读取主贴图的Alpha进行阴影AlphaTest的计算,而Unity识别这张主贴图的方法就是找到shader里命名为"_MainTex"的贴图,如果找不到,那么就默认Alpha是1,阴影的AlphaTest效果丢失,如上图。
- 往往贴图的参数名,在项目进展过半的时候不适合修改,修改后已应用该shader的材质,该贴图的引用会全部丢失。
- 所以这个问题最好的解决方法是在制作shader的时候就把主贴图命名为"_MainTex"。
- 如果在shader已经投入使用再进行修改的话,可以在主贴图(A通道为Alpha)的那张贴图参数前加上[MainTexture]的Attribute,即可让Unity烘焙系统识别此张贴图为主贴图,读取该贴图的Alpha通道进行裁剪计算,即可正确烘焙阴影
- 如下图,在主贴图参数前加上[MainTexture]再进行烘焙,阴影显示正确