NOTE:最初提出这个问题是为了使图形着色器和菲涅耳效果与多维数据集一起使用,但是,我只想要发光效果,我认为图形着色器是最好的解决方案。 对我来说,不是,我留下了对我有用的链接(以产生发光效果)。如果您像以前那样使用图形着色器,请使用@@ Kalle Halvarsson,因为这是一个很好的答案。谢谢,加油!
我正在按照Brackey的有关图形着色器的教程进行操作(以便可以产生发光效果); https://www.youtube.com/watch?v=Ar9eIn4z6XE&t=604s,并遇到了一个问题,即发光不会从相机角度的前面影响立方体。
这里是屏幕截图(我在视频中链接到的时间戳使用的着色器与他相同):
我尝试环顾四周,但似乎并没有太多。如此简单,是否有一种方法可以使图形着色器对尖锐对象具有更好的效果?
为此,我们需要以某种方式使菲涅耳效果与前角更兼容,因为这是为了反射,而不是发光时的前角; https://docs.unity3d.com/Manual/StandardShaderFresnel.html。或者,也许我有其他选择,我真的只需要2D,所以我不知道。
我不想为MK Glow之类的东西付钱。感谢您的帮助,干杯!
或者,您可以烘焙具有平滑角的对象的法线贴图。为此,可以在3D工具(如Blender)中使用常规的“斜角/倒角”修改器(具有边角限制),然后从斜角网格烘焙到非斜角网格(tutorial)。然后,将法线贴图采样到世界空间法线中,并使用该法线贴图代替菲涅尔效果的顶点法线。这是为这些对象获得真正的菲涅耳效果的唯一方法。当然,这样做的缺点是您必须为要向其添加发光效果的所有模型创建这些贴图,并且它们将需要具有UV。
另一个选择是使用Sobel或Robert's Cross post效果进行边缘检测。 GitHub上有多个开源解决方案,例如this或this。采样距离越大,边缘越柔和。这些必须移植到后期处理堆栈中,但是,有关于如何编写自定义效果的说明here。 This解决方案似乎已经被移植。这种方法的缺点是很难将效果仅隔离到某些对象-为此,您可能必须使用双摄像头或渲染纹理方法。