/** * Useful for stats in the editor. */ void FTextureLODSettings::ComputeInGameMaxResolution(int32 LODBias, UTexture &Texture, uint32 &OutSizeX, uint32 &OutSizeY) const { uint32 ImportedSizeX = FMath::Trunc(Texture.GetSurfaceWidth()); uint32 ImportedSizeY = FMath::Trunc(Texture.GetSurfaceHeight()); const FTextureLODGroup& LODGroup = GetTextureLODGroup((TextureGroup)Texture.LODGroup); uint32 SourceLOD = FMath::Max(FMath::CeilLogTwo(ImportedSizeX), FMath::CeilLogTwo(ImportedSizeY)); uint32 MinLOD = FMath::Max(uint32(UTexture2D::GetMinTextureResidentMipCount() - 1), (uint32)LODGroup.MinLODMipCount); uint32 MaxLOD = FMath::Min(uint32(GMaxTextureMipCount - 1), (uint32)LODGroup.MaxLODMipCount); uint32 GameLOD = FMath::Min(SourceLOD, FMath::Clamp(SourceLOD - LODBias, MinLOD, MaxLOD)); uint32 DeltaLOD = SourceLOD - GameLOD; OutSizeX = ImportedSizeX >> DeltaLOD; OutSizeY = ImportedSizeY >> DeltaLOD; }
void UTextureThumbnailRenderer::GetThumbnailSize(UObject* Object, float Zoom, uint32& OutWidth, uint32& OutHeight) const { UTexture* Texture = Cast<UTexture>(Object); UTextureLightProfile* TextureLightProfile = Cast<UTextureLightProfile>(Object); if (TextureLightProfile) { // otherwise a 1D texture would result in a very boring thumbnail OutWidth = 192; OutHeight = 192; return; } if (Texture != nullptr) { OutWidth = FMath::TruncToInt(Zoom * (float)Texture->GetSurfaceWidth()); OutHeight = FMath::TruncToInt(Zoom * (float)Texture->GetSurfaceHeight()); } else { OutWidth = OutHeight = 0; } }