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 FPaperExtractSpritesViewportClient::Draw(FViewport* Viewport, FCanvas* Canvas) { // Super will clear the viewport FPaperEditorViewportClient::Draw(Viewport, Canvas); UTexture2D* Texture = TextureBeingExtracted.Get(); if (Texture != nullptr) { const bool bUseTranslucentBlend = Texture->HasAlphaChannel(); // Fully stream in the texture before drawing it. Texture->SetForceMipLevelsToBeResident(30.0f); Texture->WaitForStreaming(); FLinearColor TextureDrawColor = Settings->TextureTint; //FLinearColor RectOutlineColor = FLinearColor::Yellow; const FLinearColor RectOutlineColor = Settings->OutlineColor; const float XPos = -ZoomPos.X * ZoomAmount; const float YPos = -ZoomPos.Y * ZoomAmount; const float Width = Texture->GetSurfaceWidth() * ZoomAmount; const float Height = Texture->GetSurfaceHeight() * ZoomAmount; Canvas->DrawTile(XPos, YPos, Width, Height, 0.0f, 0.0f, 1.0f, 1.0f, TextureDrawColor, Texture->Resource, bUseTranslucentBlend); for (FPaperExtractedSprite Sprite : ExtractedSprites) { DrawRectangle(Canvas, RectOutlineColor, Sprite.Rect); } } }