ID Tech 5 中"Megatexture"针对地形的D3D9 基本实现原理

本文介绍了ID Tech 5中的'Megatexture'技术,这是一种动态贴图管理技术,旨在解决3D VR资源需求增长与有限显卡内存的矛盾。文章详细阐述了如何在D3D9中基于Clipmap技术实现大尺寸地形贴图的渲染,包括Clipmap的工作原理、存储效率和基于D3D9的简化实现方法。通过对地形渲染的优化和扩展,如多线程IO控制和double clipmap buffer,来提高渲染效率和性能。
摘要由CSDN通过智能技术生成

ID Tech 5 中"Megatexture"针对地形的D3D9
基本实现原理
姚勇
H3D
2007-8
本文对ID SOFTWARE 使用的"megatexture"技术,针对地表贴图应用的D3D9 的硬件实
现,做了概要式的介绍。并对技术的实现,优化,扩展,和实用性进行了刨析。转载请注名
作者和H3D。
一,综述
ID TECH5是PC 3D游戏之父和DOOM之父John Carmack最新推出的一项新的游戏制作
技术。核心内容为一种命名为"Megatexture"的动态贴图管理技术。实际上是一种动态卸载和
装载渲染资源的技术统称。Idsoftware DOOM3引擎的lighting/shadow/shader方案统一以后,
同UNREAL3一样,面对次世代游戏对资源的无穷尽需求,需要尽快建立起一种实际工程技术
方案,加快构建3D虚拟现实的生产。

image
图片来源:Quake Wars
这个技术最主要方向就是要把VR3D建造从有限的显卡内存中释放出来。把美术从繁重
的贴图重用绘制中解脱出来。因为VR3D主要资源消耗都在贴图上,所以这个技术主要针对
texture。同时geometry也可以作为动态资源。一旦rendering相关资源作为动态流进行管理,
所带来的另一个好处就是可以让VR世界变为动态的。随时改变texture/geometry。
总得来讲,ID这项针对工程应用技术主要致力于解决:1-3DVR资源需求的爆炸增长和
有限显卡显存的矛盾;2-美术资源需求的爆炸增长,以及生产力低、成本高昂的矛盾
在ID TECH5演示中,实时演算播放了一个细节非常丰富的室外地形,同时结合了一个
小型的室内场景。所有模型和贴图制作,按照Carmack介绍,只让几个美术花了4天时间。
就制作出20G的游戏美术资源。而游戏引擎负责把几十G的资源动态装载到显卡进行渲染。
本文就以下几个问题做初步讲述:1,综述地形渲染以及贴图技术;2,Clipmap介绍;
3,基于D3D9的解决方案描述;4,优化和扩展;5,方案可行性
1-1

Mega
Texture
Megatexture 的具体实现,在DOOM3 中的地形绘制已经加入。具体实现细节简单描述
如下:
DOOM3 的地形贴图最大支持32768x32768 。即5.46 G。在DOOM3 中,以128x128
大小的块进行储存便于快速读取。以最大2048x2048 的clipmap 尺寸进行处理。其实可以计
算出在D3D9 标准的显卡上,normalmap+6 clipmap stack 的最大理论支持贴图数据大小为
(2048 * 2^6 )^2 *4= 68T bytes. 这个大小针对现在的PC 硬盘是绰绰有余的。
DOOM3 使用这张全局metatexture 纹理渲染地形,不使用LOD,GEOM-MORPHING。
1-2

传统
地形贴图渲染
当使用Tiling 方式绘制贴图,等于把贴图图素(texel)密度成倍扩大。以重复纹理信息量
的代价保证在一定分辨率下屏幕上贴图的精细程度。在绘制大范围地形时,使用不Tiling 的
全局贴图无法表现贴地处的地表细节。所以使用一些可以重复(Tiling)的不规则图案的贴图
来进行模拟。
1-2-1
Tiling
地形贴图
由于地形贴图尺寸很大,所以无法使用全局贴图。而是把多层Tiling 的纹理使用alpha
通道互相融合起来。诸如WOW[1],天堂2 等大型室外地形渲染多采用此技术。此技术在每
一层Tiling 贴图依然用到了一张全局alpha 贴图。以及一张全地形唯一的静态光影贴图。在
multitexture 中根据显卡的multitexture 处理单元数量,进行multi-pass 和multitexture 的混合
渲染。
比如,混合绿草,土路,野花的一块室外地形,需要至少3 层地表贴图。分别是一块
256x256 的草贴图,128x128 的土路贴图,和128x128 的野花贴图。每层纹理使用Tiling 模
式进行绘制,在绘制的同时,每层纹理带有一张ALPHA 灰度图(第一层不用)。用来表明
本层纹理在融合中所占的比重。把3 张地表贴图,2 张ALPHA 贴图,以及一张LIGHTMAP
贴图混合起来,就有如下地表效果。可以看出土路和草地之间的均匀过渡。

image
图片来源:H3D
如果进行优化,4 层ALPHA 可以混合称为一张贴图。Lightmap 一张。那么也至少需要
2 张全局贴图进行地表绘制。
1-2-2
全局地表纹理混合Tiling
细节贴图[2]
在更大广度的地形渲染,有时候需要一种更加快速的方法。在FAR CRY 引擎中,使用
了这个技术。简单描述为,使用一张全局地表纹理,渲染地表所有植被和光影信息。在离视
点近的范围内,使用一张表现当地地表细节的贴图,以Tiling 方式进行融合叠加。这样在细
节度上,以Tiling 方式的贴图以高细节图素纹理,掩盖了下面那一层全局贴图的粗糙颗粒。
总的来讲,分层Tiling Alpha 混合地表贴图,和全局地表混合Tiling 细节贴图,两种方
法都是靠贴图的Tiling 来增大视点附近贴图图素的密度。防止比屏幕分辨率小的2 图素之间
进行线性差值。影响真实感。
二,Clip
maps
基本介绍
针对受显卡显存制约,无法使用大尺寸贴图进行绘制,1998年SGI公司发表了一篇名为
<The Clipmap: A Virtual Mipmap>[3]的论文。论文里详细阐述了一种以有限硬件性
能,来实现相对无限大贴图的渲染。论文是一整套硬件与软件结合的方案。它可以实现以一
平方米一个图素,用单一贴图进行整个地球表面的渲染。并且结合硬件数据传输带宽,以及
相应优化方法,鲁棒的保证以任意速度漫游时保持在60Hz(针速率)。下面先对此技术做一定
简要介绍。在第三节给出基于D3D9硬件的解决方案思路。下图为Clipmap实现的美国国家地
图实时漫游的一小部分。美国约塞米蒂国家公园(Yosemite National Park)南部的一半。整个
美国使用一张170G的贴图。在显卡中的clipmap贴图缓存为16M。这个贴图内存用量在今天
的PC硬件上是完全可以实现的。

image
图片来源:<The Clipmap: A Virtual Mipmap>
2-1

Mipmap
工作原理及其分析
我们先从mipmap[4]工作原理分析开始。如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值