由《Ghost of Tsushima》启发的每片草叶渲染,在 Godot 中实现
在 Godot 引擎中进行的一种草地渲染实验受到《Ghost of Tsushima》中使用的技术的启发。单个草叶通过使用 Godot 的 MultiMeshInstance 节点在 GPU 上实例化生成,并通过着色器驱动的方法进行着色和动画处理。
草地的颜色取决于基色和尖端颜色,沿着模型纵向混合。通过在片段着色器中水平弯曲法线,为每片叶子创建了更圆润的外观。通过根据其模型空间高度使叶子纵向变暗,模拟了环境光遮蔽。默认情况下,启用草地阴影映射可提高遮蔽着色(但代价非常高),但通过更改基色和尖端颜色,也可以重现非常接近的外观。
如《Ghost of Tsushima》GDC 会议中所述,垂直于摄像机的草叶在视图空间中会水平拉伸。此外,草叶还根据其高度(不包括风力)进行程序性弯曲。草叶上的每个顶点的弯曲角度取决于草叶的总高度以及顶点沿草叶的高度,从而呈现出曲线状外观。
在 Godot 的默认照明模型上实现了一个基本的"黑科技"草地照明模型。环境光照模拟通过将漫反射光与功率曲线相结合,使远离光源的顶点仍然略有照明。表面散射模拟通过根据视图与光源向量之间的角度添加单独的颜色来实现。镜面高光由 Godot 的默认照明模型驱动。
为了使草地呈现出不那么均匀的外观,我们创建了一个"聚集系数"参数,以根据细胞噪声纹理对一组草叶的初始旋转偏移进行聚集。同一个噪声纹理还用于独立地对草叶的高度和最大弯曲角度进行聚集。此外,还可以使用单独的参数来控制全局草地密度。风的模拟是通过滚动不同频率采样的Perlin噪声纹理来实现,以获得风的效果。
暂无开放 Issues,或尚未同步最近议题。