【问题标题】:Unity3D: Why is particle lighting making directional shadows disappear?Unity3D:为什么粒子光照会使定向阴影消失?
【发布时间】:2017-06-19 21:59:45
【问题描述】:

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

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

现在我正在尝试使用 Unity 的粒子系统产生爆炸效果,但是当我向粒子系统添加点光源时,它会导致所有定向照明阴影消失,无论它们是否在视线范围内粒子与否。

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

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

有什么想法吗?这把我逼疯了。

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

【问题讨论】:

  • 你能添加你正在使用的统一版本吗?
  • 这是 5.6.0f3 个人版。

标签: unity3d


【解决方案1】:

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

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

  1. 您的场景中只能有一定数量的动态(阴影投射)灯光,这些灯光可以被相机视锥体看到。默认情况下,这个数字非常低(我认为是 4)。您可以通过转到编辑 > 项目设置 > 质量来增加此数字。将像素光计数设置为高于其默认值。您需要将此值增加到大于效果中的灯光总数。较高的值将允许在屏幕上渲染更多的灯光,但这会降低性能。

  1. 这取决于您用来接收阴影的着色器。一些着色器只会为一种定向光渲染阴影。使用的光不一定太容易确定。如果您使用的是标准 Unity 着色器,这应该不是问题。但是,如果您使用的是移动兼容的表面着色器或您自己编写的东西,那么这可能是问题的原因。

另外,对于爆炸,我建议只使用一个点光源(而不是附加到每个粒子的光源),因为这就是所有必需的。任何更多的灯光都会对 GPU 的性能产生相当大的影响,尤其是当场景中的任一时间发生不止一次爆炸时。

【讨论】:

  • 我认为可能是像素灯数,但没有卡车。即使像素光数非常荒谬(我已经尝试了从 20 到 100 的所有方法),问题仍然存在。测试场景使用 Unity 标准资产包中的 Unity 预制件,这些预制件使用默认着色器。另外,我只为每个效果生成一个光,而不是每个粒子。嗯 =(
  • 如果你能上传项目,我帮你看看
  • 谢谢,本!我会尽快整理好东西。
  • 这里是一个显示问题的简单项目的链接:wetransfer.com/downloads/…
  • 嗨@crisis.sheep 我可以看到定向光的阴影在粒子光显示时闪烁。这是您描述的行为吗?顺便说一句,我在 2017.1.0.b5 中打开了该项目
【解决方案2】:

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

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

我需要你的灯光组件的屏幕截图,包括定向光和点光、粒子和立方体(主要是材质);我无法发表评论,因为我还没有足够的声誉,所以我会在你添加截图后删除它;

【讨论】:

  • 您附加到粒子效果的照明是否设置为投射阴影?因为即使是 Unity 的标准粒子包也会在我打开阴影投射时引起我的问​​题。
猜你喜欢
  • 2019-09-29
  • 2019-08-09
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2017-07-06
  • 2018-06-20
  • 2016-12-07
  • 1970-01-01
相关资源
最近更新 更多