Terrain3D: [4.2] Godot broke DDS, converts when it shouldn't

OS: Fedora 38 GPU: GeForce RTX 4090 (NVIDIA 535.98) Godot version: 4.2.dev c495eb510 Terrain3D version: https://github.com/outobugi/Terrain3D/releases/tag/v0.8.2-alpha_gd4.1.1 (using Linux binary release)

Mipmap rendering doesn’t work, resulting in grainy textures at a distance in the demo project:

image

Textures up close look smooth, with bilinear filtering applied.

Anisotropic Filtering Level and Texture Mipmap Bias project settings are at their default value in the demo project.

The DDS textures in demo/textures are detected as not having any mipmaps:

image

It seems enabling Mipmaps > Generate on them in the Import dock then saving and reloading the scene fixes the issue.

PS: This could be a good opportunity to set Anisotropic Filtering Level to 16× in the demo project 🙂

About this issue

  • Original URL
  • State: closed
  • Created 10 months ago
  • Comments: 20 (13 by maintainers)

Most upvoted comments

@marcinn1 This is Terrain3D, and you’ll probably want to bring up the issue in the Godot repo. However since you’re here please reread this comment.

The original proposal was for loading DDS files on the CPU as Images. In Terrain3D we operate predominantly with Images and we recommend all of our users use DDS files only, due to Godot’s bugs in DXT conversion. We pull images from the textures, then convert them back into TextureArrays. It does waste cycles, but it is functional and only requires a quick, one-time operation on load. Also export works fine. So while I’d be happy to reduce wasted cycles and load DDS files as Images directly, sorry to say that this PR is not required even for an editor plugin that relies completely on DDS files. https://github.com/godotengine/godot/pull/69085#issuecomment-1697390647

You don’t need to wait on your project. You can load your dds files as Images at run time. We do. Just not directly. Use Texture2D.get_image(). Feel free to look at our code.