This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Problems with alpha mask using ETC1 textures

Hello,

I'm having a problem when creating textures with the Mali texture compression tool. I'm following this Mali tutorial to create a separate alpha mask that handles the alpha channel from an ETC1 texture using Method 2 as described. I managed to get this working but it appears that little white lines or artifacts are appearing round the edges where the alpha parts of the image meet the opaque parts. My current blend function is (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). This was the only blend function that would allow this to method to work. Maybe there is another blend function that would change this and rectify the problem. Or maybe some other setting in OpenGL, I aslo posted this on the OpenGl forums.

I think the problem may go away or be less noticeable if the first generated texture that contains the real RGB values has black for the transparent areas instead of white. Mali Compression tool sets the alpha areas to white and there is no option to change this in the tool. I also noticed that in the texture compression tool Texture Packer. When you generate .pkm files with that tool it sets the alpha areas to to black, which further supports this theory. As it is such a simple change, it would be great if the people who develop Mali could realease an update that allows you to set the colour of the transparaent areas in the generated image.

If anyone has any other insight on this problem that would be great.

EXTRA INFO:

OpenGL ES 2.0 (only supports etc1 not etc2)

Parents
  • The best way to fix this is by propagating the color values out into the alpha space.

    Since you're using a separate alpha channel, the color of the pixels is irrelevant to their transparency, so you can just as easily have transparent black pixels or transparent white pixels. But right at the edge that color shows through where the soft alpha mixes with the color, as Pete said.

    Here is an alpha texture from one of our demos and I've gove over a blob with the un-erase tool:

    Foliageuncovered.png

    As you can see where the alpha channel has been removed, the texture just continues out into the image. That way when the alpha starts blending out the colors at the edge of the texture stay the same.

Reply
  • The best way to fix this is by propagating the color values out into the alpha space.

    Since you're using a separate alpha channel, the color of the pixels is irrelevant to their transparency, so you can just as easily have transparent black pixels or transparent white pixels. But right at the edge that color shows through where the soft alpha mixes with the color, as Pete said.

    Here is an alpha texture from one of our demos and I've gove over a blob with the un-erase tool:

    Foliageuncovered.png

    As you can see where the alpha channel has been removed, the texture just continues out into the image. That way when the alpha starts blending out the colors at the edge of the texture stay the same.

Children
No data