Occlusion Culling ist eine Technik, die Sie mit der aktuellen Unity Version 2019 nutzen können, um massiv die Ressourcen Ihrer Grafikkarte zu sparen. Standardmäßig rendert Unity 3D-Objekte, die sich nicht im Sichtbereich der Kamera befinden. Das macht eigentlich keinen Sinn, die Objekte müssten eigentlich nicht zwangsläufig angezeigt werden, was wiederum einen großen Performance Boost mit sich bringen würde. Occlusion Culling bringt diesen Boost mit sich – und wir zeigen Ihnen wie!

 

Ressourcen sparen durch Occlusion Culling

Der Standard-Prozess rendert zuerst Objekte, die sich am weitesten von der Kamera weg befinden. Objekte hingegen, die sich näher an der Kamera befinden, werden anschließend „darüber“ gezeichnet, was auch als „overdraw“ bezeichnet wird. Es gibt zudem einen Unterschied zum sog. Frustum Culling, in der Objekte, die sich außerhalb des Sichtkegels der Kamera befinden, nicht gerendert werden. Mit Occlusion Culling werden tatsächlich nur die Objekte angezeigt, die sich auch tatsächlich im Sichtbereich der Kamera befinden.

 

Unity Standard Szene

Objekte sind in einer Standard Szene nicht ausgeblendet und das kostet auch die meiste Rechenleistung.

 

Unity Frustum Culling

Frustum Culling ist der erste Schritt in Richtung Ressourcen sparen. Es zeigt nur die Objekte an, die sich auch im Sichtkegel der Kamera befinden und schaltet die Objekte aus, die sich außerhalb aufhalten.

 

Unity Occlusion Culling

Occlusion Culling spart die meisten Ressourcen und stellt somit die Szene während der Laufzeit flüssiger dar. Es werden nur die Objekte angezeigt, die der „Spieler“ auch sieht.

 

Einrichten von Occlusion Culling

Um Occlusion Culling einzurichten, müssen Sie lediglich ein paar Haken im Editor setzen. Zunächst sollten Sie jedoch das Level in kleinere und definierte Gebiete unterteilen. Große Objekte, wie beispielsweise Wände oder Gebäude sollten diese Teilbereiche verdecken. Jedes Mesh wird dann, basierend auf den Okklusionsdaten, ein- oder ausgeschaltet. Sie erreichen das, in dem Sie die alle Szenen-Objekte im Inspektor markieren und dann „Occluder Static“ und „Occludee Static“ wählen.

 

Unity Inpsector Occlusion Culling

Verwenden Sie die Einstellung „Occludee Static“ bei besonders kleinen und halbdurchsichtigen Objekten, die nicht als „Occluder“ dienen, also als Objekte, die so groß sind, dass andere Objekte verdeckt werden und damit ausgeblendet werden können. Kleiner Tipp: Wenn Sie LOD Gruppen benutzen, markieren Sie lediglich LOD0 als Occluder.

Unity selbst bietet eine gute Dokumentation an, wenn es um Occlusion Culling geht. Sie erreichen diese hier: https://docs.unity3d.com/Manual/OcclusionCulling.html.

Die Dokumentation geht an dieser Stelle nochmal genauer darauf ein, ab welcher Größe es Sinn macht ein Objekt als „Occluder“ oder „Occludee“ einzustellen. Um Occlusion Culling final zu nutzen, müssen Sie die Szene baken.

Rechnen Sie dies mit ein, wenn Sie ein entsprechend großes Terrain haben, auf dem Objekte ein- und ausgeblendet werden sollen, denn das kostet natürlich Zeit.

 

Unity Assets mit Occlusion Culling

Eines der besten Assets, das wir auch selbst für unser aktuelles Projekt verwenden, ist der GPU Instancer. Das Asset stellt nochmals mehr Optionen bereit, wenn es um die Optimierung der Performance geht.

Hier geht’s zum Asset:

 

Letzten Beitrag verpasst? Kein Problem! Lesen Sie hier, wie Sie mit Unity Sprite Shapes einfach in die Welt der 2D-Spiele Entwicklung eintauchen können.