本系列主要参考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同时会加上一点个人理解或拓展。
这里是本书所有的插图。这里是本书所需的代码和资源(当然你也可以从官网下载)。
========================================== 分割线 ==========================================
写在前面
之前学习的各种Shader时,我们从没有考虑在所有平台下的可用性。Unity是一个强大的跨平台游戏引擎,但这也决定了在编写代码时我们需要考虑更多的平台因素。对于Shader而言,如果没有进行相应的优化,很有可能无法运行在移动平台等对性能限制较高的平台上。我们需要理解一些关键的因素来优化我们的Shader,以提高游戏性能而又能尽可能保持取得同样的视觉效果。
尤其是如果你的目标平台包括Android系统,那么就一定要小心中国各种山寨机的大浪一下把你拍在沙滩上的后果。。。所以,如果你从来没有为你的Shader考虑过这些情况,那么,且用且小心吧。。。
这一章中,我们会学习三节内容:什么是一个高效的Shader,怎样对Shader进行性能分析,为移动平台优化我们的Shader。
那么,什么是一个高效的Shader呢?这是个有点复杂的问题,它涉及到了很多因素。例如,和你使用的变量个数及其所占内存,Shader使用的纹理个数有关等等。还有可能,你的Shade虽然工作良好,但我们实际商可以使用一半数目的变量就可以取得相同的效果。我们将在本节中发掘这样的一些技巧,并向你说明它们是如何组合起来让我们的Shader更快更高效的