Quick answer: Open the static mesh asset, enable LOD 0 → Allow CPU Access. Save. Re-cook. The error is GPU particles needing CPU-side mesh data unavailable by default.

A packaged build fails to cook with: “NiagaraEmitter X: Particle mesh requires CPU access but is missing in cooked build.” The mesh works fine in PIE. Shipping cook trips on this and aborts.

CPU Access for GPU Particles

Niagara emitters that use mesh data on the GPU (Sample Static Mesh data interface, mesh-driven spawn, etc.) need access to the mesh’s vertex and index arrays from the CPU side to push to the GPU buffer. In editor builds, this data is always available. In cooked builds, it’s stripped unless “Allow CPU Access” is set on the mesh.

The Fix

  1. Open the offending static mesh (the one your Niagara emitter samples).
  2. In the right panel, find LOD 0.
  3. Check Allow CPU Access.
  4. Save the asset.
  5. Re-run the cook. The error should clear.

Multiple LODs

If Niagara samples a specific LOD index, enable CPU Access on that LOD. Typically LOD 0 is enough; bake-down workflows may use higher LODs for cheaper sampling.

Memory Trade-Off

Allow CPU Access keeps the index/vertex buffer in main memory in addition to GPU memory. For a 5K-tri particle mesh, an extra ~150 KB — trivial. For a 500K-tri sculpt, ~15 MB — meaningful.

If memory matters, use a low-poly proxy specifically for particles: a 200-tri version that’s indistinguishable at particle size. Mark only the proxy with CPU Access.

Other Causes of the Cook Error

Verifying

Re-cook. The error should disappear. Test the cooked build on target — particles should render correctly with the mesh emitter.

“GPU particles need CPU-accessible meshes. Toggle the flag, save, re-cook. Two minutes to fix.”

Audit all meshes used by Niagara systems once at project setup — saves catching this at the cook step every release.