3D地形多层纹理混合加阴影渲染方法

本文介绍了如何通过顶点的Diffuse颜色和3个TextureStage实现3D地形的多层纹理混合加阴影渲染,以节省内存空间并提升视觉效果。通过Alpha混合和光照纹理,即便使用少量贴图,也能呈现丰富多样的地形表面。详细阐述了D3D中的设置步骤,并对比了Torque引擎和《极限滑雪》游戏的实例,展示了阴影对提升地形表现力的重要性。
摘要由CSDN通过智能技术生成
                3D地形多层纹理混合加阴影渲染方法

地形多层纹理混合加阴影渲染方法

地形由于十分庞大,需要大量顶点,所以往往占用很多内存空间,那么就应该在地形贴图上想办法节约空间。很多游戏的地形,虽然看上去不同地点的纹理好像互不相同,地表纹理十分丰富,但其实真正用的贴图是很少的,之所以还能产生地表纹理变化多端的视觉效果,是因为使用了Alpha混合和阴影,从而产生一种错觉。2.5D的网络游戏《奇迹》(MU)、全3D引擎Torque(多人联网FPS游戏《部落2》即使用此引擎)、全3D的滑雪游戏《极限滑雪》(Supreme Snowboarding),都是这么做的。(参见文章末尾的截图)
我对此设想了一个解决方案。需要用到顶点的Diffuse颜色、3个TextureStage。其实所谓的多层纹理,具体到一个三角形上的时候,很多游戏只用了2层纹理来做Alpha混合(因为也许玩家的显卡只支持2层MultiTexture混合),然后再一层光照纹理。前2层纹理要做Alpha混合,Alpha来自哪里?若使用Alpha贴图,就必然再增加一层TextureStage,而我选择使用顶点的Diffuse就可以省掉这一层TextureStage:由Diffuse的Alpha通道提供Alpha值供前两层TextureStage混合使用。下面是在D3D中的设置:
// TextureStage 0
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 ); 
pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
// TextureStage 1
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_BLENDDIFFUSEALPHA );
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );
pd3dDevice->SetTextureStageState( 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值