.dds Compressed Image Format

Just reading a feature of VSXU:

While you can still use JPG and PNG images, those formats are STRONGLY discouraged.
Instead, you should use the .dds format with either DXT1 or DXT5 compression.

We recommend ImageMagick for converting. In a terminal, just go:

$ convert image.png image.dds

It's that simple.

So why this new format?

Before, the way a texture image was loaded was this (for a 4k/UHD 3840x2160 image):
1. Load PNG compressed data;
2. Decompress PNG into RAM (using 32MB of RAM)
3. Flip the image vertically on CPU (using another 32MB of RAM).
4. Send this data to the OpenGL Drivers
5. OpenGL drivers compress data into DXT1 or DXT5 using up another 8MB RAM
6. OpenGL drivers write the texture to VRAM

Now the process is shorter:
1. Load DDS image into RAM (using 8MB ram)
2. OpenGL drivers write the pre-compressed texture data directly to VRAM

Seems like a really great format to use especially for lower power machines. (If not already implemented)

Isn’t this a DirectX feature? (win only)

You can actually read DDS files in Vuo now:

Steps 3 and 5 from above aren’t necessary in Vuo. Still, there’s room for improvement. Currently, the images are decompressed into CPU RAM, which means you don’t get the GPU RAM storage reduction benefit.

So this feature request would be to implement a fast path for DDS texture loading, one that stores them compressed in GPU RAM. This would make it possible to load more/larger textures than before.

Also this FR would allow dragging a DDS file onto the canvas to create a Fetch Image node.

Opened for voting.

1 Like