我在 Unity 中遇到了一个问题,由于阴影投射,它阻止它在自上而下或等距视图中剔除相机外对象。
定向光是对角线的,因此在光线来自的方向上相机视图之外的任何物体都可能在相机视图中投射阴影。现在,实际上,几乎所有这些对象只会将它们的阴影投射到远低于地面的摄像机视图内,因此它们并不需要被渲染。然而,Unity 并不知道这一点,它无论如何都会渲染它们的阴影,从而显着降低性能。
我尝试通过遮挡剔除来解决这个问题。我在地面创建了一个巨大的平面,将其标记为静态,并为该对象烘焙了遮挡剔除,这样地下的任何东西都不会被渲染。不幸的是,这无济于事,所有那些其阴影可能进入地面下方相机视图的对象仍在渲染中。
另一种可能的解决方案是限制为每个对象生成阴影的范围。这些物体中的许多都非常低并且总是在地面上,所以我知道它们的阴影不可能超过 1-2 米。但是我找不到定义这样一个值的方法,以便统一可以使用它进行剔除。
关于如何克服这个问题的任何其他想法?
注意:整个场景是程序生成的,所以我不能使用静态遮挡剔除,除了地面本身。