Two Channel Color Compression

To reduce memory I am experimenting with two channel color compression reflection cubemaps - for example only using two channels to represent an RGB color. Has anyone else tried this? How were your results?

I was looking at this: http://www.codersnotes.com/graphics/two-channel

Unfortunately with this approach I can't find a great set of coefficients that work well.

I tried using James Blinn's approach but then having a constant hue looks really bad.

I also tried packing RGB24 to RGB16 but the banding I got was terrible...

Anyone else have any ideas about this?
 
A way to find coefficients is to compute the covariance matrix of the colour data (which will be a 3x3 symmetric matrix) and then calculate the eigenvalues/eigenvectors. Pick the two vectors corresponding to the larger two eigenvalues, and those will be the axes for your two directions. You'll need to scale etc, but I hope you get the idea.
 
Cubemaps are pre-convolved one could just gather the 4 neighbors and do the reconstruction in the PS. Corner and Edge might be a bit ugly, but those might better be padded either way.
 
BC6 is your best bet. 1 byte pixel, good quality, supports HDR and hardware filtering. It would be hard to beat that.
 
Back
Top