ITPub博客

首页 > IT职业 > IT生活 > 使用Covermap实现地形细节

使用Covermap实现地形细节

原创 IT生活 作者:Gb16978 时间:2022-07-15 17:20:34 0 删除 编辑

一、Covermap的实现

1、对Covermap的理解

常见的地形制作都是使用Heightmap+Splatmap来实现地形和纹理层混合的效果。

2、Covermap的Shader实现

由于草的本身不受其他光照影响,它的着色基本上就是一个diffusecolor,所以,以草的Shader为例来介绍一下Covermap的Shader实现。

  • Covermap的参数

我们需要声明两个参数,一个参数  _Covermap用于纹理的采样,默认颜色为“gray”灰色。将默认颜色定义为灰色,是因为可以在灰色的基础上进行叠亮或减暗。

另一个参数  _CoverMappingRect是为了设置Covermap的映射范围,方便在世界坐标中做对齐。默认为(0,0,512,512),如果我们创建的地形大小为512,坐标在[0,0,0],那么Covermap的纹理会准确的映射在地形上。如果地形有偏移,我们需要将偏移的值设置给_CoverMappingRect参数。

在返回颜色值时,只需要简单的乘上Covermap纹理的颜色,也就是  *_Covermap_var.rgb*2。这里的乘2是为了将灰色转为1,默认的Covermap颜色为灰,即*_Covermap_var.rgb*2 = 1,不会对最终效果有任何影响。如果Covermap纹理贴图上的颜色值>0.5,那么最后显示的颜色会变亮,<0.5,最后显示的颜色会变暗。建议Covermap在Gamma空间下制作,在线性空间使用时勾选sRGB。

  • Covermap的开销

从上面的实现来看,Covermap在Shader里的运算很简单,它的开销就在于对Covermap纹理贴图的采样,和两次乘法运算。Covermap纹理贴图的精度不超过1024的情况下,一般不会有太大的性能影响。

二、Covermap的美术制作流程

Covermap的原理和技术实现都很简单,我们将它应用于游戏的效果表现中,最重要的还是美术流程上的制作过程。

我们把Covermap的制作流程划为地形制作流程的一部分,在WorldMachine的地形制作流程中增加光照方位、水纹等输出纹理,然后在Photoshop中通过图层合并。

  • 在Covermap上添加阴影细节

一般的制作思路都是地形直接参与光照烘焙,但是当地形尺寸达到1024的级别时,一般会出现两个问题,一个是烘焙耗时,一个是对地形做切分优化后烘焙会有接缝。我们想用Covermap来取代地形的光照烘焙,所以在项目的某个阶段我们在3dsMax中烘焙一张阴影图。还有前文说到的草是不受任何光照的,所以草地也需要其他物件的阴影细节。

我们将场景物件和地形一起导出,在3dsMax中模拟一盏场景同角度的灯光,然后添加一个摄像机进行对位,渲染出一张阴影图。将阴影图叠加到Covermap的最后一层。

如果要使用实时阴影,就需要存储两张Covermap进行切换,一张是不带max投影的。而对于草地,使用带max投影的Covermap即可。

下图可以看到最后应用在地形上的效果:


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70019421/viewspace-2906019/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论
软件开发:Gb16978 薇

注册时间:2022-06-28

  • 博文量
    15
  • 访问量
    6820