AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia ShaderFile (ein PreCompiler für OpenGL Shader Code)

ShaderFile (ein PreCompiler für OpenGL Shader Code)

Ein Thema von Bergmann89 · begonnen am 27. Sep 2015 · letzter Beitrag vom 27. Okt 2015
Antwort Antwort
Bergmann89

Registriert seit: 12. Dez 2010
36 Beiträge
 
#1

ShaderFile (ein PreCompiler für OpenGL Shader Code)

  Alt 27. Sep 2015, 19:01
Hey Leute,

ich habe einen PreCompiler für OpenGL shader code entwickelt. Das Projekt nennt sich: "ShaderFile". Mit ShaderFile kann man große und komplexe Shader verwalten und trotzdem relativ kleinen und einfachen ShaderCode generieren. Der generierte Code wird dann mit einem normalen OpenGL Shader Objekt interpretiert, kompiliert und gelinkt.

Hier eine kurze Übersicht über die wichtigsten Features:
- wie von einem normalen PreCompiler bekannt gibt es If-Anweisungen mit denen man einen weiteren Pfad für die Code-Generierung einfügen kann
- mit der Include-Anweisung kann man andere Datein einbinden und so seinen Code übersichtlich über mehere Datein verteilen
- mit der Class-Anweisung kann man eine klassenähnliche Struktur definieren; innerhalb einer solchen Klasse kann man dann Methoden der Elternklasse überschreiben
- mit Hilfe einer Property-Anweisung kann man Eigenschaften im ShaderCode definieren, mit denen man die Code-Generierung steuern kann. Die Werte der Eigenschaften werden dann im Anwendungs-Code gesetzt
- und vieles mehr...

Das Projekt ist komplett in FPC geschrieben und kann ohne Probleme in andere Projekte eingebunden werden. Außerdem gibt es ShaderFile als dynamische Bibliothek für Windows und Linux als 32bit und 64bit Kompilat. Die Bibliothek enthält Header-Datein für C, C++, FPC und Delphi.

Einfaches Beispiel für eine Shader-Klasse:
Code:
{$CLASS Color}
    {$PROPERTY UseColorMap 'false'}
{$END}
 
{$CLASS ColorFrag $EXTENDS Color}
 
    /* you can also define code here. It will be added when the code for the class is generated */
 
    {$FUNC 'vec4' GetColor $INLINE}
        {$IF UseColorMap}
            {$VAR 'vec2' '_texCoord' 'gl_TexCoord[0].st'}
            {$UNIFORM 'sampler2D' 'uColorMap'}
            return texture2D(uColorMap, _texCoord);
        {$ELSE}
            return gl_Color;
        {$END}
    {$END}
 
    {$MAIN}
        gl_FragColor = {$CALL GetColor};
    {$END}
{$END}
 
{$CLASS ColorVert $EXTENDS Color}
    {$MAIN}
        gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
        {$IF UseColorMap}
            gl_TexCoord[0] = gl_MultiTexCoord0;
        {$ELSE}
            gl_FrontColor = gl_Color;
            gl_BackColor = gl_Color;
        {$END}
    {$END}
{$END}
Ergebnis für ColorFrag mit UseColorMap = true:
Code:
/* you can also define code here. It will be added when the code for the class is generated */
 
uniform sampler2D uColorMap;
 
vec2 _texCoord = gl_TexCoord[0].st;
 
void main(void)
{
    gl_FragColor = (texture2D(uColorMap, _texCoord));
}
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.1 i386 Linux)
libShaderFile (v1.0.0.1 x86_64 Linux)
libShaderFile (v1.0.0.1 i386 Win32)
libShaderFile (v1.0.0.1 x86_64 Win64)

MfG Bergmann89.
  Mit Zitat antworten Zitat
Bergmann89

Registriert seit: 12. Dez 2010
36 Beiträge
 
#2

AW: ShaderFile (ein PreCompiler für OpenGL Shader Code)

  Alt 13. Okt 2015, 20:44
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.

€: wieso kann ich meinen ersten Post nicht editieren?! :/ Die Links stimmen, nur der angezeigte Name passt nicht.

MfG Bergmann.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: ShaderFile (ein PreCompiler für OpenGL Shader Code)

  Alt 13. Okt 2015, 22:32
€: wieso kann ich meinen ersten Post nicht editieren?! :/
Frag den Administrator Daniel, vielleicht kann er das für Dich freischalten.

Per se möglich ist es jedenfalls, wenn man im ersten Betrage wenigstens eine Datei als Anhang hochlädt.
  Mit Zitat antworten Zitat
Bergmann89

Registriert seit: 12. Dez 2010
36 Beiträge
 
#4

AW: ShaderFile (ein PreCompiler für OpenGL Shader Code)

  Alt 27. Okt 2015, 17:56
Hey Leute,

hab grad ein Update (v1.0.0.4) mit ein paar kleinen BugFixes hochgeladen. Links wie immer im ersten Post (auch wenn der Link noch mit 1.0.0.1 betitelt ist).
Über ein bischen mehr Feedback (auch negatives wenn euch was aufgefallen ist) würde ich mich freuen, oder nutzt das Ding einfach keiner?!

MfG Bergmann.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz