CryEngine3中裁剪剔除解释.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CryEngine3中裁剪剔除解释 概述 ???????? 在3D渲染方面早期的裁剪主要是描述了各类物体(Objects ,drawcalls,Triangles和 Pixels)被剔除,不会显示到最终图像的。在渲染管线中不同阶段剔除物体已经有很多技术。一些技术是基于软件模拟完全依赖于CPU的,一些是通过硬件GPU进行处理依赖于显卡的。了解这些技术来达到良好的性能是非常有帮助。要省略尽可能多的处理工作,一方面剔除工作越早进行,剔除的越多越好。另一方面剔除工作本事又不能太消耗性能和内存。为了确保良好的性能我们需要自动平衡这个系统。最然会使得系统特点有一些难理解,但是是为了更好的性能。 ???????? 通常引擎的裁剪发生在DrawCall层级或者多重DrawCalls的时候,我们我们不会深入到三角形层级或者更深的层级,因为这样往往效率是不好的。这意味着只需要将场景中大量的物体分割到不同的区域,并保证不是所有的区域都会被渲染就可以了。 视锥体裁剪 视锥体裁剪是每一个好的3D应请都要做的基础技术。最简单的方式是,场景中的所有物体都与视锥的平截头体做交互检测。这个检测可以是保守的,这意味着它可以接受一些检测可见但实际不可见的对象,这可以通过对象的包裹图元进行近似的优化。我们使用AABB盒子(axis aligned bounding boxes)或者OBB盒子)(oriented bounding boxes)。当我们对平截头体进行检测的时候,可以按对象的近似体这个层级来做可见度测试,同时通过递归下降到Draw Call的层级。视锥体裁剪在引擎与硬件层都是独立的,有关的结构以包裹盒来存储。 不使用静态裁剪技术 ???????? 我们要刻意避免静态技术如早期3D引擎的通用预处理技术PVS(Potential Visibility Set),PVS最大的优点是运行性能与成本非常小,但是在现代的计算机上这点成本却很少关注。创建PVS通常是一个非常耗时的预处理过程,这对现代大规模的游戏世界是非常糟糕的。游戏通常需要进行几何体的更新(如开门关门,建筑物破坏),PVS的静态场景不能很好的适合他。通常避免使用PVS或者类似的预处理技术,我们甚至可以节省一些对于主机游戏非常宝贵的内存。 Protals技术 ???????? PVS之外另外一种流行的做法是Protals技术,Protals通常是手动设置的2d凸多边形。这个想法是如果一个Protal是可见的(简单的认为对象是简单图元)。则Protal背后的世界部分是会被渲染那的。如果这世界部分是被认为可见的,几何体可以与Protal形状进行进一步交集检测来做更多的裁剪。通过Protals分离世界区域,设计者可以创建高效的关卡。好的Protal位置在狭窄区域如门可以有利于裁剪门以外的环境区域来提高性能。有可以是自动的放置Protal算法,但是如果挂卡设计师没有在优化过程中优化很可能性能不能达到最佳。手动放置Protal可以较少自动处理上的耗时,而且额外使用的内存很少,还可以做一些动态更新。Protals可以作为开关(如门等)。有些引擎甚至还利用了Protal做了特殊效果(例如镜子,teleporter等。在CryEngine中Protals是专门用来改进渲染性能的。我们进一步不扩展使用Protals。这也是因为保持代码和Protal流程的简单与有效。Protals他其特有的优势,但对于关卡设计师来说要做更多的努力,往往很难找到好的Protal位置。如城市中或纯天然开放的场景中经常不能有效的使用Protal。CryEngine虽然提供Protals功能,但只适用于可以比coverage buffer有更好性能表现的地方。 Ani Protals ???????? Protal技术可以被反方向扩展,通常叫做Anti Protals.这些物体通常是凸2D或3D可以与其他Protals咬合。想象一下,一个有大柱子的房间并且有多个们连接到其他房间。这是一个很难使用Protal典型的例子,但是是应用Anti-Protals的典型例子。Anti-Protals可以用与对象交互的几何体来实现, 但这个方法有一个问题,多个anti-protals会融合会有效率问题。替换anti-portals几何体。我们可以用coverage buffer的方式实现同样的目的,但性能优良 GPU的Z检测 ???????? 现代的图形性显卡Z缓冲是用来解决表面隐藏的问题的。这里有一个简单的解释:对于没一个屏幕上的像素都会存储一个摄像机与现实几何体上像素位置的距离信息叫做Z或者深度值。所有的可渲染对象都是由三角形构成。三角形所覆盖的所有像素都会与Z值进行比较。根据结果而定但侥幸上的像素是不是被剔除。这很好的解决了相交对象隐藏免的剔除问题。刚才

文档评论(0)

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

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

1亿VIP精品文档

相关文档