This is not a full answer, I would just like to share the knowledge I obtained by studying two of the papers mentioned in the question: Steerable Importance Sampling and Practical Product Importance Sampling for Direct Illumination.
Steerable Importance Sampling
In this paper they propose a method for sampling the product of the clamped cosine component and environment map lighting:
$$ L\left(\omega_{i}\right)\left(\omega_{i}\cdot n\right)^+ $$$$ L_{EM}\left(\omega_{i}\right)\left(\omega_{i}\cdot n\right)^+ $$
They make use of the fact that a piece-wise linear approximation of the product function can be relatively well expressed and partially pre-computed using the first nine spherical harmonic bases. They build this approximation on top of an adaptively triangulated EM and use it as an importance function for sampling.
They pre-compute and store coefficients of the piece-wise approximation coefficients for each triangle vertex and also coefficients for computation of itsapproximation integral over the triangle – they call themfor each triangle. These coefficients are called vertex and triangle weights. Then they make use of the fact that is it possible to easily compute coefficients for an integral over a set of triangles just by summing the individual triangle weights without incorporating additional spherical harmonic bases. This allows them to build a balanced binary tree over the triangles where each node contains coefficients for computing approximation integral over the node's sub-tree triangles.
The sampling procedure consists of selecting a triangle and sampling its area:
- A triangle is chosen by descending down the pre-built binary tree with probability proportional to the sub-integral approximationapproximations. This constcosts $O\left(\log N_{\triangle}\right)$ on-the-fly computations of subsub-integrals, each consisting of one inner product of clamped-cosine sphericalspherical harmonic coordinates with the pre-computed coefficients.
- The chosen triangle surface is then sampled in $O\left(1\right)$ time in a bi-linear fashion by a novel stratified sampling strategy proposed in the paper.
To me, this looks like a promising technique, but the classical question with papers is how it will behave in the real life. On the one hand, there may, for example, be pathological cases when the EM is hard to approximate with triangulated piece-wise linear function, which can lead either to an enormous amount of triangles and/or to poor sample quality. On the other hand, it can instantly provide a relatively good approximation of the whole EM contribution, which can be useful when sampling from multiple lightslight sources.
Practical Product Importance Sampling for Direct Illumination
In this paper they propose a method for sampling the whole integrand – the product of environment map lighting and cosine-weighted surface reflectance:
$$ L\left(\omega_{i}\right)f_{r}\left(\omega_{i},\omega_{o},n\right)\left(\omega_{i}\cdot n\right)^+ $$$$ L_{EM}\left(\omega_{i}\right)f_{r}\left(\omega_{i},\omega_{o},n\right)\left(\omega_{i}\cdot n\right)^+ $$
The only pre-processing in this method is computation of a hierarchical representation of the EM (either mipmap or wavelet based). The rest is done on the fly during the sampling.
The sampling procedure:
- Building an on-the-fly BRDF approximation: They first draw several BRDF importance samples and evaluate $f_{r}\cos\theta_i$$f_{r}\left(\omega_{i},\omega_{o},n\right)\left(\omega_{i}\cdot n\right)^+$. From these values they build a quadtree-based piece-wise constant approximation of the BRDF, where each leaf of the tree contains exactly one sample.
- Computing a product of the BRDF approximation and the EM: Multiplication is done at the BRDF quadtree leaves and averaged values are propagated to parents.
- Product sampling: uniform samples are fed through the product tree using simple sample warping.
The procedure should generate relatively good samples at the cost of heavy pre-computation – they show that roughly 100–200 BRDF samples are needed for BRDF approximation to achieve the best sampling performance. This may make it suitable for purely direct illumination computations, where one generates many samples per shading point, but is most probably too expensive for global illumination algorithms (e.g. uni- or bi-directional path tracestracers), where you usually generate only a few samples per shading point.