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:
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:
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.
Réponses:
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:
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:
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:
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:
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.
la source
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.
Méthodes suggérées par OP:
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
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.
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.
We already know how to do this forK=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.
la source
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.
la source