• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
phil_t

Problems with DXT compression and pre-multiplied alpha

2 posts in this topic

I'm normally a big fan of pre-multiplied alpha, but I'm having some issues with using it with a certain texture.

 

Here's a screenshot to demonstrate the problem:

 

http://mtnphil.files.wordpress.com/2013/03/example1.png

 

The artifacts are obvious in the top image. If I don't compress the texture, I get the image on the bottom, which looks good.

In the middle is what happens if I use non-premultiplied alpha and DXT5. It looks pretty good (still a few small artifacts). I'm surprised it is so much better than pre-multiplied alpha.

 

Here is what the RGB and A channels look like for the DXT-compressed texture (grabbed from PIX):

http://mtnphil.files.wordpress.com/2013/03/dxt5_texture_in_pix.png

It looks as I would expect.

 

Other notes:

- I also tried DXT3, but there wasn't much difference in quality.

- No mipmaps are involved. All textures are drawn 1-to-1 texel-to-pixel.

- All screenshots are 3x.

 

Any idea what's going on here? I have a feeling the problem might go away if I had proper RGB values for the transparent parts, but I'm not sure how to make photoshop do that. (and if that were the problem, why would the non-premultiplied DXT scenario look fine?).

 

 

1

Share this post


Link to post
Share on other sites

Any idea what's going on here?

DXT5 compresses the RGB channels together using one 'palette', and the Alpha channel independently using another, which means that the quantization/compression errors can be different in RGB than A.

If RGB gets a bit darker and A gets a bit lighter (or vice versa), then the final image after pre-multiplied alpha blending will be whacky, because the same translucency information is encoded in both, and has to stay in sync.

With traditional alpha blending, the alpha information is only in the Alpha channel, so any independent 'lossyness' in RGB won't affect it.

 

I have a feeling that if your DXT compressor knew that the content of the image was pre-multiplied alpha, it could do a better job. How do your DXT5 images get generated/compressed?

 

Pre-multiplied works fine with DXT1 because it's only got on/off alpha values, so they can't really "get out of sync". Maybe pre-multiplied and DXT5 simply aren't a good idea though?

 

the problem might go away if I had proper RGB values for the transparent parts, but I'm not sure how to make photoshop do that

I don't think this is your problem, but you make photoshop do this by painting RGB values in the transparent areas. Photoshop has two ways of dealing with transparency --

1) Don't use a "background" layer so that the background of your image is translucent.

2) Use a "background" layer so there are valid RGB values everywhere, but also add an alpha channel on the channels tab.

For web stuff, PNGs, etc, the first method works fine. For games, you should use the second method, and never use PNG as an intermediate format for translucent textures, as it throws out RGB values in transparent areas...

Edited by Hodgman
1

Share this post


Link to post
Share on other sites

I have a feeling that if your DXT compressor knew that the content of the image was pre-multiplied alpha, it could do a better job. How do your DXT5 images get generated/compressed?

 

I was using the default DXT compression in the XNA content pipeline. I also just tried using the nvidia photoshop plugin and saving directly as DXT5 in dds format (and I checked "pre-modulate color", which appears to save as pre-multiplied). I got pretty much the same result.

 

I think it just looks especially bad in this scenario because the background I'm drawing on top of is almost the same shader. If it's much darker or lighter then the artifacts don't show up so much.

 

So I doubt there's much I can do to make it look better if I'm using DXT.

 

2) Use a "background" layer so there are valid RGB values everywhere, but also add an alpha channel on the channels tab.

 

Ok, I tried that, and saved as DDS to preserve the RGB values. And you were right, this is not my problem.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0