When adding a mesh primitive in Blender, it is by default flat-shaded without subdivision surfaces. This means that after adding a new object with a smooth surface (like a sphere or monkey mesh), the user almost always has to change some settings.
We could change the default mesh settings to avoid that. However there are two distinct use cases which require different settings.
- Meshes with autosmooth and/or custom normals. This could be either a low poly model for games, or a high poly model imported from CAD software.
- Subdivision surfaces with creases to define sharp areas of the model. Custom normals are lost in the subdivision process, and autosmooth can't be combined with GPU acceleration.
Once subdivision surface settings become part of the mesh (T68891: Subdivision surface settings part of the Mesh), we could handle these as more distinct cases in the user interface and implementation.
- If a mesh is a subdivision surface, no autosmooth or custom normals would be available.
- Subdivision surface mesh primitives could be in a separate submenu of the Add menu, with all faces smooth shaded by default.
- Mesh primitives could have smooth shaded faces and autosmooth enabled by default when it makes sense.
Enabling autosmooth by default will negatively impact performance, particularly in edit mode. It's not obvious this is something we want to do. Further optimizations in this area are possible, but there will always be a cost.