1

我正在尝试使用 GLSL ES 2.0 为三角形扇形图元创建内部发光效果 - 尽管只有外边缘会受到手头效果的影响。我想有很多方法可以做到这一点,但到目前为止还没有找到任何描述。

在 OpenGL ES 2.0 中使纹理多边形的边缘发光中描述了一种技术,但是,这对我不起作用,因为我在这个阶段纯粹是在使用图元。

我最初的想法是在片段着色器中以某种方式计算到最近边缘的距离,然后根据距离是否落在某个阈值的范围内来设置颜色。(当然,颜色和 alpha 是与最近边缘的距离的函数——此时精确的渐变轮廓并不重要。)

这种方法存在两个问题:

1)如何计算从片段到最近边缘的距离?2)我如何排除这个过程中的共同边,即两个(或更多)三角形共有的边?

这是一种明智的方法吗?如果是,我该如何解决我的两个问题?对替代方法的建议也非常感谢。(例如,我一直在阅读纹理数据不必是图像,并且它可以用于自定义目的。非图像纹理可以成为解决方案的一部分吗?):)

4

1 回答 1

4

要回答您的两个问题,我认为没有任何 glsl 魔术可以为您做到这一点。当您到达片段着色器时,不再有任何关于边缘的信息,特别是试图将真实边缘与内部边缘分离。

我建议为您的风扇添加更多顶点,并使用新的自定义属性来定义“发光级别”。例如,参见图片,我会在边缘周围放置一排顶点,将这些(和风扇的中心)定义为具有最大辉光,然后将边缘定义为具有零辉光,然后您可以获得插值辉光值在边和新顶点之间。在此处输入图像描述

于 2012-06-03T21:12:48.807 回答