Letzte Woche ging es darum, was Lumen dich kostet. Nanite ist das andere Headline-Feature, und die Ratschläge dazu sind schlechter — weil "einfach anschalten" klingt, als müsste es stimmen.
Nanite ist keine geschenkte Performance. Es ist eine Verschiebung, wohin deine Performance geht. Dieser eine Satz sagt dir, wann du es nutzt.
Was es tatsächlich macht
Nanite streamt und rendert Geometrie grob mit einem Dreieck pro Pixel, damit die Dreieckszahl aufhört, eine Rolle zu spielen. Es nutzt einen Visibility Buffer, der zuerst nur Dreiecks-IDs aufzeichnet, und shadet Materialien per-Pixel nur für sichtbare Geometrie — was Overdraw aus den Material-Kosten eliminiert. Dazu Two-Pass Occlusion Culling: zeichne was letzten Frame sichtbar war, bau einen Depth Buffer, teste die vorher verdeckte Geometrie dagegen.
Ergebnis: ein 30-Millionen-Dreiecke-Fels kostet ungefähr so viel wie ein 30.000-Dreiecke-Fels, und du baust nie ein LOD.
Der Tausch, klar gesagt
Nanite verschiebt deinen Flaschenhals von Geometrie zu Material und Speicher.
Im klassischen Rendering ist Material-Komplexität eine Kostenstelle unter mehreren. Unter Nanite wird Material-Kosten die Hauptsorge. Es werden sehr große Gewinne berichtet — im Bereich 200–300% — allein durch das Vereinfachen von Materialien auf entfernter Vegetation in großen Nanite-Szenen.
Die Frage "soll ich Nanite anschalten?" ist also eigentlich "ist Geometrie mein Flaschenhals, oder sind es Materialien?". Wenn du ein Solo-Dev mit moderaten Meshes und teuren Layer-Materialien bist, gibt Nanite dir wenig und nimmt etwas.
Wo Nanite klar gewinnt
- High-Poly-Meshes, die sonst aggressive LODs bräuchten. Megascans-Felsen, Klippen, gesculptete Architektur, Kitbash-Sets. Genau dafür wurde das System gebaut.
- Landscape. Nanite lässt sich für Terrain aktivieren und harmoniert gut mit Virtual Shadow Maps.
- Alles, wo du sonst einen Tag mit LOD-Ketten verbringst. Deine Zeit ist auch eine Ressource.
Wo klar nicht
- Skeletal Meshes, vertex-animierte Meshes, Morph Targets — historisch nicht unterstützt. Nanite Skeletal Mesh mit Animation-LODs und Animation Banks kommt in neueren Versionen — prüf deine Engine-Version statt eines 2022er-Blogposts.
- Masked Materials. Nanite war für opake Geometrie gedacht. Support für Masked-Blend-Modes kam ab 5.1, muss aber in den Project Settings aktiviert und korrekt konfiguriert sein — und maskiertes Foliage kostet weiter Cluster, in jeder Distanz.
- World Position Offset. Limitierter WPO-Support kam ab 5.4, opt-in, mit Beschränkungen bei der Displacement-Größe. Artists müssen
Max WPO Displacementfür den schlimmsten Fall setzen, um die Culling-Bounds zu polstern — und zu konservative Bounds treiben die Overdraw-Kosten hoch. WPO ändert außerdem die Vertex-Shader-Logik, jedes Material landet also in eigenen Dispatches; viele Materialien heißt viele Programmable Raster Bins, was ein eigenes Performanceproblem ist. - Normale Game-Assets. Viele Entwickler berichten von besserer Performance ohne Nanite bei typischen, schon optimierten Meshes. Die Doku-Aussage, dass Nanite-Meshes schneller rendern, gilt speziell für High-Poly-Assets, die sonst leiden würden.
Dichte Wälder: die ehrliche Version
Nanite plus Foliage ist der Ort der größten Enttäuschungen. Jede Blattkarte kostet weiter einen Cluster, auch in der Distanz, und ein dichter Wald sprengt ein vernünftiges Cluster-Budget schnell. Nanite-Bäume komprimieren außerdem schlechter als solide Meshes mit gleicher Dreieckszahl, der Speicher steigt also.
stat Nanite zeigt deine Cluster-Zahlen. Wenn sie im Wald hoch sind, ist die Antwort: weniger, bessere Meshes — kein cvar.
Wenn du auf 5.7+ bist, ist Nanite Foliage die echte Antwort darauf: voxelisierte Vegetation in der Ferne statt Alpha-Karten (null Overdraw auf Distanz), Nanite Skinning für Wind (pro Bone, genauere Bounds, Fixed-Function-Rasterizer statt Programmable Bins) und Nanite Assemblies, um modulare Teile zu instanzieren ohne Geometrie zu duplizieren. In der 5.7-Preview war es experimentell — Status prüfen, bevor du einen Wald darauf setzt.
Die Debug-Views, die die Frage beantworten
- Overdraw — zeigt Overdraw inklusive maskierter Pixel. Kritisch für Foliage. Berücksichtigt maskierte Materialien inzwischen korrekt.
- Evaluate WPO — grün heißt WPO wird genutzt, das ist teuer. Rot heißt nicht.
- Raster Bins — zeigt Material-Batching. Viele Bins heißt Overhead.
stat Nanite— Cluster-Zahlen.
Eine Faustregel, die es sich zu leihen lohnt, von jemandem der Foliage shippt: Nanite-Kosten an jedem Punkt im Spiel unter etwa 4 ms halten, gemessen bei nativen 1080p / 60 FPS auf einer RTX-3060-Klasse. Eine Faustregel, kein Gesetz — aber ein Budget, und ein Budget schlägt ein Gefühl.
Häufige Fehler
- Nanite überall anschalten und nicht messen. Du hast deinen Flaschenhals verschoben, ohne zu prüfen wohin.
- Komplexe Materialien auf Nanite-Meshes. Da sind deine Frames jetzt hin.
- Im Editor profilen. Die Performance unterscheidet sich deutlich vom Packaged Build.
- Nanite-Mesh rendert gar nicht? Meistens: Nanite am Asset nicht aktiviert, ein nicht unterstützter Mesh-Typ (Skeletal, Morph Targets), oder ein Material-Blend-Mode, den Nanite nicht nimmt. Erst diese drei prüfen.
- Cull-Distance-Denken auf Nanite-Foliage anwenden. Es reagiert nicht darauf — anderes System, siehe Foliage-Post.
- Einen 2022er-Artikel als aktuell lesen. Masked-Support, WPO-Support, Skeletal-Support und Foliage haben sich alle bewegt. Prüf deine Version.
30-Sekunden-Recap
- Nanite macht die Dreieckszahl irrelevant. Es macht die Kosten nicht irrelevant.
- Der Tausch ist Geometrie-Kosten → Material- und Speicher-Kosten. Das ist die ganze Entscheidung.
- Gut für High-Poly-Meshes, Kitbash, Landscape. Schlecht für typische optimierte Game-Assets.
- Skeletal, Morph Targets, Masked und WPO haben alle versionsspezifische Haken. Prüf deine Engine, keinen Blog.
- Dichte Nanite-Wälder fressen Cluster und Speicher. Nanite Foliage in 5.7 ist der echte Fix — erst Stabilität prüfen.
stat Nanite, Overdraw, Evaluate WPO, Raster Bins. Packaged Build.- Gib dir ein Millisekunden-Budget und halt dich dran.
Damit ist der Performance-Block durch. Nächsten Sonntag: dein erster Shipping-Build — Development vs Shipping, gekochter Content, und das Asset-Audit, das sich vor dem Knopfdruck lohnt.
— Marco
Comments
Leave a comment