WOW的地形渲染

原创 2006年05月30日 18:25:00

魔兽世界的地形渲染,基本上有三种渲染路径:固定渲染管线(其中是不是又分几种就不清楚了);shader(带高光);shader(不带高光)

用到shader的渲染路径又分别针对1层,2层,3层,4层(最多允许每个chunk使用4层纹理)专门写了shader代码。

用MyWarCraftStudio打开WOW的misc.mpq包,shader / pixel / 目录下以"terrain"打头的bls文件就是地形渲染使用的shader,带有"_s"后缀的是带高光的渲染,否则就是不带高光的。

我仔细看了其中的terrain4_s.bls(用UltraEdit之类的工具可以直接当成文本文件打开)。是汇编形式的ps代码,由于之前俺只用过c形式的HLSL所以看起来有点吃力,好在还是看明白了。

texture0~3就是待混合的4层纹理,每层纹理的a通道是该层纹理对应的高光通道;texture4是一张用来控制混合权重的alpha纹理。texture4的r,g,b通道分别对应texture1~3的alpha值,而texture4.a则代表地形的阴影,0为阴影,1为正常。

混合的公式为res_n = res_n-1 * ( 1 - alpha_n ) + texture_n * alpha_n。其中n代表第n层纹理。res_n代表第n层混合后的结果。

从代码可以看出,最终混合结果的a通道(高光通道)被乘以阴影值,也就是说阴影中没有高光。同时,阴影中的diffuse光照被削减了30%。

1,2,3层纹理混合,以及不带高光的情况想必也没有什么特别之处,也不去细看了。

值得一提的是我原来一直以为WOW的地形渲染只用了ps_1_1,但从这个shader看用了5张纹理,超出了ps_1_1的4个纹理采样的限制,所以至少使用了ps_1_4(允许6个纹理采样)。而1~3层纹理混合的情况使用ps_1_1就够了。我不知道在渲染时频繁切换ps版本会不会收到性能上的惩罚,但有些显卡(比如NV的5200)同样的代码在ps_1_4上运行要比在ps_1_1上运行慢很多。

至于固定渲染管线的渲染路径,由于不可能看到代码,具体如何实现多层纹理混合无法揣测,集合了各层纹理混合系数的alpha图应该不能直接用于渲染,因为固定渲染管线似乎只能用a通道来控制混合系数,可能需要将这张纹理拆成4张才行。。。

 

 

 

魔兽世界的地形和建筑

最近有关魔兽世界的研究和引擎研究,主要完成了:     1. 地形格式的读取和二级LOD的实现(魔兽世界的LOD策略),地面小物体的异步和同步加载,地面小物体的随距离alpha渐变     2. ...
  • miztook
  • miztook
  • 2012年08月01日 20:54
  • 1598

WOW魔兽的地形渲染

魔兽世界的地形渲染,基本上有三种渲染路径:固定渲染管线(其中是不是又分几种就不清楚了);shader(带高光);shader(不带高光)用到shader的渲染路径又分别针对1层,2层,3层,4层(最多...
  • pizi0475
  • pizi0475
  • 2011年04月03日 22:00
  • 1159

使用基于GPU的Geometry Clipmap渲染地形

使用基于GPU的Geometry Clipmap渲染地形(上)使用基于GPU的Geometry Clipmap渲染地形(Terrain Rendering Using GPU-Based Geomet...
  • pizi0475
  • pizi0475
  • 2011年04月03日 22:21
  • 2772

LOD地形渲染技术概述

参考文章 http://blog.sina.com.cn/s/blog_5e3213f30100zxet.html LOD技术简述 http://blog.sina.com.cn/s/bl...
  • u012234115
  • u012234115
  • 2015年08月28日 19:15
  • 2434

大规模地形渲染--消除裂缝

由于是采用四叉树结构,不同级别的分块之间可能会出现裂缝(Cracks )。   如上图所示,在点A ,B 处可能会由于两个分块不共享顶点而出现裂缝。目前有不少 解决裂缝的方法,主要分为跳点法...
  • baozi3026
  • baozi3026
  • 2010年07月27日 22:59
  • 1788

3D地形渲染

这两天看英文看得头都疼了,以前看英文也没有这么痛苦过。主要还是找一些关于地形渲染的资料,发现一个网站,很不错,推荐一下www.vterrain.org现在分享一下我做这个题目的心得,不过作为初学者的我...
  • holsety
  • holsety
  • 2007年04月27日 23:43
  • 2318

ArcGIS制图技巧系列(2)地形渲染

ArcGIS制图技巧系列(2)地形渲染 by 李远祥       DEM数据是常见的地形数据,在GIS常规的制图中,DEM一直扮演着增强效果。由于带有高程值,DEM在很多情况下都在三维中显示,但这里主...
  • liyuanxiang1984
  • liyuanxiang1984
  • 2016年10月11日 15:20
  • 7946

魔兽争霸3- Terrain , 自动拼接地形渲染方式

源码已发布,请打开下载http://www.cppblog.com/mybios/archive/2008/10/31/65636.html 上次发了个这样的图,结果被某些人鄙视了,很郁闷啊。 ...
  • blizmax6
  • blizmax6
  • 2011年08月31日 17:51
  • 797

Large Terrain Rendering(大型地形渲染技术)

s
  • qq_29523119
  • qq_29523119
  • 2017年02月20日 18:36
  • 352

大地形的拆分与地形金字塔及地形DEM数据的比例采样

DEM 三维地形处理之二:大地形的拆分与地形金字塔及地形DEM数据的比例采样                          大地形的拆分与地形金字塔及地形DEM数据的比例采样 ...
  • blue_sky_bird
  • blue_sky_bird
  • 2014年11月27日 21:44
  • 1507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WOW的地形渲染
举报原因:
原因补充:

(最多只允许输入30个字)