Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

Cthulhu

Smoothing / Antialiasing sprites

This topic is 6941 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I don't know how exactly it is done in games. Maybe like you say, maybe not. As far as smoothing is concerned they use filters. like

[1 4 1]
[4 20 4] : 3 × 3
[1 4 1]

[1 1 1 1 1]
[1 4 4 4 1]
[1 4 12 4 1] : 5 × 5
[1 4 4 4 1]
[1 1 1 1 1]

i don't think this is a fast way of doing it in games, since it takes a whole image (640x480x24) about 1 second to use such a filter......it's the way i do things on my PictureShop.

------------------
Dance with me......

Share this post


Link to post
Share on other sites
Advertisement
Some games like Rage of Mages 2 or The Reap use some kind of smoothing on sprite borders to make them look antialiased. How can this be done fast?

Method I'd figure out is to have 2 images per sprite, other blit normally and other transcluent (the one that only contains some pixels around sprite borders). Anyone got better ideas?

------------------
"Tank, I need an exit. Fast!"

Share this post


Link to post
Share on other sites
A better approach is to rely on "alpha blending" or "edge blending"

Beyond the naming BS , this is a question of having patially transparent pixel around the edges of your sprites. If sprites a rendered in a 3D package, this is easily achieved by rendering on a transparent background, if not, it requires a seriously talented 2D artist .

Anyhow, you need to set each color channel of the destination pixel according to the following eq. (assuming a true color (no palette) mode):

d=(1-a)*d+a*s

where "a" is transparency (1.0 for opaque, 0.0 for transparent), "d" is the destination pixel and "s" is the source pixel.

With respect to performance; it's not a major hit if you only use it for edges, but you can't use HW blitting (and that's a real pain )...

(Note: For real-world use you don't wanna use the eq. above, instead you pre-multiply the transparency on the source image, and then invert it, giving the following equation: d=a*d+s)

/Niels

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!