Substance Designer 使用手册
最近在肝substance designer,强大的节点编辑功能多用用真的对编写shader有很多好处,见识了不少新的处理方式,这篇文章不仅仅是翻译官方的文档,而是加入了自己的理解,同时会结合在unity中的使用,又是一个大工程,争取一个月之内填完。。。。
最近这段时间不会再系统学习一些新东西了,会把博客里没填的坑都慢慢整理一下,感觉如果弃坑超过一个月就真的再也不会填坑了。。。
先把草稿打完,争取这周搞定,这篇文章不会讲基础的操作。
substance designer版本6.0.2
unity版本2017.1
output节点与unity的导入
output节点是输出节点,在substance desigher中,创建一个初始的PBR(metallic)graph就会自动生成五个节点,分别是baseColor(对应Metallic/roughness),normal,roughness,metallic,height。一般来说,unity的标准着色器的输入的几张基础纹理足够了,如果需要其余的输出节点可以自己再进行添加,但是unity的标准着色器不支持的话,是不能正常使用节点的,不过如果是自定义的pbr着色器,是可以的。substance材质导入到unity的原理,可以简单的视作在unity的材质系统外另外加了一个壳,进行pbr输入纹理的预计算,经过这个步骤后,将计算完成的纹理再传递给材质和着色器进行计算。
unity中,需要注意的是输出节点中normal通道的设置,否则会造成在unity中导入sbsar材质失败的情况,输入到输出节点normal通道的normal节点,需要将其Alpha Channel Content设置为Fill Alpha with Input,默认是Force Alpha to 1。
unity中直接将文件拖入资源浏览器或普通的导入操作即可,unreal需要商城安装substance插件。
导入unity中之后,可以在generate texture标签下看到四张纹理贴图,这是因为smothness使用的是metallic贴图的alpha通道,这也是可设置的。
需要注意的是,unity中的标准pbr使用的是smoothness贴图,而不是substance和unreal中的roughness贴图。在unity的标准pbr实现中,计算粗糙度的公式为(1-smoothness)^2。可以在资源浏览器中找到metallic贴图,查看它的alpha通道。会法线,alpha通道的值和你在substance中链接到输出节点roughness的通道值是不同的,至少从肉眼来看,灰度图是反相的,明暗度也不同。这是因为sbsar文件在导入unity中,自动重新计算粗糙度以符合unity中的PBR实现。
另外,unity和unreal的法线format也不一样,区别在于Green通道,unity和unreal里的也是相反的。但是在substance中,似乎并不需要针对此进行修改。
尝试过在substance中,将normal节点的Normal Format分别设置为OpenGL和DirextX,然后分别导入到unity中,发现unity均针对法线贴图的Green通道进行了反相操作,在unity中的法线表现和在substance中保持了一致。
在substance designer中设置为dx,导入unity中效果与substance designer中gl效果一致。
在substance designer中设置为gl,导入unity中效果与substance designer中dx效果一致。
结论:导入unity后,无视设置,均对green通道做反相操作,最终显示结果和substance中实际效果一致。unreal的情况还在测试。
//在project configure中可以设置全局,而且要求unity关闭逐像素切线空间计算,unreal则要求打开,这里具体为什么还没搞清楚。
Node节点