void UMaterialInterface::SetForceMipLevelsToBeResident( bool OverrideForceMiplevelsToBeResident, bool bForceMiplevelsToBeResidentValue, float ForceDuration, int32 CinematicTextureGroups ) { TArray<UTexture*> Textures; GetUsedTextures(Textures, EMaterialQualityLevel::Num, false, ERHIFeatureLevel::Num, true); for ( int32 TextureIndex=0; TextureIndex < Textures.Num(); ++TextureIndex ) { UTexture2D* Texture = Cast<UTexture2D>(Textures[TextureIndex]); if ( Texture ) { Texture->SetForceMipLevelsToBeResident( ForceDuration, CinematicTextureGroups ); if (OverrideForceMiplevelsToBeResident) { Texture->bForceMiplevelsToBeResident = bForceMiplevelsToBeResidentValue; } } } }
void UMeshComponent::SetTextureForceResidentFlag( bool bForceMiplevelsToBeResident ) { const int32 CinematicTextureGroups = 0; const float Seconds = -1.0f; TArray<UTexture*> Textures; GetUsedTextures(/*out*/ Textures, EMaterialQualityLevel::Num); for (UTexture* Texture : Textures) { if (UTexture2D* Texture2D = Cast<UTexture2D>(Texture)) { Texture2D->SetForceMipLevelsToBeResident(Seconds, CinematicTextureGroups); Texture2D->bForceMiplevelsToBeResident = bForceMiplevelsToBeResident; } } }
void UMeshComponent::PrestreamTextures( float Seconds, bool bPrioritizeCharacterTextures, int32 CinematicTextureGroups ) { // If requested, tell the streaming system to only process character textures for 30 frames. if (bPrioritizeCharacterTextures) { IStreamingManager::Get().SetDisregardWorldResourcesForFrames(30); } TArray<UTexture*> Textures; GetUsedTextures(/*out*/ Textures, EMaterialQualityLevel::Num); for (UTexture* Texture : Textures) { if (UTexture2D* Texture2D = Cast<UTexture2D>(Texture)) { Texture2D->SetForceMipLevelsToBeResident(Seconds, CinematicTextureGroups); } } }