Oh, and if you send the original source image for the sprite, it would help in confirming the source of the problem and I could give you an example of the workaround
On Sat, Aug 20, 2011 at 10:47 AM, Brian Fisher <[email protected]> wrote: > Having quality drop with rotation is perfectly normal - it's expected > it would get a little blurry. > > Maybe you are referring to the white halo you are getting around the > character (which perceptually makes the character appear darker)? > > I think you're getting that because the "transparent" pixels around > the outside of the character are colored white. You should get the > same problem if you did sub-pixel positioning or scaling. White halos > on transforms is an artifact of bilinear filtering with RGBA as color > & opacity and white transparent pixels with a blend mode of: > > glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); > > Basically it needs to resample pixels in order to rotate, and when it > resamples the values at the edge: > > (YourRGB, 1 alpha) > (White, 0 alpha) > > for a 50% split, the bilinear filter math produces a color value of: > > ((YourRGB + White)/2, .5 alpha) > > and then when that is rendered, it renders it as your color averaged > with white at 50% opacity, which is why you see a white halo. > > > The artist hack fix for the problem is to bleed out the color channel > over the transparent area - so like if the players shirt is red, > they'd paint a bunch of red transparent pixels out from the shirt. If > you have an editor that lets you edit RGB seperate from alpha, then go > into RGB mode with the art for this sprite, and you should see all the > surrounding white. If you then paint out the player color around it, > and use that image, you should see the halo disappear. > > > The correct programmer fix for this however is to switch to having > textures use premultiplied alpha (basically RGB is replaced with > RGB*Alpha), and also changing blend mode to: > > glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); > > that is the correct way to render textures using bilinear filtering, > and it's immune to this effect. But your textures and blend mode need > to match, and I don't know how to do this with pyglet. > > On Sat, Aug 20, 2011 at 10:07 AM, [email protected] <[email protected]> wrote: >> Every time I rotate a sprite by 45 degrees, it looses quality. Click here >> for a screenshot. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "pyglet-users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/pyglet-users?hl=en. >> > -- You received this message because you are subscribed to the Google Groups "pyglet-users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/pyglet-users?hl=en.
