Driller Geschrieben 10. Dezember 2015 Melden Share Geschrieben 10. Dezember 2015 Mein Lieblingsthema Resourcenverwaltung ^^ Ich lasse mehrere Chunks spawnen. Ein Chunk hat ein Volumen von 10x40x10 blockähnlichen Elementen. Diese Elemente führen nichts dauerhaft aus. Lediglich massigen Code am Beginn der Scripts. Mein Problem ist, sobald ich die Kamera auf einen einzelnen Chunk richte, sinkt die FPS-Rate unter 10, der Gedanke daran, dass ich später jedoch viel mehr solche Chunk generieren lassen muss lässt mich verzweifeln! Laggt es tatsächlich nur weil so viele Elemente angezeigt werden, oder hat das einen anderen Grund? Und wie kann ich das verhinden, bzw die Performance vebessern? Danke im Vorraus, Liebe Grüße -Driller Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 10. Dezember 2015 Melden Share Geschrieben 10. Dezember 2015 Du hast 4000 objekte pro Chunk? Schau mal auf die DrawCalls in den Render Stats, ist diese Zahl hoch? Dann hast du ein Problem Schau dann einfach mal was Batching und Co angeht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
IBGKDennisI Geschrieben 10. Dezember 2015 Melden Share Geschrieben 10. Dezember 2015 Könnte es sein das du einfach 4000 Cubes spawnst? Wenn ja dann hast du die Antwort^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiwaz Geschrieben 10. Dezember 2015 Melden Share Geschrieben 10. Dezember 2015 Ein Chunk hat ein Volumen von 10x40x10 blockähnlichen Elementen. Diese Elemente führen nichts dauerhaft aus. Lediglich massigen Code am Beginn der Scripts. Was sind denn "blockähnliche Elemente"? ^^ Und was für Code wird denn da ausgeführt? Spawnst du da, wie Dennis schon frage, einfach Cubes oder wird das ne VoxelEngine? Generell solltest du sehr viel dafür machen, dass NUR das was man sieht auch wirklich erzeugt wird. Irgendwann (oder v.a. wenn man es ungeschickt macht) übersteigt der Aufwand, den man betreibt um alles zu analysieren und auszuwerten den Nutzen, aber es gibt wahnsinnig viele Optimierungen im Hinblick auf Voxel. Aber da ist quasi immer, egal was man macht, noch relativ großes Optimierungspotential da ^^ Aber am besten erzählst du noch ein bisschen mehr, was du eigentlich genau im Sinn hast und wie du es momentan versuchst umzusetzen, dann kann man dir auch ganz gute Ratschläge geben ^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Driller Geschrieben 11. Dezember 2015 Autor Melden Share Geschrieben 11. Dezember 2015 Okay, danke für die bisherigen Antoworten Das Würfel-ähnliche Objekt ist ein Würfel, nur hat er 56 Vertices. Also ist er frei verformbar. Die Würfel überprüfen am Beginn des Scripts ob rundumliegende Objekte existieren und formen sich nach denen um. So soll eine Welt entstehen, also ja, strenggenommen ist es eine VoxelEngine ^^ Alle sieht man nicht, doch da man die Blöcke später abbauen können soll, Müssen sie generiert werden. Schließlich können Sie ja später ersichtlich sein Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 11. Dezember 2015 Melden Share Geschrieben 11. Dezember 2015 Du willst also eine Voxelengine die nicht nur Würfel wie Minecraft darstellen kann sondern auch schräge Flächen/Organischeres? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Driller Geschrieben 11. Dezember 2015 Autor Melden Share Geschrieben 11. Dezember 2015 Genau, den "Würfel" hab ich in Blender erstellt, den ändere ich nur in der Start-Funktion. Keine Update-Funktionen sind in Verwendung. Hab grade 36 (6x6) Chunk generiert (mein Armer Rechner) (36 * 4 000 = 144 000 Elemente), hier der Link zu den Render Stats: http://www.directupload.net/file/d/4199/m27bj87f_png.htm Das mit dem Verändern der Oberfläche funktioniert bereits einwandfrei. Wenige Objekte (so 5 Elemente) formen sich richtig um, so dass Sie aussehen, als ob Sie ein zusammenhängendes Objekt wären. Nur treten da starke FPS-Probleme auf wenn ich 4 000 Elemente generieren lasse Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Driller Geschrieben 11. Dezember 2015 Autor Melden Share Geschrieben 11. Dezember 2015 Zu meinem Code... Ich habe 5 Scripts die sich mit der Weltengenerierung befassen: WGenBasic - Ist am Überobjekt (leer) angebracht, generiert eine Anzahl an Chunks und gibt denen das Script WGenChunk WGenChunk - Generiert in das leere Chunk Objekt mehrere leere "Stack"-Elemente rein. (Also Element-Stapel) und weist denen das WGenElement-Script zu. WGenElement - Generiert bis zu einer Zahl Elemente. Weist ihnen die unteren beiden Scripts zu (ElementBasis, ElementMaterial) ElementBasis - Sehr sehr umfassendes Script, prüft umliegende Elemente, verformt die eigenen Verts etc. ElementMaterial - Erkennt ob Element Stein/Erde ist und weist entsprechende Farbe(!) zu. Keine Textur bist jetzt nur Farbe. Wie gesagt, nur Start-Funktionen und andere Funktionen. Keine Update-Funktionen! Falls ihr euch mal einen gewisses Script ansehen wollt, poste ich ihn gerne rein. Nur ist es viel zu lang wenn ich alle 5 jetzt reinposte Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 11. Dezember 2015 Melden Share Geschrieben 11. Dezember 2015 Für das was du vorhast gibt es eigentlich designierte Algorithmen, was du machst erscheint mir sehr ineffizient zu sein, aber wenn es funktioniert.. Stichworte: MarchingCubes, DualContouring, SurfaceNets Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaverickHorn Geschrieben 12. Dezember 2015 Melden Share Geschrieben 12. Dezember 2015 Zu meinem Code... Ich habe 5 Scripts die sich mit der Weltengenerierung befassen: WGenBasic - Ist am Überobjekt (leer) angebracht, generiert eine Anzahl an Chunks und gibt denen das Script WGenChunk WGenChunk - Generiert in das leere Chunk Objekt mehrere leere "Stack"-Elemente rein. (Also Element-Stapel) und weist denen das WGenElement-Script zu. WGenElement - Generiert bis zu einer Zahl Elemente. Weist ihnen die unteren beiden Scripts zu (ElementBasis, ElementMaterial) ElementBasis - Sehr sehr umfassendes Script, prüft umliegende Elemente, verformt die eigenen Verts etc. ElementMaterial - Erkennt ob Element Stein/Erde ist und weist entsprechende Farbe(!) zu. Keine Textur bist jetzt nur Farbe. Wie gesagt, nur Start-Funktionen und andere Funktionen. Keine Update-Funktionen! Falls ihr euch mal einen gewisses Script ansehen wollt, poste ich ihn gerne rein. Nur ist es viel zu lang wenn ich alle 5 jetzt reinposte So wie es für mich aussieht hast du erstens viel zu viele batches und zweitens zu viele tris. Das mit den Batches kannst du hinbekommen indem du deine Chunks in ein Mesh bakest. Das funktioniert sehr gut und du sparst dir eine Menge Overhead. Siehe dazu: http://docs.unity3d....bineMeshes.html Damit schaffst du es auf ein batch pro chunk. Was die Anzahl deiner tris angeht müsste man wissen wie genau dein Code funktioniert. Wie wäre es vielleicht mit einem LOD System? Ansonsten lohnt es sich auf jeden Fall sich mit den von Mark genannten Themen zu beschäftigen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 12. Dezember 2015 Melden Share Geschrieben 12. Dezember 2015 Woher hab ich den Nick "Mööp"? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaverickHorn Geschrieben 12. Dezember 2015 Melden Share Geschrieben 12. Dezember 2015 Woher hab ich den Nick "Mööp"? sorry, habe den namen über dem Bild verwendet Ich meine natürlich Mark Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.