Du bist nicht angemeldet.

Werbeanzeige

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

08.11.2015, 11:02

Die Engines, mit denen ich bisher gearbeitet habe, hatten ganz unterschiedliche Ansätze dafür. Gemeinsam hatten so ziemlich alle, das der Aufwand für Pflege/Implementierung möglichst gering bleiben sollte. Das macht insofern Sinn, als das Mehraufwand immer mit größern Kosten verbunden ist. DirectX und OpenGL? Wenn das Spiel nur für Windows erscheint wird Letzteres außen vor gelassen. Es geht da auch um die potentielle Zielgruppe. Auch deshalb haben die meisten Engines ihre Dx9 Backends komplett rausgeschmissen. Ab einem gewissen Punkt ist der Aufwand alles zu pflegen zu groß und mitschleifen alter APIs verhindert effektiv ein modernes Design für Highlevelrendersysteme. Aus der Überlegung ergeben sich dann die Implementierungen für Backends, z.B. Dx11/12 für Win, ein Backend für PS4 eins für XB1. (Mantle für Marketing ;)) Kein hotswapping/runtime switchen notwendig. Also keine Notwendigkeiten für virtuelle Interfaces (und den damit verbundenen Overhead).

Falls du das wirklich brauchst dann ist ein abstraktes Interface schon ok. Aber vermutlich lässt sich der Aufwand sparen oder garnicht erste rechtfertigen.

Mal aus Interesse: was ist denn für dich ein "submission based" renderer?
@D13_Dreinig

Schrompf

Alter Hase

Beiträge: 1 428

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

12

09.11.2015, 09:59

Mal aus Interesse: was ist denn für dich ein "submission based" renderer?


Ich vermute, eine Restful API, also zu jedem DrawCall der komplette Satz aller Pipeline-Daten. Das vermeidet eine Menge Hässlichkeiten mit Restzuständen, wie sie in früheren APIs (DX9, OpenGL) auftraten. DX12 und Vulcan sind jetzt aber beide quasi komplett auf komplette Submissions ausgelegt und benutzen das Konzept auch mit großer Wirkung für vorab erstellte und wiederverwendbare DrawCall-Sequenzen.

Ist ein gutes Konzept, denke ich. Hilft Dir natürlich gar nix bei der Abstraktion der OpenGL vs. DirectX-Eigenheiten wie Koordinatenräume, Texturkoord-Ursprung und die manchmal heftig abweichende Shader-Syntax.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

09.11.2015, 11:37

Mal aus Interesse: was ist denn für dich ein "submission based" renderer?


Ich vermute, eine Restful API, also zu jedem DrawCall der komplette Satz aller Pipeline-Daten. Das vermeidet eine Menge Hässlichkeiten mit Restzuständen, wie sie in früheren APIs (DX9, OpenGL) auftraten. DX12 und Vulcan sind jetzt aber beide quasi komplett auf komplette Submissions ausgelegt und benutzen das Konzept auch mit großer Wirkung für vorab erstellte und wiederverwendbare DrawCall-Sequenzen.

Ist ein gutes Konzept, denke ich. Hilft Dir natürlich gar nix bei der Abstraktion der OpenGL vs. DirectX-Eigenheiten wie Koordinatenräume, Texturkoord-Ursprung und die manchmal heftig abweichende Shader-Syntax.


Danke, so etwas in der Art hatte ich mir darunter vorgestellt. Die Infos zu "submission based renderer" welche von Google geliefert werden sind leider sehr dürftig und "offiziell" hatte ich den Begriff diesbezüglich noch nicht gehört.
@D13_Dreinig

Werbeanzeige