Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Aug 07, 2025 06:33

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Shader verlinken
BeitragVerfasst: Do Apr 06, 2006 21:42 
Hi,

ich brauch für ein Tool verschiedene Shader.. so vonwegen Grayscale, Invert, Sharpen, Blur etc...
Man soll via Checkbox o.Ä. aktivieren können was man haben will, also z.B. Grayscale + Invert.

Wie stell ich das am geschicktesten an..?
Den Shader immer wenn man seine auswahl getroffen hat dementsprechend zusammenstellen und zur GraKa schicken, oder eher alle shader einzeln erstellen und dann irgendwie via Linking zusammenstöpseln??

Und.. wie funktioniert das mit dem Linking..?? Hab das nochnie gemacht :oops:

Aya~


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 07, 2006 16:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Also ich kann dazu nur sagen: Probiers nicht mit if-Anfragen im Shader selbst. Dadurch wird das Ganze extrem langsam (jedenfalls auf meiner GF 6600), was irgendwie mit dynamischen Sprüngen zusammenhängt. Lars hat mir das mal erklärt, aber ich hab die genaue Begründung schon wieder vergessen :oops:

Aber mir fällt grad ein, du könntest ja je nach gesetztem Häkchen eine Datei vom Delphi aus aus vorher festgelegten Schnipseln zusammenstellen lassen, das als Stream speichern und als einen Shader auslesen lassen.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 07, 2006 19:26 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
La Boda hat geschrieben:
Also ich kann dazu nur sagen: Probiers nicht mit if-Anfragen im Shader selbst. Dadurch wird das Ganze extrem langsam (jedenfalls auf meiner GF 6600), was irgendwie mit dynamischen Sprüngen zusammenhängt. Lars hat mir das mal erklärt, aber ich hab die genaue Begründung schon wieder vergessen :oops:

Die (alten) Karten können keine IF-Abfrage und rechnen beides aus, nur das passende wird dann angezeigt.
Als Beispiel:
if ja then calcja else calcnein;
würde dazu führen, da calcja und calcnein berechnet werden, obwohl nur eine notwendig ist.

Einzelne Shader auszuwählen sollte nicht das Problem sein, ich sehe das Problem bei den Kombinierten.
Die müssten dann auch in einer Shaderdatei sein, mir ist zumindest nicht bekannt, dass mehrere Shader gleichzeitig aktiv sein können.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 08, 2006 14:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 16, 2003 15:20
Beiträge: 198
Ich kann mich i0n0s nur anschließen, die Shader müssten entweder so geschrieben sein, dass man sie wirklich einfach hintereinander in eine shaderdatei packen könnte, oder aber man müsste mit mehreren passes arbeiten (pro shader einer, jeweils mit dem Ergebnis des Vorherigen rechnen), aber ich würde vermuten das 1.Methode zwar evtl. etwas schwerer umzusetzen ist, aber Performancetechnisch vermutlich besser ist [solange du nicht andauernt Shaderteile aktivierst bzw. deaktivierst]

_________________
Bevor du definierst, was etwas ist, versichere dich seiner Existenz.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Apr 09, 2006 11:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab das bisher immer so gesehen, das man einfach alle shader varianten als einzelne shader schreibt.
Dies hat den Grund, die Performance. Ich rate es dir wie folgt zu lösen.
Schreibe alle shader einzeln und zerschnippsel sie dann in header und code.
Nun lädst du alle headerfiles die du brauchst in eine File und gleiches machst du mit dem code.
Eventuell brauchst du noch ein footer für z.B. vertexshader.
Überlege dir Variablen die du gemeinsam nutzen willst für alle shader.
Z.B. endpos und läst am anfang die position von opengl einspeisen und die shader codes die dann folgen, nutzen diese var und am ende gibst du opengl diese var zurück.
Erinnert mich stark an PHP und Include :wink:

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 12, 2006 18:12 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ja sowas wie den ID3DXFragmentLinker bräuchte man auch in OpenGL. Der macht nämlich genau das und optimiert den Shader noch dabei. Außerdem ist das Linken ausdrücklich sehr schnell.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 24, 2006 19:22 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Soweit ich weiß kann man auch in OpenGL kompilierte Shaderobjekte miteinander linken, wie man es aus der CPU-Programmierung kennt. Z.B. benutzt man in der main eine Funktion, die z.B. die Per-Vertex Farbe berechnet. Ist die Funktion aktiviert, linkt man dazu die Objektdatei, die die Funktion enthält, die die Berechnung durchführt. Andernfalls linkt man eine Funktion dazu, die einfach eine Konstante zurückgibt. Letztere Funktion kann der Compiler dann wegoptimieren.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.019s | 17 Queries | GZIP : On ]