May, M. (2015). Design and implementation of a shader infrastructure and abstraction layer [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2015.30529
E186 - Institut für Computergraphik und Algorithmen
-
Date (published):
2015
-
Number of Pages:
96
-
Keywords:
Real-Time Rendering; Shader Programming; Embedded; Domain Specific Language
en
Abstract:
Die Programmierung der Grafikkarte ist wichtiger denn je, aber die Entwicklung für die dafür nötigen Shader Programme und deren Verwaltung ist eine schwierige Aufgabe. Es stellt sich die Frage ob dieser Prozess in die Programmiersprache C# eingebettet und dessen Entwicklungswerkzeuge unterstützend genutzt werden können? Um dieser Frage auf den Grund zu gehen, wurde in dieser Arbeit ein System entworfen und implementiert um Shader-Programmierung zu abstrahieren und mittels einer internal Domain Specific Language (kurz: iDSL) in C# zu integrieren. Das Back-end kann mittels Erweiterungen um beliebige weitere Optimierungen und unterschiedliche Shader-Programm-Dialekte ergänzt werden. Das implementierte Framework ermöglicht Shaderprogrammierern die Entwicklungswerkzeuge von C# zu nutzen, wie zB. automatische Textvorschläge und Vervollständigungen oder Typ-System-Fehlererkennung im Editor.
de
Programming the GPU is more important than ever, but the organization and development of shader code for the GPU is a difficult task. Can this process be embedded into the high level language C#, gain from the features of its toolchain and enrich shader development? For this purpose this thesis describes the design and implementation of a framework to abstract and embed shader development into C# with an internal domain-specific language (iDSL for short) as front-end and a plug-in system in the back-end to support expandable optimizations and different shader languages as targets. The implemented framework fits shader development into the C# toolchain, supporting autocompletion, and type error checking in the editor. The system offers good modularity and encourages developing shaders in reusable parts.