Ouf, c'était un long titre.
Quoi qu'il en soit, je pose cette question, car j'aime penser à diverses choses, et il m'est venu à l'esprit qu'il n'y a pas vraiment de couches open source simples au-dessus de GLSL, ne serait-ce que pour ajouter des choses simples telles que comprend, ou fonctions couramment utilisées.
En tant que recherche, je pose cette question, car ma propre connaissance de ces langages est pour le moins minuscule - je connais le langage d'ombrage de bgfx et le ShaderLab d'Unity, mais je ne sais pas vraiment ce qu'ils accomplissent - ou pourquoi - être un débutant par rapport à l'infographie.
Sinon, quelle serait votre liste de souhaits pour un langage d'ombrage comme celui-ci? Jusqu'à présent, le mien comprend, une certaine compatibilité entre les versions, des entrées "cachées" en option qui permettent d'accéder facilement aux textures à des décalages de pixels, ou des tailles d'image, etc. et passe probablement - pour, disons, un flou gaussien à deux passes.
Pensées?
Réponses:
Je pense qu'il est juste de dire que la raison pour laquelle il existe tant de variantes de niche de GLSL / HLSL / Cg / ainsi de suite est qu'aucun langage de programmation n'est et ne sera jamais un outil universel. Différents problèmes nécessitent des outils différents, donc parfois cela vaut la peine de développer un outil construit sur mesure s'il va porter ses fruits à long terme.
Le stock GLSL est en soi à peu près inutilisable. Il n'a même pas acquis beaucoup de stabilité entre les versions, donc pour un programme qui cible plus d'une version OpenGL, une sorte de prétraitement est indispensable. HLSL est un peu plus stable entre les versions, mais encore une fois, si vous ciblez plus d'une version D3D, un certain travail devra être fait pour obtenir une bonne portabilité.
Les choses que les gens font habituellement sont à peu près ce que vous avez dit, comme l'ajout d'un support pour les fonctionnalités de programmation de base telles que les modules et la syntaxe uniforme entre les versions, ou même la portabilité entre différentes API (GL / D3D) sans avoir à réécrire le code du shader. Des choses plus sophistiquées incluent des systèmes de matériaux à part entière ou des choses comme la génération de programmes de shader à la volée .
Les langages d'ombrage s'amélioreront probablement et deviendront plus génériques à l'avenir, incorporant des éléments qui sont aujourd'hui couramment roulés à la main comme fonctionnalités de base. La nouvelle architecture GCN en est un signe. Les langages d'ombrage seront donc plus utilisables prêts à l'emploi dans un certain temps à partir de maintenant, mais les solutions personnalisées ne disparaîtront jamais car il n'y a que beaucoup de choses que vous pouvez généraliser.
la source