目录
一、Lit着色器
1. Surface Options
2. Surface Inputs(表面输入)
3. Transparency Inputs
二、HDRP渲染优先级
目录
一、Lit着色器
1. Surface Options
2. Surface Inputs(表面输入)
3. Transparency Inputs
4. Emission Inputs(自发光输入)
二、HDRP渲染优先级
我们可以把现实世界中的物体分成不透明物体和透明物体(其中包括透明或者半透明)。在实时渲染时,其实我们模拟的就是物体的表面。当然在模拟透明物体时我们还要考虑光透过物体时发生的吸收和折射现象。
在Lit中把表面类型分成了两类:Opaque(不透明)和Transparent(透明)。
这一选项在选择Transparent(透明)表面类型下出现,我们可以为当前材质选择以下渲染通道:
这一选项在选择Transparent(透明)表面类型下出现。该选项用于确定通过何种混合方式,把当前透明材质表面每个像素的颜色与背景颜色相混合,从而获得透明材质上每个像素的最终颜色值。
如果指定了Base Map并且Base Map的Alpha通道是纯黑色(代表完全透明),这时我们再调节颜色选择器中的A(Alpha)值就没有意义了。如果没有指定Base Map或者Base Map中没有包含Alpha通道,则玻璃材质的透明度就由颜色选择器的A(Alpha)值来控制。(如下图,Base Map的Alpha通道周围不是纯黑色,所以调整颜色选择器中的A(Alpha)值还会影响物体的周边。)
这一选项在选择Transparent(透明)表面类型下出现。进行Alpha混合以后会导致高光的强度减弱。启用此选项可以让透明表面保持高光的强度,适用于表现光线在玻璃或者水面上的反射效果。
这一选项在选择Transparent(透明)表面类型下出现。启用此选项可以让场景中的雾效影响透明表面。如果禁用此选项,HDRP则不会在计算场景雾效时将当前材质考虑在内。
(需要在HDRP配置文件中启用Transparent Backface选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项以后HDRP会用两个Draw Call来渲染当前材质关联的物体。HDRP会使用第一个Draw Call渲染物体背面的三角面,使用第二个Draw Call渲染正面的三角面。
(需要在HDRP配置文件中启用Transparent Depth Prepass选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项后,HDRP会把透明表面的多边形数据添加到深度缓冲(Depth Buffer)中。使用这些深度缓冲中的多边形数据可以优化渲染排序。这一过程会在处理光照之前完成,因此有助于提升GPU的性能。注意,在渲染透明通道之前,这些深度信息会被写入一个单独的渲染通道中,然后被用于处理渲染排序。
(需要在HDRP配置文件中启用Transparent Depth Postpass选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项后,HDRP会把透明表面的多边形数据添加到深度缓冲(Depth Buffer)中,以供后处理(Post Processing)使用。这一过程会在处理光照之前完成。如果你想进行Motion Blur(运动模糊)和Depth of Field(景深)这类需要用到深度信息的后处理,可启用此选项,它对这些后处理效果的正确计算很有帮助
(需要在HDRP配置文件中启用Motion Vectors选项):这一选项在选择Transparent(透明)表面类型下出现。启用该选项后,HDRP会写入使用此材质的透明物体的Motion Vector(运动矢量)数据,这样HDRP才能计算使用当前材质的透明物体的Motion Blur(运动模糊)这类后处理效果。
用于决定是剔除透明物体网格的正面(Front)还是背面(Back)。
启用此选项,我们可以用材质的Alpha通道来控制渲染表面上哪些区域,不渲染哪些区域,从而在透明部分和不透明部分之间创建明显的边界。
Threshold:使用Threshold数值控制Alpha的临界值。如果把Threshold数值设置为0.05,那么Alpha值小于等于0.05的区域会被渲染,Alpha值大于0.05的区域则不会被渲染。
启用此选项可以让当前材质显示贴花,比如玻璃上的白色圆点。
启用此选项时,HDRP会在计算屏幕空间反射时把与当前材质关联的物体考虑进去。
置换模式和高度图用于为模型的网格增加细节表现。当设置了置换模式时,下方Surface Inputs(表面输入)部分会出现Height Map(高度图)选项。(高度图见下文详解)HDRP提供两种置换模式。
Surface Inputs中的参数用于控制物体表面的各种属性,比如颜色、透明度、高光、表面细节、纹理所用的UV等。
用于控制表面的颜色和透明度。如果不指定纹理,物体会使用颜色选择器中的颜色作为表面颜色;如果指定了纹理,物体表面的最终颜色由纹理和颜色选择器所选的颜色一起决定。
在Red、Green、Blue和Alpha四个通道中保存的贴图其实都是灰度图。灰度图提供的是对应最终纹理上每个像素点的数值(每张灰度图控制着不同的参数)。纯白色对应最大值1(有效果),颜色越黑数值越小直到为0(无效果)。
在同一张Mask Map中保存四张贴图的好处是:因为这四张贴图的UV坐标相同,所以渲染器只需要采样一次就能拿到最多四张贴图的信息。请注意,使用Mask Map时并不需要每次都使用4个通道。你完全可以按照自己的需求选择一个或者多个通道使用。
如果我们没有指定Mask Map,这时的Metallic和Smoothness两个选项的数值都在0~1之间。Metallic数值越高,物体表面的金属反光越强烈。Smoothness数值越高,物体表面越平滑,越像一面镜子;反之物体表面看上去越粗糙。
如果我们指定了Mask Map,Metallic Remapping、Smoothness Remapping和Ambient Occlusion Remapping选项会出现滑块。
在Normal Map Space中可以选择TangentSpace(切线空间)或者ObjectSpace(物体空间)。两种法线贴图空间的区别是:
我们可以为Normal Map关联一张法线贴图,用于为物体表面增加细节信息。可以通过滑块来控制细节信息的强度大小(数值在0~8之间)。法线贴图为物体表面增加细节的原理是,使用保存在法线贴图中的信息,通过改变物体表面的光照信息让表面“看上去”多了一些细节。但是本质上物体表面并没有发生真正的形变。
当设置了置换模式时会出现该选项。高度图本质上就是一张黑白颜色的灰度图。白色区域代表了受影响表面高的地方;颜色越深,受影响的表面就越低。与法线贴图不同,高度图会改变受影响表面的区域,从而增加更多的细节。一般高度图和法线贴图配合使用。
当设置置换模式为Pixel displacement(像素置换)时会出现该选项。用于控制高度图置换效果的强度。
使用 Iridescence 这一材质类型时出现。可以在这里使用一张灰度图控制彩虹色的强弱。0代表没有彩虹色,1代表彩虹色效果最强。我们也可以直接使用固定数值(0~1之间)来控制整个表面的彩虹色强弱。
使用Specular Color这一材质类型时出现。此选项可以让你手动设置高光颜色(Specular Color)。这里关联的纹理使我们可以在像素级别定义高光颜色。如果你在颜色选择器中选择一个颜色,HDRP会将此颜色和纹理上的每一个像素相乘从而得到最终的高光颜色。
使用Specular Color这一材质类型时出现。如果启用这一选项,HDRP会在高光效果太强烈时降低材质的漫反射色,这可以让材质看上去更加“物理正确”。因为PBR(基于物理的渲染)的能量守恒(Energy Conservation)守则对于物体表面的正确渲染非常重要。这一守则认为,反射和散射光的能量必须小于物体表面接收到的光能量。
以下是所有与折射相关的参数。
在此可以选择HDRP处理折射的方式:
用于控制折射效果的强度。数值越大,折射效果越强。(折射率=光在真空中的速度/光在当前透明材质中的速度)各种物质的折射率可以参考:https://zh.wikipedia.org/zh-cn/折射率。
可以使用一张厚度贴图(Thickness Map)来控制透明物质的厚度(基于像素级别的)。如果不使用厚度贴图,也可以使用滑块来控制透明物体的总体厚度。注:此选项在Thin折射模型下不出现,因为在Thin模型下厚度被规定为5cm。
具有折射性质的透明物体可以对穿过物体的光线进行染色。可以在这里指定一张贴图(基于像素级别的)给经过的光线染色,也可以单独使用颜色选择器选择一个总体的颜色。如果这两种方式都使用了,那么最终光线的颜色由贴图的颜色和从颜色选择器中选择的颜色共同决定。
可以把网格转变成由自发光材质控制的光源。
渲染管线会先渲染离相机最远的物体,最后渲染离相机最近的物体。在HDRP中会按照材质(Material)的Sorting Priority(排序优先级)和渲染组件(Mesh Renderer)的Priority值来排序场景中物体的渲染排序。数值越大,渲染越靠后,离相机越近。
HDRP对透明物体进行渲染排序时所用的优先级:(由强到弱)材质从Depth Write中获得的深度信息→材质的Sorting Priority数值→Mesh Renderer组件的Priority数值→相机离开物体的距离。