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节点

  • Bitmap node:位图节点,导入外部的位图资源。
  • Blend node:混合节点,结合了多种混合方式的节点,包括multiply,add等常用的混合模式。
  • Blur node:模糊节点。
  • Channel Shuffle Node
  • Curve node
  • Directional blur node
  • Directional warp node
  • Distance node
  • Emboss node
  • FX-Map node
  • Gradient (dynamic) node
  • Gradient Map node
  • Grayscale conversion node
  • HSL node
  • Levels node:层级节点,用于调整灰度图的黑白平衡。
  • Normal node:法线节点,将一张灰度图转换为法线贴图。
  • Pixel processor node
  • Sharpen node
  • SVG node
  • Text node
  • Transform 2D node
  • Uniform color node:颜色节点,可以是RGB颜色输入或者灰度颜色输入。
  • Warp node
  • Input and Output nodes

 substance designer的属性暴露比shaderforge以及unreal的稍微复杂一些,功能也更强大。暴露属性给编辑器的目的是在substance designer材质在导入unity时,可以暴露给材质编辑器进行调节。

 
原文地址:https://www.cnblogs.com/jaffhan/p/7419961.html