Nanite and virtual textures changed how Unreal Engine handles huge scenes. Nanite virtualizes triangle meshes so you can import dense, film-quality assets without hand-building every LOD. Virtual textures (including streaming virtual textures and Runtime Virtual Textures) change how large or unique materials are stored and sampled. Neither feature replaces physically based rendering. You still need correct albedo, roughness, normal, and metalness maps—the engine just pages them differently.

What Nanite actually does

Nanite is a virtualized geometry system. It clusters triangles, streams only what the camera needs, and draws extremely dense meshes at interactive frame rates. That is why photogrammetry rocks, scanned furniture, and high-poly archviz kits are now practical in real time. Nanite does not fix bad materials. A multi-million-triangle statue with a muddy albedo and a glossy roughness still looks cheap. Treat Nanite as a geometry budget tool, not a shading upgrade. Keep UVs usable, avoid overlapping islands if you need unique baked masks, and remember that some techniques—certain translucency setups, world-position offsets, or older tessellation tricks—still have limits. Epic documents current Nanite material restrictions in the Unreal Engine documentation; check that list before you promise a client a glass-and-foliage hero asset.

Virtual textures vs classic tileables

Classic PBR libraries—like the Locker3d CC0 catalog—rely on seamless 2K or 4K tiles. You scale them in UV space and they repeat. Virtual textures treat a huge unique map (or a landscape composed of many materials) as pages. The GPU loads only the tiles in view at the mip you need. That is ideal for one-off hero surfaces: a scanned facade, a unique floor plate, or a landscape RVT that blends grass, dirt, and rock. It is the wrong default for every chair, curb, and door. Tileable CC0 materials stay cheaper on disk, easier to share across projects, and simpler to version. Use virtual textures when uniqueness or landscape blending matters; use tileables for most architectural surfaces such as wood, concrete, and stone.

PBR maps still decide the look

Whether a texture is streamed as a virtual texture or sampled as a regular 2K tile, the shading model is the same metalness/roughness PBR you already know. Albedo stays sRGB and lighting-free. Roughness and metalness stay linear. Normals stay in the correct convention (DirectX vs OpenGL). If you compress aggressively for streaming, watch for blocky roughness and bent normals—those maps need more precision than a noisy albedo. For packing and memory, see PBR texture packing and texture compression for realtime. For map roles, read albedo, normal, and roughness.

A practical Unreal workflow

Start with a small kit: one Nanite mesh, one tileable material, one unique virtual texture. Import the mesh with Nanite enabled and check fallback rasterization in the viewport. Build the tileable material from a CC0 pack (albedo, roughness, normal, metalness) and confirm color space. Only then enable Virtual Texture Streaming on the unique maps that actually need it—do not convert an entire library “just in case.” For landscapes, Runtime Virtual Textures are useful to transfer lighting or blend results onto other meshes, for example so a Nanite rock picks up the ground color. Keep a naming rule: a VT suffix for streamed unique maps and a normal PBR suffix for tileables, so the team does not mix them. More organization tips live in how to organize your texture library.

When 2K tileables still win

Mobile, VR, and tight shipping budgets still prefer classic tiles plus LODs. Virtual textures add setup, compile time, and debugging. Nanite is desktop and console first. If you deliver stills from Blender or V-Ray, you do not need either feature—you need consistent PBR and lighting. Build your library as engine-agnostic maps first (PNG or EXR, documented color space), then enable Nanite or virtual textures as a platform optimization. That is also why CC0 sources matter: you can reuse the same free PBR textures in Unreal, Unity, Blender, and offline renderers without relicensing. More engine notes are on our software page and in the blog.

Frequently asked questions

Does Nanite replace PBR textures?

No. Nanite virtualizes geometry so dense meshes can run in real time. Shading still uses standard PBR maps: albedo, roughness, normal, and metalness. Bad maps still look cheap on a high-poly Nanite asset.

Should every texture be a virtual texture?

No. Use virtual textures for unique hero surfaces or landscape blending. Keep seamless 2K/4K tiles for wood, concrete, metal, and other repeating architectural materials. Tiles are smaller, easier to share, and work in any engine.

Can I use Locker3d textures with Nanite?

Yes. Locker3d CC0 PBR packs are regular tileable maps. Assign them to a material on a Nanite mesh like any other PBR set. Enable virtual texture streaming only if a specific unique map needs it.