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

Der*_*man 8 c# shader 2d light unity-game-engine

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


例子

在第一张图像中,您可以看到光源是由火把产生的.它通过"开放空间"以最佳方式扩展其光线,并且很快就被块阻挡.

在此输入图像描述


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

在此输入图像描述


是)我有的

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

在此输入图像描述


光线投射?

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


我的世界

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

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


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


相似,但没有好处

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

使像素照明像terraria和starbound

如何实现Terraria/Starbound 2d照明?


视频印象

例如,看一下这个视频,就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


Jac*_*ani 2

我可以提到关于统一 2d 动态光照的 2 个主要元素。

  1. Unity Essentials 中用于 2D 光照的主要资源之一是DDL light ,这里有官方教程。
  2. 最重要的是,Unity 本身正在开发动态光照系统,目前处于测试阶段(2019.2)。Unity在这里介绍了用于 2d 灯光的 Lightweight RP 包,这里有一个教程。