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

Aktuelle Zeit: Mo Jul 21, 2025 08:08

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Zuordnung der Shader zu Objekten
BeitragVerfasst: Di Nov 30, 2004 18:50 
Offline
DGL Member

Registriert: So Nov 28, 2004 21:17
Beiträge: 5
Habe eine ganz allgemeine Verständnisfrage diesmal zu Shadern.

Habe mir mal das Einführungstutorial zu GLSlang von Sascha Willems angeschaut. Ist auch für mich als Einsteiger relativ verständlich,
aber jetzt mal eine ganz allgemeine Frage.

Dazu folgendes Bsp.
Ich habe eine Ebene mit 2 Kugeln oder Würfeln oder was auch immer, eine links, eine rechts. Diese zeichne ich doch noch ganz normal
über die Standard OpenGlfunktionen. (Gl_Quad, GL_Triangle etc) oder?
Das linke Objekt soll mit einem Shader versehen werden, der dem Objekt eine rauhe, matte Oberfläche zuordnet, das rechte Objekt
soll so aussehen, als ob es aus Wasser wäre (Wie auch immer die Shader dafür aussehen würden!!)
Die Ebene soll so belassen werden wie OpenGl sie standardmässig rendert.

Frage: wie teile ich dem oder den Shadern mit, für welche Objekte sie zuständig sind? Oder liege ich schon vom Grundgedanken her falsch,
das ich Objekte überhaupt noch mit der fixen Pipeline rendern kann?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 18:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
OpenGL ist eine Statemachine, weshalb es mit Shadern genauso ist wie mit Texturen oder Farben oder sonstigen States : Ein Shader wird solange genutzt, bis ein anderer Shader aktiviert wird oder der Shader deaktiviert werden.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 18:55 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
nochmal am beispiel klargemacht, wie das ganze aussehen würde (Pseudocode)

renderschleife anfang

Shader1 aktivieren =rauher matter shader

kugel 1 rendern

shader 1 deaktivieren
shader 2 aktivieren = wassershader

kugel2 rendern

shader 2 deaktivieren

Rest normal zeichnen

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 18:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die Sache von Fiji ist leider nicht ganz korrekt. Statemaschine bedeutet dass man Objekte nicht erst deaktivieren muss bevor andere aktiviert werden, sondern es wird immer nur gewechselt. Das "Deaktivieren" der Shader fällt also weg.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 19:00 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
:oops: ;)

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 19:29 
Offline
DGL Member

Registriert: So Nov 28, 2004 21:17
Beiträge: 5
Danke schon mal für die Antworten :D

Ok, das mit der Statemachine ist klar.

Wenn ich jetzt also meine Szenen mit den Kugeln anzeigen lassen möchte, müsste ich zuerst den Shader laden (Rauh, matt), dann die Kugel zeichnen (Per Standard-Pipeline), dann einen anderen Shader laden (Wasser) und dann die zweite Kugel zeichnen (auch per Standard GL-Pipeline), dann den Shader deaktivieren und dann den Boden zeichnen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 19:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Jepp.
(Fast) genau das hat Fiji gemeint 8)

_________________
"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: Di Nov 30, 2004 20:11 
Ok, das ist dann schon mal verstanden. Abschliessend dann aber noch mal eine Frage.

Angenommen, ich hätte meine Kugeln so gerendert wie ich sie mir vorstelle (rauh u. matt, Wasser), möchte dann
aber noch die komplette Szene mit einen Blur-effekt versehen.

Wie müsste man dazu vorgehen ? Die Szene ist ja im Prinzip schon fertig gerendert, müsste man einen "Blur-Shader" laden und
alle Objekte nochmal rendern ? Oder müsste der Shader für jedes Objekt um den "Blur-Shader" erweitert werden und damit jedes
Objekt separat "Verblurrt" (Sorry, ein anderer Ausdruck fällt mir nicht ein) werden?


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Blur ist ein Vollbildeffekt, den man nicht direkt auf Objekte anwenden kann. Für sowas muss man die fertige Szene in eine Textur kopieren (am besten direkt in einen P-Buffer rendern), auf diese Texturen den Shader anwenden, und die Textur dann am Ende bildschirmfüllend (Ortho-Modus) rendern.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 21:01 
Offline
DGL Member

Registriert: So Nov 28, 2004 21:17
Beiträge: 5
Alles klar !

Werde, bevor ich hier weiter Fragen über Fragen stelle, erstmal ein paar Gehversuche mit Shadern starten.

Danke schon mal für alle Antworten... :)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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.008s | 15 Queries | GZIP : On ]