# 着色器: rendinst_tree_perlin_layered ## 概述 `rendinst_tree_perlin_layered` 着色器专为树木的高级渲染而设计,使用曲面细分来增强视觉保真度。此着色器支持置换和平滑模式,允许对树几何体进行详细控制。曲面细分可以在运行时动态启用或禁用,使其适应各种性能设置。 ## 曲面细分概述 此着色器中的曲面细分可以在运行时通过 shader 变量进行切换。通过在控制台中将 'pn_triangulation' 设置为 '1',将对配置为曲面细分的所有树以及具有默认设置的 'rendinst_clipmap' 对象进行曲面细分。将来,此功能将合并到图形设置中。 ## 在资源中启用曲面细分 1. **默认设置:默认情况下,曲面细分处于禁用状态。要启用它,请将 'material_pn_triangulation' 设置为 '1' 或 '2'。 2. **通用参数:** - **max_tessellation_factor:** 控制镶嵌因子,该因子随距离而变化。此参数设置摄像机靠近对象时的最大系数。 3. **Tessellation Modes:** - **Mode 2:** 仅平滑。此模式没有任何其他可配置参数。 - **Mode 1:** 位移模式。在此模式下,着色器从三个漫反射纹理的 Alpha 分量中读取置换强度。这些纹理根据像素着色器混合规则进行混合。 **Displacement Mode Parameters:** - **rendinst_displacement_min:** 定义漫反射纹理的 Alpha 为 '0' 时的置换。'.xyz' 组件对应于三个漫反射纹理,而 '.w' 未使用。 - **rendinst_displacement_max:** 定义漫反射纹理的 Alpha 为 '1' 时的位移。'.xyz' 组件对应于三个漫反射纹理,而 '.w' 未使用。 - **rendinst_displacement_lod:** 指定用于在置换期间对漫反射纹理进行采样的 mip 级别。较低的值会产生更多的噪波,而较高的值会产生更平滑的置换。'.xyz' 组件对应于三个漫反射纹理,而 '.w' 未使用。 - **rendinst_displacement_mod:** 'is_pivoted' 设置为 '1',则此着色器变量允许根据顶点层次结构指定乘数。 '.x' 组件是主干的乘数,而 '.yzw' 组件按分层顺序应用于分支。 ## 其他说明 - **Tessellation Factor Limit:** 由于 API 限制,最大分割因子为 12。将 'max_tessellation_factor' 设置得更高只会在更远的距离达到这个最大值。但是,通常没有必要将其设置得太高,因为树三角形通常很小。 - **rendinst_displacement_lod Setting:** 应对此进行调整,以便在所选 mip 级别采样的纹素在世界大小方面对应于分割后的单个三角形。不需要精确的计算 – 调整直到视觉结果令人满意。 - **daEditor配置:** 当使用[*daEditor*](../../../dagor-tools/daeditor/daeditor/daeditor.md)时,确保选中 **PN triangulation** 复选框以立即查看镶嵌结果。