Skip to content

MipMap generation for DXT1 TextureArray not working when the Texture has no auto-generated mips #357

Description

@JaXt0r

Description

GUZ.Core.Services.Caches.TextureCacheService.TryGetTexture() has this information:

// TODO: DXT1 textures won't get MipMaps created. Unity limitation (even for v6.x). But normally all files do have MipMaps.
//  if (zkTexture.Format == ZenKit.TextureFormat.Dxt1 && zkTexture.MipmapCount == 1)
//  {
//    Logger.LogWarning($"Texture {zkTexture.Name} has no Mips and won't get one this way.", LogCat.Mesh);
//  }
// Let Unity generate Mipmaps if they aren't provided by Gothic texture itself.
var updateMipmaps = zkTexture.MipmapCount == 1;

Comment it out and see, how many textures are affected for G1/G2 Mods

If relevant, find a solution to generate the Mips. But be careful. What is not working:

  1. Create RGB24
  2. Create Mips
  3. Then put the RGB24 into the DXT1 TextureArray
    -> It will fail with an error, that the dimensions aren't correct (as DXT1 has less bytes per pixel).
Graphics.CopyTexture called with region not fitting in destination element: trying to copy to region on GPU (x:0, y:0, width:2048, height:2048) of mip 0 (size: 512x512)

Metadata

Metadata

Assignees

No one assigned

    Labels

    improvementOptimize an existing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions