Three.js: Shadow-Map-UnterstĂŒtzung fĂŒr RectAreaLights hinzufĂŒgen (Brainstorming, F&E)

Erstellt am 28. Mai 2018  Â·  37Kommentare  Â·  Quelle: mrdoob/three.js

Beschreibung des Problems

FĂŒr den Realismus wĂ€re es sehr nĂŒtzlich, Schatten auf RectAreaLights zu unterstĂŒtzen.

Ich bin mir nicht sicher, welche Technik ich hier am besten verwenden soll, da ich sie ĂŒber einige schnelle Google-Suchen hinaus noch nicht recherchiert habe. Ich bin mir noch nicht sicher, was die anerkannte Best Practice in der Branche ist?

Zwei einfache Techniken, die mir einfallen:

  • Man könnte eine PointLightShadowMap in der Mitte eines rechteckigen FlĂ€chenlichts platzieren und es wĂŒrde irgendwie funktionieren.
  • weniger genau, man könnte eine SpotLightShadowMap mit einem ziemlich hohen FOV (ĂŒber 120 Grad, aber weniger als 180 Grad, da dies zum Scheitern fĂŒhren wĂŒrde) in der Mitte des rechteckigen FlĂ€chenlichts platzieren und es in die Lichtrichtung richten.

(Ich glaube, dass Sie mit der Spotlicht-Schattenkarte möglicherweise bessere Ergebnisse fĂŒr große FlĂ€chenlichter erzielen können, wenn Sie die Schattenkarte hinter die FlĂ€chenlichtoberflĂ€che verschieben, sodass die vordere nahe Schnittebene im Schattenkartenkegel ungefĂ€hr die Seite der FlĂ€chenlicht, als es durch die FlĂ€chenlichtebene ging. Ich glaube, ich habe dies einmal in einer Zeitung gelesen, aber ich kann mich an die Quelle erinnern.)

Enhancement

Hilfreichster Kommentar

NVidias Percentage Closer Soft Shadows leistet gute Arbeit bei der AnnÀherung von FlÀchenlichtschatten. Ich habe damit gespielt, sie hier in eine THREE.js-Szene zu hacken: https://gkjohnson.github.io/threejs-sandbox/pcss/index.html. Im Moment wird eine gerichtete Lichtschattenkarte verwendet, aber eine SpotLight-Karte könnte besser sein.

Sie sind jedoch keine perfekte Lösung - sie haben einige Artefakte, wenn Schattenkanten nÀher beieinander liegen, und erfordern viele Samples, um einen wirklich glatten Schatten zu erhalten.

Alle 37 Kommentare

/ping @abelnation , wenn Sie irgendwelche Ideen haben, da Sie der derzeit ansÀssige Area Light-Experte sind. :)

Ich habe den Bereichslichtcode umgestaltet und bin damit auch vertraut. Informationen zur SchattenunterstĂŒtzung finden Sie unter https://eheitzresearch.wordpress.com/705-2/.

Informationen zur SchattenunterstĂŒtzung finden Sie unter https://eheitzresearch.wordpress.com/705-2/.

Interessant. Ich denke, dass dies fĂŒr WebGL derzeit etwas zu rechenintensiv sein könnte, da davon ausgegangen wird, dass Raytracing hardwarebeschleunigt ist. Es wird wahrscheinlich Jahre dauern, bis WebGL leider kommt.

Ich bin der Meinung, dass meine beiden VorschlÀge (Punkt- oder Punktlichtschatten) zwar physikalisch nicht genau sind, wenn es um weiche Schatten geht, aber sie sind besser als kein Schatten und beide sehr schnell (zumindest so schnell wie unsere anderen Schatten). und einfach zu implementieren (da der Code bereits vorhanden ist.)

@bhouston Oh, ja ... es gibt auch https://github.com/mrdoob/three.js/pull/13057.

Wenn Sie die gesamte Diskussion lesen, bestand der Konsens darin, SpotLight 'Cookie'-UnterstĂŒtzung hinzuzufĂŒgen, was vermutlich einen rechteckigen Schatten ermöglichen wĂŒrde.

NVidias Percentage Closer Soft Shadows leistet gute Arbeit bei der AnnÀherung von FlÀchenlichtschatten. Ich habe damit gespielt, sie hier in eine THREE.js-Szene zu hacken: https://gkjohnson.github.io/threejs-sandbox/pcss/index.html. Im Moment wird eine gerichtete Lichtschattenkarte verwendet, aber eine SpotLight-Karte könnte besser sein.

Sie sind jedoch keine perfekte Lösung - sie haben einige Artefakte, wenn Schattenkanten nÀher beieinander liegen, und erfordern viele Samples, um einen wirklich glatten Schatten zu erhalten.

Sieht großartig aus! Aber deine Demo lĂ€uft auf meinem iMac mit nur 6 FPS ^^

Ich bekomme 60fps auf einer GTX 970m.

1 FPS auf meinem Pixel 😱

Es gibt bereits eine pcss-Implementierung in three.js, die ich und oreshant
schrieb vor einiger Zeit.

Mit freundlichen GrĂŒĂŸen,
Ben Houston
http://Clara.io Online-3D-Modellierung und -Rendering

Am Samstag, 21. Juli 2018, 23:02 Uhr Garrett Johnson [email protected]
schrieb:

NVidias Prozentsatz nÀher weicher Schatten
http://developer.download.nvidia.com/shaderlibrary/docs/shadow_PCSS.pdf
leisten gute Arbeit bei der AnnÀherung von FlÀchenlichtschatten. Ich spielte mit
Hacken Sie sie hier in eine THREE.js-Szene:
https://gkjohnson.github.io/threejs-sandbox/pcss/index.html. Es verwendet a
Im Moment ist es eine gerichtete Lichtschattenkarte, aber eine Spotlight-Karte könnte es sein
besser.

Sie sind jedoch keine perfekte Lösung - sie haben einige Artefakte, wenn
Schattenkanten kommen einander nÀher und erfordern viele Abtastungen, um eine zu erhalten
wirklich glatter Schatten.

—
Sie erhalten dies, weil Sie erwÀhnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/mrdoob/three.js/issues/14161#issuecomment-406837539 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AAj6_RuFJPv7y5DbEfJnDu26DB3cD2bhks5uI-tJgaJpZM4UQODd
.

Es gibt bereits eine pcss-Implementierung in three.js, die ich und oreshant vor einiger Zeit geschrieben haben.

https://threejs.org/examples/#webgl_shadowmap_pcss

Das lÀuft mit schönen 60 FPS auf meinem iMac^^.

Es gibt bereits eine pcss-Implementierung in three.js, die ich und oreshant vor einiger Zeit geschrieben haben.

Das hatte ich nicht gesehen! Es sieht gut aus. Ich wusste nicht, dass Sie auf diese Weise Poisson-Disk-Àhnliche Werte generieren können - es sieht so aus, als hÀtte es eine schönere Verteilung und liefert bessere Ergebnisse als die Art und Weise, wie ich es verwendet habe. Das kann ich mir ausleihen, wenn es dir nichts ausmacht!

1 FPS auf meinem Pixel 😱

Ha! Auf meinem Handy hat es auch nicht funktioniert. Ich habe es ĂŒberhaupt nicht optimiert und es gibt eine Menge Arbeit in Schleifen, die verschoben werden könnten.

Die Implementierung von @bhouston ist jedoch ziemlich schnell. Vielleicht gibt es eine Variante davon, die fĂŒr FlĂ€chenlichtschatten verwendet werden kann? Es wĂ€re schön, jede Art von SchattenunterstĂŒtzung fĂŒr FlĂ€chenlichter zu haben, damit diese Art der Implementierung einfacher angeschlossen werden könnte.

NVidias Percentage Closer Soft Shadows leistet gute Arbeit bei der AnnÀherung von FlÀchenlichtschatten. Ich habe damit gespielt, sie hier in eine THREE.js-Szene zu hacken: https://gkjohnson.github.io/threejs-sandbox/pcss/index.html. Im Moment wird eine gerichtete Lichtschattenkarte verwendet, aber eine SpotLight-Karte könnte besser sein.

Sie sind jedoch keine perfekte Lösung - sie haben einige Artefakte, wenn Schattenkanten nÀher beieinander liegen, und erfordern viele Samples, um einen wirklich glatten Schatten zu erhalten.

HĂŒbsch! Es ist nicht perfekt, aber es sieht besser aus als kein Schatten ... Ich bekomme 30 fps auf meinem Asus ROG Phone 2.
Und 45 fps auf meinem Laptop mit integrierter Grafik.

Hier ist ein Beispiel fĂŒr Raytrace-Schatten in three.js, nur die Schattenkomponente wird in diesen Videos gezeigt.

60+ fps mit 1 Schatten-Sample pro Pixel ... Mit etwas intelligenter Filterung könnten die Ergebnisse ziemlich gut aussehen.

https://youtu.be/O21mKUtMtSg
https://youtu.be/2Tn93hf9kNw

Dies könnte verwendet werden, um bei Lichtschatten in rechteckigen Bereichen zu helfen.

Eine Live-Webdemo ist in Arbeit.

Verwandt

13908 Schatten verbessern

14048 Weiche Schatten durch Lichtquellen-Sampling

14051 EinfĂŒhrung einer progressiven fotorealistischen globalen Beleuchtung in Three.JS

Sehr schön!

Verwandtes Problem: Ich weiß nicht, wie ich mit dem aktuellen IBL-Code eine Art Schatten implementieren soll.

Angenommen, ich möchte im Autobeispiel ein DirectLight hinzufĂŒgen, aber die tatsĂ€chliche Lichtquelle ignorieren und nur die Schattenkarte verwenden, um den IBL-Code zu beeinflussen.

Ich habe mit mehreren Raytracing-Effekten herumgespielt.

  • Schatten – von direkten Lichtquellen, einschließlich rechteckiger Lichtquellen
  • Umgebungsverdeckung
  • Globale Erleuchtung

Ich denke, von den 3 GI pro Pixel, die mit IBL funktionieren wĂŒrden, ist es am schwierigsten, Echtzeit-Bildraten zu erreichen.

GI pro Vertex ist jedoch bei guten Bildraten möglich. Der Raytracing-Code wird mit der Idee geschrieben, dass Vertex- und Fragment-Shader ihn verwenden können.

@mrdoob , @WestLangley ,
In welchem ​​Raum befinden sich die Uniformen "pointLights[].position"???
Ich mache das Raytracing im Weltraum, aber die Schatten scheinen nicht zusammenzupassen.

Annotation 2019-12-20 073556

Ok, nachdem ich es mir angesehen habe ... Es sieht so aus, als ob es sich im Modellansichtsraum befindet ... Gibt es eine gute Möglichkeit, die Lichtpositionen im Weltraum zu erhalten?

Ändern Sie WebGLRender, um sowohl den Welt- als auch den Ansichtsraum zu senden?

Ok, ich habe es mit einem Punktlicht zum Laufen gebracht ... jetzt zum Testen von Rect-FlÀchenlichtern!

image

Gibt es eine Möglichkeit, nur Lichtquellen innerhalb des Emissionsvolumens zu jittern und
kumulieren um weiche schatten zu bekommen in etwa 32 rendern das
Sie sammeln nur?

Ich betrachte dies als etwas, das gut mit dem Subpixel-Kamera-Jitter funktioniert
die ich im Beispiel TAA Three.js angesammelt habe.

Am Samstag, 21. Dezember 2019 um 22:04 Uhr Samuel Sylvester [email protected]
schrieb:

Ok, ich habe es mit einem Punktlicht zum Laufen gebracht ... jetzt zum Testen von Rect-FlÀchenlichtern!

[Bild: Bild]
https://user-images.githubusercontent.com/10963749/71316445-4b18bb00-2435-11ea-94d9-c2f0f4116097.png

—
Sie erhalten dies, weil Sie erwÀhnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/mrdoob/three.js/issues/14161?email_source=notifications&email_token=AAEPV7MQQB4SDPHJAOA5YXTQZ3KLVA5CNFSM4FCA4DO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHPHXHQ8#issuecomment-586,766
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AAEPV7JKIZ62J3YXCVVYHVDQZ3KLVANCNFSM4FCA4DOQ
.

--

Ben Houston CTO
*M: *+1-613-762-4113
[email protected]
Ottawa, EIN

[Bild: threekitlogo1568384278.png] https://www.threekit.com/
Schaffen Sie mit Threekit ein besseres visuelles Kundenerlebnis
https://www.threekit.com/

[Bild: Erfahren Sie, wie Sie Produktvisualisierungen mit Ihrem wachsenden Unternehmen skalieren]
http://signatures.threekit.com/uc/5d0cfd47860b6864aee40938/c_5da8cc74c90a0e0043fe0323/b_5dade3e4e85fae00caea3d76

Um es klar zu sagen, ich denke, der Weg, um in einem Rectlight zu zittern, besteht darin, ein Single zu haben
Punktlicht, das Sie entlang der EmissionsflÀche bewegen. Sie brauchen ein gutes
Sampling-Methode wie Poisson Disk oder so etwas,
https://www.google.com/search?q=Poisson+Disk. Und dann das Ergebnis
Schatten sollten weich und fĂŒr ein rechtwinkliges Licht geeignet sein.

Obwohl ich beim FOV verwirrt war, sollte man auf das Punktlicht setzen,
und vielleicht sollten Sie es immer in die normale Richtung vom Rect zeigen
Bereich OberflÀche? Es sind diese kleinen Details, die mich davon abgehalten haben
mit einer Implementierung der akkumulierten gesampelten Emission fortzufahren
Quellenbasierte Schatten.

Am Montag, den 23. Dezember 2019 um 9:00 Uhr schrieb Ben Houston [email protected] :

Gibt es eine Möglichkeit, Lichtquellen innerhalb des Emissionsvolumens nur zu jittern?
und akkumulieren, um weiche Schatten in etwa 32 Renderings zu erhalten
dass Sie nur ansammeln?

Ich betrachte dies als etwas, das gut mit dem Subpixel-Kamera-Jitter funktioniert
die ich im Beispiel TAA Three.js angesammelt habe.

Am Sa, 21. Dez. 2019 um 22:04 Uhr Samuel Sylvester <
[email protected]> schrieb:

Ok, ich habe es mit einem Punktlicht zum Laufen gebracht ... jetzt zum Testen von Rect-FlÀchenlichtern!

[Bild: Bild]
https://user-images.githubusercontent.com/10963749/71316445-4b18bb00-2435-11ea-94d9-c2f0f4116097.png

—
Sie erhalten dies, weil Sie erwÀhnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/mrdoob/three.js/issues/14161?email_source=notifications&email_token=AAEPV7MQQB4SDPHJAOA5YXTQZ3KLVA5CNFSM4FCA4DO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHPHXHQ8#issuecomment-586,766
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AAEPV7JKIZ62J3YXCVVYHVDQZ3KLVANCNFSM4FCA4DOQ
.

--

Ben Houston CTO
*M: *+1-613-762-4113
[email protected]
Ottawa, EIN

[Bild: threekitlogo1568384278.png] https://www.threekit.com/
Schaffen Sie mit Threekit ein besseres visuelles Kundenerlebnis
https://www.threekit.com/

[Bild: Erfahren Sie, wie Sie Produktvisualisierungen mit Ihrem wachsenden Unternehmen skalieren]
http://signatures.threekit.com/uc/5d0cfd47860b6864aee40938/c_5da8cc74c90a0e0043fe0323/b_5dade3e4e85fae00caea3d76

--

Ben Houston CTO
*M: *+1-613-762-4113
[email protected]
Ottawa, EIN

[Bild: threekitlogo1568384278.png] https://www.threekit.com/
Schaffen Sie mit Threekit ein besseres visuelles Kundenerlebnis
https://www.threekit.com/

[Bild: Erfahren Sie, wie Sie Produktvisualisierungen mit Ihrem wachsenden Unternehmen skalieren]
http://signatures.threekit.com/uc/5d0cfd47860b6864aee40938/c_5da8cc74c90a0e0043fe0323/b_5dade3e4e85fae00caea3d76

@bhouston Ich denke, https://github.com/mrdoob/three.js/issues/14048 ist das, worĂŒber Sie sprechen.

Ich mochte die Demo mit der Twisted-Knoten-Lichtquelle. Ich denke, das Problem, das ich gesehen habe, ist, dass die Reflexion der Lichtquelle nie zum richtigen Bild aufgelöst wurde.

Ein Pluspunkt fĂŒr die Raytrace-Schatten ist, dass sie zum Umgang mit transparenten Schatten verwendet werden können. Es kann auch fĂŒr Global Illumination und viele andere Lichteffekte verwendet werden.

@bhouston https://github.com/bhouston Ich denke #14048
https://github.com/mrdoob/three.js/issues/14048 ist, was Sie sprechen
Über.

Tut mir leid, ich neige dazu, zu vergessen, was ich zuvor vorgeschlagen habe, aber zumindest bin ich es
konsistent.

Ich mochte die Demo mit der Twisted-Knoten-Lichtquelle. Ich vermute die
Problem, das ich sah, ist, dass die Reflexion der Lichtquelle nie
zum richtigen Bild aufgelöst.

Das liegt daran, dass er keine zufĂ€llige Stichprobe, sondern eine erschöpfende Stichprobe durchfĂŒhrt
Methode - er macht auch eine viel hÀrtere Lichtquelle als nur eine
rechteckige FlÀche. Seine Methode wÀre langsam kumulativ mit Rasterung
Rendering oder Raytracing – es war die Beispielmethode, die falsch war, nicht die
Technik. Auch kannst du mehrere Lichtproben pro rendern wenn du so bist
geneigt. Ich denke, dass 32 bis 256 Renderings im High-End-Bereich benötigt werden,
abhÀngig vom Lichttyp und der Anzahl der Lichtmuster pro Render. Bei
60 fps sind das 1 - 4 Sekunden. Ich betrachte es als ein vereinfachtes "Instant".
Radiosity"-Lösung.

Sie haben Recht, dass Raytracing erstaunlich ist. Ich dachte nur, dass Zittern
Beleuchtung ist einfacher, als das gesamte Beleuchtungssystem zu erneuern, und Sie dann auch
habe eine gute lösung fĂŒr echtzeit, die schatten sind einfach hart und dann weiter
Stoppen Sie, dass sie bis zur Perfektion weicher werden und der Renderalgorithmus nicht wechselt,
nur die Dinge zittern und hÀufen sich an.

Am Mo, 23. Dezember 2019 um 11:03 Uhr Samuel Sylvester [email protected]
schrieb:

@bhouston https://github.com/bhouston Ich denke #14048
https://github.com/mrdoob/three.js/issues/14048 ist, was Sie sprechen
Über.

Ich mochte die Demo mit der Twisted-Knoten-Lichtquelle. Ich vermute die
Problem, das ich sah, ist, dass die Reflexion der Lichtquelle nie
zum richtigen Bild aufgelöst.

Ein Pluspunkt fĂŒr die Raytrace-Schatten ist, dass sie gewöhnungsbedĂŒrftig sind
transparente Schatten. Es kann auch fĂŒr Global Illumination und vieles mehr verwendet werden
andere Lichteffekte.

—
Sie erhalten dies, weil Sie erwÀhnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/mrdoob/three.js/issues/14161?email_source=notifications&email_token=AAEPV7L4ZVKQJILFWZQ6JE3Q2DOLPA5CNFSM4FCA4DO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHRNA4I#issuecomment-6265,251
oder abbestellen
https://github.com/notifications/unsubscribe-auth/AAEPV7LXP5CSOMBZF2BMNR3Q2DOLPANCNFSM4FCA4DOQ
.

--

Ben Houston CTO
*M: *+1-613-762-4113
[email protected]
Ottawa, EIN

[Bild: threekitlogo1568384278.png] https://www.threekit.com/
Schaffen Sie mit Threekit ein besseres visuelles Kundenerlebnis
https://www.threekit.com/

[Bild: Erfahren Sie, wie Sie Produktvisualisierungen mit Ihrem wachsenden Unternehmen skalieren]
http://signatures.threekit.com/uc/5d0cfd47860b6864aee40938/c_5da8cc74c90a0e0043fe0323/b_5dade3e4e85fae00caea3d76

@bhouston Ich mag die in # 14048 vorgeschlagene Lösung ... besonders fĂŒr einfache Geometrien wie ein rechteckiges Licht.
Es sieht so aus, als ob diese Methode ziemlich einfach anzuwenden sein sollte. Gibt es eine Dreiergabel, die diese Lösung hat?

In Bezug auf das Raytracing ... Auf Hardware der Desktop-Klasse arbeitet die Raytracing-Lösung in Echtzeit bei 1spp. Siehe... https://youtu.be/amX3icmbpzY.

Mobil habe ich noch nicht getestet.

In den Demos, an denen ich gearbeitet habe, wird der Beleuchtungsterm mit vorhandenem Code berechnet, aber der Schatten ist Raytracing anstelle von Shadow Mapping.

@mrdoob , @bhouston
Also habe ich die Demo aktualisiert, um die RTX-Demo von Nvidia von der GDC 2018 widerzuspiegeln

Und ich habe es in Echtzeit auf meinem Laptop und meinem Handy laufen ...

Laptop-Demo ... https://youtu.be/MKCKXRVks3I
Handy-Demo ... https://youtu.be/P-cnT2hYNF4

Ich habe auch die Verteilung der Schattenproben verbessert, um den Schattenrealismus zu verbessern

@mrdoob , @WestLangley , @bhouston und andere

Ich habe Schatten fĂŒr rechteckige FlĂ€chenlichter, die mit Raytracing arbeiten.

Screenshot_20200113-175554647
Die hier gezeigte Demo... https://youtu.be/tZmlb29OUBU
Hat Punktlichter und ein rechteckiges FlÀchenlicht.

Einige Verbesserungen bei der Verteilung von Schattenproben sind in Arbeit. Außerdem sieht es so aus, als mĂŒssten fĂŒr FlĂ€chenlichter 2 Schatten fĂŒr jedes Licht berechnet werden. Ein diffuser Schatten und ein spiegelnder Schatten.

Derzeit wird nur der diffuse Schatten berechnet.

Ich plane, mit dieser Demo eine Live-Website einzurichten und diese Änderungen auch bald auf meine Dreiergabel zu ĂŒbertragen

Das sieht toll aus! Verwendet es auch nur eine einzige Tiefentextur?

Das sieht toll aus! Verwendet es auch nur eine einzige Tiefentextur?

@mrdoob danke! Es ist eigentlich richtiges Raytracing, derzeit werden 2 Texturen verwendet. Einer speichert Weltraumgeometrie und der andere hat die BVH-Daten.

Mit diesem Setup könnten wir RTX Ambient Oclusion berechnen und mit ein paar Updates wÀre auch GI möglich!

Um die Demo im Browser auszufĂŒhren, siehe... https://three-rtx.azurewebsites.net/

Hinweis ... Dies ist Raytracing und ich habe festgestellt, dass meine integrierte GPU nur eine Lichtquelle mit Raytracing-Schatten mit anstÀndigen Bildraten verarbeiten kann. Aber als ich meine RTX 2080 aktivierte, konnte ich 2 Lichtquellen mit 16 spp pro Licht bei doppelter Bildrate per Raytracing verfolgen. Das ist etwas weniger als 64x schneller auf einer diskreten GPU!

Ich habe auch versucht, dies auf meinem Telefon auszufĂŒhren, und ich habe festgestellt, dass Sie ein Flaggschiff von 2019 oder besser fĂŒr 30+ fps bei 1080p wollen.

Ich glaube, es gibt noch ein paar Verbesserungen, um mehr Leistung und weniger LĂ€rm herauszuholen.

Ich plane, den Code, den ich jetzt habe, auf meinen Fork zu schieben und dann weitere Optimierungen vorzunehmen.

Hinweis : Ich habe einen Tweak, der die Leistung um ĂŒber 50% durchschnittliche fps verbessert ... es funktioniert bei der ersten Kompilierung der Shader, aber wenn eine zweite Kompilierung ausgelöst wird, passieren lustige Dinge ... Es sieht so aus, als ob es mit meiner Verwendung von zusammenhĂ€ngt der Vorprozessor

@sam-g-steel
Das ist toll! Haben Sie PlĂ€ne, die Arbeit irgendwann als Open Source zu veröffentlichen? Wie gut lĂ€sst es sich skalieren – haben Sie Tests mit komplexeren Charakter- oder Produktmodellen durchgefĂŒhrt? Und ich kann mir vorstellen, dass Raytracing hier nur mit statischen Szenen funktioniert, oder?

Ein Pluspunkt fĂŒr die Raytrace-Schatten ist, dass sie zum Umgang mit transparenten Schatten verwendet werden können. Es kann auch fĂŒr Global Illumination und viele andere Lichteffekte verwendet werden.

Dies scheint ein Plus fĂŒr diese Technik zu sein. Ich denke, Sie könnten mit dem Jitter-Ansatz von # 14048 ziemlich gute Ergebnisse erzielen.

@bhouston

es war die Stichprobenmethode, die falsch war, nicht die Technik.

Ich denke, die Verwendung von etwas wie dem MeshSurfaceSampler- Helfer zusammen mit mehreren Lichtern wĂŒrde das Ergebnis ein bisschen schöner machen.

@gkjohnson

Das ist toll! Haben Sie PlÀne, die Arbeit irgendwann als Open Source zu veröffentlichen?

Danke!!! Ja, ich plane, den Code bald zu veröffentlichen! Ich wĂŒrde es lieben, es in three.js integriert zu sehen!
Derzeit besteht die Demo aus 2 Hauptteilen. Ein benutzerdefinierter Build von drei, der Beleuchtungsinformationen in der Modellansicht und im Weltraum sendet, die ich hoffentlich in den nĂ€chsten Tagen veröffentlichen werde, und ein Three.js-„Plugin“, das den BVH erstellt und die Shader generiert, die das Raytracing durchfĂŒhren.

Wie gut lĂ€sst es sich skalieren – haben Sie Tests mit komplexeren Charakter- oder Produktmodellen durchgefĂŒhrt?

Ich habe einige Tests durchgefĂŒhrt, um zu sehen, wie es sich mit komplexen Szenen verhĂ€lt ... Die Ergebnisse, die ich erhielt, waren ziemlich vielversprechend. Ich arbeite daran, die Website https://three-rtx.azurewebsites.net/ bald mit weiteren Demos zu aktualisieren. Ich möchte keine Behauptungen mit Demos aufstellen, um es zu untermauern.

Und ich kann mir vorstellen, dass Raytracing hier nur mit statischen Szenen funktioniert, oder?

TatsĂ€chlich werden dynamische Szenen unterstĂŒtzt ! Ich plane, das auch bald zu demonstrieren! Derzeit dauern anfĂ€ngliche bvh-Builds 300 ms und nachfolgende Builds dauern ~ 10 ms auf der CPU mit Single-Threading. Zu beachten ist, dass der bvh-Code noch weiter optimiert werden könnte.

Hoffentlich kann ich dieses Wochenende den Code veröffentlichen. Es hat zum Teil lĂ€nger gedauert als ich erwartet hatte, weil meine Frau und ich gerade unser drittes Kind auf der Welt willkommen geheißen haben :)

@mrdoob , @gkjohnson
Ich habe damit begonnen, den Raytracing-Code zu veröffentlichen ... Er kann hier gefunden werden ... https://github.com/sam-g-steel/three.js/tree/RTX

Nicht der gesamte Code wurde festgeschrieben ... Ich versuche, die Dinge ein wenig aufzurÀumen. Hoffentlich habe ich bald den ganzen Code.

Daran arbeite ich noch...
Ich habe einige Fehler im Code gefunden, also arbeite ich an weiteren TestfÀllen, um herauszufinden, was schief lÀuft.

Eine der neuen Demos ist hier zu sehen...
Screenshot_20200205-125510305_1
https://youtu.be/ZvoSuBi4rFE
@gkjohnson , Diese Demo enthÀlt dynamische Objekte auf dem Bildschirm und hilft beim Testen der vollstÀndigen BVH-Wiederherstellungsleistung.

Ich hoffe, den Rest oder die "RTX"-Shader zu ĂŒbernehmen ... Heute Abend und den BVH-Code bald

Hinweis: Derzeit sind Dreiecke die einzigen unterstĂŒtzten Grundelemente

Update 08.02.2020
Die Website wurde aktualisiert, um die neue Demo zu haben ...
Die dynamische BVH-Erstellung ist jetzt 40 % schneller als noch vor 4 Tagen ... weitere Optimierungen folgen.
https://github.com/sam-g-steel/three.js/tree/RTX wurde mit mehr Code aktualisiert.

Weitere Updates folgen!!!

Ich arbeite immer noch an der Raytracing-Gabel ... Ich hoffe, in ein paar Wochen mehr zu zeigen.
Ich habe an der Rauschfilterung gearbeitet, um Bildraten und BildqualitÀt zu verbessern.

Unten sind einige Bilder des Rauschfilters ...
Es ist noch in Arbeit.

Update 28.03.2020
3-28-2020

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen