Texture Pool ist immer 0

  • Hallo liebes Forum,


    Ich habe das Problem, dass mein Streaming -Pool immer 0 ist, aber der erforderliche Pool ist 50 MB.
    Die Warnung auf dem Bildschirm zeigt mir, dass der Texturpool 50 MB zu hoch ist.

    Aber die Poolsize Kapazität beträgt bereits 5000 MB.

    Wie ist das möglich?
    Textur-Streaming in den Projekteinstellungen ist aktiviert.
    Aber das Max Poolsize ist korrekt, die Engine verwendet es aber nicht.

    Hat dafür jemand eine Idee? Ist das ein Bug?

    • Offizieller Beitrag

    Hey, es gibt grundsätzlich zwei Möglichkeiten:

    1. Der Streaming-Pool wird nicht korrekt initialisiert.

    2. Der Streaming-Pool wird irgendwo überschrieben.

    Das Problem ist: StreamingPoolSize kann an mehreren Stellen gesetzt werden.

    Wenn du dein Projekt über den Launcher startest, wird ein Standardwert verwendet.

    Startest du das Projekt dagegen manuell oder über eine Verknüpfung, kann ein abweichender Wert für die Poolgröße verwendet werden.

    1. Projektstart über Verknüpfung

    Wenn du das Projekt über eine Verknüpfung startest, lohnt sich ein Blick auf den Zielpfad.

    Dort steht oft etwas wie:


    "C:\Program Files\Epic Games\UE_5.3\Engine\Binaries\Win64\UE4Editor.exe" "C:\Projekte\DeinProjekt\DeinProjekt.uproject" -StreamingPoolSize=0


    Dieser Startparameter überschreibt alles – selbst deine Projekteinstellungen – und setzt die Poolgröße auf 0.

    2. Konfigurationsdatei DefaultEngine.ini

    In deinem Projektverzeichnis gibt es die Datei:

    DeinProjekt/Config/DefaultEngine.ini


    Suche dort nach dem Abschnitt:

    [/Script/Engine.RendererSettings]

    Und füge folgende Zeile hinzu (oder überprüfe sie):


    r.Streaming.PoolSize=5000



    3. Aktuelle Einstellung im Spiel/Editor prüfen

    Im laufenden Spiel oder Editor kannst du den aktuellen Wert prüfen mit:


    r.Streaming.PoolSize

    • 0 = Pool ist deaktiviert oder wurde überschrieben

    • 5000 = alles korrekt

    Du kannst ihn auch temporär setzen mit:


    r.Streaming.PoolSize 5000



    Beachte:

    Die Einstellung gilt nur für die aktuelle Sitzung. Beim nächsten Start wird der Wert wieder auf den Standard zurückgesetzt – es sei denn, du setzt ihn dauerhaft über die .ini-Datei oder einen Startparameter.

    Zusätzlich solltest du Folgendes prüfen:

    1. Veralteter oder inkompatibler Grafikkartentreiber

      → Stelle sicher, dass dein Grafiktreiber aktuell ist (z. B. über GeForce Experience oder AMD Software).

    2. Unreal verwendet die falsche GPU (nur bei Laptops relevant)

      Bei Laptops mit integrierter und dedizierter GPU kann es passieren, dass Unreal nicht die leistungsstärkere Grafikkarte nutzt.

      Wie man zur Laufzeit genau erkennt, welche GPU verwendet wird, weiß ich leider auch nicht sicher – möglicherweise über externe Tools oder in der Log-Datei (Saved/Logs/...).

    3. Deine Grafikkarte hat zu wenig VRAM

      Bei sehr wenig verfügbarem Videospeicher kann Unreal den Streaming Pool deaktivieren oder automatisch auf 0 setzen.

    Tipp:

    Setze testweise einen kleineren Wert (z. B. r.Streaming.PoolSize 1000) und arbeite dich langsam hoch.

    So kannst du die Schwelle herausfinden, ab wann das Problem auftritt.

  • Erstmal 1000 Dank, dass du geantwortet hast. Ich hab darauf noch nie eine Antwort bekommen.

    Leider habe ich die meisten Dinge schon gecheckt.

    1. Ich starte mein Projekt immer via Projekt Ordner, also keine Verknüpfung (aber die Idee war stark, kannte ich noch nicht.)


    2.

    3. Habe ich auch gemacht, aber es ändert sich nur der "pool capacity" Wert. Der used wert ist immer 0.
    Ich hab das Gefühl, dass das ein Bug sein könnte. Ich habe dieses Problem aber bereits durch verschiedene Engine Versionen "mitgenommen". Ich dachte immer, dass sich das vielleicht irgendwann durch ein update löst.
    Liegt aber wahrscheinlich doch an mir.


    Ich arbeite mit einem Tower und meine Grafik hat 12GB Vram, sollte also reichen.

    Ich bin da echt mit meinen Latein am Ende.
    Vielleicht hast du ja noch eine Idee.

    • Offizieller Beitrag

    Was mir nicht klar ist: Ist das Streaming wirklich aktiviert?

    Öffne die Konsole und gib folgenden Befehl ein:

    r.TextureStreaming

    Ergebnis 1 bedeutet, dass das Texturstreaming aktiviert ist.

    Ergebnis 0 bedeutet, dass es deaktiviert ist.

    Unreal speichert interne Einstellungen im Ordner Saved sowie im Ordner Intermediate. Wenn du Unreal schließt und diese Ordner löschst, werden sie beim nächsten Start automatisch neu erstellt. Das kann manchmal Probleme beheben. Das ist vergleichbar mit dem Löschen von Cookies oder Verlauf im Browser. Falls du dir unsicher bist, sichere vorher dein gesamtes Projekt, bevor du diese Ordner entfernst.

    Log-Datei überprüfen:

    Pfad: Saved/Logs/Projektname.log

    Suche nach:

    r.Streaming.PoolSize

    r.TextureStreaming

    Du solltest eine Zeile finden wie:

    LogConsoleManager: Setting CVar r.Streaming.PoolSize=2000

    Wenn nach dieser Zeile weitere Einträge erscheinen, zum Beispiel von DeviceProfiles, Scalability oder WindowsEditor, dann überschreiben diese den zuvor gesetzten Wert.

    Suche in allen .ini-Dateien deines Projekts nach:

    r.TextureStreaming

    r.Streaming.PoolSize

    Pfadbeispiel: Config***.ini

    Die .ini-Dateien werden von oben nach unten gelesen, der zuletzt gesetzte Wert ist gültig und überschreibt vorherige Einstellungen. Typische Dateien, die hier Einfluss haben können: DefaultDeviceProfiles.ini, DefaultScalability.ini, Engine.ini, ConsoleVariables.ini.

    In deiner .ini ist r.VirtualTextures=True gesetzt. Falls ein Großteil deiner Texturen als virtuelle Texturen definiert ist, zum Beispiel durch den Material-Sampler „Virtual Texture“ oder ein entsprechendes Textur-Flag, greifen diese nicht auf den klassischen Streaming-Pool zu. Das würde erklären, warum Pool Used = 0 angezeigt wird, obwohl Texturen sichtbar sind. Schau dir außerdem die Textur-Flags an: Wenn der Flag „Never Stream“ gesetzt ist, wird die Textur nie gestreamt, und der Pool bleibt leer.

    Starte dein Projekt und gib in der Konsole ein:


    "r.TextureStreaming 1

    r.Streaming.PoolSize 1500"


    Nun den Pool anzeigen mit:

    "stat streaming"

    Jetzt müsste der Wert Pool Used hochgehen. Wenn das nicht funktioniert, gibt es zwei mögliche Ursachen:

    1. Streaming funktioniert nicht wegen Virtual Textures oder „Never Stream“-Flags.

    2. Ein Engine-Problem blockiert den Streaming-Pool.



    Zusammengefasst:

    1. Projekt laden.

    2. Mit ^ oder Tab die Konsole öffnen.

    3. Sicherstellen, dass Streaming an ist: r.TextureStreaming 1. Falls 0 zurückkommt, war Streaming deaktiviert, dann mit 1 aktivieren.

    4. Poolsize manuell setzen: r.Streaming.PoolSize 1500.

    5. Den Wert langsam erhöhen.

    6. Mit stat streaming die Stats aktivieren.

    7. Verhalten beobachten:

      • Pool Used steigt an → Streaming funktioniert, Problem liegt an Assets oder Einstellungen.

      • Pool Used bleibt 0 → Streaming-Manager greift nicht, Ursache liegt tiefer.

    Extremtest:

    r.Streaming.PoolSize 50

    Wenn jetzt sofort MIP-Levels nachgeladen oder heruntergestuft werden, ist Streaming aktiv. Bleibt alles knackscharf, auch bei 50 MB, ist Streaming faktisch aus.

  • Ich hab nun davon einiges versucht und als ich den Save Ordner gelöscht habe, war beim Restart tatsächlich der StreamingPool genutzt. Das hat mich ziemlich gefreut :D

    Dann ist mir aufgefallen, dass beim Map wechseln, auf meine aktuelle "FeatureTestMap" also der dem mein Projekt am Ende vom Aufbau her am nächsten kommen soll, der Streaming Pool wieder überschrieben wird.

    Ich hab dir mal ein Video gemacht, da kann man es echt gut sehen.
    Öffnen der Karte dauert ein Moment, musste vielleicht ein bisschen skippen.

    StreamingPool Video

    • Offizieller Beitrag

    Mhhh, schwierig per Ferndiagnose.

    Dass es passiert, glaube ich dir – nur kann ich dir auch nicht genau sagen, woran es liegt.

    Probiere mal folgende Befehle:


    Zitat

    r.TextureStreaming=1

    Damit schaltest du Textur-Streaming sicher ein.

    Zitat

    r.Streaming.UseFixedPoolSize=1

    Dieser Befehl daaktiviert die dynamsche Anpassung. (Nutze eine feste Größe und ändere sie nicht)

    Zitat

    r.Streaming.LimitPoolByBudget=0

    Ignoriert das Treiber Budget. Hierbei ändert die UE den Pool nicht mehr aufgrund von Daten von der GPU.

    Du sagst Unreal : Tu das was ich dir sage völlig egal was andere sagen

    Zitat

    r.Streaming.PoolSize=3000


    Der Pool wird damit auf 3000 MB festgelegt.

    Teste dies bitte nicht mit dem Standardwert (vermutlich 2000 MB), sondern mit einem anderen Wert – zum Beispiel 3000 MB – um sicherzugehen, dass die Änderung tatsächlich übernommen wird.

    Code
    r.TextureStreaming=1
    r.Streaming.UseFixedPoolSize=1
    r.Streaming.LimitPoolByBudget=0
    r.Streaming.PoolSize=2000
    stat streaming

    Beobachte, ob der Pool stabil bleibt.

    Du kannst diesen Wert auch dauerhaft im Projekt festsetzen, indem du den Code in die DefaultEngine.ini einfügst.

    Info:

    Von der gesamten VRAM-Größe deiner Grafikkarte werden in der Regel etwa 60 % für den Texture Pool genutzt. Der Rest wird für andere Aufgaben benötigt.

    Richtwerte:

    • 4 GB VRAM → ca. 1500–2000 MB für den Pool

    • 6–8 GB VRAM → ca. 2500–5000 MB

    • 10–12 GB VRAM → ca. 4500–7000 MB

    • 16 GB VRAM → ca. 7000–9000 MB

    Ich kann von hier aus nicht einschätzen, ob deine Szene überlastet ist – das ist nur eine Theorie:

    Wenn deine GPU überlastet ist, reduziert sie intern ihre Leistung, meldet dies als Fehler an Unreal, und Unreal setzt den Pool daraufhin auf 0.

    Das kann mit den oben genannten Befehlen nicht mehr passieren, weil du damit verhinderst, dass Unreal die Poolgröße automatisch anpasst. Das löst zwar nicht das eigentliche Problem, aber du weißt dann sicher, dass deine Grafikkarte überlastet ist und entsprechende Fehler meldet.

    Falls du die automatische Regelung wieder aktivieren willst, verwende diese Befehle:


    Code
    r.Streaming.UseFixedPoolSize=0
    r.Streaming.LimitPoolByBudget=1
  • Danke nochmal für deine Antwort.

    Ich habe mal etwas rückwärts gearbeitet und nach und nach dinge aus der Map entfernt und immer das Projekt neugestartet.
    Das Problem ist das Tool "massiveWorld". Son Landscape creator stuff.
    Der Main Actor reduziert sobald er gespawnt wird diesen Pool.

    Ich hab den Entwickler gefragt und der sagt "joar da werden halt einige Dinge geladen".
    Aber das kann ja den Used Pool auf 0 setzen. Auch nicht bei veränderten PoolSizes.
    Ich habe btw auch eine Map mit allen MassiveWorld sachen erstellt aber dann diesen Manager Actor gelöscht -> neustart und der Pool war dann auch okay. Vielleicht ist das dann son bisschen die unschöne Lösung, den immer zu löschen.
    Ich weiß nur nicht, ob das iwelche Effekte hat. (Du natürlich auch nicht, das ist mir klar.)


    Ich hab mal ein Video davon, vielleicht hast du ja eine Idee, wie ich da weiter vorgehen kann.

    StreamingPool Video

    • Offizieller Beitrag
    • Hilfreich

    Das Problem ist das Tool "massiveWorld". Son Landscape creator stuff.

    Ich weiß jetzt nicht genau was das ist.

    Ich hab den Entwickler gefragt und der sagt "joar da werden halt einige Dinge geladen".

    Kannt du das nicht über Levelstreaming lösen was wir da den genau geladen ?


    Aber es scheint dann tatsächlich so als wäre deine Grafikkarte überlastet.

  • Ich weiß jetzt nicht genau was das ist.

    Kannt du das nicht über Levelstreaming lösen was wir da den genau geladen ?


    Aber es scheint dann tatsächlich so als wäre deine Grafikkarte überlastet.

    Also im Discord meinten einige, dass das bei denen auch war. Natürlich nur in der Version die ich verwende :D

    Grafik glaub ich nicht, da ohne diesen Actor alles super reibungslos läuft. Aber ich kann den Actor wohl ohne Probleme löschen, und wenn das den Pool nach einem Restart dann wieder in Ordnung bringt, dann kann ich damit definitv leben.
    Ich weiß ja, woher das Problem kommt und das ich den Actor nur beim Landscape erstellen brauche, wenn ich das Tool verwende.

    Ich glaube, somit ist das Problem "gelöst".
    Ich beobachte das noch etwas.

    Vielen Lieben dank Sleepy :)