Mehrere Shader in einem Program

Runtime

Top Contributor
Hi Leuts,

hab wieder einmal eine JOGL Frage: Ich habe mehrere Shader, die alle unabhängig voneinander sind und eine main besitzen. Die sollen alle an ein Shaderprogramm attacht werden, wie bringe ich die alle hinein, ohne einen Fehler zu bekommen? Obwohl ich dachte, dass das oft gebraucht wird hab ich trotzdem nicht im Google gefunden... ???:L Geht das überhaupt? Wenn nein, gibt es dazu ein passendes Workaround? (Für die ganz pingeligen: Wie sieht es aus? ;))

Gruss
Cyrill
 

Marco13

Top Contributor
Hm. Wie würdest du den konkret zu verwendenden Shader denn dann auswählen? Afaik kann man in einem Programm nur EIN mal die 2-3 verschiedenen Shader-Arten zusammenstöpseln, und muss den Wechsel dazwischen dann mit glUseProgram machen. Wenn es einfacher geht, habe ich mir bisher einen Haufen unnötiger Arbeit gemacht....
 

Runtime

Top Contributor
Danke für die schnelle Antwort :D. Die Shader sind Vertex- oder Fragmetshader, die als Effekte dienen sollen. Die sollen dann nacheinander auf das gezeichnete einwirken. Dass jeder Shadertyp nur einmal vorkommen kann, hab ich nicht gewusst, das macht die Sache noch komplizierter :(. Kann man eigtl auch mehrere Programme aufs mal benutzten, oder geht das auch irgendwie der Reihe nach, aber immer auf dem selben gezeichneten Objekt?

Edit: Frage nicht richtig verstanden. Es soll nicht nur ein einzelner Shader ausgeführt werden, sondern alle.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Wo-ho... Sooo der shader-experte bin ich auch nicht. Ich habe immer den "pragmatisch-simplen" Ansatz genommen: Vertex+Fragment in ein Program und gut ist.
Soll das so was wie "Deferred Shading" werden?
In wenigen Minuten müßte dieser Thread von Google-Index erfasst worden sein, dann bekommt Fancy eine autmatische Notification-Mail und sagt auch noch was dazu.
 

Marco13

Top Contributor
Und... soll das ganze in mehreren Stufen z.B. auf ein PBO angewendet werden, oder direkt auf den Bildschirm (letzteres stelle ich mir wegen der fehlenden Möglichkeit, vorhandene Daten zu lesen, schwierig vor) ...? Ich habe keine so genaue Vorstellung, wie sowas komplett in Shadern ablaufen kann (oder sollte)... Mal schauen ob Fancy da etwas konkreter werden kann :oops:
 
G

Guest2

Gast
Moin,

die kurze Antwort: Zu einem Zeitpunkt geht auch immer nur genau ein Shaderprogramm (maximal mit vertex, tessellation control, tessellation evaluation, geometry, fragment). Wie Marco schon schrieb, ausgewählt wird das eine aktive Shaderprogramm mit glUseProgram, welches eben genau ein handle auf ein gültiges Shaderprogramm erwartet.

Die lange Antwort: Worum geht’s überhaupt? :D
In einem der letzten Threads zum Thema schriebst Du, das Du eine GMA X3100 nutzt und damit evtl. bei OpenGL 1.5 festgenagelt bist. Bei 1.5 geht Shader aber nur per Extension. Da steht dann ARB, Cg oder GLSL zur Auswahl. Bei ARB gabs noch gar keine main (meinst Du also vermutlich auch nicht). Ob bei Cg das gleichzeitige linken von verschiedenen Shadern des gleichen Typs möglich ist, kann ich nicht sagen (glaube es aber nicht)(obrige kurze Antwort ist also nur gültig, wenn kein Cg eingesetzt wird) ;). Und das GLSL von Deiner Grafikkarte unterstützt wird, würde mich wundern.

Also, auf welcher Shadersprache bezieht sich Deine Frage?
(Und bei weiteren Fragen: Bei GLSL welche Version? GLSL 1.20 ist dramatisch anders als GLSL 4.10 :))

Grundsätzlich ist das, was Du willst, auch nicht so einfach. Z.B. ein Fragmentshader zum Weichzeichnen würde die Farbinformationen der Nachbarpixel benötigen. Zu dem Zeitpunkt, an dem der Fragmentshader läuft, existiert die Farbinformation der Nachbarpixel aber möglicherweise noch gar nicht. Du brauchst also zwangsweise mehrere Renderläufe. Jeden Filter als jeweils eigenen Renderpass anzulegen, ist aber auch nur bedingt sinnvoll, weil das schnell langsam werden kann.
Dir bleibt also vermutlich nicht viel anders übrig, als Dir für jeden darzustellenden Effect ein separates Shaderprogramm auszudenken, welches die einzelnen Filter kombiniert (eben soweit möglich), bzw. auf verschiedene Renderphasen verteilt (eben soweit nötig). Eine seperate main brauchst Du aber für jeden Effect (Kombination aus Filtern). Etwas zu schreiben, bei dem man pauschal Effect X, Y und Z aktivieren kann, wird also zumindest nicht einfach.

(Möglich ist das schon, z.B. lassen sich die Filter auch in Funktionen packen, welche dann separat als Fragmentshader geladen werden. Beim linken wird dann diese "Lib" und eine dynamisch generierte main verwendet. Das müsste man dann noch cachen, damit z.B. das Shaderprogramm für Effect (Filterkombination) XYZ nur einmal erzeugt werden muss.

Ein anderer Ansatz wäre das PBO "zwischenzuspeichern" und nur Veränderungen durch einen separaten Renderlauf auf das PBO zu realisieren. Ähnlich wie man es mit einem BufferedImage bei reinem Java machen würde. Dann müsste nicht für jedes Frame das komplette "Bild" wieder aufgebaut werden. Geht aber natürlich nur, wenn sich immer relativ wenig ändert.

Die Möglichkeiten sind also vielfältig, nur mit pauschal ist bei OpenGL, fast nie was sinnvoll zu machen :D))

In wenigen Minuten müßte dieser Thread von Google-Index erfasst worden sein, dann bekommt Fancy eine autmatische Notification-Mail und sagt auch noch was dazu.

LOL :D

Gruß,
Fancy
 

Runtime

Top Contributor
Danke :)
Schade wenn ichs nicht so realisieren kann, wie ich es mir vorgestellt hab. Ich bin mal davon ausgegangen, dass meine GPU GLSL unterstützt, da ich das GL2-Objekt zum zeichnen bekomme, welches die GLSL lade/compile Methoden besitzt. Da aber sowieso vieles dagegen spricht, muss ich mir etwas anderes ausdenken oder weglassen.
Edit:
Wie handhabt Flash das eigentlich? In Flash kann ich mehrere Bitmap Effects und Anti-Aliasing brauchen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mehrere Klassen auf JFrame Spiele- und Multimedia-Programmierung 3
N Mehrere Rechtecke in großes Quadrat einzeichnen Spiele- und Multimedia-Programmierung 5
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
M Applets - mehrere Tasten gleichzeitig abfragen Spiele- und Multimedia-Programmierung 3
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
staxx6 (Slick) Steuerung - mehrere Belegungen Spiele- und Multimedia-Programmierung 12
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 5
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 2
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
S Mehrere Steine gleichzeitig setzen und bewegen Spiele- und Multimedia-Programmierung 4
V Java3D: mehrere ViewingPlaforms in Sonnensystem Spiele- und Multimedia-Programmierung 8
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
hdi mehrere Threads/Tasks in einem synchronisieren -> TaskPoo Spiele- und Multimedia-Programmierung 36
S Java3D - mehrere Instanzen eines Geometrieobjektes erzeugen Spiele- und Multimedia-Programmierung 3
V Ein oder mehrere GIF-Grafiken zusammenfügen Spiele- und Multimedia-Programmierung 3
M mehrere PNG in eine Datei Spiele- und Multimedia-Programmierung 3
L Wie kann ich mehrere Texturen auf ein Object File mappen Spiele- und Multimedia-Programmierung 4
D mehrere Graphiken erstellen und ihre Position definieren Spiele- und Multimedia-Programmierung 4
coolian glsl shader syntax fehler bei if? Spiele- und Multimedia-Programmierung 8
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
C 3d Engine : Fragment Shader , aber wie? Spiele- und Multimedia-Programmierung 17
C Eigenen Fragment-Shader schreiben Spiele- und Multimedia-Programmierung 1
C Eine eigene 3d Engine : Shader - aber wie ? Spiele- und Multimedia-Programmierung 2
G Low Poly 3D LWJGL Shader Problem Spiele- und Multimedia-Programmierung 4
T LWJGL: Terrain-Texturen / 2D-Array in Shader? Spiele- und Multimedia-Programmierung 2
codestück shader tutorial Spiele- und Multimedia-Programmierung 4
A JOGL Shader Anfängerprobleme Spiele- und Multimedia-Programmierung 2
J Gaussblur Shader Spiele- und Multimedia-Programmierung 4
J GLSL Noise Shader Spiele- und Multimedia-Programmierung 6
M GLSL Shader Spiele- und Multimedia-Programmierung 4
C Vertex Shader 2.0 Spiele- und Multimedia-Programmierung 7
E Rendering order auf einem ismetrischen Grid Spiele- und Multimedia-Programmierung 8
P Wie kann ich einem Programm hinter eine GUI verstecken? Spiele- und Multimedia-Programmierung 12
J (Libgdx) animation nur einmal in einem Event aufrufen Spiele- und Multimedia-Programmierung 1
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
P selectedItem aus einem Methodenerstellten JPanel auslesen. Spiele- und Multimedia-Programmierung 5
O Problem beim Aufrufen des Spiels von einem Menü Spiele- und Multimedia-Programmierung 7
G Entity Verwaltung in einem 2D Spiel Spiele- und Multimedia-Programmierung 1
G Collision Detection in einem 2D Sandbox Game. Spiele- und Multimedia-Programmierung 2
E Einem A*-Pfad folgen Spiele- und Multimedia-Programmierung 27
G Auf einem Stick bewegen Spiele- und Multimedia-Programmierung 5
windl MP3-Tags von einem Inputstream auslesen Spiele- und Multimedia-Programmierung 5
U DPI von einem Bild definieren Spiele- und Multimedia-Programmierung 5
X Erklärung zu einem Tic Tac Toe Spiel Spiele- und Multimedia-Programmierung 1
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
M [JOGL] Maus über einem gezeichnetem Objekt abfragen? Spiele- und Multimedia-Programmierung 5
P Winkel von einem Punkt zum anderen berechnen Spiele- und Multimedia-Programmierung 9
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
S Java3D: Primitives zu einem Objekt kombinieren Spiele- und Multimedia-Programmierung 7
Fl4sh1 Datum und Uhrzeit von einem Ereignis ausgeben lassen Spiele- und Multimedia-Programmierung 3
P Frage zu einem Projekt "Einarmiger Bandit" 3 Walzen / 9 Zeichnungen BLUEJ Spiele- und Multimedia-Programmierung 10
K Grundsätzlicher Spieleaufbau an (m)einem Beispiel Spiele- und Multimedia-Programmierung 4
S Problem mit Sichtfeld/Licht in einem Raster Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
A Drehen von einem Image Spiele- und Multimedia-Programmierung 4
F Bot updaten von einem Browser game Spiele- und Multimedia-Programmierung 7
W Java3D: Kanten die hinter einem Objekt liegen werden gezeigt Spiele- und Multimedia-Programmierung 2
B Reset bei einem Spiel Spiele- und Multimedia-Programmierung 16
C auf einem PC kein mp3 unter Java Spiele- und Multimedia-Programmierung 6
A Steuerung des Bewegungsflusses bei einem Netzwerkspiel Spiele- und Multimedia-Programmierung 18
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
Z Kugeln aufgrund von Daten aus einem Array verschieben Spiele- und Multimedia-Programmierung 2
S Probleme mit JMenu in einem JFrame mit BufferStrategy Spiele- und Multimedia-Programmierung 2
K Kanten anzeigen lassen in einem Shape3D-Objekt Spiele- und Multimedia-Programmierung 4
A Interaktion von J3D in einem Applet Spiele- und Multimedia-Programmierung 4
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
H Speichern und Öffnen von einem Zeichenprogramm Spiele- und Multimedia-Programmierung 4
A Wie kann ich die Dateigröße aus einem tiff auslesen? Spiele- und Multimedia-Programmierung 2
N Farberkennung und -ersetzung in einem Bild Spiele- und Multimedia-Programmierung 2
F Umsetzung von einem Partikelsystem Spiele- und Multimedia-Programmierung 4
J Java3D Rotationsproblem bei einem 3D-Maennchen Spiele- und Multimedia-Programmierung 3
B Frage zur Spielsteuerung bei einem rundenbasiertes Spiel Spiele- und Multimedia-Programmierung 5
K Seitenlänge aus einem Würfel lesen Spiele- und Multimedia-Programmierung 3
K Einzelne Pixel in einem Bild lesen Spiele- und Multimedia-Programmierung 5
T Kollisionsabfrage von einem Stein mit einem Ball Spiele- und Multimedia-Programmierung 5
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
A 3D Gegenstand in einem 2D Koordinatensystem darstellen. Spiele- und Multimedia-Programmierung 3
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
D Image.getGraphics() in einem Frame Spiele- und Multimedia-Programmierung 4
G Bufferimage bei einem Frame Spiele- und Multimedia-Programmierung 4
I Zweite Kamera in einem SimpleUniverse Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben