Jump to content
Unity Insider Forum

Profiler mal wieder


Kojote

Recommended Posts

Moin!

Gerade bin ich mit dem alten Profiler zurecht gekommen, baut Unity ihn komplett um - unübersichtlicher als vorher und noch verwirrender - drum mal wieder ne Frage.^^

Ich habe in meiner gesamten Scene 828 Drawcalls, mit allem Drum und Dran. Nach dem was man liest, sollte das ein gutes Ergebnis für ein 3D Spiel sein.

Batches habe ich 517. Tris knapp 600.000. Auflösung 1920x1080.

Nun meine blöden Fragen!

Laut Stats in der GameView habe ich 180,9 FPS. Das selbe sagt mir der Profiler, so lange ich ganz unten nicht "Other" in die Statistik einbeziehe (nebenbei VSync ist  immer aus). Sobald Other das Häkchen bekommt, geht die FPS Zahl von stolzen 200 auf bis zu 25 runter, was ziemlich Mies ist. Auch mein selbst geschriebenes FPS Script, gibt mir diesen Wert aus, gerade eben 27,77 FPS.

Nun mal meine Frage, was ist in Other drin und warum sind meine FPS Werte so so schlecht?

Denn selbst wenn ich alles aus meiner Scene entferne, nur das Terrain lasse und den Player, wo ich auch alles entferne, bis auf die Steuerung, gewinne ich nicht mehr als 20 - 30 FPS. 20 - 30 FPS, dass ist alles was meine Scripte, Partikel, Modelle und Grafiken verursachen. Woher also dieser dermaßen schlechte FPS Wert?

EDIT: Was mich halt auch wundert ist, dass das Starten der GameView plötzlich viel länger dauert. Sonst nach 1-2 Sekunden, braucht er jetzt plötzlich bis zu 30 Sekuunden. Die Gfx.ProcessCommands dauern dann fast 900 ms. Kann mich irren, aber ich hab gestern nen dritten Monitor angeschlossen. Könnte seit dem sein. Hat das was damit zu tun?

Hoffe ihr könnt mir helfen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe mir das gerade mal bei mir angeschaut. Da ist das so ähnlich.

Laut Dokumentation ist im Other bereich das hier drin:
 

Zitat

How much time your application spends on code that does not fall into any of the other categories. This includes areas like the entire EditorLoop, or the Profiling overhead when profiling Play Mode in the Editor.

Wenn du den Profiler mal pausierst und fährst dann mal mit der Maus im CPU Usage Fenster zu den Spitzen, dann kannst du unten in der Timeline sehen, dass die Zeit fürs Warten drauf geht. Du wirst beim Profiler und bei den Other Threads  diverse Semaphore.WaitForSignal Bereiche sehen, die viele Millisekunden lang sind.

Um die zusehen musst du aber mal Deep Profile anschalten. Da bekommst du viel mehr Infos.

Mach dir um Other ersteinmal keinen Kopf. Um zu sehen, wie deine Framerate außerhalb des Editors ist, musst du dein Spiel einfach mal builden und dann gucken, wieviele FPS wirklich im Normalbetrieb erreicht werden. Ich gehe davon aus, dass du ähnliche Werte wie im Editor ohne Other sehen wirst.

Und immer daran denken: Das ist eh nur auf deinem System so! Mit deiner Grafikkarte und deinem Prozessor. Du musst sowieso später mal auf unterschiedlichen Rechnern testen und dann evtl. optimieren.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mit dem Deep Profile probier ich gerade mal aus.

Was mich nun ein wenig wundert, ich habe mir so ein Mesh-Combiner geholt. Damit hab ich jetzt in der Game-View zwischen 90 und 130 FPS, im Build genau 60 FPS durchgehend. Warum verliere ich nun auch noch hier 40 FPS, sollten es nicht mehr sein, da der Editor nicht mehr da ist?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schau ich gleich mal nach, stimmt, dass deutet auf VSync hin.

Noch mal ne Frage zu OCC, ich hab jetzt mal alle Steine und Co. mit FBX exportiert, zusammengeführt und nur ein Material drauf gehaun und reimportiert. Jetzt verbrauch ich zwar nen Berg Materialien weniger, aber OCC funktioniert bei mir nicht mehr. Warum das? Müsste das nicht trotzdem bei einem großen Objekt gehen.

Im Endeffekt will ich das auch nur wegen dem Material machen. Ich hab im Endeffekt für die Scene gut 7 Meterialien. Hab aber im Profiler im Endeffekt aber 180 Materialien, da er Objekte einzeln mit dem Material bewertet, die Materialien würde ich gern zusammen fasse. Würde einiges an Rechenleistung sparen.

 

EDIT: Bingo, VSync war an. Deaktiviert sind es nun die selben Werte wie in der GameView, wenn ich Other deaktiviere.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gibt es im Profiler eine Möglichkeit die Liste der genutzten Texturen anzeigen zu lassen?

Was mich gerade wunderte war, dass ich für Steine und Bäume nur 2 Texturen nutze. 5 weitere für das Terrain. Für Tiere noch mal 5 Texturen nutze, aber im Profiler angezeigt bekomme, dass ich 156 Texturen und fast die selbe Anzahl an Materialien nutze.

Wie kommt das? Zählt er hier auch das UI und Co. mit?

EDIT:

Villeicht mal ganz interessant für andere, ein Recourcen Checker:

https://assetstore.unity.com/packages/tools/utilities/resource-checker-3224#content

Funktioniert mit meiner Version 2018.4.15 ohne Probleme.

Ganz interessant was er ausgibt und was man gar nicht denkt:

130 Texturen mit 295 MB

45 Materialien

257 Meshes mit 1.1 Mio Tris

Gerade das mit den Texturen überrascht mich, aber es ist mal eine ganze Liste da, inkl. Vorschau. Was da alles an Texturen zusammen kommt, kaum zu glauben! Gerade die Partikel hab ich vergessen. Gerade mein Endportal allein braucht 6 verschiedene Texturen um zu funktioneren. Blattpartikel, Schmetterlingpartikel, Glühwürmchen, etc. Dann kommt auch noch das UI dazu, habe es zwar mit dem Sprite Packer zu nem Atlas gemacht, kommt aber trotzdem so in die Statistik.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Spiel noch etwas mit werten rum und hab nun bei meinem Spiel 550 DC bei Ultra Einstellungen. Knapp 200 bei den niedrigsten Einstellungen. Bin mit den Werten so eigentlich sehr zufrieden. Was mich wundert ist jedoch die Frame-Zahl. Ich erreiche bei 550 DC eine Framezahl von ca. 110. Vorher hatte ich 860 Frames und hatte ca. 95 Frames. Warum habe ich bei fast einer halbierung der DCs nur ein paar Frames gewonnen?

Glaub die Frage kommt immer wieder mal, aber gibt es ungefähr anhaltswerte, was gut und schlecht ist?

Ich habe jetzt ca. 550 DC bei Ultra Einstellungen und ca. 400 Batches. Ist das für ein Low Poly Spiel für eine 500 x 500 m Landschaft eher gut oder schlecht? Habe gelesen das gerade die Batches "schlimmer" sind als DC. Ich benutze schon Batching aber bekomme die 400 nicht weiter runter. Kann man da noch was machen?

EDIT:

Was mich nun überrascht ist folgendes, ich habe in meiner Landschaft die Bäume als Objekte platziert. Und nun mal die Übersicht:

Alle Bäume und Wurzeln: 125 Batches

Alle Steine: 110 Batches

Das Terrain an sich: 341 Batches!!

Wasser: 10 Batches

 

Warum kostet mich das Terrain an sich schon 341 Batches? Schaue gerade, mein Grafiker hat 16 Texturen zum Terrain anschmadern verwendet. Ist hier das Problem zu finden?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zitat

Warum habe ich bei fast einer halbierung der DCs nur ein paar Frames gewonnen?

Dann hast du kein Bottleneck in deinem Spiel, was gut ist :)

Zu viele Draw Calls sind gefährlich, weil der CPU dann zu lange brauchen würde um vorzubereiten, was und wie die GPU zu rendern habe, währenddessen GPU einfach nichts zu tun hat und auf den Prozessor warten muss. In deinem Fall hat die Verringerung von Draw Calls wenig Einfluss auf Peformance, weil der CPU schnell mit GPU Anweisungen fertig wird, und Verringerung der Drawcalls von 550 auf 200 nur minimal mehr Zeit für die Grafikkarte beschafft.

Was gut und schlecht ist, hängt davon ab, für welches Plattform du entwickelst, bei modernen Konsole Spielen sollten 1500-2000 DC in Ordnung sein, beim Gaming PC 2000-3000 DC geht gut. Mehr würde eventuell schon stärker sich auf Performance auswirken.

Zitat

Warum kostet mich das Terrain an sich schon 341 Batches?

Batches Anzahl hängt stark von Materialanzahl, Objektanzahl, Schatten und Lichtquellen (vor allem bei forward Rendering) ab. Auch Unity führt hier bestimmte Optimierungen durch. So werden Objekte bis die bis zu 300 Polygone haben, und mit demselben Material "zusammengepackt" beim Zeichnen, wenn du dynamic Batching aktiviert hast.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...