VikingGe
Software-Overclocker(in)
OGL hat doch fix geforderte Features. Ab davon sehe ich nicht, was dadurch besser wird - wenn deine Anwendung zwingend Tessellation Shader braucht, läuft sie eben nicht auf Smartphone-GPUs, egal ob die Schnittstelle das nun zwingend fordert oder nicht.Das alte Problem von OGL sind doch die nicht fix geforderten Features [...]
Ab davon - wenn Flexibilität ein Nachteil ist, hat Dx12 den auch mit den ganzen Feature Levels und Tiers. Wenn man natürlich in 30 Jahren Code schreiben will, der sowohl auf GCN 1.0 als auch den bis dahin aktuellen GPUs läuft und jeweils alle Vorteile der Hardware ausnutzt... gute Nacht, aber das macht niemand.
Das ist ein Märchen. Einerseits fällt mir jetzt aus dem Stegreif z.B. keine Nvidia-Extension ein, für die AMD oder Intel ein eigenes Äquivalent hätten, andererseits - was spricht dagegen, sich auf ARB-, KHR- und ggf. EXT-Extensions zu beschränken? Die Vendor-Extensions sind bis auf wenige Ausnahme dafür da, irgendwann als herstellerunabhängige ARB-Extension in den Standard einzufließen, nicht für den produktiven Einsatz für die nächsten 10 Jahre.[...] und Vendor spezifische Extensions, die im Endeffekt dafür sorgen dass man quasi einen Renderpfad pro GPU-Hersteller (und unter Umständen noch Generation) braucht.
Eine Ausnahme wäre sowas wie AMD_gcn_shader. Da steckt die Begründung auch gleich im Namen.
Das Design ist aber insofern schlecht, als dass a) wir von Zuständen auf der GPU reden und nicht (nur) innerhalb der Software-Ebene, b) das Design kaum Multithreading zulässt und c) das ganze auch keine wirklich gute Abstraktion ist. Wenn man einen Framebuffer mit vier Color Targets fürs G-Buffer-Rendering aktiviert und gleichzeitig noch der Shader fürs Generieren von Shadow Maps aktiv ist, hat man zwangsläufig einen Zustandsvektor, mit dem man nichts anfangen kann.Ergo wenn der 3D Render feste Zustände braucht dann darf er auch eine Statemashine sein, das ist ansich erst mal kein schlechtes oder gutes Design.
Die neuen APIs haben auch ihren Satz an Zuständen, aber a) deutlich stärker gebündelt, b) nicht global verwaltet, sondern pro Command Buffer. Damit wäre dann auch das Multithreading-Problem gelöst, wenn man seine Command Buffer in jedem Frame neu generieren muss.
Zuletzt bearbeitet: