简单的介绍一下D3D9的雾

 

D3D9 提供了两种往场景中添加雾的方法,顶点雾和像素雾。简单的说 ,像素雾 又叫做 table fog 是在显卡驱动中计算的雾。而顶点雾是在D3D 光照引擎中计算雾。应用程序可以同时使用 顶点雾和像素雾来实现雾效。

        不管用什么方法来实现雾效,都必须提供一个正确的投影矩阵,否则雾效都不正确。如果雾效不正确,请仔细检查投影矩阵。

 

雾的计算公式有三种:

 

Linear Fog

 

Exponential Fog

 

Exponential Fog(平方)

 

其中每个公式中都有个 d 用来计算标识雾的距离。如果是基于Z-Based Depth模式,则 d 的值就是该点的深度值,但是这种情况在旋转镜头时会出现错误。


对于像素雾,通过支持 Eye-Relative 来解决部分的错误现象,它是用 齐次坐标中的 W值来替换 Z 值来计算雾。这种方法只能部分的缓解这中错误,但是不能保证完全的精确。

 

对于顶点雾,可以通过支持 Range-Based Fog 可以完全精确的实现雾的精确计算。

 

使用 Range-Based Fog 和 Eye-Relative 都要预先判断硬件是否支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值