如何在GLSL中创建仅使用白色和黑色的纹理alpha?

时间:2015-03-16 20:28:25

标签: glsl shader scenekit

我希望重现这个tutorial的发光效果,如果我理解的话,我们将第一个图像转换为“alpha纹理”(黑色和白色),我们模糊了(rgb * a)质地。

如何创建这个alpha纹理,以便某些颜色变为白色,另一种颜色变为黑色?我发现了这个:How to render a texture with alpha?但我真的不知道如何使用这些答案。

enter image description here

enter image description here

由于

1 个答案:

答案 0 :(得分:2)

您似乎误解了该图表显示的内容。它实际上是一个纹理,但(a)显示RGB颜色,(b)显示alpha通道。 (c)显示将RGB乘以A时会发生什么。

Alpha实际上不是"黑白",它是一个抽象概念,相当于 0.0 1.0 之间的一系列值。为了使人类的大脑有意义,它将其解释为黑色( 0.0 )和白色( 1.0 )。实际上,alpha是你想要的,与颜色无关(尽管它可以用来做颜色的事情)。

通常,alpha通道将由后处理图像滤镜生成,该滤镜查找具有明显高于平均亮度的纹理区域。在现代图形引擎中使用HDR,并且具有太亮而不能在监视器上显示的颜色的场景的任何部分是发光的候选者。这种发光的强度来自于该点的照明比显示器可以显示的亮度多。

然而,在这种情况下,它似乎是人类创造的。想想alpha通道就像一个面具,一些艺术家看着不明飞行物,并认为图(b)中看起来非黑色的区域应该发光,因此分配了非零的alpha值(alpha = <强> 1.0 发光最亮的。)


顺便说一句,你不应该模糊alpha蒙版。你想模糊RGB * A的 结果 。如果你只是模糊了alpha蒙版,那么这根本不会像发光一样。我们的想法是模糊应该发光的不明飞行物的发光部分,然后将其添加到基础UFO颜色的顶部。

相关问题