Serious refactor, adding common data struct, some factorizing...
We now pass most common parameters to processing functions using a single struct, this is much cleaner.
Also, factorized code aggregating poly nors into vertex nors in new aggregate_vertex_normal function, and optimized expensive powf calls (exponential inverse weight...) by computing once and caching most common values (since weight is static all-over processing, and nearly all vertices will only have a few faces or loops using them...).
Note that am still very unhapy with 'keep sharp edges' case, that one seems to copy a lot of code we already have in BKE_mesh_evaluate, and (if I followed code correctly) recompute everything, essentially ditching the whole first computations of weighted normals!
Full Hash: ec82e6ffcdc2e57afaa681f21db1803f5eab0890 Parent Commit: 970d16b Lines Changed: +314, -213