I've been working on geometric smoothing for a while now as a way to overcome terminator artefact (viewtopic.php?f=8&t=5211
) and have come up with a method that works - basically convert the mesh element (tri OR quad) to a bezier patch for rendering. Below are some examples with the input mesh at the top and the resulting surface below. It also takes a smoothing parameter - the effect of which is illustrated on a slab.
My plan was to implement a BezierTriangle and BezierQuad class as geometric primitives and during the pre-rendering phase convert the input mesh to the appropriate bezier patch. From an exporter point of you would simple attach a "geometric smoothing" bool to the mesh and a smoothing parameter and lux would do the rest.
The benefit (vs subdivision) is that it should be a lot less memory intensive, and produce a surface that is physically accurate - so no terminator or polygon artefact. The downside is the speed.
Anyway, before I get working on the code I wanted to open it up for comments/suggestions.