着色器特性概览
Foliage Renderer Deluxe Shader内置以下渲染特性,并以用户友好的自定义材质检查器清晰展示:
- 剔除模式
- 深度写入开关
- 深度测试模式
- 双面法线模式
- 基于距离的网格缩放
- Y轴偏移
- 使网格与地形形状对齐(需FR)
- 顶点风动效果(需FR)
- 顶点透视弯曲
- 交互性弯曲
- 网格法线模式(标准、刷子、球形、向上)
- 透明度模式(不透明、剪裁、抖动淡出)
- 近相机淡化
- 距离相机淡化
- 斜面边缘淡化
- PBR滑块(金属度、平滑度、环境遮蔽)
- 优化纹理模式(超轻量、标准、5种打包的标准变体、昂贵)
- 底色染色(支持噪点和纹理)
- 法线强度
- 覆盖颜色遮罩,含4种遮罩模式
- 发光纹理支持,含2种遮罩模式
- 地形底色混合,含4种不同混合模式(需FR)
- 湿润效果
- 霜冻效果
- 次表面散射(简单和复杂模式)
- 饱和度控制
- 调试显示(顶点颜色预览及关键字使用情况)
包含内容
着色器
您将获得**Foliage Renderer Deluxe 着色器**。您可以在任何Unity材质的着色器选择下拉菜单中找到它,路径为`FoliageRenderer/Deluxe`。
您还将获得制作豪华版着色器所使用的全部定制化**BetterShaders堆栈着色器**。
此外,您将获得与**Foliage Renderer兼容的风力控制器**,用于调控豪华版着色材质的风力设置。
您还会获得**交互系统组件**,使您能够操控豪华版着色材质,实现动态互动效果。
RP着色器重映射器
**RP着色器重映射器**允许您创建ScriptableOBJects,根据当前项目的渲染管线自动变更材质的着色器。它还会重映射着色器属性值,例如:标准着色器会被转换为通用渲染管线/光照着色器,并且_MainTex纹理会被分配给_BaseMap。当编辑器加载或项目中有重映射器选中了’启用’复选框时的代码重新编译,这一过程会自动发生。您随时可以通过选择重映射器对象并点击’应用重映射’按钮来按需进行重映射。
包内包含一个**着色器重映射器对象**,用于自动处理示例资产从标准着色器到其URP和HDRP等效着色器的转换。
您可以通过**创建 > Foliage Renderer > RP着色器重映射器**来制作额外的着色器重映射器。
额外扩展包
提及额外的扩展包,它们包含了更多实例,但可能需要额外的依赖项。具体信息请参考下文说明。
安装与设置
添加包后,您只需选择任何想要应用Deluxe Shader的材质。点击着色器选择下拉菜单,并选取 `’FoliageRenderer/Deluxe’`。
Deluxe Shader的材质检查器分为多个折叠区域,以便于导航和查找相关效果。如果您希望在**FoliageRenderer**生态系统之外工作,并且地形上没有**TerrainFoliageProviders**为您提供纹理数据,可以展示一些额外的属性。这对于基于预生成网格地形等工作也非常有用。要展示这些选项,请导航至 `窗口 > FoliageRenderer > Deluxe Shader >` 并开启“暴露地形设置( Expose Terrain Settings)”选项。
标签设置(Tag Settings)
标签设置包含了通常位于Unity表面着色器“标签”部分的属性设置。
- 剔除(Cull): 设置此材质的剔除标签。可选关闭(Off)、背面剔除(Back)或正面剔除(Front),用于从渲染中移除选定的面。
- 启用Z写入(Enable Z Write): 切换此材质的Z缓冲区写入功能。
- Z测试(ZTest): 为材质设置ZTest枚举值,控制深度测试的方式。
- 双面法线模式(Double Sided Normal Mode): 对于基于卡片的植被元素尤为重要,可修改背面的法线。选项包括:None: 后面的面使用其常规法线。镜像(Mirror): 后面的面将其法线乘以-1。翻转(Flip): 仅将后面法线的Z分量乘以-1。
顶点设置(Vertex Settings)
顶点设置包括与改变渲染网格的顶点相关的属性和修改器。
你可以通过勾选相应的开关启用这些功能,对于交互模式(Interactable Mode),则需要从枚举下拉菜单中选择除“关闭”之外的选项。一旦启用了任何功能,相应的设置选项将会展现出来,下面是对每个功能的详细介绍:
远离时缩放网格(Scale Mesh when Far Away)
使网格贴合地形形状(Align Mesh to Terrain Shape)
类似于Foliage Renderer的光照着色器中的功能,它会根据提供的地形高度图移动网格的顶点,使植被紧贴地形。Foliage Renderer可以自动分配这些高度图,或者你也可以在材质中手动指定。
顶点风效(Vertex Wind)
此功能会根据场景中Wind Controller组件的输出来弯曲和抖动顶点。风效可以通过FRDS Wind Controller组件或Foliage Renderer Wind Controller组件更新(后者需要同时安装Foliage Renderer)。这两个类可以互换使用。
透视效果(Perspective)
当摄像机靠近并向下看时,此功能会使网格向下弯曲贴近地形。这对于草丛等细节特别有用,可以避免直接看到网格卡片的顶部。
可交互计数(Interactable Count)
可交互计数允许你选择材质应考虑的交互器数量。交互器越多,材质渲染成本越高!因此,尽量只使用必要的最小数量。关于交互组件及性能的更多信息,请参阅下方。如果不需要任何交互器来修改材质,则将其设为“关闭”。
交互模式(Interactable Mode)
决定了对象被交互时的反应方式:
- 包裹(Wrap):对象从交互器处推开,但在未受推力的地方会绕回来。
- 弯曲(Bend):对象沿从其枢轴位置出发的弧线远离交互器弯曲,类似于风吹弯的效果。
网格法线设置(Mesh Normal Settings)
提供了调整使用该材质的网格法线(用于光照计算)的选项:
- 标准(Standard):使用现有网格的法线。
- 画刷(Brush):将现有法线沿着45度角方向向上的中间值进行插值。
- 球面(Spherical):根据对象的枢轴点到顶点的距离确定法线,适合风格化资产和灌木。
- 向上(Up):法线直接指向世界空间的上方,最适合草和某些风格化的资产。
透明度设置(Alpha Settings)
允许您调整材质的透明度裁剪行为,FRDS始终作为不透明、剪裁的着色器绘制以兼容间接渲染,并提供了多种微调方式。
Alpha 模式(Alpha Mode)
Alpha 模式允许你选择用于材质的 Alpha 裁剪方式:
- 关闭(Off):不进行裁剪。
- 裁剪(Cut):执行 Alpha 裁剪。
- 散点淡出(DitherFade):使用快速散点算法对未裁剪区域进行淡出处理。
靠近摄像机淡出(Near Camera Fade)
启用后,当材质接近摄像机时,材质会逐渐淡出。结合噪点,这是在摄像机穿过物体之前使材质“溶解”,避免产生生硬瑕疵的好方法。
远离摄像机淡出(Far Camera Fade)
启用后,当材质远离摄像机时,材质会逐渐淡出。这是另一种用于掩盖物体绘制距离边缘的好方法。
淡出噪点(Fade Noise)
如果启用了“靠近摄像机淡出”或“远离摄像机淡出”,你可以开启“将世界噪点应用于淡出”。这将在世界空间中创建一个 3D 噪点,并将其应用于这些淡出值。
- 噪点强度(Noise Intensity):噪点对淡出效果的影响程度,通常只需一点点即可增加淡出“边缘”的不规则性。
- 噪点对比度功率(Noise Contrast Power):控制噪点的“粗糙度”或对比度。
- 噪点世界比例乘数(Noise World Scale Mul):控制噪点的频率;较高值会产生更细粒度的噪点,而较低值会产生柔和波动的噪点。
淡出斜向边缘(Fade Out Glancing Edges)
启用后,这会移除与摄像机视图方向垂直的表面。这对于隐藏基于卡片的网格(如草地)的边缘非常有用。
基础PBR设置
这些滑块让您设定材质的整体物理基础渲染(PBR)值,为后续调整设定基线。
纹理与主设置
这一节对于材质输出效果和性能至关重要。纹理采样是渲染过程中较为昂贵的一部分,每个纹理不仅占用内存,在着色器中读取时也会产生大量开销。Unity的“标准”着色器让我们习惯了使用超出实际需要的纹理以追求高质量结果,这种做法并不经济。在很多场合,特别是在处理地形细节时,这些额外纹理信息实际上是冗余的(比如植物通常不需要金属质感信息)。通过精简纹理采样,我们能立即获得显著的性能提升。
豪华着色器提供了多种纹理策略供选择,旨在帮助您高效地根据内容和需求选择最适合的方案,同时还能轻松添加如发光、覆盖层、霜冻等高级特性,确保在性能上保持领先。
超轻量级(UltraLite)
- 纹理打包:仅使用一个样本,适用于风格化物件、细小细节(如草)、填充物(底层灌木)和远处LOD。非常高效。
- 红通道:灰度遮罩,用于在基色一和基色二之间插值。
- 绿通道:法线贴图X通道。
- 蓝通道:环境遮蔽图乘以Alpha遮罩。
- Alpha通道:法线贴图Y通道。
标准模式(Standard)
- 纹理使用:采用两个纹理样本,是一种常见的纹理策略,适合不需要复杂光滑度或金属质感数据的情况。
- 基色+纹理:
- RGB:基色
- Alpha:Alpha遮罩
- 法线贴图:
- RGB:法线贴图
- 基色+纹理:
标准打包(Standard Packed)
- 纹理策略:在最小尺寸内提供最完整的材质数据集,也是除超轻量级外的首选策略,使用两个纹理样本。
- 基色+纹理:
- RGB:基色
- Alpha:Alpha遮罩
- 数据包纹理:
- 红通道:光滑度贴图
- 绿通道:法线贴图X
- 蓝通道:环境遮蔽图
- Alpha:法线贴图Y
- 基色+纹理:
标准平滑(Standard Smooth)
标准平滑是标准打包(Standard Packed)的一个简化版本,仅在法线纹理的Alpha通道上添加了光滑度贴图。它在相同的纹理内存占用下携带的数据较少,但组合起来更为简便。此模式使用**两**个纹理采样。
– **基色+纹理**:
– RGB: 基色
– Alpha通道: Alpha遮罩
– **数据包纹理**:
– RGB: 法线贴图
– Alpha通道: 光滑度
标准AO(Standard AO)
标准AO同样是标准打包的简化形式,只是在法线纹理的Alpha通道上加入了环境遮蔽贴图。与标准打包相比,它在相同纹理内存下携带的数据量较少,但组合更为快捷。此模式也使用**两**个纹理采样。
– 基色+纹理:
– RGB: 基色
– Alpha通道: Alpha遮罩
– **数据包纹理**:
– RGB: 法线贴图
– Alpha通道: 环境遮蔽贴图
标准透传(Standard Trans)
标准透传是标准打包的一个简化版本,仅在法线纹理的Alpha通道上添加了透射贴图。它在与标准打包相同的纹理内存占用下包含的数据较少,便于整合。特别适用于希望改善次表面散射效果并使用透射贴图的场景。同样使用**两**个纹理采样。
– **基色+纹理**:
– RGB: 基色
– Alpha通道: Alpha遮罩
– **数据包纹理**:
– RGB: 法线贴图
– Alpha通道: 透射贴图
昂贵模式(Expensive)
- 纹理配置:提供最全面的数据覆盖,但需额外一个纹理样本。虽然成本高于其他模式,但仍比Unity标准着色器快。使用三个纹理样本。
- 基色+纹理:
- RGB:基色
- Alpha:Alpha遮罩
- 法线贴图纹理
- 数据包纹理:
- 红通道:基色染色遮罩
- 绿通道:透射贴图
- 蓝通道:光滑度贴图
- Alpha:环境遮蔽贴图
- 基色+纹理:
共享设置
- 对于每种模式,都有以下一些共同的设置项:
- 使用UV1?:纹理采样是否应使用Texcoord1而非默认的Texcoord0?
- 色调一/色调二:用于乘以基色和Alpha输出的HDR颜色。色调二仅在超轻量级和昂贵模式中可用。
- 法线强度:法线贴图应用的强度。0表示无效果,1为原始强度,大于1则增强效果。
覆盖颜色(Overlay Color)
重叠颜色模式允许您使用不同的遮罩技术,在材质上投射颜色或纹理。
重叠遮罩模式(Overlay Mask Modes):
- 关闭(Off): 不使用重叠效果。
- 2D: 根据网格的世界空间XZ位置生成噪点图案。相比于3D噪点,此模式效率更高,适用于草丛、蕨类或其他地面覆盖物等矮小网格。
- 3D: 根据网格的世界空间XYZ位置生成噪点图案。与2D类似,但更适合树木或高大灌木等高大植物。
- 高度(Height): 根据模型的高度推导重叠效果。非常适合为网格底部上色。
- InvHeight: 同样基于模型高度,但效果相反,适用于网格顶部上色。
- 枢轴点(Pivot): 根据网格枢轴点的世界空间XZ位置生成重叠效果。如果你希望整棵树(例如)具有统一的叶子颜色,但与邻近树不同,此模式非常适用。
重叠类型(Overlay Type):
- 颜色(Color): 投射HDR颜色。
- 采样(Sample): 投射采样的纹理。
重叠混合(Overlay Blend):
决定重叠(颜色或纹理)如何与基色(Albedo)混合。
- 乘法(Mul): 将重叠效果乘以基色。
- 加法(Add): 将重叠效果加到基色上。
- 叠加(Overlay): 类似于Photoshop中的叠加模式,暗值使物体变暗,亮值使之变亮。
- 替换(Replace): 通过插值将重叠效果替换成基色。
发光(Emission)
发光模式:
- RGB: 使用RGB纹理样本,并将其累加到发光输出上。
- 遮罩(Mask): 使用RGBA纹理样本,将四种HDR颜色遮罩到该样本的R、G、B、A通道上,随后累加到发光输出中。
地形基色(Terrain Albedo)
地形基色遮罩模式(Terrain Albedo Mask Mode):
- 关闭(Off): 禁用此功能。
- 统一(Uniform): 将地形基色图与整个网格的基色相结合。
- 高度(Height): 将地形基色图与基色相组合,但仅从网格底部渐变融合。
地形基色混合模式(Ter. Albedo Blend Mode):
- 乘法(Mul): 将地形基色图乘以基色,使得结果变暗。
- 加法(Add): 将地形基色图加到基色上,使结果变亮。
- 叠加(Overlay): 类似于Photoshop中的叠加模式,深色值使物体变得更暗,亮色值使之更亮,以此方式将地形基色图叠加到基色上。
- 插值替换(Replace): 将地形基色图通过插值方式替换到基色上。
湿润效果设置(Wetness Settings)
启用湿润效果设置后,会调整材质的基色(Albedo)、法线(Normal)、光滑度(Smoothness)和金属度(Metallic)输出,使材质呈现出“湿润”的外观。
PBR设置:
- 着色颜色(Tint Color):该颜色将乘以湿润区域的基色。
- 光滑度(Smoothness):湿润区域的光滑度值。
- 金属度(Metallic):湿润区域的金属度值。
- 法线覆盖(Normal Override):使湿润区域的表面法线平滑化。值为0时使用当前法线,值为1时完全平滑。
湿润遮罩由世界法线方向和世界位置噪点控制。
遮罩设置(Mask Settings):
- 点衰减(Dot Falloff):当世界法线几乎垂直时,材质湿润效果的延伸距离。
- 噪点强度(Noise Intensity):控制噪点对遮罩的影响程度。低值仅影响边缘,高值则影响全局。
- 噪点尺度(Noise Scale):世界空间中噪点计算的频率。数值越高,噪点越密集。
- 噪点速率(Noise Rate):当此值大于0时,噪点随时间变化,可模拟雨滴落下的扭曲和水洼波动的效果。
- 遮罩幂(Mask Pow):遮罩被提升的幂(指数)。这会减小遮罩大小但使边缘更锐利。
- 遮罩增益(Mask Boost):应用于遮罩的乘数。增加增益会扩大遮罩大小并使边缘更清晰。
湿润效果同样可以通过提供的地形遮罩的绿色通道进行遮罩。
霜冻设置(Frost Settings)
启用后,霜冻效果会在材质上施加一层…霜冻…效果。记住,您不必局限于使用这些霜冻设置来渲染“霜冻”,它可能不适合您的项目。真菌过度生长、枯萎、粘液、晶体等效果都可以通过现有属性和新的数据纹理来重现。
霜冻纹理(Frost Texture)
霜冻纹理是一个数据打包纹理,将多个纹理打包到纹理的各个通道中,高效地提供足够的信息以创建逼真的效果。
- R通道:高度
- G通道:法线贴图X
- B通道:曲率贴图
- A通道:法线贴图Y
如果这听起来很复杂,不用担心,FRDS包包含了一个名为“frost_data”的霜冻纹理,您可以直接使用以获得令人信服的效果。
使用UV1?
此选项允许您选择使用网格的Texcoord1而非默认的Texcoord0作为基础UV。
颜色:
- 霜冻颜色(Frost Color):在霜冻效果的“暗部”使用的HDR颜色。
- 高光颜色(Highlight Color):在霜冻效果的“亮部”使用的HDR颜色。
霜冻遮罩模式(Frost Mask Mode):
- 关闭(Off):仅使用数据纹理进行遮罩。
- 遮罩(Mask):根据提供的遮罩纹理控制霜冻效果的分布。
- 高度(Height):遮罩掉网格底部,使霜冻仅出现在顶部。适用于草地、岩石乃至树木,任何需要垂直梯度的地方。
- 球形(Sphere):遮罩掉围绕网格中心点的区域,使霜冻仅出现在边缘。非常适合蕨类植物和灌木。
次表面散射设置(SubSurface Settings)
次表面散射设置允许您模拟光线穿透半透明材质边缘的效果。虽然启用次表面散射能够丰富视觉效果,且FRDS采用了在移动硬件上也能良好运行的快速近似算法,但建议您有选择性地仅在能显著提升效果的材质上启用此功能,以节省性能。
次表面散射模式(SubSurface Mode):
- 关闭(Off):不应用次表面散射。
- 简单(Simple):将次表面散射输出到材质的自发光(Emission)中。
- 复杂(Complex):将次表面散射与阴影结合后输出到材质的自发光中。
遮罩模式(Mask Mode):
- 关闭(Off):不对次表面散射进行遮罩。
- 高度(Height):仅将次表面散射应用到网格顶部,适用于草地等。
- 球形(Sphere):遮罩网格中心,仅在网格边缘应用次表面散射,适合蕨类、灌木等。
附加遮罩设置(Additional Mask Settings):
- 强度(Intensity):遮罩对输出的影响程度。0表示不进行遮罩。
- 衰减(Falloff):调整遮罩的整体大小。
- 幂(Pow):遮罩的指数,用于减少遮罩大小并锐化边缘。
- 增强(Boost):遮罩的乘数,用于增大遮罩并锐化边缘。
附加设置(Additional Settings):
- SS颜色(SS Color):用于添加到自发光以实现次表面散射的HDR颜色。
光照包裹设置(Light Wrap Settings):
- SS Wrap:调节光照在网格上的衰减范围,光照区域即次表面散射可应用的区域。
- SS Falloff:增加光照衰减。
- SS Pow:将光照衰减提升至指数级别。
- SS Boost:与光照衰减相乘。
材质厚度设置(Material Thickness Settings):
- 厚度(Thickness):表示光线散射可发生的表面宽度。较高值允许更多的次表面散射。
- 厚度幂(Thick Pow):将厚度提升至指数。
- 厚度增强(Thick Boost):与厚度相乘。
饱和度设置(Saturation Settings)
饱和度设置允许您在所有其他效果计算完毕后,调整材质的基色和/或自发光的饱和度。这有助于将大量资产统一到期望的风格和视觉效果,或无需依赖昂贵的后期处理就能创造出有趣的视觉效果。
- 基色饱和度强度(Albedo Sat Intensity):饱和度属性滑块对基色结果的影响程度。0表示完全不使用饱和度值。
- 自发光饱和度强度(Emission Sat Intensity):饱和度属性滑块对自发光结果的影响程度。0表示完全不使用饱和度值。
- 饱和度(Saturation):基色和/或自发光应有的饱和度。0表示完全灰阶,1表示保持原有饱和度不变,大于1表示增强饱和度。
调试设置(Debug Settings)
调试显示设置使您能够在渲染过程中预览材质的不同方面,以便于分析和优化。
调试模式(Debug Mode):
- 关闭(Off):不绘制任何调试信息。
- 顶点颜色(Vertex Color):预览网格的顶点颜色。
- V2F0:BetterShaders效果中使用的寄存器。R通道存储局部顶点Y位置(顶点计算期间)、基色遮罩;G通道存储透光;B通道存储自发光遮罩;A通道存储Alpha。
- V2F1:另一个BetterShaders效果中使用的寄存器。RGBA缓存地形遮罩样本。地形遮罩用于额外效果的遮罩。R: 风力强度,G: 湿润度,B: 冰冻效果,A: (尚未使用)。
- 自发光(Emission):仅输出自发光部分。
Alpha模式(Alpha Mode):
- 关闭(Off):不修改Alpha。
- 独立(Exclusive):基色颜色设为顶点颜色的Alpha,并将Alpha设为1,使对象完全不透明。
- Alpha:直接使用顶点颜色的Alpha作为输出Alpha。
- 增加Alpha(Add Alpha):将Alpha与基色相加。
在调试设置中,您还可以找到应用于该材质的活动关键字列表,有助于进一步控制和优化材质表现。
示例场景(Example Scenes)
Foliage Renderer Deluxe Shader提供了几个示例场景,帮助您直观感受着色器的实际效果。
FRDeluxeExampleScene
该场景包含预告片和宣传材料中展示的地形和Unity Terrain URP资源。场景内有一个CameraAnchor对象,下挂载了摄像机和多个球体对象。CameraAnchor通过SpinOverTime组件缓慢旋转,并确保摄像机和球体与地形对齐。每个球体都配备了一个Foliage Interactable组件和指定的作用半径。
Interactable Controller对象上有一个Foliage Interactable Manager组件,负责管理全局可交互对象数组的更新和设置。详情请参考交互系统说明。
如果预览该场景时遇到性能问题,可以找到关联到主摄像机的反射探针,改变其类型或刷新模式,以减少实时渲染带来的开销。尽管这能显著提升金属球体上的反射效果,但计算成本很高。
FRDeluxe_SettingExamples
这个场景排列了一系列预制件示例,展示了FRDS提供的多种选项。便于您快速测试不同的材质设置。
附加包(Additional Packages)
随附两个Unity包,提供更多实用资产和示例,但它们依赖于其他资源。
FRDeluxe_FRExampleScene
包含一个完全利用Foliage Renderer的示例场景。如果您拥有Foliage Renderer,解压此包即可看到FRDS着色器与Foliage Renderer渲染加速功能的结合应用。
FRDeluxe_MatManagerAssets
包含用于转换Unity地形资源的标准纹理格式到FRDS示例中使用的打包格式(如UltraLite、StandardPacked等)的Material Manager纹理打包配置。如果您拥有Material Manager包,解压此包即可利用这些资源,而Material Manager是完全免费的,强烈推荐获取。
评论留言