Raytracing non temps réel

13

J'ai beaucoup joué avec le raytracing en temps réel (et le raymarching, etc.), mais je n'ai pas passé beaucoup de temps sur le raytracing en temps non réel - pour des images de meilleure qualité ou pour le pré-rendu de vidéos et autres.

Je sais qu'une technique courante pour améliorer la qualité de l'image dans le cas non en temps réel consiste à projeter BEAUCOUP plus de rayons par pixel et à faire la moyenne des résultats.

Existe-t-il d'autres techniques qui se révèlent être de bons moyens d'améliorer la qualité de l'image dans le cas en temps non réel, par rapport à ce que vous feriez normalement dans le cas en temps réel?

Alan Wolfe
la source

Réponses:

9

Le traçage de chemin est la technique standard dans le rendu photoréaliste non en temps réel, et vous devriez examiner spécifiquement le traçage de chemin bidirectionnel pour obtenir des effets comme les caustiques, ce que vous ne pouvez pas vraiment obtenir avec le traçage de chemin de base. Le traçage de chemin bidirectionnel converge également plus rapidement vers la vérité au sol, comme indiqué dans l'image ci-dessous: entrez la description de l'image ici Le transport léger Metropolis (MLT) est également une technique de traçage de chemin plus avancée qui converge encore plus rapidement vers la vérité au sol en mutant les "bons" chemins existants: entrez la description de l'image ici

Vous pouvez également utiliser l'échantillonnage d'importance pour une convergence plus rapide en concentrant plus de rayons vers les directions qui importent le plus. C'est-à-dire en focalisant les rayons basés sur BRDF (plus vers le pic BRDF en utilisant la fonction de densité de probabilité) ou vers la source de lumière, ou obtenir le meilleur des deux mondes et en utilisant un échantillonnage à importance multiple. entrez la description de l'image ici Il s'agit de réduire le bruit de manière impartiale. Il existe également des techniques de débruitage pour réduire davantage le bruit dans les images rendues. entrez la description de l'image ici

Je pense qu'il est préférable d'implémenter d'abord un traceur de chemin Monte Carlo de force brute de base pour servir de référence impartiale avant d'examiner les techniques les plus avancées. Il est assez facile de faire des erreurs et d'introduire des biais qui passent inaperçus, donc avoir une implémentation simple est bon d'avoir autour pour référence.

Vous pouvez également obtenir de très bons résultats en appliquant le traçage de chemin aux médias participants, mais cela devient très lent: D entrez la description de l'image ici

JarkkoL
la source
5

L'un des plus importants est l'utilisation de la géométrie solide constructive plutôt que de maillages triangulaires. Les intersections de rayons en rayons sont plus rapides que presque toutes les autres intersections en forme de rayons, mais il faut un grand nombre de triangles pour approximer la surface d'un cylindre ou d'un tore, sans parler de certaines des formes vraiment exotiques telles que les fractales de julia ou les fonctions paramétriques généralisées qui certains rendus prennent en charge.

Un autre est l'utilisation de la cartographie des photons en temps de rendu et des calculs d' interréflexion diffuse : cela vous permet d'obtenir des effets d'éclairage précis dans une scène changeante. Dans le lancer de rayons en temps réel, ceux-ci sont trop chers à calculer, donc soit les sources lumineuses et les principaux éléments de géométrie sont obligés d'être stationnaires (pour permettre le pré-calcul), soit les effets sont totalement omis.

marque
la source
Les surfaces de subdivision sont beaucoup plus utilisées que la géométrie solide constructive. Ils impliquent toujours des triangles (ou alternativement des splines).
3

Même si je ne connaissais pas le traçage du chemin de Monte Carlo lorsque j'ai écrit cela, je l'ai accidentellement décrit. Ironiquement, le traçage du chemin de Monte Carlo est la réponse que je cherchais à l'époque.

Le traçage de chemin Naive Monte Carlo fonctionne en évaluant ce que l'on appelle l'équation de rendu pour résoudre numériquement la valeur de couleur d'un pixel. Il prend des échantillons aléatoires en vacillant au sein d'un pixel (il existe de meilleures stratégies d'échantillonnage et de filtrage: quel est le raisonnement fondamental pour l'anti-aliasing en utilisant plusieurs échantillons aléatoires dans un pixel? ) Et également en rebondissant dans des directions aléatoires lorsqu'un rayon frappe une surface .

Cela peut prendre beaucoup d'échantillons pour vous donner de bons résultats, et avec pas assez d'échantillons, votre image sera bruyante. Il faut 4 fois plus d'échantillons pour réduire le bruit de moitié. Les temps de rendu peuvent être de l'ordre d'une heure en utilisant 8 cœurs de processeur modernes pour une scène simple.

Il existe des techniques de traçage de chemin Monte Carlo plus avancées qui vous permettent d'obtenir de meilleures images plus rapidement, comme l'échantillonnage d'importance ou le débruitage de l'image après son rendu.

Le traçage de chemin de Monte Carlo peut créer des images photoréalistes et vous offre de nombreuses fonctionnalités de rendu avancées simplement parce qu'il suit les lois physiques et donne donc des résultats réalistes.

Vous pouvez en savoir plus à ce sujet ici: http://blog.demofox.org/2016/09/21/path-tracing-getting-started-with-diffuse-and-emissive/

Voici un exemple d'image, qui a pris environ une heure pour être rendu en utilisant les 8 cœurs de mon processeur:

entrez la description de l'image ici

Alan Wolfe
la source