Pvrtc compressed ktx textures displaying incorrectly on iOS

Hello, been trying to use device specific textures for performance and memory reasons. It’s going well on other platforms except iOS. Here is what this PG ( https://www.babylonjs-playground.com/#5I4TDH#14 ) looks like on iOS.

( pvrtc ktx on left, ktx2 on right )

This is what the diffuse maps look like in PVRTexTool
(pvrtc ktx)

(ktx2)

Any help much appreciated : )

I think @bghgary was investigating something similar recently

What version of iOS are you running?

Its on 15.4

It looks like only specific PVRTC formats are supported on the web.

WebGL WEBGL_compressed_texture_pvrtc Extension Specification (khronos.org)

    const GLenum COMPRESSED_RGB_PVRTC_4BPPV1_IMG      = 0x8C00;
    const GLenum COMPRESSED_RGB_PVRTC_2BPPV1_IMG      = 0x8C01;
    const GLenum COMPRESSED_RGBA_PVRTC_4BPPV1_IMG     = 0x8C02;
    const GLenum COMPRESSED_RGBA_PVRTC_2BPPV1_IMG     = 0x8C03;

The format in the ktx is 35415 (0x8A57) which apparently is GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT.

2 Likes

Thank you @bghgary ! I guess sRGB not supported. ASTC seems to work fine instead as a workaround on device

1 Like