We get new bug reports every now and then because geometry nodes does not deal with the auto-smooth option as expected.
I guess one of the big questions here is whether to deal with this either:
- By creating a custom normals attribute, or
- By actually adjusting the topology of the mesh (edge split)
The former is probably the more elegant solution, and might be more efficient. It also has the benefit that the mesh is still manifold afterwards, which is probably very important.
The latter is more of a brute force solution. I think it's what Cycles does actually, so it doesn't have to deal with the complexity of a custom normal layer? Not totally sure about that.
Personally I think the second solution is tempting, since I often find a brute force solution preferable. But I think think changing topology is just too much of a downside here, and the first is the only realistic solution.
I also like the way it integrates with custom normals, which we have had requests to add anyway.
So, there are two questions about custom normals:
- How are they stored and displayed to the user?
- I think they are stored in some clever way that I don't currently understand, but I think they should be exposed as a float3 attribute on the corner domain. (and also the control points of curves!)
- Is it a builtin attribute? And related-- can there be multiple custom normal layers?
- Personally I like the usability aspect of a "Set Custom Normals" node, so a builtin attribute is probably the way to go. It can always be copied to an anonymous or named attribute by the user.