标签:mil book data fine ext gravity 编写 efault height
本系列主要參考《Unity Shaders and Effects Cookbook》一书(感谢原书作者),同一时候会加上一点个人理解或拓展。
这里是本书全部的插图。
========================================== 切割线 ==========================================
我们已经看到怎样使用Unity内置的CgInclude文件。以及怎样创建我们自己的CgInclude去保存光照模型、变量和辅助函数。在这篇中,我们关注怎样更动态、有效地使用CgInclude文件,使得我们的Shader更加模块化,而且能够依据须要切换不同的状态。
因此,本篇中,我们将会改动上一节中创建的Half Lambert光照模型,为它加入一个定义(definition)。
这样,假设我们的Shader中定义了Half Lambert,那光照模型将会使用Half Lambert漫反射。否则就会使用标准的NdotL光照模型。
这节代码就3行,仅仅是个引子。
我们首先再来看一下我们的CgInclude文件。
我们想要让该光照模型具有两个状态:
保存后返回Unity查看:
这时由于我们未定义HalfLambert,因此Unity在编译时将会跳过那段代码。这使得我们的Shader更加灵活有效,我们能够不再编写或删除大量反复的代码。
这使得我们更easy地去调用光照模型,或者使用多个状态去改动它。
【Unity Shaders】使用CgInclude让你的Shader模块化——使用#define指令创建Shader
标签:mil book data fine ext gravity 编写 efault height
原文地址:http://www.cnblogs.com/cxchanpin/p/7294690.html