Quick answer: Use the Lit Output Mesh context. Mesh import → Normals = Import or Calculate. Output context Normal Source = Mesh.
Particle mesh imports cleanly. Place it in VFX Graph. Renders flat-shaded with hard polygon edges. Output context isn’t sampling smooth normals.
The Symptom
Mesh in scene with a regular MeshRenderer = smooth. Same mesh as VFX Graph output = faceted. Lighting looks chunky.
The Fix
Mesh Import Settings (FBX/OBJ inspector):
Normals: Import // or Calculate, smoothing 60
Tangents: Calculate
Smoothing Angle: 60
VFX Graph → Output Particle Lit Mesh:
Right-click Unlit Mesh output → Convert to Lit
Material Type: Standard Lit
Normal Source: Mesh // not Computed
Smooth Shading: on
The Lit output context wires mesh normals into the lighting model. Default Unlit just multiplies albedo by tint, so all faces read the same brightness.
Why the Defaults Bite
Unlit Mesh output is the cheapest path; VFX Graph picks it on context creation for performance. Convert to Lit only when needed; consider Decal Lit for screen-space splats.
Verifying
Side-by-side: regular MeshRenderer vs VFX output. After the fix they shade identically. Frame Debugger shows the lit pipeline including the particle pass.
“Lit context. Mesh normals. Smooth shading on. Lighting reads correctly.”
Related Issues
For VFX spawn rate dropping mid-burst, see spawn rate. For URP decal on skinned, see URP decal.
Lit context. Mesh normals on. Smooth shading.