Fragen zu PBR

  • Ich hätte auch noch mehr dazu schreiben können, allerdings muss ich zugeben, dass ich mich beim Thema PBR-Berechnung und Raytracing einfach kein Profi bin und am Ende keine Halbwahrheiten schreiben möchte und dass es einfach ein enorm komplexes Thema ist was auch nicht in 2-3 Sätzen erklärt werden kann.


    Wer sich mit dem Thema ernsthaft auseinandersetzen möchte kann ja mal nach Begriffen googlen wie:

    • Phong-Beleuchtungsmodell (nicht mit Phong-Shading verwechseln), dabei handelt es sich, wie bereits erwähnt, um ein klassisches Rendering.
    • Raytracing
    • Physically Based Rendering (wenn ich mich richtig erinner gibt es irgendwo ein Dokument über den Renderer der CryENGINE)

    Allerdings wird man schnell mit höherer Mathematik konfrontiert ;)


    EDIT: Ein kleiner Einstieg speziell für Artists:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Wow DarkFaces... bist du echt so arrogant, dass du mir gerade erklärend wolltest, was ein Shader ist?


    Du denkst also von mir, dass ich absolut keine Ahnung hab? Und das ich mich aus Spaß in Threads rumtreibe und Leuten Antworten auf Fragen gebe... vermeintlich falsche Antworten, weil ich ja keine Ahnung von nichts hab.



    Ich bin raus aus der Diskussion... das ist mir echt zu blöd :D

  • Darf ich mich da nochmal kurz einklinken?


    Muss ich das mit den Shadern verstehen?


    Oder kann ich davon ausgehen, dass es irrelevant ist?
    Ein Tischler weiss ja in der Regel auch nicht wie man einen Baum anpflanzt und grosszieht um anschliessend einen tollen Tisch daraus zu fertigen.


    Oder bin ich da zu naiv?


    Frohe Weihnachten und LG Sebastian

    • Offizieller Beitrag

    Oder kann ich davon ausgehen, dass es irrelevant ist?

    Wie du merkst weiß das hier auch niemand von uns so Richtig ich denke du kannst das getrost vergessen :)


    Wo die Shader auf jeden Fall eine Rolle Spielen sind bei Mobile vs PC da ein Handy keine richtige Grafikkarte hat werden auch nur die wenigsten Shader unterstützt.


    Ich denke das ist alles wo du wissen muss es sei du willst wirklich hardcore Shader Programmieren dann musst du das Vielleicht verstehen

  • ^^wobei bei Mobil-Spielen ja auch eher die Komplexität der Shader reduziert wird anstatt das Shadermodell komplett zu ändern.


    Vor allem Texturauflösung und Anzahl der verwendeten maps ist da ausschlaggebend, da hier idR. viel weniger Speicher zur Verfügung steht als an PC oder Konsole.

    • Offizieller Beitrag

    Für Handy würdest du keinen krassen tesselation Shader verwenden das meinte ich damit.


    Das mag ja auch sein das PBR Shader 100 mal performanter sind als ein nicht PBR Shader aber mal im Ernst: Wer benutzt deswegen einen uralten Shader ?
    Letztlich muss im Spiel auch nur das berechnet werden was zu sehen ist und genau deswegen gibt es geile Spiele mit den neuesten und geilsten Shader die jeden Milimeter an Performance der Engine ausnutzen und absolut flüssig laufen. Warum sollte man also alte Shader verwenden ?
    Wie gesagt das einzige Argument wäre für mich eine Extra Mobile Version da logischerweise ein Dandy krasse Shader nicht verarbeiten kann. Es hat schon seine Berechtigung warum Grafikkarten riesig sind und extra gekühlt werden müssen während Handy für solche dinge nicht ausgelegt sind.

  • Vllt kann man abschließen festhalten, dass für jemanden, der mit einer Engine ein Spiel erstellen will, es relativ(!) egal sein kann was für Shader performanter sind, ich glaube relevanter ist ob man PBR benutzen kann um sein Spiel besser aussehen zu lassen, wenn es möglich ist und man auch die Fähigkeiten hat solche Assets zu erstellen, wieso sollte man es nicht tun.


    Noch zum Thema Mobile: Natürlich bietet ein Smartphone nicht die gleiche Leistung wie eine High-End-Grafikkarte, aber sind wir mal ehrlich, auch wenn ein mobiles Endgerät Full-HD, 4K, etc. kann sind es doch meist nur Bruchteile der größe eines Monitors, viele Details gehen dann auch einfach unter und man nimmt dann halt einfach deutlich kleinere Texturen.


    Ich habe in einem früheren Post erwähnt, dass die Texturen nicht der kritische Teil bei der Performance sind, allerdings verbraucht eine 1024² Pixel große Textur in der Regel (bei 32Bit pro Pixel in RGBA) ~4 MB Speicher (ja als Datei werden diese komprimiert, aber für die Shader müssen diese pro Pixel vorliegen). Geht man nun davon aus, dass ein Material eine Color-, Normal-, Roughness-, Metallic-, und eine AO-Map verwendet, sind dies 5*4 = 20 MB und das pro Material. Damit ist der Speicher bei einem mobilen Endgerät schnell erschöpft. Also sollte man in dem Fall eher kleinere Texturen nehmen als über PBR oder kien PBR nachzudenken.

    • Offizieller Beitrag

    Jup und du hast vollkommen recht ich denke mal so pauschal kann man das auch nicht sagen letztlich läuft alles auf Drawcalls hinaus und die hat man nun mal für jedes Mesh + jedes Material aber auch wie du schon sagtest für Licht und Schatten Berechnung performance sparen tut man demnach auch immer nur im gesamt packet und nicht nur weil man kleine Texturen verwendet oder ein einfacheren Shader der aus weniger Quellcode besteht.


    Mir wäre auch nicht bekannt das man die FPS und Berücksichtung der Meshes, Anzahl der Lights und Anzahl der Material irgend wie berechnen kann, ich glaube das muss man einfach testen.


    Ich setzte in der Performance lieber etwas höher an und speke dann ab. Sind Meshes zu polylastig dann verwende ich LODs.


    Wer bisschen Erfahrung hat kann von Anfang an gleich gleich so performant wie möglich arbeiten zb bei einem Mesh so wenig Polys wie möglich und so viel wie nur nötig. Texturen möglichst auf ein Material bringen und nicht bei einem Auto 10 Materials verwenden.

  • Im Grunde war Wunsch nach pbr nicht der Performance, sondern dem schnelleren und einheitlichen Erstellen von Content geschuldet. Wer schonmal von einem Studio Texture Guidelines bekomen hat, der weiß was ich meine. Eigentlich geht es darum, einen Shader zu haben, der alle Materialien, mal besse, mal schlechter, imitieren kann und bei allen Beleuchtungssituationen funktioniert (zumindest in der Theorie). Ihr dürft nicht vergessen, das pbr nichts absolutes ist. Schon allein zwischen unity und ue4 gibts da große Unterschiede. Der Shader in Unity funktioniert auch nicht identisch wie der in der cry engine. Und wenn an noch sss dazukomt, dann gibts endgültig keine Standarts mehr.
    Früher sind z.t. Für unterschiedliche Lichtsituationen unterschiedliche Shader für die gleichen Modelle verwendet worden. Das gehört weitestgehend der Vergangenheit an.