Skip to content

DDS Format Guide#109

Merged
Phantomical merged 5 commits into
Kopernicus:masterfrom
ballisticfox:dds_guide
Jun 25, 2026
Merged

DDS Format Guide#109
Phantomical merged 5 commits into
Kopernicus:masterfrom
ballisticfox:dds_guide

Conversation

@ballisticfox

Copy link
Copy Markdown
Contributor

Added a DDS format guide. Goes over what DDS is, its purpose, lossy vs lossless compression, mipmaps, formats for use in KSP, texconv and some scripts for texconv.

Written in a more blog-alike style than the other pages, let me know if there's anything I should adjust.

ballisticfox and others added 4 commits June 18, 2026 21:01
* Move everything into a DDSFormatGuide folder so assets are grouped
  with the guide.
* Clean up alignment for tables
@github-actions

Copy link
Copy Markdown

Preview deployment available at: https://pr-109.kopernicus-wiki-preview.pages.dev

@Phantomical Phantomical left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is awesome :D

I rearranged the file structure a little bit to make sure textures for different guides stay separate. I also cleaned up some of the table formatting, adjusted the wording in one case, and adjusted the [!CAUTION] block to [!WARNING] so it renders as yellow instead of a red box.

Lmk if you disagree with any of the modifications and I can switch them back. I should have notifications actually enabled now and so will be faster to respond.


The DirectDraw Surface format was developed by Microsoft in 1999, as a high performance alternative to jpg and png in regards to GPUs. Since then it's grown to be the industry standard for compressing textures, with a wide variety of subformats, support for special texture types like arrays and cubemaps, and various other nifty features to help the GPU such as mipmaps.

When a png or jpg texture is requested on the GPU, the CPU must first decompress this data into its raw bytes in RAM, next this raw byte array is then compressed into a format that the GPU can properly read (this is done by Unity), then this compressed texture is transferred into VRAM and bound to a texture slot, with the final result being a texture in VRAM that can then be sampled in the shader. This process is time consuming on both the CPU and GPU, and you're often giving up far more storage than you really need.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One note here: for kopernicus png and jpeg textures do not get recompressed. Everything else in this sentence still holds.

Comment thread docs/Guides/DDSFormatGuide/index.md Outdated
> [!WARNING]
> The MacOS version of KSP is locked to an old version of OpenGL which doesn't support `BC7` textures.
>
> They will still load, however they'll be loaded as `RGBA32` instead of as proper `BC7`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reworded this a little bit to try and better communicate that BC7 textures load okay but are decompressed to RGBA32.

@Phantomical Phantomical merged commit fd7a581 into Kopernicus:master Jun 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants