Umbra3
Umbra3
Ich bin gestern über Umbra 3 gestolpert und wollte das hier einfach mal ein wenig diskutieren:
http://www.umbrasoftware.com/en/
Umbra 3 ist eine Middleware für Occlusion-Testing und wird von einigen prominenten Spielen benutzt. Weiß jemand etwas genauer, was die eigentlich intern machen? Von den Infos auf der Webseite kann man zwar ein wenig was entnehmen, aber natürlich nicht alles.
Für mich hört sich das in etwa so an: Aus der Levelgeometrie (Polygonsuppe) werden Occluder-Objects generiert, die konservatives Culling garantieren. Die werden dann per Software in relativ geringer Auflösung gerendert und an dem Ergebnis kann man erkennen, was sichtbar ist, und was nicht (zumindest kann Umbra 3 optional einen Depth-Buffer ausspucken um dynamische Objekte zu testen, und man sieht ihn auch in einem Demo-Video - es erscheint also naheliegend, dass sie es so machen).
Aber weiß jemand mehr Details darüber? In den Videos werden u. a. Versprechen wie "läuft in konstanter Zeit" gemacht, was ich doch ziemlich fragwürdig finde.
http://www.umbrasoftware.com/en/
Umbra 3 ist eine Middleware für Occlusion-Testing und wird von einigen prominenten Spielen benutzt. Weiß jemand etwas genauer, was die eigentlich intern machen? Von den Infos auf der Webseite kann man zwar ein wenig was entnehmen, aber natürlich nicht alles.
Für mich hört sich das in etwa so an: Aus der Levelgeometrie (Polygonsuppe) werden Occluder-Objects generiert, die konservatives Culling garantieren. Die werden dann per Software in relativ geringer Auflösung gerendert und an dem Ergebnis kann man erkennen, was sichtbar ist, und was nicht (zumindest kann Umbra 3 optional einen Depth-Buffer ausspucken um dynamische Objekte zu testen, und man sieht ihn auch in einem Demo-Video - es erscheint also naheliegend, dass sie es so machen).
Aber weiß jemand mehr Details darüber? In den Videos werden u. a. Versprechen wie "läuft in konstanter Zeit" gemacht, was ich doch ziemlich fragwürdig finde.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
Re: Umbra3
Also in Unity 3 war Umbra dabei. Und da war das für das Occlusion Culling zuständig.
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Umbra3
Klingt nach einer Implementierung von Intels Software Occlusion Culling Demo, die ryg in dieser Artikel-Serie getunt hat.
- Schrompf
- Moderator
- Beiträge: 5159
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Umbra3
Falls es das Occluder-In-Software-Rendern ist, dann macht die Frostbite-Engine von Battlefield und Konsorten das auch so.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: Umbra3
ah danke für den Link. Leider habe ich dazu kein Paper gefunden, aber dafür einen GDC Vortrag über eben jene Demo:
http://www.gdcvault.com/play/1017837/Wh ... jects-Cull
Auf jeden Fall eine coole Idee, die sich ja auch scheinbar echt lohnt. Allerdings dürfte der Implementierungsaufwand fürs selbermachen dann doch recht hoch sein.
http://www.gdcvault.com/play/1017837/Wh ... jects-Cull
Auf jeden Fall eine coole Idee, die sich ja auch scheinbar echt lohnt. Allerdings dürfte der Implementierungsaufwand fürs selbermachen dann doch recht hoch sein.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
Re: Umbra3
Hi,
ich hab bisher noch nicht mit Umbra 3 gearbeitet, deshalb kann ich auch nur das wiedergeben was in öffentlichen Präsentationen geschildert wird. Umbra scheint einen relativ guten Preprocessing-Schritt zu haben, was den Ansatz von den Software-Rasterizer Lösungen (Intel/Fabian, Cryengine, Killzone, ...) unterscheidet. In diesem Schritt wird die Szene voxelisiert und die Voxelrepräsentation analysiert. Im Grunde erzeugt Umbra Informationen über zusammenhängende Geometry und platziert automatisiert Portale an 'offenen' Stellen. Im Endeffekt ergeben sich daraus (konvexe) Zellen die durch Portale verbunden sind (quasi standard für alle Portal-Systeme). Die Bereiche werden in einer Baumstruktur hinterlegt, so das die Hierarchy schnell traversiert werden kann. Umbra scheint ausserdem nur 'wichtige' Occluder in diesen Baum zu packen und verwirft kleine Details um die Struktur möglichst nicht explodieren zu lassen und unwichtige Details direkt zu eliminieren.
Zur Runtime wird die aktuelle Zelle über die Kameraposition ermittelt und der Portal-Baum traversiert und somit alle potentiell sichtbaren Portale/Zellen ermittelt. Die Portale werden zusätzlich mit einem Software-Rasterizer in einen Occlusionpuffer gerendert. Um die Sichtbarekeit eines Objekts zu ermitteln rendert Umbra die Boundingboxen der Objekte und testet das Ergebnis gegen den Occlusionpuffer. Umbra unterstützt außerdem dynamische Objekte als Occluder indem diese einfach in einem weiteren Schritt in den Occlusionpuffer gerendert werden (ebenfalls komplett auf der CPU).
Precompute
Der Ansatz den wir in Lords of the Fallen verwenden funktioniert so ähnlich. Im Verlauf der Entwicklung wurden verschiedene Optionen evaluiert. Im Endeffekt nutzt unser Ansatz den Depthbuffer von der GPU als Occlusionpuffer. Mit ein paar Tricksereien kann die Latenz weitgehend ignoriert werden. Trotzdem ist viel Tweakaufwand notwendig um z.B. Objektploppen bei schnellen Kamerabewegungen oder Kameraschnitten zu vermeiden.
Links:
http://www.umbrasoftware.com/en/umbra-3/videos/
http://www.umbrasoftware.com/en/company/downloads/
http://www.umbrasoftware.com/wp-content ... eature.pdf
http://twvideo01.ubm-us.net/o1/vault/GD ... ity_In.pdf
http://www.gdcvault.com/play/1017834/Po ... ny-s-Level
ich hab bisher noch nicht mit Umbra 3 gearbeitet, deshalb kann ich auch nur das wiedergeben was in öffentlichen Präsentationen geschildert wird. Umbra scheint einen relativ guten Preprocessing-Schritt zu haben, was den Ansatz von den Software-Rasterizer Lösungen (Intel/Fabian, Cryengine, Killzone, ...) unterscheidet. In diesem Schritt wird die Szene voxelisiert und die Voxelrepräsentation analysiert. Im Grunde erzeugt Umbra Informationen über zusammenhängende Geometry und platziert automatisiert Portale an 'offenen' Stellen. Im Endeffekt ergeben sich daraus (konvexe) Zellen die durch Portale verbunden sind (quasi standard für alle Portal-Systeme). Die Bereiche werden in einer Baumstruktur hinterlegt, so das die Hierarchy schnell traversiert werden kann. Umbra scheint ausserdem nur 'wichtige' Occluder in diesen Baum zu packen und verwirft kleine Details um die Struktur möglichst nicht explodieren zu lassen und unwichtige Details direkt zu eliminieren.
Zur Runtime wird die aktuelle Zelle über die Kameraposition ermittelt und der Portal-Baum traversiert und somit alle potentiell sichtbaren Portale/Zellen ermittelt. Die Portale werden zusätzlich mit einem Software-Rasterizer in einen Occlusionpuffer gerendert. Um die Sichtbarekeit eines Objekts zu ermitteln rendert Umbra die Boundingboxen der Objekte und testet das Ergebnis gegen den Occlusionpuffer. Umbra unterstützt außerdem dynamische Objekte als Occluder indem diese einfach in einem weiteren Schritt in den Occlusionpuffer gerendert werden (ebenfalls komplett auf der CPU).
Precompute
- Szene voxelisieren/optimieren
- Portale zwischen 'well connected' regionen aufspannen
- Portal-Baum erzeugen
- Aktuelle Zelle emitteln
- Potentiell sichtbare Portale/Zellen ermitteln
- Portale in Occlusionpuffer schreiben
- Dynamische Occluder aus sichtbaren Zellen in Occlusionpuffer schreiben
- Für alle Objekte Boundingvolume gegen Occlusionpuffer testen
- ...
Der Ansatz den wir in Lords of the Fallen verwenden funktioniert so ähnlich. Im Verlauf der Entwicklung wurden verschiedene Optionen evaluiert. Im Endeffekt nutzt unser Ansatz den Depthbuffer von der GPU als Occlusionpuffer. Mit ein paar Tricksereien kann die Latenz weitgehend ignoriert werden. Trotzdem ist viel Tweakaufwand notwendig um z.B. Objektploppen bei schnellen Kamerabewegungen oder Kameraschnitten zu vermeiden.
Links:
http://www.umbrasoftware.com/en/umbra-3/videos/
http://www.umbrasoftware.com/en/company/downloads/
http://www.umbrasoftware.com/wp-content ... eature.pdf
http://twvideo01.ubm-us.net/o1/vault/GD ... ity_In.pdf
http://www.gdcvault.com/play/1017834/Po ... ny-s-Level
- Schrompf
- Moderator
- Beiträge: 5159
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Umbra3
Danke für die Zusammenfassung! Spannenes Thema, auch wenn ich wieder Probleme habe, die Nützlichkeit dieser Portalerzeugung abzuschätzen. Ich meine... das sind Profis, die werden wissen, was sie tun. Aber so richtig bringen tut das doch nur in Gebäuden o.Ä., vermute ich.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: Umbra3
Laut Umbra performed der Ansatz ja in jeder Situation gut. Ich denke der Ansatz ist schon interessant, würde gern selbst mal testen wie gut das funktioniert. Allerdings scheint CD PROJEKT RED damit ganz gute Erfahrungen bei Witcher 3 gemacht zu haben.
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Umbra3
Ich denke man unterschätzt leicht den Grad an Verdeckung in normalen Szenarien: In der Regel bewegt man sich doch schlicht aus Gründen der Orientierung und des Bezugspunkts recht bodennah, und dann reicht schon ein moderat geschachtelter Stadtplan oder eine einigermaßen rauhe Landschaft aus, einen großen Teil der Tiefengeometrie schlichtweg rauszumaskieren. Ob dann indoor noch ein Dach drüber ist oder outdoor die Dächer/Hügel nur hoch genug sind, macht da nicht so den Unterschied.Schrompf hat geschrieben:Danke für die Zusammenfassung! Spannenes Thema, auch wenn ich wieder Probleme habe, die Nützlichkeit dieser Portalerzeugung abzuschätzen. Ich meine... das sind Profis, die werden wissen, was sie tun. Aber so richtig bringen tut das doch nur in Gebäuden o.Ä., vermute ich.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite