Shading - Nachziehen bei der Darstellung

  • Hallo ihr Lieben!


    Mir ist schon vermehrt aufgefallen, dass die Unreal Engine einen bestimmten Shadingfehler auswirft. Dieser verursacht ein Nachziehen der vorher berechneten Bilder und das pro Frame per Second. Mir ist das vor allem vermehrt bei schnelleren Bewegungen aufgefallen wie beispielsweise das schnelle Drehen der Kamera oder eine übermäßige Beschnleunigung von Characteren, Autos usw. Wie bekomme ich diese Merkwürdigkeit in den Griff? Gibt es Optionen, bei denen ich dieses Verhalten ausstellen bzw. verfeinern kann? Woran liegt das, das diese seltsame Art der Visualisierung zustande kommt?


    Wenn ihr Infos zu Einstellungen der Grafik oder der User-Settings braucht, sagt bescheid.


    Danke schon mal für etwaige Tipps!


    Liebe Grüße, GameMaker

  • Oh, ich denke, ich habs rausgefunden. Scheinbar liegt es an der Anti-Aliasing Methode. Ich habe die Einstellungen von

    "Temporal Anti-Aliasing (MSAA)"

    auf

    "Temporal Super-Resolution (TSR)"

    gestellt.


    Aber kann man das Anti-Aliasing nicht auch noch irgendwo finetunen?

    Ich hab gehört, dass das wohl gehen soll.

    • Offizieller Beitrag

    Hi das Problem ist ein Motion Blur der durch schnelle Bewegungen zustande kommt. Ein Motion blur ist ja in der Regel gewollt aber in deinem Fall entsteht er ungewollt.


    Versuch mal folgendes:

    1.Geh in deine Projektsettings und suche nach Velocity Pass. (Ich glaube unter Rendering)

    2.Stell diese Einstellung auf" Write during Base pass" um


    Dass über das Anti Aliasing zu lösen ist defintiv auch eine Möglichkeit und nicht falsch.


    Eine andere simple Möglichkeit wäre, die Kamera Bewegung weniger Ruckartig und smoother zu machen.


    Sehr oft wird in Games auch gezielt ein Motion blur verwendet um genau solche Probleme zu verstecken. DU könntest also auch ein Blur über die Posteffects einbauen somit sieht es zumindest nicht mehr nach einem Fehler aus.

  • Wie könnte das aber durch den Motion Blur kommen, wenn ich ihn nicht mal eingestellt habe?
    Er ist deaktiviert, da ich Motion Blur noch nie leiden konnte :)


    Ich werd' aber mal deine Lösungsansätze probieren, denn "Temporal Super-Resolution (TSR)" scheint sehr Performancehungrig zu sein.

    Jedenfalls hört man die Grafikkartenlüfter deutlicher, als bei "Temporal Anti-Aliasing (MSAA)".

    EDIT: Dieses Schlierenziehen kommt übrigens nur bei dieser einen Anti-Aliasing Methode (MSAA)

    • Offizieller Beitrag

    Das meinte ich: Du hast einen unbeabsichtigten Motion Blur (der kein Post-Effekt ist).


    Ein Motion Blur ist im Wesentlichen ein Bild (Frame) deines Objekts während seiner Bewegung. Dadurch entsteht diese unscharfe Nachzeichnung, die als Motion Blur bezeichnet wird.


    Wenn du viele FPS hast oder haben möchtest, müssen die Frames möglichst scharf gezeichnet werden. Hier kommt das Anti-Aliasing ins Spiel. Es handelt sich um Kantenglättung, die sicherstellt, dass die Kanten der Objekte nicht pixelig aussehen, indem zusätzliche Pixel hinzugefügt werden.


    Stell dir eine Treppe mit sehr hohen Stufen vor, auf der kein Mensch laufen kann (verpixelt). Das Anti-Aliasing fügt auf jeder Stufe eine zusätzliche Zwischenstufe hinzu, wodurch die Kante schärfer wird. Letztendlich ist es jedoch ein Fake.


    Wenn du einen Post-Effekt wie Motion Blur in deiner Szene verwendest, muss weniger scharf gezeichnet werden, was weniger Leistung erfordert. Das Anti-Aliasing muss also weniger zusätzliche Berechnungen durchführen.


    In deinem Fall entsteht der Motion Blur, weil du eine Bewegung hast und dein Rechner nicht genügend Frames schnell genug auf deinen Monitor zeichnen kann.

    Im Fall von TSR werden bestimmte Berechnungen als Grundlage für mehrere Frames verwendet. Das macht TSR in der Renderberechnung schneller.

    MSAA rendert jedes Pixel in jedem Frame.

    Daher ist TSR schneller als MSAA.

    Zusammengefasst:

    1. Wenn du schnelle Kamerabewegungen hast, kannst du Motion Blur verwenden, um dein Bild unscharf zu machen. Dadurch muss das Anti-Aliasing weniger berechnen (gut für die Leistung).
    2. In deinem Fall entsteht dieser Effekt aufgrund schneller Bewegungen. Wenn du von MSAA auf TSR umstellst, wird die Kantenberechnung schneller, jedoch auch ungenauer (was bei schnellen Bewegungen jedoch keine Rolle spielt).

    Wenn du bei Google nach "Unreal fix motionblur" suchst, findest du Lösungen dazu. Wie gesagt: Interessiert aber nichts was mit Post Effects zutun hat.

  • Ich glaube, da mischst du ein wenig etwas. Motion Blur ist ja ein Unschärfeeffekt, der absichtlich oder unabsichtlich durch die Bewegung passiert.

    Hier scheint es aber so zu sein, als wenn die vorher berechneten Bilder einfach nicht schnell genug überschrieben werden, oder die Bewegung so schnell ist, wie bei einer Spiegelreflexkamera, altes Modell, mit Filmrolle, wo halt der Film nicht auf das nächste Bild transportiert wird und es dadurch zu überlagernden Bildern kommt. Deswegen kam ich halt auch auf ein eventuelles Syncproblem.

    "Temporal Super-Resolution (TSR)" scheint sehr Performancehungrig zu sein.

    Das kannst du auf jeden Fall laut sagen. Ich habe das bei meinem recht einfachen Cellshader auch mal eingestellt, weil dann die Schatten schön glatt wirken, aber der Vorteil war, ich brauchte mein Computerzimmer nicht mehr zu heizen. Nachteil, Stromrechnung. :P