This is similar to the upstream unified microfacet() closure, and makes it easier to extend in the future.