GPU处理隐形的东西吗?

时间:2015-04-04 15:36:12

标签: performance unity3d gpu

我在Unity 5中制作游戏,它类似于我的世界。对于世界渲染,我不知道我是否应该销毁我看不到或使它们看不见的立方体。 我的想法是摧毁它们,但是每次它们变得可见时创建它们会占用过多的处理器能力,所以我在寻找替代方案,使它们成为一种可行的解决方案吗? 我会同时装载大量的立方体,对于那些不熟悉我的世界的人来说,here是一个截图,以便你明白这个想法。 这只是在典型会话中同时呈现的内容的一部分。

2 个答案:

答案 0 :(得分:1)

与所有图形引擎一样,Unity可以使GPU处理在屏幕上看不到的几何体。试图限制这种情况的过程是剔除和深度测试:

  • 挫败剔除 - 防止物体完全位于相机观察区域(视锥体)之外。 viewing frustum由近和远剪裁平面以及每侧连接近和远的四个平面定义。这在Unity中始终开启,由cameras settings定义。排除的对象将不会发送到GPU
  • 遮挡剔除 - 防止摄像机内的对象视锥体但被其他对象完全遮挡而无法渲染。默认情况下不启用此功能。有关如何启用和配置的信息,请参阅Unity手册中的occlusion culling。被遮挡的对象将不会被发送到GPU
  • 背面剔除 - 防止渲染面向远离相机的法线的多边形。这发生在着色器级别,因此几何体由GPU处理。大多数着色器都会剔除背面。请参阅Unity shader docs。{/ li>中的Cull设置
  • Z-culling /深度测试 - 防止多边形因为远离相机而不会被渲染,而不是已经渲染此框架的不透明几何体。只有完全不透明(没有透明度)的多边形才会导致这种情况。深度测试也在着色器中完成,因此几何体由GPU处理。此过程可以通过Unity shader docs中描述的ZWriteZTest设置进​​行控制。

在相关说明中,如果您使用的是几何相同的几何块,请确保使用预制件。这允许Unity重复使用相同的三角形集,而不是在场景中使用2 x 6 x 000,从而减少GPU内存负载。

答案 1 :(得分:-1)

将对象渲染为不可见或破坏它之间的中间地点是保留C ++对象,但将其从场景图中分离。

这将为您提供摧毁它的所有渲染速度优势,但是当需要将其恢复时,您无需为娱乐付费,只需将其重新附加到图表中的正确位置即可。