dudellino schrieb:
Da widerspreche ich dir. Ich habe selbst einen deterministischen Raytracer, einen Monte Carlo Raytracer und einen Pathtracer implementiert. Die grundlegende Raytracing Struktur ist bei allen gleich. Strahlen werden verfolgt, mit Geometrie geschnitten und an Oberflächen ausgewertet.
Dass du alle drei selbst implementiert hast, respektiere ich, da hast du mir was voraus. ^^ Und klar, das Skelett ist überall dasselbe: Strahl raus, Schnitttest, Shading am Treffpunkt. Das bestreitet ja auch keiner. Nur sagt der Schnitttest eben nichts darüber aus, was der Renderer am Ende tatsächlich an Licht transportiert.
dudellino schrieb:
Whitted Style Raytracing verfolgt Sekundärstrahlen typischerweise nur für perfekte Reflexion und Brechung. Diffuse Beleuchtung bleibt lokal.
Und genau da sitzt doch der Punkt: „Diffuse Beleuchtung bleibt lokal" heißt auf Deutsch, es gibt keine indirekte Beleuchtung und kein Color Bleeding. Egal wie viele Sekundärstrahlen du für perfekte Spiegelung und Brechung verschießt. Whitted-Style löst die Rendering-Gleichung schlicht nicht. Ein Pathtracer nähert das komplette Integral per Monte Carlo an, und daraus fallen all diese Effekte automatisch aus einem einzigen Solver raus.
dudellino schrieb:
Der zentrale Unterschied liegt damit im Integrator und im Sampling, nicht darin, dass Pathtracing ein völlig anderer Ansatz wäre. Auch die Rekursion ist kein grundlegendes Merkmal. Ein Pathtracer lässt sich sehr natürlich als Schleife über die Bounces implementieren, was auf GPUs oft günstiger ist.
Rekursion vs. Schleife ist Implementierungsdetail, da sind wir uns einig. Aber dass der Unterschied „nur" im Integrator liegt, macht ihn in der Praxis nicht kleiner, sondern größer. Der Integrator ist ja genau das, was das Bild am Ende ausmacht. Genau deshalb heißen die Spiele auch Pathtracing-Games: Das komplette Lighting kommt aus dem Monte Carlo Integrator, und das ist in der Engine-Pipeline ein Bruch mit der alten Welt aus getrennten RT-Effekt-Pässen für Spiegelung, Schatten und AO. Für Spieler und Engine ist das der relevante Unterschied, auch wenn der Schnitttest dahinter derselbe ist.
dudellino schrieb:
Auf der CPU kann ein gezielterer Monte Carlo Integrator je nach Sampling weniger Varianz erzeugen und dadurch schneller konvergieren als ein Pathtracer, der auch Pfade ohne relevanten Beitrag verfolgt.
Klar, bidirektionales Tracing oder Metropolis können konvergenztechnisch mehr rausholen. Lohnt sich aber erst über viele Samples. In Echtzeit hast du grob ein Sample pro Pixel pro Frame, da fließt das Budget in Light Sampling (ReSTIR) und Denoising. Die eleganteren Integratoren bleiben praktisch dem Offline-Rendering vorbehalten, wo du die Samplezahlen dafür überhaupt hast.
Ob man das Ganze am Ende „Spezialfall" oder „anderer Ansatz" nennt, ist Semantik. In der Praxis sieht den Unterschied jeder, der zum ersten Mal ein Pathtracing-Game startet.
