L'énigme du rendu multiplateforme : pourquoi l'API GPU de SDL adopte-t-elle cette approche des shaders ?
Les développeurs de jeux sont confrontés au défi du rendu efficace sur plusieurs plateformes. Différentes plateformes (Windows, macOS, Linux, consoles) utilisent différentes API graphiques (Vulkan, Metal, Direct3D), la gestion des shaders étant particulièrement complexe. L'auteur, co-mainteneur du projet FNA (un portage moderne du framework XNA), a créé Refresh, une bibliothèque d'abstraction graphique multiplateforme, et a proposé une solution d'API GPU SDL prenant en charge plusieurs formats de shaders, tels que SPIR-V, HLSL, DXBC et MSL. Cette approche multiformat découle de l'absence d'ISA de shader standardisée en raison des différentes architectures de GPU et des conflits d'intérêts des fournisseurs. Traiter les shaders comme du contenu, et non comme du code, permet une flexibilité dans les flux de travail de compilation. L'approche gère les shaders existants (comme le bytecode FX de XNA) et évite l'effort énorme de créer un langage de shader personnalisé, en privilégiant le rendu multiplateforme pratique.