【问题标题】:Unity: Help needed with rendering voxels and performanceUnity:渲染体素和性能所需的帮助
【发布时间】:2020-06-12 00:35:14
【问题描述】:

所以这就是交易,我有一个被操纵的敌人,由相当多的体素组成。

当我运行游戏时,由于需要渲染的对象数量,我在渲染模型时整体性能非常差。我该如何改进呢?

这是我想到的事情: 只渲染我们实际可以看到的面孔, 或者也许使用某种 GPU 实例化?

无论如何,我想知道如何解决这样的问题。非常感谢任何帮助!

【问题讨论】:

    标签: unity3d rendering voxel


    【解决方案1】:

    如果不知道您是如何在游戏中实际实现体素的(即每个体素包含哪些组件以及您当前如何管理它们),很难提供很多具体的建议。

    虽然有一些事情需要考虑:

    • 不朝向相机的面将不会 默认呈现。您可能想要调查的是 Occlusion Culling,但是 因为你的角色在场景中不是静态的,你可能不会得到 从中获得了很大的性能提升。代码到 不断检查对象是否被遮挡可能最终会花费 比不实现它更多的 CPU。
    • 渲染可能不是您的实际性能瓶颈。如果您的每个体素在每次更新时都在做一些工作(例如碰撞检测),那么这将比渲染对象更严重地影响您的性能,尤其是对于立方体素。您需要使用 Profiler 来解决这个问题。
    • 您需要考虑是否真的需要所有这些体素始终在场景中,或者是否可以用单个游戏对象替换它们,直到需要与它们交互,然后根据需要将它们带入场景。例如,您可以将上臂替换为反映该身体部位总体素形状的网格。例如,当拍摄该部分时,您可以检测碰撞点并在该点周围实例化必要的体素以根据需要做出反应,然后重建手臂网格以反映变化的形状。

    也许还值得研究 Unity 的 Data-oriented Technology Stack (DOTS) 功能,尽管在这种情况下这可能有点过头了。

    【讨论】:

    • 非常感谢您的详细回答。我将研究 Unity 的分析器,看看实际的瓶颈是什么,但我很确定这是所有顶点和三角形的渲染。体素也不使用对撞机,所以它不可能是物理的。我也会研究 DOTS,谢谢你的链接。
    猜你喜欢
    • 2011-04-07
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多