Échantillonnage de l'importance des cartes de l'environnement


14

Quelle est l'approche la mieux connue actuellement et idéalement aussi vérifiée en production pour l'échantillonnage des cartes d'environnement (EM) dans un traceur de chemin unidirectionnel basé sur MIS et des types similaires de moteurs de rendu? Je préférerais des solutions qui sont raisonnablement compliquées tout en étant raisonnablement fonctionnelles à celles qui fournissent un échantillonnage parfait au prix d'une mise en œuvre super compliquée et difficile à comprendre.

Ce que je sais jusqu'ici

Il existe quelques moyens simples d'échantillonner les EM. On peut échantillonner l'hémisphère nécessaire d'une manière pondérée en cosinus, qui ignore à la fois les formes de fonction BSDF et EM. Par conséquent, cela ne fonctionne pas pour les EM dynamiques:

entrez la description de l'image ici

Pour améliorer l'échantillonnage à un niveau utilisable, on peut échantillonner la luminance de l'EM sur toute la sphère. Il est relativement facile à mettre en œuvre et les résultats sont assez bons. Cependant, la stratégie d'échantillonnage ignore toujours les informations de visibilité hémisphérique et le facteur cosinus (ainsi que le BSDF), entraînant un bruit élevé sur les surfaces qui ne sont pas directement éclairées par les zones à haute intensité de l'EM:

entrez la description de l'image ici

Papiers

J'ai trouvé quelques articles sur le sujet, mais je ne les ai pas encore lus. Est-ce que certains de ces éléments méritent d'être lus et mis en œuvre dans un traceur de chemin unidirectionnel vers l'avant, ou y a-t-il encore quelque chose de mieux?

  • Échantillonnage de l'importance structurée des cartes de l'environnement (2003) par Agarwal et al.

  • Samerable Importance Sampling (2007) par Kartic Subr et Jim Arvo. Ils prétendent présenter «... un algorithme pour l'échantillonnage efficace d'importance stratifiée des cartes d'environnement qui génère des échantillons dans l'hémisphère positive définie par l'orientation locale de surfaces arbitraires tout en tenant compte de la pondération en cosinus. "L'article" Importance Sampling Spherical Harmonics "commente:" Ils créent une représentation triangulée de la carte de l'environnement et stockent l'illumination prémultipliée par chacune des neuf premières fonctions de base harmoniques sphériques à chaque sommet. Cela forme une base orientable où le cosinus serré peut être efficacement tourné dans n'importe quelle orientation. »

  • Échantillonnage pratique de l'importance des produits pour l'éclairage direct (2008) par Petrik Clarberg et Tomas Akenine-Möller. Un algorithme d'échantillonnage du produit de l'éclairage de la carte de l'environnement et de la réflectance de surface. Utilise un échantillonnage d'importance basé sur les ondelettes.

  • Importance Sampling Spherical Harmonics (2009) par Jarosz, Carr et Jensenn. Le résumé dit: "... nous présentons la première méthode pratique pour les fonctions d'échantillonnage d'importance représentées sous forme d'harmoniques sphériques (SH) ..."

  • Échantillonnage de la carte de l'environnement à décalage moyen basé sur les tons (2015) par Feng et al. C'est assez nouveau et je n'y ai trouvé aucune référence ni le document lui-même.


J'ai une question. La deuxième image est-elle générée uniquement par échantillonnage de l'EM? Ou s'agit-il d'une version MIS de l'échantillonnage du cosinus et de l'échantillonnage EM? J'espère vraiment que c'est la version MISed, car si c'est le cas, alors je pourrais avoir un remède pour le bruit élevé dans la partie sombre.
tom

Non @tom, il utilise uniquement un échantillonnage électromagnétique sphérique, ignorant à la fois le BRDF (Lambert) et le facteur cosinus. 64 échantillons ont été utilisés et aucun filtrage de l'espace image n'a été appliqué, juste une moyenne sur la zone de pixels. Lorsque MIS est appliqué pour combiner l'échantillonnage EM avec l'échantillonnage en cosinus, le bruit dans l'ombre diminue beaucoup, mais augmente légèrement dans la partie éclairée par le soleil.
ivokabel

Réponses:


6

Ce n'est pas une réponse complète, je voudrais juste partager les connaissances que j'ai acquises en étudiant deux des articles mentionnés dans la question: l' échantillonnage de l'importance dirigeable et l'échantillonnage de l'importance du produit pratique pour l'éclairage direct .

Échantillonnage d'importance dirigeable

Dans cet article, ils proposent une méthode d'échantillonnage du produit du composant cosinus serré et de l'éclairage de la carte d'environnement:

LEM(ωi)(ωin)+

Ils utilisent le fait qu'une approximation linéaire par morceaux de la fonction produit peut être relativement bien exprimée et partiellement pré-calculée en utilisant les neuf premières bases harmoniques sphériques. Ils construisent cette approximation au-dessus d'un EM triangulé de manière adaptative et l'utilisent comme fonction d'importance pour l'échantillonnage.

Ils pré-calculent et stockent les coefficients d'approximation pour chaque sommet de triangle et également les coefficients pour le calcul de l'intégrale d'approximation sur le triangle pour chaque triangle. Ces coefficients sont appelés poids des sommets et des triangles. Ensuite, ils utilisent le fait qu'il est possible de calculer facilement des coefficients pour une intégrale sur un ensemble de triangles simplement en additionnant les poids des triangles individuels sans incorporer des bases harmoniques sphériques supplémentaires. Cela leur permet de construire un arbre binaire équilibré sur les triangles où chaque nœud contient des coefficients pour calculer l'intégrale d'approximation sur les triangles de sous-arbre du nœud.

La procédure d'échantillonnage consiste à sélectionner un triangle et à échantillonner sa surface:

  • O(logN)
  • O(1)

Pour moi, cela ressemble à une technique prometteuse , mais la question classique avec les papiers est de savoir comment elle se comportera dans la vie réelle. D'une part, il peut y avoir des cas pathologiques lorsque l'EM est difficile à approximer avec une fonction linéaire triangulée par morceaux, ce qui peut conduire à une énorme quantité de triangles et / ou à une mauvaise qualité d'échantillon. D'un autre côté, il peut fournir instantanément une relativement bonne approximation de la contribution EM totale, ce qui peut être utile lors de l'échantillonnage de plusieurs sources lumineuses.

Échantillonnage pratique de l'importance du produit pour l'éclairage direct

Dans cet article, ils proposent une méthode d'échantillonnage du produit de l'éclairage de la carte de l'environnement et de la réflectance de surface pondérée en cosinus:

LEM(ωi)fr(ωi,ωo,n)(ωin)+

Le seul prétraitement de cette méthode est le calcul d'une représentation hiérarchique de l'EM (soit mipmap soit ondelette). Le reste se fait à la volée lors de l'échantillonnage.

La procédure d'échantillonnage:

  • fr(ωi,ωo,n)(ωin)+
  • Le calcul d'un produit de l'approximation BRDF et de l'EM: la multiplication est effectuée au niveau des feuilles du quadrilatère BRDF et les valeurs moyennes sont propagées aux parents.
  • Échantillonnage des produits: des échantillons uniformes sont introduits dans l'arbre des produits en utilisant une simple déformation des échantillons.

La procédure devrait générer des échantillons relativement bons au prix d'un pré-calcul lourd - ils montrent qu'environ 100 à 200 échantillons BRDF sont nécessaires pour l'approximation BRDF afin d'obtenir les meilleures performances d'échantillonnage. Cela peut le rendre approprié pour les calculs d'éclairage purement directs, où l'on génère de nombreux échantillons par point d'ombrage, mais est probablement trop cher pour les algorithmes d'éclairage globaux (par exemple, les traceurs de chemin unidirectionnels ou bidirectionnels), où vous ne générez généralement que quelques échantillons par point d'ombrage.


4

Avis de non-responsabilité: Je n'ai aucune idée de l'état de l'art en matière d'échantillonnage de cartes environnementales. En fait, j'ai très peu de connaissances sur ce sujet. Ce ne sera donc pas une réponse complète mais je formulerai mathématiquement le problème et l'analyserai. Je le fais principalement pour moi-même, donc je le dis clairement pour moi-même, mais j'espère que OP et d'autres le trouveront utile.


I=S2f(ωi,ωo,n)L(ωi)(ωin)+dωi
f(ωi,ωo,n)L(ωi)(ωin)++(ωin)+=0(ωin)<0

Nωi1,,ωiNp(ωi)

I1Nk=1Nf(ωik,ωo,n)L(ωik)(ωikn)+p(ωik)

p


p

p(ωi)f(ωi,ωo,n)L(ωi)(ωin)+

Méthodes suggérées par OP:

p

p(ωi)(ωin)+
p
p(ωi)L(ωi)

Sur la base des noms des articles mentionnés, je peux deviner en partie ce qu'ils font (malheureusement, je n'ai pas le temps et l'énergie pour les lire en ce moment). Mais avant de discuter de ce qu'ils font le plus probablement, parlons un peu de Power Series: D


f(x)

f(x)=k=0akxk
akfn
f(x)k=0nakxk
n est suffisamment élevé, l'erreur est vraiment faible.

f(x,y)

f(x,y)=k=0bk(y)xk
bk(y)y
f(x,y)=k,l=0cklxkyl
ckl

f(ω)

f(ω)=k=0αkSk(ω)
αkSk(ω)f peut être écrit comme une somme de certaines fonctions connues.

f(ω,ω)

f(ω,ω)=k=0βk(ω)Sk(ω)
f(ω,ω)=k,l=0γklSk(ω)Sl(ω)

So how is this all useful?

I propose the CMUNSM(Crazy mental useless no sampling method): Lets assume that we have expansions for all the function i.e.

f(ωi,ωo,n)=k,l,m=0αklmSk(ωi)Sl(ωo)Sm(n)L(ωi)=n=0βnSn(ω)(ωin)+=p,q=0γpqSp(ωi)Sq(n)
If we plug this into the integral we get
I=k,l,m,n,p,q=0αklmβnγpqSl(ωo)Sm(n)Sq(n)S2Sk(ωi)Sn(ω)Sp(ωi)dωi

Actually we no longer need Monte Carlo because we can calculate values of the integrals S2Sk(ωi)Sn(ω)Sp(ωi)dωi beforehand and then evaluate the sum(actually approximate the sum, we would sum only first few terms) and we get desired result.

This is all nice but we might not know the expansions of BSDF or environmental map or the expansions converge very slowly therefore we would have to take a lots of terms in the sum to get reasonably accurate answer.


So the idea is not to expand in all arguments. One method which might be worth investigating would be to ignore BSDF and expand only the environmental map i.e.

L(ωi)n=0KβnSn(ωi)
this would lead to pdf:
p(ωi)n=0KβnSn(ωi)(ωn)+

We already know how to do this for K=0, this is nothing but the method one. My guess is, it is done in one of the papers for higher K.


Further extensions. You can expand different functions in different arguments and do similar stuff as above. Another thing is, that you can expand in different basis, i.e. do not use spherical harmonics but different functions.

So this is my take on the topic, I hope you have found it at least a little bit useful and now I'm off to GoT and bed.


Haha, when I posted the answer, SE asked me if I'm a human or a robot, the site wasn't sure :D I hope it is not because of the length of the answer, It got a little bit out of hand.
tom

you want to make my brain melt, don't you. ;-) BTW: I already managed to read two of the papers/presentations so I'll hopefully extend the question or write a superficial answer at the end of this week. And now, GoT FTW!
ivokabel

0

While the product sampling methods provides better (perfect) distribution for rays I would say that using MIS (multiple importance sampling) is a method verified in production. Since shadowing information is unknown product sampling doesn't become perfect anyway and it is quite hard to implmenet. Shooting more rays might be worth more! Depends on your situation and ray budgets of course!

Short description of MIS: In essence you trace both a BSDF-ray (as you would anyway for doing indirect lighting) and an explicit ray towards the EM. MIS give you weights so that you can combine them in a way that removes a lot of the noise. MIS is especially good at choosing "technique" (implicit or explicit sampling) based on the situation that arises. This happens naturally without the user having to make hard choices based on roughness etc.

Chapter 9 of http://graphics.stanford.edu/papers/veach_thesis/ covers this in detail. Also see https://www.shadertoy.com/view/4sSXWt for a demo of MIS in action with area lights.


Yes, MIS is an important production-verified technique, which helps a lot and I employ it in my solution (I guess, I should have stated that more clearly in the question). However, the overall performance of a MIS-based estimator depends on the quality of its partial sampling strategies. What I am trying to do here is to improve one of the the sub-strategies to improve the overall performance of the estimator. In my experience, it is usually more efficient to use less high-quality samples than may be more expensive to generate than more easily-generated low-quality ones.
ivokabel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.