Il existe de nombreux langages d'ombrage construits au-dessus de GLSL ou HLSL - quels problèmes résolvent-ils généralement et quelles avancées valables apportent-ils?


8

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?


4
Cela ressemble plus à une discussion sur un forum qu'à une question spécifique. Ce site fonctionne mieux avec des questions auxquelles il est possible de répondre avec une seule réponse factuelle. La partie "quelle est votre liste de souhaits" n'est certainement pas adaptée à un site SE.
Dan Hulme

1
Vous pouvez venir dans la boîte cornell de notre salon de discussion et lancer une discussion
ratchet freak

Réponses:


2

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.


Je suis curieux - quelles langues comme celle-ci existent? Je sais qu'il y a des moteurs spécifiques comme les systèmes de shader d'Unity ou UE4, ainsi que des recherches académiques comme Spark , mais je ne suis au courant de rien d'autre en cours d'utilisation dans cet espace.
Nathan Reed

@NathanReed, probablement le métal d'Apple est l'un des plus remarquables, pour l'instant, mais je n'ai pas examiné beaucoup de détails ...
glampert

Ah d'accord. Cependant, le métal n'est pas au-dessus de HLSL ou GLSL; c'est un langage d'ombrage principal pour les GPU Apple qui se compile directement en microcode HW (via un backend LLVM propriétaire je crois).
Nathan Reed
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.