Wir verwenden PIXI.js für Spiele, die intern WebGL zum Rendern verwendet. Hin und wieder stolpere ich über Erwähnungen der Zweierpotenz und mögliche Leistungsvorteile der Vermeidung von NPOT-Texturen (https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL#Non_power-of-two_textures, https://github.com/pixijs/pixi.js/blob/master/src/core/textures/BaseTexture.js#L116). Verwirrenderweise wird auch erwähnt, dass es keinen Unterschied mehr macht (OpenGL - Power Of Two Textures). Da sich Webgl und Browser so schnell entwickeln, ist es schwierig zu sagen, welche dieser Informationen korrekt sind.Power-of-Two-Texturen Performance-Vorteile mit modernen WebGL
Speziell frage ich mich, ob der Aufwand beim Auffüllen von Bildern zum Erstellen von POT-Texturen (längere Downloads, erhöhte Speicherauslastung) die Leistungsvorteile wert sind (wenn sie tatsächlich vorhanden sind). Ich konnte keine Vergleichs- oder Leistungsvergleiche zwischen POT- und NPOT-Texturen finden und weiß leider nicht wirklich, wie ich selbst daran arbeiten würde.
Hat jemand Erfahrung in dieser Hinsicht oder einige aktuelle Zahlen? Gibt es eine gute Möglichkeit, die Webgl-Leistung zu messen?
Ich weiß nichts über Leistung, aber das Hauptproblem mit NPOT Textur ist, dass Mipmapping und Wiederholungen nicht unterstützt werden. POT (allgemein) ermöglicht Optimierungen in vielen Berechnungen. Ich habe auch das Gefühl, dass die GPU Textur auf quadratische POT-Texturen auffüllen könnte, egal wie intern (basierend auf nicht verwandten Tests, die ich gemacht habe), aber ich bin nicht 100% darauf. –
Ich würde ehrlich überrascht sein, wenn irgendwelche modernen GPUs einen Unterschied in der Perf zwischen Pot und Npot hätten. Und mit modern meine ich alles in den letzten 6+ Jahren inklusive Handys. Aber ich mache nur eine Ahnung. Wenn Sie wissen möchten, dass Sie über viele GPUs testen müssen. – gman
@ WacławJasper "* Ich habe auch das Gefühl, dass die GPU Textur auf quadratische POT-Texturen auffüllen kann." "Das ist nicht wahr, stell dir vor, eine RGBA8 16384 von 819 ** 3 ** Textur zu erstellen, würde dies zu ~ 1 führen GB Speicherverbrauch statt ~ 536 MB, greifen Sie auf den gpu Profiler Ihrer Wahl und sehen Sie selbst. Afaik wenn Padding angewendet wurde, wurde es immer auf der Applikationsseite gemacht, NPOT Texturen auf älteren GPUs zu "shimmen". –