
要开发新版的雪系统主要是因为《战神诸神黄昏》比前作要大得多,有更多地方下雪,同时想要玩家可以在任何地方与雪互动。
旧系统(屏幕空间视差)非常擅长表现细节并且可塑性很强,但是关卡和材质设置都非常耗时且容易出错,制作成本都太高了。同时屏幕空间视差技术本身也存在一些无法解决的视觉伪影。
项目最终决定使用带有硬件曲面细分的几何位移做雪地交互,而不是使用屏幕空间视差映射,消除在旧版本中遇到的所有屏幕空间限制和伪影。
无位移

通过深度检测获取雪面变形区域

通过高度值混合不同图层

雪的深度过低的时候就会显示泥土层

只围绕位移进行tessellate

仅应用位移

在位移区域应用法线贴图

应用细节法线贴图,读取运行时生成的自上而下的 alpha 遮罩,并在角色每次移动时使用 vfx 写入

生成VFX模型(会通过GPU与雪地产生碰撞)

根据雪地变形生成一些动态模型,丰富细节

动态细分性能开销很大,而性能是《战神诸神黄昏》发售的关键,所以要想办法优化。动态细分主要受两个方面影响:曲面细分参数和曲面细分的三角形数量,因此需要在质量(曲面细分因子)和性能之间找到适当的平衡。
最终使用类似网格着色器的方法,将网格划分为子块或网格,然后使用间接绘制调用来限制通过硬件曲面细分绘制的块的数量。每个地形网格都是 2 个绘制调用,其中一个使用硬件曲面细分,另一个使用常规顶点着色器。CS着色器进行相机剔除仅绘制所需的部分。
划分为子块

相机剔除

文章转载自
Thepoly