Unity - 像Terraria或Starbound这样的2D着色器/照明

时间:2018-03-14 22:09:17

标签: c# unity3d 2d shader light

我有一张有很多精灵的地图。我可以使用漫反射阴影向精灵添加材质,然后添加大量光源。但这不会给我我想要的结果。

实施例

在第一张图片中,您可以看到灯光是由火炬产生的。它通过“开放空间”将光线扩展到最佳状态,并且可以很快地通过块来阻止它。

enter image description here

这是顶层的一个很好的例子。我们可以看到某种2D定向光?请注意,房屋内的照明是由火炬再次产生的。右侧的洞穴显示了如何处理光线的更好示例。另外,注意背景中的洞,这会在洞穴中产生一些额外的光线。好像光线真的透过那里的背景。

enter image description here

我拥有什么

您可以在此处清楚地看到问题。灯光会增加强度。由于某种原因,光线会在某些瓷砖周围形成一个方形边缘。此外,大量的灯光会很快导致性能问题。

enter image description here

光线投射?

我读到你可以以某种方式使用光线投射?以'开放空间'为目标?我根本没有使用着色器或游戏中的灯光的经验。我喜欢一个很好的解释,如何实现这种Terraria / Starbound照明效果。这并不意味着我说光线投射是解决方案。

的Minecraft

在“我的世界”中,光可以行进一定量的空气块。它逐渐消失到完全黑暗。在图形设置中,您可以启用Smooth Lightning,这将(显然)平滑块上的闪电。

我想这是用着色器完成的,但我不确定。我的猜测是性能很重。但我在想空气块(它们是游戏对象),也许我的逻辑错误。

注意:我喜欢有用的答案,但请提供详细说明的链接。或者在答案中提供源代码或Unity文档链接的说明。我不希望看到理论成真或其他什么。我很想得到关于如何在Unity中实现这种照明的答案。

类似,但没有好的

查看类似帖子,其中包含指向涵盖光线投射基础知识的文章的链接。但没有解释如何在Unity中实现这一点,而不是我想要实现的Terraria / Starbound效果:

Make pixel lighting like terraria and starbound

How to achieve Terraria/Starbound 2d lighting?

视频展示

例如,请观看此视频,了解有关2D星光在Starbound中的工作原理:

https://www.youtube.com/watch?v=F5d-USf69SU

我知道这有点先进,但是玩家的闪光灯产生的点亮光被挡块挡住,并通过开放空间让它通过。

其他帮助论坛

也是我发布的。

Gamedev Exchange: https://gamedev.stackexchange.com/questions/155440/unity-2d-shader-lighting-like-terraria-or-starbound

Unity论坛: https://answers.unity.com/questions/1480518/2d-shader-lighting-like-terraria-or-starbound.html

2 个答案:

答案 0 :(得分:1)

我可以提及2d动态照明的两个主要元素。

  1. 用于{2}照明的基本要素之一是DDL light,带有官方教程here
  2. 最重要的是,Unity本身正在开发动态照明系统,该系统目前处于测试阶段(适用于2019.2)。 Unity推出了用于2d灯光here的Lightweight RP软件包,并提供了一个教程here

答案 1 :(得分:0)

显然,Unity资源商店中有几个包可用于2D照明。 This one是免费的。

您可以导入源代码并自行检查。