Swarm Agent / Building Lightning

  • Hallo zusammen (:

    Ich habe wie tausende Andere User festgestellt,
    dass das Lighting Building enorm lang dauert und nichts so wirklich voran geht.
    Dass das teilweise je nach Projekt mehrere Tage lang andauern kann und dass man das über mehrere PCs laufen lassen kann,
    ist mir bereits bekannt. Ich habe allerdings wenig Lust bei schon sehr kleinen Projekten jedes mal 5 oder mehr Std damit zu verbringen,
    auf den Building Lighting Prozess zu warten, daher stelle ich mir die Frage was es alles für Möglichkeiten gibt,
    um diesen wenigstens etwas zu beschleunigen. Sei es durch Editor Settings, Project Settings oder allgemeine Optimierungswege -im Bereich Licht Schatten und co.

    In einem Forum habe ich gelesen dass das Umstellen einer Funktion im Swarm Agent dazu verhelfen soll,
    diesen Building Lightning Prozess zu beschleunigen.
    Es handelt sich um das "EnableStandaloneMode" dies sollte von "False" auf "True" gesetzt werden.
    Das habe ich probiert doch keinerlei Unterschied gemerkt.
    Ich würde gern wissen für was genau diese Einstellung da ist im Bezug zum Building Prozess.


    Die Light Map Resolution kann zb herunter gesetzt werden, so viel weis ich schonmal.

    Dann wurde mir gesagt man solle ein LightmassImportanceVolume verwenden da dieses den Bereich eingrenzt in dem das Licht gebaked wird.
    Ist das soweit korrekt ?

    Habt ihr noch Möglichkeiten und Wege wie man ein Projekt anpassen / optimieren kann damit das Building schneller voran geht ?
    Vllt auch Windows interne Dinge die man Einstellt / Ändert.

    Das Einzige was ich kenne ist der Energiemodus. Meiner steht immer auf Höchstleistung.
    Doch vielleicht gibt es da noch mehrere Tricks aus dem Nähkästchen einiger Nutzer hier.


    Ich würde mich wahnsinnig über ein paar Vorschläge freuen,
    da es hier wohl einige Nutzer hat die weit aus mehr Erfahrung mit der Engine haben als ich.


    System:
    Win10Pro
    GTX 1080 ti
    16GB DDR4 3200
    Ryzen 5 1500x


  • Außer optimieren bleibt dir nix anderes übrig als lange zu warten, das berechnen wird des lichts wird in aufwendigen leveln immer zeit in anspruch nehmen. Der swam agent ist nur dann wirklich interessant wenn du ein windows netzwerk zur verfügung hast, weil damit du die möglichkeit hast das berechnen auf verschiedene systeme zu verteilen.

    Hier gibt es mehr infos zu swarm: https://docs.unrealengine.com/…lSwarmOverview/index.html

  • Habt ihr noch Möglichkeiten und Wege wie man ein Projekt anpassen / optimieren kann damit das Building schneller voran geht ?
    Vllt auch Windows interne Dinge die man Einstellt / Ändert.

    Das Einzige was ich kenne ist der Energiemodus. Meiner steht immer auf Höchstleistung.
    Doch vielleicht gibt es da noch mehrere Tricks aus dem Nähkästchen einiger Nutzer hier.


    Ich würde mich wahnsinnig über ein paar Vorschläge freuen,
    da es hier wohl einige Nutzer hat die weit aus mehr Erfahrung mit der Engine haben als ich.

    Das Problem ist, dass dein Licht auf der CPU gebaken werden muss. Die CPU baket aber so schnell wie eine Schnecke beim Marathonlauf.

    Klar kann man die Resolution runterschrauben, sollte man auch machen bei Objekten wo das Bake Ergebnis weniger wichtig ist.

    Das Problem ist auch folgendes: Umso größer deine Meshes sind, umso größer wird auch die LightUV (logischerweise) daraum kann es manchmal sinnvoll sein dies Meshes nicht so groß zu machen was aber natürlich auch Performance kostet.

    Viel viel viel Wichtiger ist es aber unnötige Bake Flächen zu vermieden. Beispiel: Du steckst zwei Wände ineinander, an den Stellen wo sie sich berühren wird schwarz in die Light UV gebaken.

    Du könntest die Meshes entweder passend bauen oder an diesen Stellen die Light UVs komplett löschen. SInd keine LightUVs vorhanden muss auch nix gebaken werden, ergo es geht schneller.


    Nun aber nochmal zurück zur CPU den viel besser als dass alles auf der CPU zu baken ist wie gesagt dass auf der GPU zu baken. GPU Baken ist bei der Unreal Engine nicht serienmäßig dabei aber es gibt einen sehr pfiffigen Chinesen der schon eine weile einen GPU Baker kostenlos anbietet und ihn auch von Version zu Version up to date hält.


    Den kann ich zu 100% empfehlen:

    https://forums.unrealengine.co…-luoshuang-s-gpulightmass


    Kleiner Tipp: Fürs installieren musst du den Baker überschreiben, du kannst den Ordner aber auch einfach umbenennen weil du sonst den Engine neuinstallieren willst, falls du den Bake einmal nicht mehr haben willst.


    Was vorher stunden gedauert, dauert dann noch Minuten.

    Mit tut jeder Mensch Leid, der nicht genug Phantasie hat, um ein Wort mal so und mal so zu schreiben.

    Mark Twain

  • Lampen von Static auf Moveable setzen und du bist das Problem los^^

    Hab noch nie verstanden, wieso man das Licht backen muss, hab da nie nen Unterschied erkannt...

    Das macht man aus Performance gründen. Pack mal dein Level voll mit DynamicLights. Diese berechnen das Licht in Echtzeit. Das heißt die Lichtberechung findet beim Spieler statt. Beim StaticLight gehts es darum das es nicht in Echtzeit gerendert bzw brechnet werden muss. Das passiert schon vorher beim Entwickler und der Spieler hat mehr Leistung für andere Dinge übrig. Das brauch also die Grafikkarte nicht berechnen. Jetzt ist es soweit das man Raytraycing einführt. Hier spart der Entwickler fast komplett das berechnen des Lichtes. Das macht dann jetzt die neuen Grafikkarten der Spieler. Ab RTX20er Serie. AMD legt da auch nach. Aber andere Geschichte. Raytracing ist das berechnen in Echtzeit beim Spieler und frisst aber nunmal leider sehr viel Performance. Raytracing kennt man eigtl aus 3D Programmen die Rendern. Ich bake daher auch das meiste Licht. Besonders Umgebungslicht das z.B. von der Sonne kommt. Es ergibt beim baken ein realistisch Lichtverhältniss( Reflektionen) Benutze ich eine Taschenlampe z.B. bake ich das Licht natürlich nicht weil es die ganze Zeit aktualisiert wird.


    Also Licht das sich bewegt wird nicht gebaked da es die ganze Zeit neu brechnet wird. Licht das "für immer" an der selben Stelle ist muss nicht neuberechnet werden und kann gebaked werden um performance beim Spieler zu sparen.

  • nachm fällen immer noch nen Schatten wirft^^

    Nenne ich den Luky Luke Effekt :)


    Ein Baum den man fällen kann wäre demnach auch ein Bewegliches Objekt und deswegen Dynamisch.


    Static Factory ist glaube ich, zumindest zu einem großen Teil aus dynamischem Licht oder die haben andere Tricks verwendet.

    Mit tut jeder Mensch Leid, der nicht genug Phantasie hat, um ein Wort mal so und mal so zu schreiben.

    Mark Twain

  • Hier noch mal ein paar grundsätzliche Dinge:


    1. Light baking "kann" die Performance enorm verbessern. Man sollte sich aber mal realistisch für sein Projekt ansehen wieviel es exakt bringt. Sprich du machst mal einen built - bakest wie immer 5 Stunden lights und siehst dir die Performance an, sprich FPS in verschiedenen Spielsituationen. Dann machst du einen built ohne baking (Project settings-->rendering-->"allow static light" haken raus) und machst davon mal nen built. Unterscheided sich die Performance nicht wesentlich dann kannst du auf das light baking generell verzichten.


    2. Luoshangs GPU lightmass hat Sleepy ja schon erwähnt. Wenn du eine "dicke" nvidia Karte hast beschleunigt das die Dinge extrem. Aber nur mit Nvidia wohlgemerkt da cuda. Dann ist es aber mit einer guten karte um den Faktor 10 schneller. Alternativ gibts im DEV-rendering branch der UE4 schon länger Epics GPU Lightmass - mit mässigen Resultaten. In 4.26 dev rendering gibt es die GPU Lightmass aber mit path tracing und denoiser was wirklich erstmals brauchbare Resultate erzielt.

    https://github.com/EpicGames/UnrealEngine/tree/dev-rendering


    3. Netwerk Render nodes. Wenn du sehr viele Computer oder Server hast kannst du die Last auf fast beliebig viele Rechner im Netzwerk verteilen. Das lohnt sich wenn du keine passende GPU (NVidia) hast aber viele Desktops oder Server ins Netz anbinden kannst. Ich hatte in der Firma mal 5 alte Server nur als light baking network nodes verwendet - da die viele Cores hatten hat das die Sache extrem schneller gemacht.


    4. Das lighting ans Ende der Prioritäten verschieben. Klingt dumm weil das Spiel ja gut aussehen soll - aber wenn du oft builts machst - z.B. um im Multiplayer zu testen - dann gehst du kaputt wenn du für jeden Built Stunden lang Lichter baken musst. Hier wie in Punkt 1 beschrieben Allow Static lighting raus, und erst vor dem endgültigen release damit beschäftigen, das spart dir viele Stunden oder Tage unnötige Light builts. Wenn du dich gerade gar nicht mit lights beschäftigst macht es auch keinen Sinn mit dem Baking Stundenlang den Rechner zu blockieren wenn du gerade was ganz anderes testen willst.


    5. Das Beleuchtungskonzept überdenken. Grundsätzlich bringen die static lights bessere performance als movable oder stationary. WIe in Punkt 1 erwähnt solltest du für deine Spielsituation erst mal rausfinden "wieviel" dir das baking aktuell bringt. Das ist natürlich auch von den Lichtern abhängig und man kann die Beleuchtungssituation allgemein betrachten. Sind evtl. Lichter evtl redundan oder überlappend (Werden nach dem lighting built rot durchgestrichen im editor dargestellt)? Sind evtl. Lichter auf "Movable" oder "stationary" obwohl sie weder ihre Werte oder Position ändern? Evtl können viele point lights die du zur "aufhellung" platziert hast mit 1 oder 2 directional lights ersetzt werden. Kann evtl die Attenuation eines lights reduziert werden? Es gibt noch viele andere Strategien mit denen man die Beleuchtungssituation entlasten kann. Ich hatte mal für ein projekt eine Map analysiert wo ein Supermarkt dargestellt war - mit ungelogen HUNDERTEN von point lights. Light building hat ewig gedauert. Die meisten waren in Kühlschränken und Tiefkühltruen verbaut teilweise 4 Stück pro Truhe. Ich habe alle entfernt - und ungelogen - es sah sogar besser aus und hat das light building auf einen bruchteil reduziert.

  • WOW !
    Ich danke euch allen vielmals für die Anteilnahme hier an meinem Post.
    Damit helft ihr mir wirklich sehr. So viel Informationen habe ich nicht erwartet.
    Tolles Forum (:

    Leider war ich ein paar Tage abwesend weshalb ich mich erst jetzt zurückmelde.
    Ich werde mich die nächsten Tage mal dran machen die ganzen Tipps abzuarbeiten.

    Vielen vielen Dank !