GameTech/URP 渲染实战

案例 20.10综合:一块完整的小地形进阶

目标:把本章的技术组合起来。

地面使用案例 20.4 的自动材质(高度/坡度规则 + 岩石 Triplanar + 高度混合);草只种在“坡度小、低于雪线”的地方——种植时在 C# 里对高度函数求坡度,过滤掉陡坡和高处,这与 Shader 里的规则是同一套判断,所以草地边缘正好与地表的草地层对齐。草的距离淡出设在 20–28 米,再开启指数雾让远山退到背景里。

图 20-18本章综合效果:程序化高度场 + 自动地表材质 + GPU Instancing 草地 + 距离淡出 + 指数雾

如果要把这一套搬到 Unity Terrain 上,对应关系是:高度场网格 → Terrain 组件;AutoTerrain.shader → 改写 TerrainLit(保留它的 _Control/_Splat 接口和 Instanced 地形的高度图采样)或在 Terrain 的材质槽里放自定义 Shader;草 → Terrain 的 Detail 系统(URP 用 TerrainDetailLit / WavingGrass 系列 Shader)或者像本章这样自己用实例化绘制,后者在交互和淡出上更可控。