Tagged: PVRTC Normal maps
- February 25, 2016 at 7:34 pm #52969
I am compressing a normal map texture using PVRTC 4bpp. To improve image quality, the B component has been set to 0 and only RG remain. Gives ok results. I set 255 for B as an exercise to test a bit further and to my surprise, did not get the same image quality.
My question is: is there an optimal B value that could be computed to get the best PVRTC 4bpp quality given a specific image?
I am using this technique of “droppping” the B component on normal map to have a trade off between file size and image quality. Using uncompressed data is not possible for my application due to excessive file size.
Other PVRTC formats are problematic since image quality is too low in 2bpp mode or simply unsupported. PVRTC 4bpp is then a recquirement.February 29, 2016 at 4:07 am #52978
Could you provide your normal map for me to reproduce this problem locally?
KevinMarch 7, 2016 at 3:09 pm #53028
Sorry for the long delay.
I cannot provide you with the original data since it is from a game yet to be released. I’ll try to provide a sample showing the issue though. I am actually in a rush but will try to get back in touch asap.
Thanks and sorry again for the long delay.March 9, 2016 at 1:45 pm #53059
Either of B=0 or B=255 should give the same outcome for the R&G channels. In PVRTC, B has slightly lower precision than both R & G and, setting it to a constant value that PVRTC can represent exactly, say 0 or 255 (though there are others), will mean it won’t interfere with the coding of R&G.
Out of curiosity, in your normal map format, post-recreation of blue, does RGB=[128, 128, 255], indicate a “perpendicular to the surface”normal, e.g. like the following:
and compressed @4bpp:
There’s a little bit of “ringing” around the text, and the squares below that aren’t quite as clean, but it should be much better than compressing with the original B values.
Attachments:You must be logged in to view attached files.April 14, 2016 at 10:59 pm #53434