Unity Shader - Smoothness 平滑度

目录:Unity Shader - 知识点目录(先占位,后续持续更新)
原文:Smoothness
版本:2019.1

Smoothness

Unity Shader - Smoothness 平滑度_第1张图片
Smoothness平滑度参数,都显示在Metallic和Specular来种Shader模式中。

在Specular和Metallic两个Shader工作流中的Smoothness概念都非常的相似。默认的都没有设置Metallic或Specular纹理参数,材质中的smoothness是由一个滑动器来控制。这允许你控制一个表面的"microsurface detail"(微表面细节)或是表面的平滑度。

在上面显示的两种Shader工作流中,不论你选择的是Metallic纹理参数或是Specular的纹理参数,smoothness参数值都可以使用两种工作流其中。下面将进一步解析。
Unity Shader - Smoothness 平滑度_第2张图片
smoothness参数范围从0.0~1.0

“microsurface detail”(微表面细节)是不能直接在Unity中显示的。这是光照计算的中的一些概念。微表面细节的效果是对象呈现出许多光照效果的漫反射的光反弹的效果。一个平滑的表面,所有光线的反射角度都是可预测的。极端都说,一个完美的平滑表面的光反射效果就像镜子一样。越不平滑的表面光反射的角度就比较飞散(就像光线照射到了一个凹凸不平的微便面),因此表面反射细节就越少就像漫反射。
A comparison of low, medium and high values for smoothness (left to right), as a diagram of the theoretical microsurface detail of a material. The yellow lines represent light rays hitting the surface and reflecting off the angles encountered at varying levels of smoothness.
比较一下这些光滑度分别从底,中,高(从左到右),就像材质中的微表面的原理图解。黄线代表光照射到表面并反弹,根据不同平滑度,反弹角度也会有所不同。

一个平滑的表面带有的微表面细节是很少的,或根本没有(肉眼看似没有,但微观世界是都没有完全平滑的表面,都是由一粒粒更微小粒子排列组合成的,这里我就不纠结了),所以光线反弹都比较统一的方向,反射出来的效果就很清晰。而一个粗糙的表面,在微表面看似有高高低低的细节,因此光反射角度就比较多(因为表面高高低低的,很多有角度,反射出来的角度当然就不统一了,所以看起来光都散射在各个角度中),都平均的往各个方向射出,呈现出一个漫反射似的,不清晰的反射效果。
Unity Shader - Smoothness 平滑度_第3张图片
比较低,中,到平滑值得效果(从上往下)。

在低平滑度中,表面上每个点都有不一样的角度去反射,因为微表面都是凹凸不平,导致散射光线。在搞平滑度中,每个点都比较统一方向反弹光,所以物体表面上将得到比较清晰的环境反射。

Using a Smoothness Texture Map

使用Smoothness纹理映射

同样的,其他很多参数,都可以用一张纹理映射来替代一个滑动器值。这将允许你很好的控制材质每个表面上的高光反射的强度和色调。

使用一张纹理而不是一个滑动器值,意味着你可以创建出每个表面都都不一样的smoothness平滑度的材质(通常与根据Albedo纹路中的内容来定smoothness的纹理,其实还有很多的法线,凹凸,高光,等,都是与Albedo的纹理内容匹配上的)。

Properpty(属性) Function(功能)
Main Maps Smoothness source 选择Smoothness数值所存在的纹理通道
Specular/Metallic Alpha 因为每个像素点上的表面smoothness平画质只是一个数值而定,仅仅需要纹理单通道数值来存储。因此smoothness数据假设存储在纹理Metallic或Specular纹理映射中(依赖你选择的是Metallic还是Specular的模式Shader工作流)。
Albedo Alpha 这可以让你减少纹理的数量,直接用Albedo的Alpha通道来存储Smoothness在Specular/Metallic两模式Shader工作流都可使用。
Forward Rendering Options Highlights 在移动设备上运行的话,把这个选项禁用(不选,不勾上),可以优化性能。这将删除了Standard Shader中的highlights(高光)的计算。最终效果主要依赖于Specular/Metallic中的Smoothness值。
Forward Rendering Options Reflections 在移动设备上禁用该选择可优化性能。这将删除Standard Shader中的反射效果。或是使用环境映射贴图(可以是Cube Map,不知道有没Sphere Map)采样的方式来模拟。外观效果依赖于smoothness数值。

越是平滑的表面反射效果越强,反射高光更强。反之,越不平滑的表面反射效果,反射高光就越不明显,因为表面的反射都散射在各个角度上(散射,类似漫反射)。使用与Albedo纹理贴图对应的Specular和Smoothness纹理贴图,你将可创建非常逼真的效果。

你可能感兴趣的:(Unity,Shader,译文)