Quick answer: Set bAutoGenerateMips = true on the UTextureRenderTarget2D before initialization. Mips are generated automatically on each update; sampling at distance is clean.

A mirror in your game uses a SceneCapture2D writing to a render target. Close up the mirror looks great. From across the room the mirror shimmers with aliased lines — mips aren’t generated on the render target.

Render Targets Without Mips

By default UTextureRenderTarget2D has no mip chain. The GPU only has full-resolution data to sample. At distance, each screen pixel covers many target pixels but the sample picks one — aliasing flicker.

The Fix

UTextureRenderTarget2D* RT = NewObject<UTextureRenderTarget2D>();
RT->bAutoGenerateMips = true;
RT->InitCustomFormat(1024, 1024, PF_FloatRGBA, false);
RT->UpdateResource();

The first time the target is rendered to, the engine generates a mip chain. Subsequent renders regenerate mips. Sampling at distance reads from the appropriate downscaled mip.

For Editor-Created RTs

Open the UTextureRenderTarget2D asset. In Details:

Save. The asset now generates mips on every update.

Manual Generation

For one-shot captures (snap a screenshot at level start):

// After rendering into the target
ENQUEUE_RENDER_COMMAND(GenerateMips)([RT](FRHICommandListImmediate& RHICmdList) {
    if (RT && RT->GetRenderTargetResource()) {
        FRHITexture* Tex = RT->GetRenderTargetResource()->GetRenderTargetTexture();
        RHICmdList.GenerateMips(Tex);
    }
});

Generates mips once, on demand. Cheaper than auto-mips for static captures.

Anisotropic Filtering

For grazing-angle samples (a mirror viewed nearly edge-on), enable anisotropic filtering on the sampler. Combined with mips, eliminates both distance aliasing and angular blur.

Verifying

Pull the camera back from the mirror. With mips, the mirror surface looks clean. Without, you see thin aliased lines. The Frame Debugger shows which mip level the GPU samples at each distance.

“Render targets don’t generate mips by default. Set the flag; mips are automatic. Sampling at distance becomes clean.”

For mirrors and security cameras, always enable mips. For UI render targets that are only sampled at native size, mips are wasted memory.