Help loading envmap, DDS Loader error "THREE.DDSLoader.parse: Unsupported FourCC code" DX9/DX10+?

I am trying to load a envmap dds file but am getting the errors
“THREE.DDSLoader.parse: Unsupported FourCC code” with the DX9 version
or
“THREE.DDSLoader.parse: Unsupported FourCC code DX10” with the DX10 version
these are the two options provided by the program I am using to export.

Here is a reproduced example codepen to show the error I am facing. Using the latest version 0.141.0 https://codepen.io/lablr/pen/MWQXGYy

Is there any way to load this kind of file in threejs? Is this something the loader needs new functionality to handle?

I would appreciate any help, thanks.

It looks like this is a cubemap with BC6H compression in a DDS container. I’m not sure what the DirectX 9 vs DirectX 10 distinction is in the file, or whether that’s a problem for three.js and WebGL.

THREE.DDSLoader cannot load this file, and even if it could, not all browsers and devices will support this compression type, so it’s not going to work for every user of your site without decoding BC6H to uncompressed RGBA8 data.

Usually we use .EXR or .HDR files for this, but since OpenImageIO can’t open the file I’m not sure how to convert it.

It may be worth filing an issue on the three.js repo, perhaps someone wants to add the feature in DDSLoader. At some point I’d like to support BC6H cubemaps in KTX2Loader as well but I’m not sure when we’ll get to that.

Oh I see you created an issue already, cool: DDS Loader fails on trying to load dds texture with DX9/DX10+ header encoding. · Issue #24189 · mrdoob/three.js · GitHub

Thanks for your reply @donmccurdy. I am getting the same error even if I choose 16bit float for the datatype. Is there a data type that would be appropriate for the dds loader as it is?

Options include:
BC6H
BC7
11_11_10f
8_8_8_8
16_16_16_16
16_16_16_16F
32_32_32_32
32_32_32_32f

I opened an issue on github as well, thanks. DDS Loader fails on trying to load dds texture with DX9/DX10+ header encoding. · Issue #24189 · mrdoob/three.js · GitHub

I don’t think DDSLoader has any cubemap support now, so (assuming that’s what this is) the compression type will not fix it. But if you could share versions with 16-bit and 32-bit float (e.g. upload a .ZIP with several options on github?) that might help us to try ways to convert to other supported formats.

@donmccurdy here is a zip with all the different versions.