Perché il ray tracing Monte Carlo funziona meglio del ray tracing distribuito?


30

Ho sentito che la qualità di un tracciante Monte Carlo Ray (basato su algoritmi di tracciamento del percorso) è molto più realistica di un motore distribuito (stocastico). Cerco di capire perché, ma sono solo all'inizio.

Per approfondire questo argomento e comprendere le basi, qualcuno può indicarmi la giusta direzione? Quale parte dell'algoritmo porta a un risultato di rendering più realistico?


9
Vorrei più di "Una raccomandazione di un libro solido" in quanto a questa domanda dovrebbe essere data una risposta diretta da qualcuno che ne è a conoscenza. Dovremmo provare a mettere le informazioni sul sito invece di indicarle al di fuori del sito.
Robobenklein,

@robobenklein Domanda modificata, meglio pensare di stare attenti;)
p2o

@ChristianRau Rimuovere "Grazie" dovrebbe essere discusso in una meta, questo è diverso su ogni sito di scambio di stack ...
p2o

1
@poor No, non lo è davvero. È qualcosa che non cambia mai. E fintanto che non abbiamo regole speciali, utilizziamo comunque quelle generali SE. Ma anche allora, quasi non riesco a immaginare nessuno che possa votare qui per essere autorizzato. Non ho mai visto questo essere una buona pratica su qualsiasi altro sito SE.
Chris dice di reintegrare Monica il

Risposte:


31

Il termine "ray tracing distribuito" è stato originariamente coniato da Robert Cook in questo articolo del 1984. La sua osservazione è stata che, al fine di eseguire l'antialiasing in un ray-tracer, il renderer deve eseguire il sovracampionamento spaziale, ovvero per prelevare più campioni (ovvero scattare più raggi) rispetto al numero di pixel nell'immagine e combinare i risultati . Un modo per farlo è quello di sparare più raggi all'interno di un pixel e fare la media dei loro valori di colore, ad esempio. Tuttavia, se il renderer sta già tracciando più raggi per pixel in ogni caso per ottenere un'immagine anti-alias, questi raggi possono anche essere "distribuiti" tra dimensioni aggiuntive rispetto alla sola posizione dei pixel per campionare effetti che non possono essere catturati da un singolo raggio . L'importante è che ciò avvenga senza alcun costo aggiuntivo oltre al sovracampionamento spaziale, dal momento che stai già rintracciando quei raggi aggiuntivi comunque. Per esempio,

Il ray tracing Monte Carlo è un termine leggermente ambiguo. Nella maggior parte dei casi, si riferisce a tecniche di rendering che risolvono l' equazione di rendering, introdotto da Jim Kajiya nel 1986, usando l'integrazione di Monte Carlo. Praticamente tutte le moderne tecniche di rendering che risolvono l'equazione di rendering, come traccia traccia, traccia traccia bidirezionale, mappatura fotonica progressiva e VCM, possono essere classificate come tecniche di tracciatura dei raggi Monte Carlo. L'idea dell'integrazione di Monte Carlo è che possiamo calcolare l'integrale di qualsiasi funzione scegliendo casualmente i punti nel dominio di integrazione e calcolando la media del valore della funzione in questi punti. Ad un livello elevato, nel ray tracing Monte Carlo possiamo usare questa tecnica per integrare la quantità di luce che arriva alla telecamera in un pixel al fine di calcolare il valore del pixel. Ad esempio, un tracciatore di tracciati lo fa selezionando in modo casuale un punto all'interno del pixel per sparare al primo raggio, quindi continua a scegliere in modo casuale una direzione per continuare sulla superficie su cui atterra, e così via. Potremmo anche scegliere casualmente una posizione sull'asse del tempo se vogliamo fare motion blur, o scegliere casualmente un punto sull'apertura se vogliamo fare profondità di campo, o ...

Se questo suona molto simile al ray tracing distribuito, è perché lo è! Possiamo pensare al ray tracing distribuito come una descrizione molto informale di un algoritmo Monte Carlo che campiona determinati effetti come le ombre morbide. Il documento di Cook manca del quadro matematico per ragionare davvero su di esso in modo appropriato, ma potresti certamente implementare il ray tracing distribuito usando un semplice renderer Monte Carlo. Vale la pena notare che il ray tracing distribuito non ha alcuna descrizione degli effetti di illuminazione globale, che sono naturalmente modellati nell'equazione di rendering (va menzionato che il documento di Kajiya è stato pubblicato due anni dopo quello di Cook).

È possibile pensare al ray tracing Monte Carlo come a una versione più generale del ray tracing distribuito. Il ray tracing Monte Carlo contiene un quadro matematico generale che consente di gestire praticamente qualsiasi effetto, compresi quelli citati nel documento di ray tracing distribuito.

In questi giorni, "ray tracing distribuito" non è in realtà un termine utilizzato per fare riferimento all'algoritmo originale. Più spesso lo sentirai insieme agli "effetti di distribuzione", che sono semplicemente effetti come motion blur, profondità di campo o ombre morbide che non possono essere gestiti con un raytracer a campione singolo.


5

Nel tracciato dei raggi distribuiti , campionate stocasticamente molti raggi in direzioni che possono o meno essere preferite dal BRDF. Considerando che, nel ray tracing Monte Carlo o semplicemente nel tracciato del percorso, campionate solo un raggio in una direzione preferita dal BRDF . Quindi, ci sono due ovvi vantaggi che Path Tracing avrebbe:

  • Computazionalmente meno costoso. Ciò significa che con la stessa potenza di calcolo hai la libertà di calcolare su più colpi di oggetto rispetto al ray tracing distribuito in cui vi sono più raggi.
  • Meno rumore. Il ray tracing distribuito campiona i raggi in direzioni che potrebbero non essere preferite dal BRDF, introducendo quindi artefatti indesiderati.

E così, il tracciato del percorso ti darebbe risultati migliori.


2
"Considerando che, nel ray tracing Monte Carlo o semplicemente nel tracciato del percorso, campionate solo un raggio in una direzione preferita dal BRDF." Di per sé, non sai come viene selezionato il raggio. Gli approcci ingenui usano raggi casuali. Tenere conto del BRDF è il campionamento di importanza e non inerente al ray tracing di Monte Carlo o al tracciato del percorso.
David Kuri,

4
Credo che questa risposta sia completamente falsa. Sei libero di campionare più raggi in uscita e di ponderare il loro risultato durante la combinazione. Ottieni la stessa verità della tecnica della roulette russa, ma è generalmente accettato che il primo metodo sia più costoso.
v
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.