Friday, 30 May 2014

etcpak 0.3

New major version, new features:
  • Ability to create mipmaps (only POT, not in benchmark mode).
  • Optional dithering of input image.
  • Small quality improvements at basically no cost.
Image minification algorithm used for generating mipmaps is stupid simple, but it already beats the implementation in PVRTexTool:
Left: PVRTexTool, Right: etcpak
Notice the high frequency artifacts present in the PVRTexTool image, particularly near the eyes of parrots. etcpak generates smoother and more natural look. Further refinements will be able to improve the image quality even more.

Dithering basically improves the appearance of gradients or smooth areas in photos:
Left: no dithering, Right: dithering enabled
It comes at a small cost however. Here are the timings for normal compression:
$ x64/Release/etcpak.exe 8192.png -b
Image load time: 1352.646 ms
Mean compression time for 50 runs: 630.855 ms
And this is the run with dithering enabled:

$ x64/Release/etcpak.exe 8192.png -b -d
Image load time: 1312.084 ms
Mean compression time for 50 runs: 744.394 ms


Anonymous said...

Does it supports ETC2/EAC?
If not are you palling to add them?

Bartosz Taudul said...

All ETC1 images are also ETC2 images. etcpak is not able to generate blocks exclusive to ETC2.

Anonymous said...

I need ETC2/EAC for alpha channel. AFAIK ETC1 doesn't support it.

Bartosz Taudul said...

You can combine RGB texture with an alpha texture and get transparency that way.

Anonymous said...

I know, but the project targets GLES3 which supports ETC2/EAC and we like to use them from the beginning.

Chris Ye said...

Hey, your etcpak seems really promising. Have you thought about making it into a library? I am thinking about using your code but the fact that there is no library build or documentation really discourages me.

Alex Fuller said...


This is really impressive! Have you tried benchmarking runtime compression on ARM hardware? I'm curious to see if something like procedural virtual textures could be possible on mobile.

Bartosz Taudul said...

ARM is not a target I'm particularly interested in, but I believe OpenCPN project uses etcpak for texture tile cache.