游戏设计雾化-(精品课件).pptVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
m Lecture 12 Fog ——雾化 雾化效果是计算机图形学中应用最广的效果之一。 能显著地增加视觉效果的真实感 提供一定的深度感。 在实时图形程序,特别是游戏设计程序中,为了确保图形系统的运行速度,图形开发人员往往在位于观察点远处的场景使用较为简单的三维模型,甚至不绘制物体,而在近处使用复杂模型,这样就可能造成物体变形、突然出现或突然消失等失真现象,雾化效果可以有效地避免这种失真现象。 m Contents 雾化效果实现原理 雾化混合因子计算方法 顶点雾化与像素雾化 添加雾化效果 m 在Direct3D图形系统中,雾化是通过将景物颜色与雾的颜色,以随物体到观察点距离增加而衰减的混合因子混合而实现的。距离观察点越近,混合因子越大,场景内的物体颜色越大,雾的颜色越小,景物就越清晰;随着观察点拉远,混合因子逐渐变小,场景中物体的颜色变小,而物的颜色变大,景物越来越模糊。Direct3D计算雾化的方法如下: 其中,color表示最终经过雾化处理的颜色,colorscene表示物体原来的颜色,colorfog表示应用程序中定义的雾的颜色,f表示雾化混合因子 m 雾化效果实现原理 color = f * colorscene + (1-f) * colorfog 影响雾化效果的因素有两个:一个是雾化混合因子,另一个是雾的颜色。 通常指定雾的颜色为白色,当然也可以指定其他任何颜色以实现特殊效果。大多数情况下考虑的是雾化混合因子对于雾化效果的影响 通过指定Direct3D雾化计算公式,可以定义Direct3D图形程序中雾化效果随距离增加的趋势,雾化公式计算的结果就是雾化混合因子。 m 雾化混合因子计算方法 color = f * colorscene + (1-f) * colorfog 雾化效果是物体可见程度的反映,雾化混合因子越小,物体的可见度越低。枚举常量D3DFOGMODE定义了三种雾化公式: m 雾化混合因子计算方法 typedef enum _D3DFOGMODE{???? D3DFOG_NONE = 0,???? D3DFOG_EXP = 1,???? D3DFOG_EXP2 = 2,???? D3DFOG_LINEAR = 3,??? D3DFOG_FORCE_DWORD = 0x7fffffff, } D3DFOGMODE, *LPD3DFOGMODE; 雾化混合因子 f 随距离 d 而呈线性、指数、指数平方变化。由雾化公式计算得到的雾化混合因子 f 将用于Direct3D雾化计算公式,计算最终颜色。 从三种雾化混合因子f计算公式和雾化计算公式可以看出,物体距离观察点越远,f越小,物体原色越小,雾化颜色越多,物体越模糊。 m 雾化混合因子计算方法 Direct3D采用了两种方法进行雾化处理,顶点雾化和像素雾化。 顶点雾化是在Direct3D顶点坐标和光照流水线阶段实现,它根据物体多边形每个顶点到观察点的距离计算每个顶点的雾化程度,然后在多边形面上根据计算结果进行插值,得到每个像素点的值。 像素雾化在Direct3D像素绘制阶段实现,它根据每个像素相对于观察点的深度计算雾化效果值,与顶点雾化相比,像素雾化计算更为精确,但同时也耗费更多的系统资源。 m 顶点雾化与像素雾化 顶点雾化与基于范围的雾化 有时候,使用雾化会导致图像失真,即物体颜色和雾化颜色以意想不到的方式混合。 对于顶点雾化,在默认情况下,雾化混合因子计算公式中的距离 d 为物体在观察坐标系中的深度值,这在某些情况下会导致失真。例如,在一个场景中有A、B两个物体,它们与观察点的距离相同,从理论上说,它们应具有相同的雾化效果,然而Direct3D默认以它们在观察坐标系中的深度值(即 z 值)作为d计算雾化效果,因此会导致物体A和B的雾化效果明显不同。 m 顶点雾化与像素雾化 顶点雾化与基于范围的雾化 Direct3D为顶点雾化提供了基于范围的雾化处理(range-based fog),在基于范围的雾化处理中,使用物体和观察点之间的实际距离作为参数 d 进行雾化混合因子的计算,因为雾化效果更精确,代价是计算量大。 要使用基于范围的雾化,首先需要检查当前设备是否支持基于范围的雾化,检查的示例代码如下: m 顶点雾化与像素雾化 D3DCAPS9 caps;? g_device->GetDeviceCaps(&caps); if(! (caps.RasterCaps & D3DPRASTERCAPS_FOGRANGE))?? return false; 如果设备支持基于范围的雾化处理,则需激活: g_device->SetRenderState(D3DRS_RANGEFOGENABLE,

文档评论(0)

夏天 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档