Puh, das war ein langer Titel.
In beiden Fällen stelle ich diese Frage, da ich gerne über verschiedene Dinge nachdenke und mir der Gedanke kam, dass es auf GLSL keine wirklich einfachen Open-Source-Ebenen gibt, auch wenn nur einfache Dinge wie z enthält oder häufig verwendete Funktionen.
Als eine Art Forschung stelle ich diese Frage, da mein eigenes Bewusstsein für solche Sprachen gelinde gesagt winzig ist - ich kenne die Schattierungssprache von bgfx und das ShaderLab von Unity, aber ich weiß nicht wirklich, was sie leisten - oder warum - ein relativer Neuling in der Computergrafik zu sein.
Was wäre alternativ Ihre Wunschliste für eine solche Schattierungssprache? Meins enthält bisher einige Kompatibilitäten zwischen Versionen, optionale "versteckte" Eingaben, die den einfachen Zugriff auf Texturen mit Pixelversätzen oder Bildgrößen usw. ermöglichen, und geht wahrscheinlich durch - beispielsweise für Gaußsche Unschärfe mit zwei Durchgängen.
Gedanken?
Antworten:
Ich denke, es ist fair zu sagen, dass der Grund dafür, dass es so viele Nischenvarianten von GLSL / HLSL / Cg / so weiter gibt, darin besteht, dass keine Programmiersprache eine Einheitsgröße ist oder jemals sein wird. Unterschiedliche Probleme erfordern unterschiedliche Tools. Daher lohnt es sich manchmal, ein speziell angefertigtes Tool zu entwickeln, wenn es sich auf lange Sicht auszahlt.
Stock GLSL ist an sich ziemlich unbrauchbar. Es hat nicht einmal viel Stabilität über Versionen hinweg erlangt, daher ist für ein Programm, das auf mehr als eine OpenGL-Version abzielt, eine Art Vorverarbeitung ein Muss. HLSL ist in allen Versionen etwas stabiler. Wenn Sie jedoch mehr als eine D3D-Version als Ziel haben, müssen einige Arbeiten durchgeführt werden, um eine gute Portabilität zu erzielen.
Die Art der Dinge, die Leute normalerweise tun, sind so ziemlich das, was Sie gesagt haben, wie das Hinzufügen von Unterstützung für grundlegende Programmierfunktionen wie Module und einheitliche Syntax über Versionen hinweg oder sogar die Portabilität über verschiedene APIs (GL / D3D) hinweg, ohne den Shader-Code neu schreiben zu müssen. Anspruchsvollere Dinge sind vollwertige Materialsysteme oder Dinge wie das Generieren von Shader-Programmen im laufenden Betrieb .
Schattierungssprachen werden wahrscheinlich in Zukunft besser und allgemeiner werden und Dinge enthalten, die heutzutage üblicherweise als Kernfunktionen von Hand gerollt werden. Die neue GCN-Architektur ist ein Zeichen dafür. Schattierungssprachen werden also in einiger Zeit sofort einsatzbereit sein, aber kundenspezifische Lösungen werden niemals verschwinden, da Sie nur so viel verallgemeinern können.
quelle