Es gibt viele Schattierungssprachen, die auf GLSL oder HLSL aufbauen - welche Probleme lösen sie normalerweise und welche lohnenden Fortschritte machen sie?

8

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?

Llamageddon
quelle
4
Das klingt eher nach einer Forumsdiskussion als nach einer bestimmten Frage. Diese Seite funktioniert am besten mit Fragen, die mit einer einzigen, sachlichen Antwort beantwortet werden können. Der Teil "Was ist Ihre Wunschliste?" Ist definitiv nicht für eine SE-Site geeignet.
Dan Hulme
1
Sie können zur Cornell Box in unserem Chatroom kommen und eine Diskussion
anregen

Antworten:

2

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.

glampert
quelle
Ich bin neugierig - welche Sprachen gibt es da draußen? Ich weiß, dass es motorspezifische Systeme wie die Shader-Systeme von Unity oder UE4 sowie einige akademische Forschungsergebnisse wie Spark gibt , aber mir ist nichts anderes bekannt, das derzeit in diesem Bereich verwendet wird.
Nathan Reed
@ NathanReed, wahrscheinlich ist Apples Metal einer der bemerkenswertesten, aber ich habe nicht viel ins Detail
geschaut
Oh ok. Metal ist jedoch nicht auf HLSL oder GLSL; Es ist eine primäre Shading-Sprache für Apple-GPUs, die direkt in HW-Mikrocode kompiliert wird (über ein proprietäres LLVM-Backend, glaube ich).
Nathan Reed