Jump to content
Unity Insider Forum

Performance ruckelt


Sugarbaby

Recommended Posts

Hi,

Inzwischen bin ich ziemlich voran gekommen.

Meine 3d-Visualisierung für eine Cardboardpresentation eines Messestands nimmt Formen an. Texturen sind eingearbeitet. Die Animation des Industrie Roboters läuft. HDRI ist als Umgebung und Licht mit drin...

Das Problem, vor dem ich stehe ist: es ruckelt beim umsehen.

Die Anwendung für´s Android-Handy ist ca. 66 MB groß. Am Prozessor des Handys sollte es nicht liegen. Es hat 4 GB RAM und einen Octacore Max 1,8 Hz Prozessor. 48 GB verfügbar.

Wo kann ich feinjustieren? Texturen verkleinern? Kompressionen aktivieren, wenn Ja, welche?

P.S.: Der Profiler...nutzt der mir was in dem Zusammenhang?

Cheers, SB

Optimierung.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb Sugarbaby:

Der Profiler...nutzt der mir was in dem Zusammenhang?

Ja. Du kannst einen Development Build auf Android laden und den Profiler damit über Netzwerk verbinden.

Die Schwachstelle bei Smartphones ist in der Regel der Grafikchip. Deshalb ist besonderes Augenmerk zu legen auf Polygonzahl und die Menge an Draw Calls. Meiner Erfahrung nach sind Handys darüber hinaus noch einmal etwas anfälliger für Performance-Einbuße durch große Polygone (also so, dass sie größer dargestellt werden als der Bildschirm) und viel Overdraw.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke, Sascha, für den Tipp!

Bin´ allerdings noch nicht dazu gekommen, mich hier einzugrooven...mach ich als Nächstes.

Dadurch, dass ich das Umgebungs-HDRI verkleinert habe auf 2096px Auflösung, ist die Ausbabe-Dateigröße der .apk um ein Drittel auf 40 mb geschrumpft. Ruckeln tut es noch genau so. Da kann ich allerdings noch keinen wirklichen Schluß daraus ziehen...

Ich probiere jetzt auch noch einmal die anderen Kompressionsverfahren () aus, und sehe zu, was sich da tut um eine flüssigere Darstellung zu erreichen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Äh... Du weißt aber, dass die Größe der APK keinen EInfluss auf die Framerate hat, oder? Und Komprimierungsverfahren helfen nur bei Ladezeiten, oder am anderen Ende des Spektrums eben bei Downloadzeiten des Spiels. Am Ende wird alles unkomprimiert in den (Grafik-)Speicher geladen.

Was ich in der Liste noch vergessen habe, sind Texturgrößen. 1024px² ist nur für Oberklasse-Smartphones okay, und bei VR wäre ich da auch vorsichtig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm... heißt das, dass die GPU tatsächlich bei jedem GPU Lookup noch einmal Extraarbeit leisten muss?

E: Aber ja, habe gerade mal nachgelesen. Lernste immer mal was Neues - hätte ich nicht gedacht. Dank dir!

@Sugarbaby Solltest du aber trotzdem nicht mit übertreiben. "Kleiner im VRAM" heißt keineswegs automatisch "schneller zu rendern".

Link zu diesem Kommentar
Auf anderen Seiten teilen

DXT Komprimierung probiere ich aus...

Es ruckelt immer noch: Ich habe mir jetzt einen abgebrochen, verschiedene Stellschrauben zu modifizieren.Texturen, Animation, Filmclip auf nem´ Screen - alles habe ich komprimiert.

Hauptproblematik vielleicht: Stelle ich in den Qualität Settings das AA auf "Disabled", läuft das Ganze flüssig - der animierte Roboter, der Clip, das umhersehen...Alles gut. Bis auf das ausfransen der virtuellen Objekte. Das ist Mist!

Stelle ich, um das "treppen" abzumildern, AA von  "disabled" auf "2x Multi Sampling" kommen Roboter, Animation, Look around in grobes stottern.

In den Qualtysettings hat selbst das zweitschlechteste Qualitylevel "Low" ein 8faches MultiSampling....hmmmm´...

Was könnte ich noch tun? Ne´ Idee, Jemand...

Cheers, SB

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mehr Informationen über die Szene, wäre nicht schlecht gewesen. Wieviel Tris und Batches hat deine Szene? Einfach "Stats" Button über der Szene anklicken, dann sieht man das schon :)

Wieviel Leuchtquellen hast du? Wieviel FPS hast du, ruckelt es ständig, oder nur wenn Kamera auf bestimmtes Objekt gedreht wird? Welche Auflösung haben die Texturen?

Und was für GPU hat dein mobiles Gerät, oder wenigstens was für Marke und Modell? :)

Benutzt du  die LWRP oder standart Pipeline? Trotz der angeblich für Mobile Geräte optimierte Pipeline, habe mit LWRP nur schlechte Erfahrungen gemacht. Ich habe praktisch überall deutlich weniger FPS mit der Pipiline, trotz ausgeschalteten AA. Und wenn ich noch Post Processing Bloom verwende, dann wirds nochmals viel schlimmer. So habe ich z.B in einer fast leeren Szene mit Standart Pipeline und Post Processing Bloom 39 FPS und die selbe Szene mit LWRP und Post Processing bloom nur 27 FPS auf einem Adreno 510 GPU Smartphone, was eigentlich noch mittelmässig ist.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi und Danke für´s einmischen...

Stats-Screenshot s. u./ 1Leuchtquelle/ Texturen runtergerechnet mit "Override for Android"/ja, ruckelt ständig (wenn AA in den Qualitysettings eingestellt ist - andernfalls sind die Kanten echt sägeblattartig)

FPS: laut Stats um die 110.

Gerät: Xiaomi Redmi Note 5 6 Zoll: 4 GB RAM/Octacore Max 1,8 Hz Prozessor. 48 GB verfügbar.  GPU:Qualcomm Adreno 506

 

In der Szene: 1 Industrieroboteranimation/1 Screen mit einem Film im Loop/ Sounddatei Stimmengewirr und Robotergeräusche

 

Pipeline: Die Standard Pipeline.

 

 

 

unity stats.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Über eine Millionen Tris sind für ein Smartphone Spiel viel zu viel, erst recht für eine VR Anwendung..

Besonders, weil deine Objekte im Screenshot nicht sehr highpoly aussehen. Ich schätze dein Roboterarm macht davon einen großen Teil aus.

 

Ist nicht ganz mein Gebiet, aber ich glaube ~2,5k Batches sind auch sehr viel. Wenn du mal nach "unity batches reduzieren" googelst, solltest du einiges finden, wie du die reduzieren kannst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hast echt zu viel Tris und Batches, sogar für aktuelle highend mobile Geräte ist das noch zu viel. Vor allem, wenn du noch in der Zukunft deine Szene verschönern willst, durch weitere Lichtquellen, Post Processing ect. wirds sehr problematisch. Wie schon oben geschrieben, kannst du Batches reduzieren in dem du Objekte gleichen Textur und Material zu einem Mesh kombinierst. Polygone lassen sich auch oft ohne großen Qualität Verlust entfernen. Stell sicher, dass bei dir bei der Kamera auch Occlusion Culling aktiviert ist.

AA wirkt leider sehr auf Performance aus. Ansonsten kannst du über Post-Process versuchen mit FXAA bischen zu glätten, sieht vielleicht ein bischen schöner aus, ohne starken Performance Verlust.

fxaa.png.b2845e3a4aa29a6869d8ec3b24628d77.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Um die draw calls zu verringern würde ich auch versuchen soviel statische objekte wie möglich zusammen zu fügen, am besten die draw calls auf unter 100 reduzieren, wobei das wahrscheinlich auch noch zu viel ist. Auf meinem galaxy s5 ruckelt es auch bei 30k tries und 40 draws 😁

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke!

Wie fügt man die statischen Objekte denn zusammen? Und senkt das dann "von selbst" die draw calls?

Neben dem Roboter hat höchstens noch der zylindrische DisplayTisch viele Polygone. Das Andere sind Alles "Kisten". (Allerdings aus c4d importiert, sollte das auch noch einen signifikanten Unterschied machen...)

SB

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...