DGL https://delphigl.com/forum/ |
|
glsl PreCompiler https://delphigl.com/forum/viewtopic.php?f=13&t=11201 |
Seite 1 von 1 |
Autor: | Bergmann89 [ Sa Jul 05, 2014 18:36 ] |
Betreff des Beitrags: | glsl PreCompiler |
Hey Leute, wir sind dabei einen Teil unserer Engine umzubauen und haben uns dazu entschlossen euch daran teilhaben zu lassen. Das Ganze ist ein PreCompiler für GLSL, mit dessen Hilfe man über IFDEF und INCLUDE dynamischen Shader-Code zusammen bauen kann. Zumindest war es das bis jetzt. Das hat zwar bis jetzt ganz gut funktioniert, aber hier und da sind wir an einige Grenzen gestoßen. Deshalb haben wir uns entschlossen den Teil etwas aufzubohren. Daraus ist eine Art Klassenstruktur für GLSL-Shader entstanden, die ich im folgenden etwas genauer beschreiben will. Wie sieht das Ganze aus? Code:
Was bedeutet das nun alles? Compiler Direktiven haben prizipiell die Form {$IRGENDWAS ...}. Folgende Direktiven gibt es:
Wie arbeitet das Alles? Zunächste wird die Datei geladen und interpretiert. Anschleißened kann Applikation verschiedene Einstellungen am Shader ändern. Beim generieren des Codes wird in der $MAIN-Funktion gestartet und sich von dort aus duch den Code-Baum gearbeitet. Code-Teile die nicht benötigt werden, werden nicht im finalen Shader-Code eingefügt. Das gilt ebenso für Variabel, Uniforms, Varyings und und und ... Das ist ersteinmal die grobe Idee dazu. Bis jetzt ist noch nix implementiert. Was haltet ihr davon? Was findet ihr gut? Was würdet ihr anders / besser machen? Wir würden das gern mit euch diskutieren. Vlt will das System ja auch der ein oder andere für seine Projekte nutzen? Links: Gitlab WebFrontend Lizenz Dokumentation (speichern unter) Zum Meinungs-Thread Downloads: git clone: gitlab@git.ccs-baumann.de:bitspace/ShaderFile.git Download lastest Source (as zip) libShaderFile (v1.0.0.5 i386 Linux) libShaderFile (v1.0.0.5 x86_64 Linux) libShaderFile (v1.0.0.5 i386 Win32) libShaderFile (v1.0.0.5 x86_64 Win64) Gruß, das bitSpaceTeam |
Autor: | Bergmann89 [ So Sep 14, 2014 15:52 ] |
Betreff des Beitrags: | Re: glsl PreCompiler |
Hey Leute, hat alles bisl länger gedauert als geplant, aber jetzt steht die Funktionalität soweit, das man mal was zeigen kann. Deshalb gibts jetzt ein paar einfache Beispiele, wie wir das ganze System nutzen wollen. Prinzipiell kann man den PreCompiler auf 2 Arten nutzen:
Beispiel für simple Include-Files Folgendes Beispiel beinhaltet 2 Datein:
Color.frag: Code:
Simple.frag: Code:
Programm-Code: Code:
resultierender Shader-Code: Code:
Beispiel für Klassen Jetzt wird's etwas komplizierter. Im Beispiel gibts es (ähnlich wie oben) 2 Klassen:
Code:
resultierender Shader-Code: Code:
Zum Schluss gibt es noch einmal eine aktualisierte Liste mit allen PreCompiler-Tokens, da sich dort auch das ein oder andere geändert hat oder neu dazu gekommen ist. [] - bedeutet optional [X ...] - kann beliebig oft wiederholt werden 'Value' - sind Werte die in Variablen gesetzt werden können, diese Werte werden 1 zu 1 übernommen, es erfolgt keine Prüfung Token:
Expression Operatoren:
Soweit erstma zum aktuellen Stand. Die Unit zum selbst probieren gibts es im Laufe der folgenden Woche. Wir müssen uns erstmal überlegen wie genau wie das zur Verfügung stellen und wie wir das dann pflegen. MfG Bergmann. |
Autor: | Bergmann89 [ Fr Sep 26, 2014 20:20 ] |
Betreff des Beitrags: | Re: glsl PreCompiler |
Hey Leute, wieder mit etwas Verspätung heute das Update mit Download & Co (siehe erster Post). Wir haben den glslPreCompiler mit in den OpenGLCore aufgenommen (heißt dort uglcShaderFile). Das haben wir so gemacht, da wir den Code so besser verwalten können und nicht für jede Datei ein extra Repo/Versionnierung haben. Der Thread hier bleibt trotzdem und wird auch in Zukunft alles was mit dem PreCompiler zu tun hat beinhalten. MfG Bergmann. |
Autor: | Bergmann89 [ Do Okt 02, 2014 17:06 ] |
Betreff des Beitrags: | Re: glsl PreCompiler |
Hey, bei der Unit haben noch einige Abhängigkeiten gefehlt. Ich hab versucht die aufzulösen, aber das ist zu sehr verstrickt. Deshalb gibts die Units jetzt mit zum Download im ersten Post. Das passt jetzt auch nicht mehr richtig in den LazOpenGLCore rein, deshalb haben wird das da wieder raus genommen. Sry für das hin und her :/ MfG Bergmann. |
Autor: | Bergmann89 [ Sa Sep 12, 2015 21:24 ] |
Betreff des Beitrags: | Re: glsl PreCompiler |
Hey Leute, es gibt ein Update zum Projekt. Ich hab alles refactored und aufgeräumt. Jetzt gibt es das Projekt als komplett eigenständiges Repository. Die Links dazu findet ihr im ersten Posting. Für die nächsten Wochen ist die Umsetzung einer dynamischen Library geplant, dass das Projekt auch in anderen Sprachen genutzt werden kann. Folgende Sprachen sind bis jetzt geplant: C, C++ und Delphi. Natürlich darf sich dann auch jeder gern einen eigenen Header für die Sprache seiner Wahl schreiben, aber diese 3 Sprachen werden sozusagen out-of-the-box unterstützt. Eine umfassende Doku wie man das ganz nun nutzt kommt natürlich auch noch. Im Vergleich zu älteren Versionen hat sich aber nicht viel geändert. Ich würde mich sehr freuen, wenn jmd ein wenig damit rum spielt und mir etwas Feedback geben könnte. MfG Bergmann. |
Autor: | Bergmann89 [ So Sep 27, 2015 16:45 ] |
Betreff des Beitrags: | Re: glsl PreCompiler |
Hey Leute, es ist vollbracht. Ich hab soeben v1.0.0.1 von libShaderFile gebaut. Die lib steht als Windows und Linux Binary jeweils für 32bit ud 64bit zur Verfügung. Die Links findet ihr im ersten Post. Außerdem hab ich eine umfassende Dokumentation mit simplen Code-Schnipseln geschrieben. Komplette kompilierbare Code Beispiele für C, C++, FPC/Lazarus und Delphi gibt es ebenfalls. Ich hoffe damit ist jeder versorgt. Falls es doch noch Fragen und Wünsche geben sollte, dann kann er mir gern nen Post dazu im Meinungs-Thread verfassen. Einfaches Feedback zur Nützlichkeit oder Ähnlichem sind natürlich auch gern gesehen. MfG Bergmann. |
Autor: | Bergmann89 [ Di Okt 13, 2015 19:41 ] |
Betreff des Beitrags: | Re: glsl PreCompiler |
Hey Leute, hab grad ein Update (v1.0.0.3) hochgeladen. Die neue Version enthält die Möglichkeit die Shader-Files über ein Callback bzw. ein Interface zu laden. Damit ist man nicht gezwungen den ShaderCode als Datei auf der Festplatte zu lagern, sondern könnte den Code auch aus einer Datenbank, Virtuellem Dateisystem oder ähnlichem laden. Diese Funktion war zwar im Code schon implementiert, aber noch nicht in der Bibliothek. Für diejenigen, die den Source direkt genutzt haben gibt es keine Änderungen. Download gibts wie immer im ersten Post. MfG Bergmann. |
Autor: | Bergmann89 [ Di Okt 27, 2015 17:45 ] |
Betreff des Beitrags: | Re: glsl PreCompiler |
Hey Leute, hab grad ein Update (v1.0.0.4) mit ein paar kleinen BugFixes hochgeladen. Links wie immer im ersten Post. MfG Bergmann. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |