Surface try to use std unique_ptr rather than Cached ones for center,normal
Surface: Try to use std unique_ptr rather than Cached ones for center,normal simplifies a bit the MT semantics of the code.
E.g try to initialize in constuctors/relevant methods to avoid completely ,if possible, the use of "synchronization" (caching ) for lazy initialization.
Edited by Christos Anastopoulos