Unity - 2D 着色器/照明,如 Terraria 或 Starbound
Unity - 2D shader / lighting like Terraria or Starbound
我有一张有很多精灵的地图。我可以向具有漫反射阴影的精灵添加 material,而不是添加大量灯光。但这不会给我想要的结果。而且性能很重。
例子
在第一张图片中,您可以看到光是由手电筒产生的。它通过 'open spaces' 以最佳方式扩展它的光线,并且很快就会被方块挡住。
这是顶层的一个很好的例子。我们可以看到某种二维定向光吗?请注意,屋内的照明再次由手电筒产生。右侧的洞穴更好地展示了光的处理方式。另外,请注意背景中的洞,这会在洞穴中产生一些额外的光线。好像真的有光透过背景照到那里。
我有什么
你可以清楚地看到这里的问题。灯光会增加它们的强度。由于某种原因,光线在一些瓷砖周围形成了方形边缘。此外,大量的灯光会很快导致性能问题。
光线投射?
我听说您可以通过某种方式使用光线投射?以 'open space' 为目标还是什么?我对着色器或游戏中的照明完全没有经验。我想要一个关于如何实现这种 Terraria/Starbound 照明效果的解释清楚的答案。这并不意味着我说光线投射是解决方案。
我的世界
在 Minecraft 中,光可以传播一定数量的空气方块。它逐渐消失到完全黑暗。在图形设置中,您可以启用 Smooth Lightning
,这将(显然)平滑块上的闪电。
我想这是用着色器完成的,但我不确定。我的猜测是这很重性能。但我在考虑空气块(它们是游戏对象),也许我的逻辑有误。
注意: 我喜欢有帮助的答案,但请提供 link 详细解释。或者在您的答案中提供源代码或 links 到 Unity 文档的解释。我不希望看到理论成立之类的。我很想知道如何在 Unity 中实现这种光照。
我还想知道是否可以不使用来自 Unity Marketplace 的包。
类似,但不好
查看包含 link 的类似帖子,这些帖子与涵盖光线投射基础知识的文章相似。但是没有解释如何在 Unity 中实现它,而不是我想要实现的 Terraria/Starbound 效果:
视频印象
例如,观看此视频,了解 Starbound 中 2d 光的工作原理:
https://www.youtube.com/watch?v=F5d-USf69SU
我知道这有点高级,但玩家手电筒发出的点光也会被方块阻挡,并被开放空间让通过。
其他帮助论坛
也是我发的
Gamedev 交流: 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
显然,the Unity Asset Store 上有几个包。搜索“2d 光照”或“2d 着色器”。你可以很方便的导入这些包的源码,自己在Unity中进行测试。测试后喜欢的包可以使用
我强烈建议您不要将其直接导入到现有项目中。为了您自己的利益,在将其包含到您的项目中之前,请在测试环境(或您的项目的副本)中对其进行测试。
为了统一,我可以提及关于 2d 动态光照的 2 个主要元素。
我有一张有很多精灵的地图。我可以向具有漫反射阴影的精灵添加 material,而不是添加大量灯光。但这不会给我想要的结果。而且性能很重。
例子
在第一张图片中,您可以看到光是由手电筒产生的。它通过 'open spaces' 以最佳方式扩展它的光线,并且很快就会被方块挡住。
这是顶层的一个很好的例子。我们可以看到某种二维定向光吗?请注意,屋内的照明再次由手电筒产生。右侧的洞穴更好地展示了光的处理方式。另外,请注意背景中的洞,这会在洞穴中产生一些额外的光线。好像真的有光透过背景照到那里。
我有什么
你可以清楚地看到这里的问题。灯光会增加它们的强度。由于某种原因,光线在一些瓷砖周围形成了方形边缘。此外,大量的灯光会很快导致性能问题。
光线投射?
我听说您可以通过某种方式使用光线投射?以 'open space' 为目标还是什么?我对着色器或游戏中的照明完全没有经验。我想要一个关于如何实现这种 Terraria/Starbound 照明效果的解释清楚的答案。这并不意味着我说光线投射是解决方案。
我的世界
在 Minecraft 中,光可以传播一定数量的空气方块。它逐渐消失到完全黑暗。在图形设置中,您可以启用 Smooth Lightning
,这将(显然)平滑块上的闪电。
我想这是用着色器完成的,但我不确定。我的猜测是这很重性能。但我在考虑空气块(它们是游戏对象),也许我的逻辑有误。
注意: 我喜欢有帮助的答案,但请提供 link 详细解释。或者在您的答案中提供源代码或 links 到 Unity 文档的解释。我不希望看到理论成立之类的。我很想知道如何在 Unity 中实现这种光照。
我还想知道是否可以不使用来自 Unity Marketplace 的包。
类似,但不好
查看包含 link 的类似帖子,这些帖子与涵盖光线投射基础知识的文章相似。但是没有解释如何在 Unity 中实现它,而不是我想要实现的 Terraria/Starbound 效果:
视频印象
例如,观看此视频,了解 Starbound 中 2d 光的工作原理:
https://www.youtube.com/watch?v=F5d-USf69SU
我知道这有点高级,但玩家手电筒发出的点光也会被方块阻挡,并被开放空间让通过。
其他帮助论坛
也是我发的
Gamedev 交流: 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
显然,the Unity Asset Store 上有几个包。搜索“2d 光照”或“2d 着色器”。你可以很方便的导入这些包的源码,自己在Unity中进行测试。测试后喜欢的包可以使用
我强烈建议您不要将其直接导入到现有项目中。为了您自己的利益,在将其包含到您的项目中之前,请在测试环境(或您的项目的副本)中对其进行测试。
为了统一,我可以提及关于 2d 动态光照的 2 个主要元素。