Unity3D:为什么粒子照明使定向阴影消失?

时间:2017-06-19 21:59:46

标签: unity3d

更新:正如@BenHayward所怀疑,这是一个错误。 < link>

我在一个包含四边形网格的平面上设置了一个非常简单的立方体。定向灯以一定角度照射在场景中,从立方体到四边形产生一组阴影。

现在我试图用Unity的粒子系统产生爆炸效果,但是当我向粒子系统添加一个点光源时,它会导致所有定向照明阴影消失,无论它们是&#39 ;重新观察粒子与否。

当粒子被破坏时,阴影会重新出现。用纯C#复制粒子效果不会引起任何问题。

(哦,显然我正在使用延迟渲染路径。)

有什么想法吗?这让我离开了墙。

[编辑:我应该提到添加到粒子系统的点光源设置为投射阴影。 Unity标准粒子包默认禁用阴影投射。当我打开阴影投射时,它们也会导致问题。]

2 个答案:

答案 0 :(得分:1)

根据您链接的项目,似乎粒子系统正在使定向光投射的阴影快速闪烁。我怀疑这是一个错误,因为如果它是预期的行为,我不会指望它以这种方式闪烁。

如果这不是一个错误,问题可能是由几个问题引起的:

  1. 您的场景中只能有一定数量的动态(阴影投射)灯光,这些灯光可以在相机平截头体中看到。默认情况下,这个数字非常低(我认为它是4)。您可以转到修改>来增加此数字。项目设置>质量。将Pixel Light计数设置为高于其默认值。您需要将此值增加到大于效果中的总灯数。较高的值将允许在屏幕上呈现更多灯光,但这会降低性能。
  2. Screenshot of where to find Pixel Light count in Unity interface

    1. 这取决于您用于接收阴影的着色器。某些着色器仅渲染一个方向光的阴影。使用的光不一定太容易确定。如果您使用标准Unity着色器,这应该不是问题。但是,如果您使用的是移动兼容的表面着色器或您自己编写的内容,那么这可能是导致问题的原因。
    2. 另外,对于爆炸,我建议只使用一个单点光源(不是每个粒子附着的灯光),因为这就是所需要的。任何更多的灯都会对GPU造成相当大的性能影响,特别是如果场景中任何一次爆炸都有多次爆炸。

答案 1 :(得分:0)

我按照你的描述重新创建了场景,我无法重现你的问题。 我主要遵循本教程,并在一个平面中添加了几个立方体:

https://unity3d.com/learn/tutorials/topics/graphics/adding-lighting-particles

我需要你的灯光组件的截图,包括方向光和点光源,粒子和立方体(主要是材料);我无法评论,因为我还没有足够的声誉,所以一旦你添加截图我就会删除它;