【问题标题】:How to create a good glow effect in unity?如何统一创建良好的发光效果?
【发布时间】:2020-03-09 06:22:54
【问题描述】:

注意:这个问题最初是为了让图形着色器和菲涅尔效应与立方体一起工作,但是,我真的只想要一个发光效果,我认为图形着色器是最佳解决方案。 对我来说,他们不是,我留下了一个链接,指向对我有用的东西(制作发光效果)。如果您像我一样使用图形着色器,请使用 @Kalle Halvarsson,因为它是一个很好的答案。谢谢,干杯!

我正在关注 Brackey 关于图形着色器的教程(这样我就可以制作发光效果); https://www.youtube.com/watch?v=Ar9eIn4z6XE&t=604s,遇到了一个问题,即发光不会从摄像机角度影响立方体。

这是一个屏幕截图(我在视频中链接到的时间戳处使用与他相同的着色器):

我试着环顾四周,但似乎并没有太多关于这方面的内容。这么简单,有没有办法让图形着色器对锋利的物体产生更好的效果?

为此,我们需要以某种方式使菲涅耳效应与正面角度更加兼容,因为它适用于反射,而不是发光的正面; https://docs.unity3d.com/Manual/StandardShaderFresnel.html。或者,也许我的意思是,我真的只需要它来制作 2D,所以我不知道。

我不想为 MK Glow 之类的东西付费。感谢您的帮助,干杯!

【问题讨论】:

  • 直菲涅耳数学会这样做,不幸的是。因为当你撞到角落时,三角形要么“完美地朝向相机”,要么“不可见”,所以在 Frensel 数学可以操作的地方之间没有任何面,除非它们像那个顶面。气缸的顶部和底部的工作方式相同。

标签: unity3d shader glow


【解决方案1】:

我能想到两种方法:

或者,您可以烘焙具有平滑角的对象的法线贴图。为此,您可以在 Blender 之类的 3D 工具(具有边缘角度限制)中使用常规斜角/倒角修改器,然后从斜角网格烘焙到非斜角网格 (tutorial)。然后,您将法线贴图采样为世界空间法线,并使用该法线代替顶点法线来实现菲涅耳效果。这是为这些对象获得真正菲涅耳效果的唯一方法。当然,这样做的缺点是您必须为要添加发光效果的所有模型创建这些贴图,并且它们需要具有 UV。

另一种选择是使用 Sobel 或 Robert's Cross 后期效果进行边缘检测。 GitHub 上有多种开源解决方案,例如 thisthis。样本距离越大,边缘越柔和。这些必须移植到后处理堆栈,但是有关于如何编写自定义效果here 的说明。 This 解决方案似乎已经被移植。这种方法的缺点是很难将效果仅隔离到某些对象 - 您可能必须为此使用双摄像头或渲染纹理方法。

【讨论】:

    【解决方案2】:

    我将留下一个视频链接,该视频可以解决所有发光问题,它根本不使用着色器图。

    https://www.youtube.com/watch?v=5B-JoycbeSg 希望这对某人有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      相关资源
      最近更新 更多