How would you efficiently represent the distribution of the microfacet normals in code? It seems rather expensive to potentially add more vertices to deform the mesh so that the normal calculations are non-uniform.

Maybe there's a way to compute what the microfacet normal would be, given the point of ray intersection on the mesh?

emilyzhong

I think the macro BRDF is supposed to "average" all the microfacet normals such that we don't actually need to compute microfacet normals: we see that above the microfacet normals are near perpendicular, the macro BRDF has "range" that is mostly condensed upwards, and thus returns a pdf that also is oriented in that direction, compared the the bottom one which is more spread due to a larger variation in microfacet normals.

How would you efficiently represent the distribution of the microfacet normals in code? It seems rather expensive to potentially add more vertices to deform the mesh so that the normal calculations are non-uniform.

Maybe there's a way to compute what the microfacet normal would be, given the point of ray intersection on the mesh?

I think the macro BRDF is supposed to "average" all the microfacet normals such that we don't actually need to compute microfacet normals: we see that above the microfacet normals are near perpendicular, the macro BRDF has "range" that is mostly condensed upwards, and thus returns a pdf that also is oriented in that direction, compared the the bottom one which is more spread due to a larger variation in microfacet normals.