首页>Game>source

我正在尝试在背景上创建发光效果,为此,我正在使用着色器,当我使用主纹理时,一切都还好,但是当我放置发射贴图时,纹理会损坏

我是有关着色器和统一性的初学者

最新回答
  • 2021-1-4
    1 #

    似乎您已导入带有" Alpha is Transparency"标记的纹理。

    这告诉Unity,永远不会看到零alpha区域中的纹理像素的颜色值(因为它们是透明的),因此可以随意对其进行修改,以帮助避免精灵边缘出现难看的条纹,或者使 纹理压缩效果更好。

    因此,在这里假设您将遵守所做出的承诺,并且仅将这些纹理像素视为透明的,这将使窗口的白色渗入纹理的零alpha区域。

    您可以看到窗口的正确形状仍保留在alpha通道中.而且,如果我们将RGB通道乘以alpha(就像我们用透明效果渲染图像一样),我们得到的结果与原始图像相同:

    因此,这里根本没有"腐败". Unity正在应用一种安全的,保留信息的转换,以帮助您按照承诺的方式正确渲染图像。

    这里的问题是您信守诺言.您不会像透明精灵那样使用它.您将放弃alpha通道,而仅使用RGB通道进行发射。

    由于使用纹理的方式与通过勾选" Alpha is Transparency"所承诺的方式不同,因此Unity所应用的转换在该用例下不再安全。

    因此,有三种解决方案:

    取消选中" Alpha是透明度",这样就不会做出不打算保留的承诺。

    如上所述,将RGB通道乘以Alpha通道,然后将相乘的结果传递给发射引脚.这样,您就可以模拟" Alpha is Transparency"复选框所假定的透明混合.这也适用于彩色图像。

    如果仅需要白色发射,则仅将纹理的Alpha引脚连接到材料发射引脚.这样,您可以完全丢弃未使用的RGB信息,并以纯Alpha格式存储纹理。

  • unity:纠正导入的动画以避免手穿过角色的脸部
  • graphics:Opengl在500行中指向三角形问题