libretro / retroarch-assets

Assets needed for RetroArch - e.g. menu drivers, etc. Also contains the official branding.
Creative Commons Attribution 4.0 International
170 stars 161 forks source link

(Ozone) Ensure all assets have 'white' transparent pixels #347

Closed jdgleaver closed 4 years ago

jdgleaver commented 4 years ago

While debugging this: https://github.com/libretro/RetroArch/issues/10317, I discovered a tiresome issue with the way that textures are rendered.

Whenever a texture is scaled, the pixel values get interpolated - and at any transparent edges, the colours of the transparent pixels themselves bleed into the visible area. If the source texture files are correctly formatted, this is not a problem - but it turns out that many (most?) images in this repo have transparent pixels with the wrong colour. These transparent pixels are mostly black, so when the interpolation takes place, all transparent edges end up with an ugly dark border.

This PR corrects all of Ozone's assets, setting the colour of any transparent pixels to white. This fixes a host of subtle rendering errors.

baxysquare commented 4 years ago

but it turns out that many (most?) images in this repo have transparent pixels with the wrong colour.

So is this an issue that is present in the XMB theme icons? A few of the sets I maintain have semi-translucent borders, but to my knowledge, none of them have a fully transparent pixels. That said, I use the following script to convert the source PDF files to PNG. If I need to change my workflow to eliminate this issue, I'm happy to do so.

magick mogrify -density 288 -resize 25% -format png *.pdf

jdgleaver commented 4 years ago

As far as I can tell, the issue affects almost all icons for all menu drivers. I'm just fixing MaterialUI's assets at the moment - I'll give XMB a proper check straight after, and let you know if your workflow needs any tweaks.

jdgleaver commented 4 years ago

Yes, the issue does seem to affect almost all XMB icons - so I think it would be a good idea to manually set the transparent pixel colour in your scripts. Existing PNGs can be tweaked using:

magick mogrify -background 'rgb(255,255,255)' -alpha Background "$FILE"

so I guess you can modify your one-liner as follows:

magick mogrify -background 'rgb(255,255,255)' -alpha Background -density 288 -resize 25% -format png *.pdf

Let me know if I can help with anything!

baxysquare commented 4 years ago

I'll run the through the script and do a PR for Automatic, Systematic, Retroactive and Neoactive. If you could take care of Monochrome, that would be great.

jdgleaver commented 4 years ago

Fantastic - I'll sort out Monochrome, no problem :)

jdgleaver commented 4 years ago

Done: #349