团结,原始图像上的菲涅耳着色器

问题描述 投票:0回答:1

您好我正在尝试将效果存档在下面的图像中(这就像闪耀的光线,但仅在原始图像之上)不幸的是我无法弄清楚如何做到这一点,尝试了资产商店的一些着色器和资产,但是到目前为止还没有人工作,我也不太了解着色器。

原始图像是一个ui元素,并呈现由相机捕获的渲染纹理。

我完全迷失在这里,任何一种帮助都会受到赞赏,如何产生这种效果?

user-interface unity3d shader
1个回答
2
投票

菲涅耳着色器使用曲面法线和视图矢量之间的差异来检测哪些像素面向观察者,哪些像素不是。 UI平面将始终面向用户,因此没有运气。

使用着色器解决此问题可以通过两种方式完成 - 要么烘焙外边缘(example)的想象“曲率”的法线贴图,要么创建带符号的距离场(example),或者绘制距离的类似方法到了边缘。法线贴图可能会允许最复杂的效果,我相信一些菲涅耳着色器也可以使用它。然而,它需要你制作一个形状模型并从中烘焙法线。

另一方面,可以使用图像中的脚本生成带符号的距离字段,因此如果您有大量图像,则可能是最快的方法。在着色器内实时获取边缘距离实际上并不起作用,因为您必须对非常大量的相邻像素进行采样,这可能会使着色器的速度减慢10-20倍,具体取决于您需要边缘的厚度。

如果您不需要图像是动态的,那么可能只需在Photoshop中创建内部发光黑/白纹理并使用添加着色器覆盖它将更适合您。如果您不知道如何编写着色器,那么上述两种方法可能有点高。

© www.soinside.com 2019 - 2024. All rights reserved.