Verwechselt mit PBR-Implementierungen

13

Ich entdecke die wundervolle Welt der Mathematik und stoße mit PBR und Benennung auf eine riesige Mauer. Daher habe ich ein paar Fragen: Soweit ich weiß, beschreibt BRDF, wie ein Material auf Licht reagiert (eingehendes direktes Licht und Reflexionen). Aber in "Cook-Torrance" sehe ich nichts über Reflexionen. Ich verstehe nicht, wie ich es integriere, so dass ich nur diffuses Licht und Reflexionen bekomme.

Ich habe viel über verschiedene "diffuse Begriffe" wie "Oren-Nayar" gelesen. Ist es ein Teil von Cook-Torrance wie ein anderes "D" im DFG-Nominator? ersetzt es es ohne spekulare Berechnungen?

Ich habe viel über "GGX" aus meinem Blender-Künstler-Hintergrund gelesen. Ich dachte, es wäre etwas, das eine unscharfe Reflexion hervorruft, aber es scheint, als hätte ich mich geirrt, und jetzt finde ich diesen GGX-Begriff in vielen verschiedenen Situationen wie in der Mikro-Facetten-Normalität Verteilung in diesem Tutorial

Kurz gesagt lautet die Frage: Wie hängen "Oren-Nayar" und "GGX" und "Cook-Torrance" zusammen (wenn ja) und wie integriere ich "vec3 reflection" in diesen Algorithmus?

Wie ich bereits sagte, bin ich ein Anfänger in Mathematik. Wenn Ihre Antwort "math heavy" ist, schreiben Sie bitte eine glsl / hlsl-Version Ihrer Gleichungen. Es ist für mich viel einfacher zu verstehen, daher hilft mir eine Äquivalenz sehr

PS: Ich verstehe, dass meine Frage verschwommen ist, aber sie ist ebenso verschwommen wie mein Verständnis des Themas.

neu in
quelle
1
Etwas, das Ihnen helfen könnte, ist, dass "Spiegel" "Spiegel wie" bedeutet. Wenn es sich also um spiegelnde und diffuse Reflexionen handelt, bedeutet spiegelnde Reflexionen, was die Leute normalerweise als Reflexion bezeichnen. Diffuse ist nur "Dinge leuchten". Sie reflektieren auch Licht, aber sie reflektieren aus vielen verschiedenen Richtungen, so dass das Ergebnis nichts ist, in dem Sie ein Bild erkennen können. Es gibt eine Skala zwischen spiegelnder und diffuser Reflexion in realen Objekten, und dies ist ein Teil dessen, was die "Rauheit" -Parameter der PBR-Kontrollen.
Alan Wolfe
Sie können versuchen, das Originalpapier von Cook-Torrance zu lesen: inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf - überprüfen Sie, wenn möglich, auch die am Ende aufgeführten Verweise (die meisten sind es) Online verfügbar). Es wird einige Zeit dauern, aber es ist ein sicherer Weg, um "in die Tiefe" zu verstehen, was passiert.
wischen Sie am

Antworten:

11

Die DFG taucht in der Familie der Mikrofacetten-basierten BRDFs auf. Es ist einfach das Produkt von drei Begriffen:

  • D: Die Mikrofacettenverteilung.
  • F: Der Fresnel-Koeffizient.
  • G: Die geometrische Dämpfung zwischen Mikrofacetten.

Wenn jemand Cook-Torrance sagt, meinen sie normalerweise ein Mikrofacetten-BRDF, bei dem die Verteilung (D) Beckmann ist, worum es meiner Meinung nach im ursprünglichen Cook-Torrance-Artikel ging.

GGX ist eigentlich nur eine andere Distribution (D-Begriff). GTR ist eine andere. Die Namen werden oft als Abkürzung für eine BRDF verwendet, die diese Distribution verwendet.

All diese nehmen nun eine spiegelnde Reflexion (oder Brechung) an den Mikrofacetten an, daher der Fresnel-Term. Wenn Sie eine ähnliche Idee verfolgen, aber diffuse (lambertsche) Mikrofacetten verwenden, erhalten Sie das Oren-Nayar-BRDF. Ich denke, dass man auf einer Gaußschen Verteilung der Mikrofacetten basiert, aber ich kenne die Details nicht.

Olivier
quelle
okay, das ist ein bisschen klarer, aber es erklärt immer noch nicht, was ich mit meiner "vec3 reflectionColour" mache, die ich erhalte, wenn ich einen Strahl beim Raytracing / Marschieren oder mit SSR / Cubemap neu starte. Es ist wie bei den Gleichungen, bei denen nur ein Punktlicht / ein Scheinwerfer berücksichtigt wird, aber keine Idee für Flächenlichter oder Reflexionen. Es scheint auch, dass das "Spiegelbild" nur auf den "weißen Punkt" anstatt auf die Reflexion bezogen ist, da dies keinen Sinn ergibt = /
Neu am
@newin In einem PBR-Modell sind Specular und Reflection unterschiedliche Namen für dasselbe Objekt. Es ist ein Glanzlicht, wenn der Strahl auf ein Licht trifft, eine Reflexion, wenn er auf ein anderes Objekt (oder eine Umgebung) trifft. Was Ihre ReflectionColour betrifft, hängt es davon ab, wie der Strahl erzeugt wird. Probieren Sie direkte Beleuchtung? Flächenlichter? BRDF gegen und Umgebungskarte einbinden? Wenn Sie Progressive Path Tracing mit Explicit Light Sampling lesen , gibt es eine lange Antwort, die einige Dinge über den Prozess klären könnte.
Olivier
Also, wenn ich richtig verstehe, dass "vec3 reflectionColour" als Licht behandelt werden soll und wenn ich ein Mesh emittierendes Licht erzeugen möchte, sollte ich einfach einen Wert> 1 in die Albedo eingeben und das war's? (Ich versuche, PBR in ein anderes Szenario zu integrieren. Das erste ist ein Raymarcher, bei dem Netze Licht aussenden sollen. Das andere ist eine Spiel-Engine, die SSR verwendet und wahrscheinlich Cubemaps verwendet.)
Neu in
@newin emittiertes Licht wird nur über alles andere hinzugefügt. Es hat nichts mit BRDFs zu tun. Wenn Ihr Netz nur Licht aussendet, müssen Sie nicht einmal weitere Strahlen von ihm ableiten. Eine große Albedo verstärkt das Licht (physikalisch falsch) und erzeugt es nicht.
Olivier