FileTexture (DX11 2D) does not read 16-bit PNGs correctly

I have a 16-bit single-channel PNG file, that when loaded via FileTexture(DX11 2D) shows as R8G8B8A8_UNorm.

The images I am trying to load are 16-bit depth images from the ZED stereo depth camera, so I need all 16 bits of info. (I’m trying to make sure the camera works well enough before spending the time writing a vvvv plugin for it.)

The DX9 version of FileTexture correctly loads it as an L16.

@vux, if this is a bug rather than by design or necessity then I’ll file it over on github, but thought others may want to know about this so put this here.



i’m hitting a similar issue!
@mediadog - did you find a workaround?

Hi, i’ve would try dds instead, i think dds supports weirdo formats.

@elliotwoods - Well, of sorts. @antokhio - DDS does work for things like uncompressed depth images, but the ZED software does not offer that option. But I was able to use external software to convert the PNG to DDS, and verified that the ZED is well worth writing a plugin for, I just haven’t had the time!

@mediadog - yes that’s also what i’m looking into
good to hear that you had nice results with the ZED camera
we were considering it for a project, but ended up going a custom stereo camera route instead

still trying to find a good converter tool for png 16bit to dds
it seems that vvvv/dx9 is an option for conversion

@elliotwoods I have my test images and pointclouds around here somewhere, if there’s interest I can start a new thread about the ZED.

here’s my first pass at solving this


it’s a FileTexture DX11 2D node which uses FreeImage
tested here with 16bit PNG’s and 32bit float EXR’s

@elliotwoods - Works here, thank you sir!