unity3d Unity - 2D着色器/照明,如Terraria或Starbound

6yt4nkrj  于 2023-01-13  发布在  其他
关注(0)|答案(3)|浏览(192)

我有一张有很多精灵的Map。我可以添加一个材质到精灵上,然后添加很多灯光。但是这不会给予我想要的结果。而且性能很重。

示例

在第一张图片中,你可以看到光是由手电筒产生的,它在“开放空间”中以最佳状态扩展光线,并很快被障碍物阻挡。

这是顶层的一个很好的例子。我们可以看到一些2D定向光?请注意,房子里面的照明是由手电筒产生的。右边的洞穴显示了一个更好的例子,说明了光是如何处理的。另外,注意背景中的洞,这是产生一些额外的光进入洞穴。好像光真的是通过那里的背景发光。

我拥有的

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

光线投射?

我读到过你可以用光线投射来瞄准“开放空间”之类的东西?我对着色器或游戏中的光照完全没有经验。我希望你能解释清楚如何实现这种Terraria/Starbound光照效果。这并不意味着我说光线投射是解决方案。
我的世界
在Minecraft中,光线可以穿过一定数量的空气块。它会逐渐褪色到完全黑暗。在图形设置中你可以启用Smooth Lightning,这将(显然)平滑块上的 lightning 。
我猜这是用着色器做的,但我不确定。我猜这是性能的重点。但我在考虑空气块(这是游戏对象),也许我有错误的逻辑。

**注:**我喜欢有帮助的答案,但请提供详细解释的链接。或者在答案中提供源代码或Unity文档链接的解释。我不希望看到理论工作或什么的。我希望得到如何在Unity中实现这种照明的答案。

我还想知道是否有可能 * 不 * 使用来自Unity Marketplace的软件包。

相似,但不好

看看类似的文章链接,这些文章涵盖了光线投射的基础知识,但没有解释如何在Unity中实现,也没有解释我想实现的Terraria/Starbound效果:
Make pixel lighting like terraria and starbound
How to achieve Terraria/Starbound 2d lighting?

视频印象

例如,看看这个视频,你会对Starbound中的2d灯光效果有一个很好的印象:
https://www.youtube.com/watch?v=F5d-USf69SU
我知道这是一个有点先进,但也点光产生的球员的闪光灯是停止块,让通过的开放空间。

其他帮助论坛

也是我贴的。

游戏设备交换:https://gamedev.stackexchange.com/questions/155440/unity-2d-shader-lighting-like-terraria-or-starbound
统一论坛:https://answers.unity.com/questions/1480518/2d-shader-lighting-like-terraria-or-starbound.html

thtygnil

thtygnil1#

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

  1. unity essentions中用于2d光照的主要资源之一是DDL light,它有一个官方教程here
    1.最重要的是Unity本身正在开发动态照明系统,目前处于beta测试阶段(2019.2)。Unity推出了用于2D灯光的Lightweight RP包here,并提供了here教程。
hs1ihplo

hs1ihplo2#

显然,the Unity Asset Store上有几个包,搜索“2d lighting”或者“2d shader”,你可以轻松导入这些包的源代码,自己在Unity中测试,如果测试后喜欢某个包,就可以使用。
我强烈建议您不要将它直接导入到现有的项目中。为了您自己的利益,在将它包含到您的项目中之前,请在测试环境(或您的项目副本)中测试它。

4jb9z9bj

4jb9z9bj3#

Here's my hacky solution
GitHub Link
1.有两个摄像头。
1.空的平铺块用白色块填充(仅摄影机2渲染此内容)
1.将高斯模糊应用于渲染白色块的摄影机

  1. SpriteLightKit混合了两个摄像头,使所有没有被白色模糊覆盖的东西变暗。
    1.可以通过更改白色平铺的sprite的“每单位像素数”来调整“灯光”穿透。

相关问题