您现在的位置:主页 > 1.80火龙复古 >

    Unity 3D-批处理将GameObjects移动到单个网格中以减少绘制调用。

    发布时间:2019-05-26 11:14 来源:http://www.babeed.cc


      我最近发现了一些用于批量减少绘制调用的黑魔法。认为你不能组合和批量移动的对象?你可以。

      您可能知道静态3D模型 - 根本不会移动的东西 - 可以标记为静态并由图形引擎自动批处理。单独的网格,只要它们使用相同的着色器使用相同的材质,就可以组合成一个绘图调用,这意味着显卡的工作量减少(尽管我不知道这些东西是如何工作的。)

      我有一个游戏?你可以用很多较小的部件来制造车辆。车辆上的所有部件都使用相同的材料。所有零件纹理都被烘焙成一个大的纹理图集图像,零件顶点中的数据本身确定它们是否有光泽或暗淡,或损坏,或者是热 - 允许整个事物使用相同的单个着色器。

      但这还不足以使批处理工作。 Unity可以进行少量动态批处理 - 对非静态对象进行批处理 - 但其只有几百个多边形。一个车辆零件已经有几百个。

      我已经做的一件事就是将车辆上的所有零件都移动(我的意思是整车移动,但这些零件都随之移动)并将它们组合成一个大的组合网格进入游戏。拥有一个组合网格是获得所有批处理和减少绘制调用的最终转折点。 (当零件被破坏时,我将相应的零件归零。)

      这有帮助,但是我无法将自己移动的任何东西组合起来,比如武器炮塔和旋转的粉丝,而且还有很多。

      这就是诀窍,我知道还有其他人正在搜索?我正在寻找相同的力量。甚至在资源商店中批量处理的东西通常都比这少。

      您可以组合所有,并让GPU直接在要移动的部件的顶点上进行变换,以便将它们放置在任何需要的位置。随时创建一个模型并更改模型?您可以编写着色器来执行此作,但您甚至不必这样做,因为Unity内置了对它的支持。曾经使用SkinnedMeshRenderer?用骨骼制作动画片?单独的移动车辆部件的变形可以是骨头! Unify Wiki甚至有一个如何进行转换的例子!

      所以现在我把所有东西都结合起来,而且速度超快。进行转换时会有一些开销:使用DirectX11或更新卡的人,您将在GPU上执行此作(在编辑器中检查您的播放器设置以获取此选项以启用此模式和DX11模式)。使用DX9或DX10卡的用户将在CPU上进行作。但是,与总体能的提升相比,这是少量的额外工作 - 至少在我的用例中。

      本文网址:http://www.babeed.cc/180hlfg/20190526/130.html 欢迎转载!

      相关文章:

      上一篇:Fallout 76 Trailer Song现在可以买到钱去慈善机构
      下一篇:作曲家说,Halo 2的Cliffhanger Ending不是原创设计