不知道大家有没有被ShaderGraph的一个问题困扰过,就是在做扭曲,或者色相分离,黑白闪等特殊效果时,总是没法渲染到半透明也就是被裁掉了。如下图:
其实任何这种处理,都是拿屏幕截图来做其他效果(这样理解就行)然后网上有很多相关问题,怎么说呢,对于我们美术来说都相对复杂,比如ShaderGraph里的SceneColor节点,其实它抓取的只有不透明物体,半透明是抓取不到的。我深入研究了一下,发现它其实只抓取这上面部分。如下图:
所以我们在用SceneColor节点的时候,获取不到半透明信息。我托腮一想,既然获取的是上半部分信息,那如果我把特效层级放在CopyColor上面是不是就可行了?
于是乎,我添加了个渲染层级命名为Effect。如下图:
然后我们打开渲染管道设置。双击下图:
在双击下图所示:
我们在下面添加如下所示:
Event之所以选这个,是因为这个渲染在Copycolor之上。
然后回到场景,我们将特效层级调整为如图所示:
然后再看就渲染正常了。
怎么说呢。这个不好的一点就是之后做的效果都得选这个层级。这个的方法目前测试起来,层级,Bloom都正常(网上其他教程要么没有Bloom,要么渲染层级不对。把人折磨死)性能上感觉也还好,不过真用在移动端可能还是多少会有点问题?这个就不太知道了。毕竟Unity也没有默认把半透放进去,自然有它的道理吧。
总之,如果是自己平时做做练习的话,就用这个方法来设置吧,项目中自己找TA解决吧。
最后。近期会更新各种后处理效果的ShaderGraph教程。ASE,Graph,UE4的材质系统,都大同小异。我们特效人员,其实只需要理解0和1所表达的意思后,基本可以自己满足一切特效需求了。
谢谢观看,再见。