Projekt: RailWorks 3 optimieren

  • Hallo Leute,


    die ganzen Performance-Probleme hat hier sicherlich schon jeder mitbekommen. Ich will jetzt auch keine Diskussionen auslösen, wie schlecht doch die Leistung bei guten Grafikkarten ist. Den echten Flaschenhals kann ich derweil ausmachen: Die Festplattengeschwindigkeit. Wieso weshalb warum möchte ich an anderer Stelle erklären.


    Doch vorher möchte die Grafikprobleme hier ansprechen; Denn ich habe das Gefühl, dass einige nicht darüber nachdenken, was sie mit den Grafikeinstellungen wirklich auslösen. Deshalb habe ich mal eine PDF-Doku erstellt, in der beschrieben wird, wie ihr die Grafikeinstellungen setzen solltet und was ihr mit den einzelnen Parametern auslöst:


    „Leitfaden: RailWorks 3 richtig konfigurieren (ATI)“ lesen


    Wer will und Zeit hat, kann diese gerne ins Wiki übersetzen, auf Anfrage schicke ich hochaufgelöste Bilder gerne per Mail zu.


    Öfters werden hier sogenannte „Microruckler“ genannt, die auf allen Systemen vorhanden sind. Ich fasse mal das folgende Ursachenklärung zusammen: Der MSTS hat immer 2048x2048m am Stück geladen und im Speicher gehalten (1-2s Nachladezeiten). Der RW lädt immer 256x256m bzw. 128x128m Weltdaten nach. Das verteilt die 2s natürlich auf die ganze Zeit, bringt aber nicht wirklich den Effekt, den die Jungs eigentlich bezwecken wollten. Und die Engine ist für solche Dinge nicht parallelisiert (ist auch ziemlich aufwendig die Sache!)


    „Ursachenforschung: Die Microruckler in RailWorks 3“ lesen


    Etwas für Technikspezialisten: Ansonsten möchte ich euch noch Bescheid geben, dass ich mir mal die kompilierten HLSL-Dateien im dev/Shaders/-Ordner angesehen habe. Die haben alle Effekte nicht optimiert, teilweise im Debugmodus und verlangen eine absolute Genauigkeit. Nachdem ich die mal mit optimierten Einstellungen und ausreichender Gleitkommapräzision mit dem aktuellen fxc.exe der DirectX SDK neukompiliert habe, wurde RailWorks bei mir um etwa 10-30% schneller… abgesehen von den Microrucklern.


    Wenn der Optimizer schon so viele HLSL Instruktionen sparen kann, kann ich das noch besser optimieren. Da ich so etwas nicht das erste Mal mache, werde ich mir mal alle HLSL-Dateien (*.fx) schnappen und den Code optimieren.


    Die fxc optimierten HLSL-Effektobjekte könnt ihr euch Herunterladen und Testen. Die einwandfreie Kompatibilität ist hierbei nicht gewährleistet (Testdateien) und es sei darauf hingewiesen, dass ihr euch damit mit einer 1 zu 256 Chance den RailWorks zerschießen könnt. Aber der PC bleibt ganz.


    Ich halte euch auf dem Laufenden und wäre froh, wenn der Ein oder Andere einen zusammengefassten Testbericht zukommen lassen könnte (aka Hardware/Performancesteigerung in FPS-Unterschied zum Original).


    Wenn ich schon nicht ordentlich arbeiten kann... dann werde ich mir mal die ruckelfreie Horseshoe Curve reinziehen


    OptimizedShader 1.1 (Beta) herunterladen
    Optimierungs-Guide lesen (ATI)

    6 Mal editiert, zuletzt von 3D BYTE () aus folgendem Grund: Linkdarstellung korrigiert. Update.

  • Hallo Patrick,


    ich möchte mich an dieser Stelle für deine Bemühungen recht herzlich bedanken *super* .
    Auch wenn es bei mir mit RW3 sehr wenig Probleme gibt, so ziehe ich meinen Hut vor deinem Engagement.


    Vielen Dank & liebe Grüsse
    Neffi

  • also ich weiß nicht was du gemacht hast aber mein RW 3 hat gar keine aussetzer mehr und läuft flüssig. *wow* *wow*
    Kann das ganze also nur empfehlen.
    Wie schon gesagt richtig geil das du sowas für die Community machst, jedoch ist auch schon ein bisschen traurig dass wir sowas machen müssen und nicht die enwickler, die mal wieder alles verpennt haben

  • Was auch immer du gemacht hast, hier läuft das nicht. RW läuft laut FPS Anzeige dann mit 15fps ohne Schwankungen, gefühlt sind es unter 1fps. Also unspielbar. Ich habe nichts geändert ausser die Shader getauscht. Deine Optimierungen sind dann wohl nur für Rechner geeignet die deinem in etwa entsprechen, oder einfach nicht auf alle Systeme übertragbar. Vll ist das auch der Grund warum RSC das so gemacht hat.

  • Hallo Maik :),


    Kopf nicht hängen lassen. Die Empfehlungen für die Einstellungen sind eher allgemein gehalten.
    Und da ich nur einen Haupt-PC habe muss ich mich an diesen richten. Versuch doch mal die
    Einstellungen zu übernehmen und den Kladeradatsch von wegen Multi-Sampling im Startbildschirm
    auszuschalten :). Vielleicht werden aus den 15 Jahrhunderten... ein bisschen mehr?


    Übrigens hab ich jetzt hier und da ein wenig an den Shadern optimiert. Und da weiß ich jetzt nicht
    was ich getan habe: Auf Hagen - Siegen, Hourseshoe Curve... über 20 Frames überall. Dabei habe ich nur
    zwei schwachsinniges Kreuzprodukte von Kuju aus der Normal-Binormal-Tangent-Matrix-Berechnung rausgenommen,
    hier und da ein const vorgesetzt wo es möglich war und den if-Statements ausdrücklich [branch] vorgeschrieben.
    Der Optimizer freut sich eben, wenn er weiß was wie gemeint ist.


    Dann habe ich noch ein paar Pfusch-Konstanten korrigiert, bezüglich YUV-Luminanzwerte. Und dann habe ich
    eine Variable eingeführt (und korrigiert), die die Reflektionsmenge vom Himmel auf Züge beeinflusst
    (ich glaub ich habs von 0.71 auf 1 - 1/pi (=0.68.. ) gesetzt).


    Hm... gut das ich letztes Jahr den Himmel berechnet habe und sowas weiß? :)
    Aber Screenshots machen will ich jetzt nicht... es sind eher mehr FPS und minimale Sachen denke ich.
    Hab auch erst 4 bis 5 Dateien bearbeitet von... ca. 80 :wacko:.


    Hihi. Maik ärgere dich nicht. :D

  • Hallo


    Respekt *dhoch*


    aber leider muss ich dir auch als Nvidia Nutzer sagen das ich wenn überhaupt von 2 - 3 Frames mehr sprechen kann. Interessant finde ich das Projekt trotzdem auch wenn mir das jetzt erstmal nichts gebracht hat.
    Wär das jetzt unverschämt wenn man fragt ob du was gegen das Texturflimmern coden kannst :D
    Aber das ist wohl eine ganz andere Baustelle.

  • Kopf nicht hängen lassen. Die Empfehlungen für die Einstellungen sind eher allgemein gehalten.

    Davon redete ich auch nicht. In deinen Einstellungen und Erklärungen ist auch ein Fehler drin der mit FSX on/off und den AA Einstellungen zu tun hat. Bei mir läuft das an sich ziemlich gut, nur halt nicht im Vollbild bei nativer Aufslösung. Da muss ich dann das AA ausmachen um noch TSX genießen zu können. Ich nutze den RW aber meisst in 1280x720 Fenstermodus zum basteln und da hab ich um die 50fps mit 2x2 SSAA und alles fast hoch eingestellt.


    Übrigens hab ich jetzt hier und da ein wenig an den Shadern optimiert.

    Eben das meinte ich. Ich hab deine Shader geladen und probiert. Hängt der ganze PC (nicht nur RW), und das tut der sonst eigentlich nie! An den anderen Einstellungen hab ich nichts verändert. Also sind da auch Fehler drin oder nicht optimale Optimierungen. Kann ich nich sagen, ich kenne mich mit Shadern nicht aus.

    Maik ärgere dich nicht.

    Tu ich auch gar nicht. Ich halte das alles für relativ normal. Andere Games ham auch so Probleme. Mit der Zeit wird sich das lösen.


    Mir macht das Ganze in anderer Hinsicht Sorgen. Denn wenn jetzt alle nur noch mit 20fps spielen dann haun meine (relativ) zeitabhängigen Lua Programmierungen nicht mehr hin, da dort das Interval von der Framerate kommt. Bisher war die recht stabil bei allen. Jetzt hat jeder andere Werte und nichts hauts mehr hin. Wäre mal angebracht dass die Herren auf der Insel einen absoluten Zeitwert (s oder ms) an die Lua API senden mit dem man auch mal damit rechnen kann.

  • Hi,
    hab auch die Lösung von Patrick installiert und schon hatte ich 26-35 fps
    *jippy* . Das ist die beste Lösung für alle ATI - Card Besitzer. Ich kann es allen nur empfehlen. Nicht vergessen ein Backup von Shaders Verzeichnis zu machen.
    Mein System steht in der Signatur unten.


    Es gibt hier nicht nur pefekte Steckenbauer nun auch noch perfekte Programmierer.
    Danke Patrick du bist der Größte.
    *super*
    Änder mal dein Nickname in "King Patrick" *lach*


    LG
    Klaus


    [XerioX]

    Technische Informationen: siehe Profil
    Spiele meistens MSFS 2020 und TSW3,

    TSC mehr als 13400 Stunden gespielt:)

  • Es gibt ein paar Neuigkeiten von der Front, nachdem ich mir mal die Shader-Dateien genauer angesehen habe.
    Was mir dort absolut nicht gefällt, sind die ganzen Definitionen und der Coding Style. Aber das ist wohl Sache
    des Programmierers.


    Was das RailWorks Development Team da geschrieben hat ist schon weitestgehend sauber und bedarf kaum
    der Optimierung (hier und da vielleicht). Die Jungs haben sich diverser Fachbücher (z.B. GPU Pro 2,
    was ich unter anderem auch habe.) und teilweise vielleicht (:)) dem Quellcode dort bedient. Aber es
    ist dort an der Front in Ordnung und ordentlich geordnet.


    Was Kuju da entwickelt hat finde ich schon irgendwie "Hauptsache es funktioniert". Das die Jungs von RW
    da nicht ranwollen ist mir klar. Ich bin ja auch vieles gewöhnt aber das ist dort schon echt ungewöhnlich.
    "Da müssen wir ran!" oder "Klarmachen zum Ändern!" wären jetzt geeignete Parolen was ich jetzt durchziehe.


    → Die ganzen Effektdateien werden von mir überschrieben oder neu geschrieben, damit alles dem
    Standardrichtlinien für HLSL-Style passt und optimiert wird.


    Denn einiges ist zwar lestechnisch nett aber nicht unbedingt notwendig. Außerdem muss HLSL
    ja immer gesagt bekommen, was konstant ist und unveränderbar bleibt. Damit es richtig optimiert wird.


    → Die ganzen Effektdateien bekomme ich auch nicht von Heute auf Morgen überarbeitet. Also zwei bis vier Wochen
    dauert das Ganze schon bei der Vielzahl an Möglichkeiten. Aber ich werde mal pö a pö die optimierten
    Effektobjekte hochladen.


    → Wie und ob die Performance steigt: Weiß ich nicht! Aber wer nicht laufen lernt wird kein Marathon laufen.


    → Wenn ich die dann Testversionen hochladen werde, schreibe ich euch was insgesamt geändert wurde und
    wo ich euch bitte die entsprechende Sache unter die Lupe zu nehmen. Ob es da Grafikprobleme oder
    Merkwürdigkeiten gibt. Alles kann ich leider nicht alleine machen...


    → Ist das alles Produktionsreif schicke ich das den Tommies als Patchvorschlag zu. Dann werden die
    Effektdateien in Steam (hoffentlich) eingepflegt, sofern die Jungs das hinbekommen. Ich glaube die werden auch
    irgendwo dankbar sein, dass jemand mal den Kuju-Müll nach Doxygen-Richtlinie dokumentiert und aktuelle Standards
    einpflegt. Die verwenden ja teilweise sogar PixelShader 1 und half's (seit Ewigkeiten nicht mehr unterstützt)...


    Zwar habe ich mir nach dem Pausieren meiner Programmierarbeit gewünscht, endlich mal wieder kreativ zu werden...
    aber die Jungs machen alles kaputt mit Modellieren und so... :( Jetzt bin ich schon wieder Programmierer!


    :)


    So nebenbei:
    Ich weiß jetzt ehrlich gesagt nicht, ob ich einfach RWs/Kujus Inhalt so einfach verändern darf (da offengelegt)
    und dann noch die Daten verändert anbiete. Bei den kompilierten Dateien ist es mir egal weil neu, aber
    bei den fx-Dateien weiß ich nicht soo recht. Hat einer da wirklich Ahnung und kann mir sagen was Sache ist?

  • Hallo Patrick,

    Da spricht Du sicherlich ein nicht ganz einfaches Thema an, da es sich hier offenbar um Quelldateien handelt und diese dürfen normalerweise nicht verändert werden.
    Hier gäbe es aber sicherlich die Möglichkeit bei den "Tommies" ganz unverbindlich anzufragen, schließlich dient dein Vorhaben ja der Sache selbst. Wie ich ja bereits erwähnt habe sehe ich deine Bemühungen mit sehr viel Respekt und finde es bewundernswert das sich der "ganz normale" User damit beschäftigt.
    Da es schließlich darum geht das Programm als solches zu verbessern würde ich dir wirklich raten das mit den Verantwortlichen zu besprechen - nicht das all deine gut gemeinten Bemühungen falsch interpretiert werden könnten *achtung* .


    LG Neffi

  • Also Patrick.


    Erstmal ein dickes Lob das du dich dieser Sache annimmst. Das die "Tommies" noch so veraltete Techniken verwenden hätte ich auch nicht gedacht. Hab zwar überhaupt keine Ahnung was diese Werte bedeuten, aber ich denke das du, (so proffesionell kann kein GPU-Laie schreiben) das hinkriegen wirst. Aber das "Pixelshader 1" schon nicht mehr unterstützt wird, das weis selbst ich. Kein Wunder das da so viel Performance bei modernen Rechnern draufgeht.


    Frag auf jeden Fall bei den Entwicklern nach... Du schaffst das...


    Viel Erfolg, Dominik. *eiei*

  • Auch mit dem kleinen Denkfehler in deinem Guide (MLAA + SSAA bei TSX) gut zusammen gefasst und vielleicht hilft es dem ein oder anderen. Dein Shader Paket bringt bei mir allerdings leider keinerlei Veränderung was die Framerate angeht. Auf der Horseshoe Curve immer noch 14-18 fps wenn ich die Standard "Medium" Einstellungen nehme, die hatte ich auch vorher.
    Finde es trotzdem toll das du dich der Sache annimmst, bezüglich Veröffentlichung solltest du dich vorab vielleicht tatsächlich besser mit RSC in Verbindung setzen. Ich glaube zwar kaum, dass dir da Ärger droht weil weder RSC noch Aerosoft eine große Rechtsabteilung haben dürften, aber damit alles seine Ordnung hat kanns auch nicht schaden.

  • Guten Tag Patrick.
    Also ich habe von den ganzen Sachen keinerlei Ahnung und finde es toll, welche Mühe Du Dir gibst den Schrott von RSC zu verbessern.
    Meiner Meinung ist das eigentlich die Aufgabe von den Erstellern.
    Mich würde es freuen, wenn Du es schaffen würdest das Spiel zu optimieren.


    Viel Erfolg
    Pinselje

  • Hi Patrick,


    vielen Dank, dein Dev Ordner hats gebracht. *wow* Beim Aufgabenstart Schwere Fracht in Siegen habe ich 29-33 FPS.


    TSX ist eingeschlaltet, die Einstellung steht auf Mittel bei einer Auflösung von 1920X1080.


    In den Optionen steht alles auf Hohe Detailst.


    Mein System ist ein I5 750 mit 4GB Ram, Geforce GFX260 und Windows7 64 HP als Betriebssystem.


    Ich bin sehr zu Frieden damit, brauche ich mal etwas mehr, stelle ich die Schatten in den Optionen aus.

    Ironie, die


    feiner, verdeckter Spott, mit dem jemand etwas dadurch zu treffen sucht, dass er es unter dem augenfälligen Schein der eigenen Billigung lächerlich macht. (Duden Online)

  • Danke für diese Änderungen. Ich bin gespannt wie RSDL auf deine Änderungen reagiert. Immerhin werden die Frameraten erhöht bei gleichbleibenden Einstellungen. Bei mir waren es ca. 10-15 FPS (laut der RW-Anzeige). Bei vorher 15-20 FPS kann man hier also von 33-50% Framesteigerung ausgehene bei mir. Einfach toll. Natürlich bei eingeschalteter TSX.


    AMD Phenom 9850 BE übertaktet auf 2,8 Ghz
    ATI 4850 mit 512MB
    4GB RAM
    Windows 7 64-bit, RW installiert auf einer zweiten HDD

  • So, ich hab mal ein wenig an den Effektdateien herumgespielt und ein optimiert.
    Also viel rausholen kann man da nicht (sag ich gleich). Vielleicht grenzt ja auch das BluePrint-System
    an seine Performance-Grenzen *boah*... da ist dann von meiner Seite aus nichts zu machen.


    Folgende Veränderungen/Verbesserungen wurden gemacht:
    → Optimierte Neuerstellung der Effektdateien mit fxc aus dem aktuellen DirectX SDK (/T fx_2_0 /O3 /Gpp /Gec /nologo)
    → Verbesserter "Depth of Field"-Effekt: Der pseudo-lineare Filter wurde durch einen Gauß'schen Filter ersetzt.
    → Korrigierte Luminanz-Berechnung: Die Konstanten wurden durch richtige ersetzt. Einfluss?: Keine Ahnung.


    Optimized Shaders 1.03 herunterladen


    Ich merke auf meinem Laptop eine Performance-Steigerung von etwa 20%.
    Gegen die Nachladeruckler macht dieses Paket leider nichts!


    Leider bekomme ich mit den Jungs einfach keinen Kontakt hin. Die Adresse support@railsimulator.com funktioniert
    einfach nicht und auf deren Webseite habe ich keine andere vernünftige Methode gefunden. Also entweder stoßen
    sie auf den Inhalt mit der Nase oder das geht unter... was soll ich mich drüber aufregen? *teetrink*


    Bezüglich dem Rechtlichen hab ich mir auch nochmal Gedanken gemacht: Die Daten liegen ja offen vor
    und bedienen sich der Formsprache HLSL - also in etwa der gleiche Senf wie XML. Und was offen ist,
    darf ja bekannterweise genutzt werden, ansonsten hätten die Jungs von RSC die Daten verschlüsselt
    wie andere Firmen. Damit Ärger ausgeschlossen ist, hab ich mal die Effect Files aus dem Archiv genommen.
    Damit sollte die Sache geklärt sein.


    Und nun wünsche ich euch viel Spaß!

    2 Mal editiert, zuletzt von 3D BYTE () aus folgendem Grund: Update.