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

Aktuelle Zeit: Do Jul 10, 2025 15:33

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Schnelle Dynamic Lights in 2D?
BeitragVerfasst: Sa Jan 17, 2004 18:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 22:26
Beiträge: 38
Wohnort: Dresden (noch)
Ich hatte gerade mal überlegt, wie ich möglichst schnell aber immernoch gut aussehend in meinem 2D-Shooter eine Art Glüheffekt (also prinzipiell ein Dynamic Light in 2D) um meine Geschosse bekomme.

Letztlich soll also eine Glühtextur den schon gerenderten texturierten Quads (Schiffe, etc.) hinzugefügt werden, so dass es aussieht, als wäre es farbig beleuchtet, wobei der Hintergrund jedoch unberührt belassen werden soll.

Problem 1 - Hintergrund-Vordergrund-Trennung:
- Ich verwende gestaffelte 2D-Layer. Man könnte den DepthTest auf GL_EQUAL stellen damit das Licht nur auf Objekte in der gleichen Tiefe kommt, aber ich glaube nicht, dass das gut funktioniert.
- Mit StencilTest ginge es auch, aber dann müsste ich wohl erst den Hintergrund rendern, dann mit glClear den Stencilbuffer leeren bevor ich weiterrendere. Weil der Vordergrund teilweise Halbtransparent ist, muss der Hintergrund auf jeden Fall zuerst drauf.

Problem 2 - Blending:
- Multitexutring fällt wegen der vielen Lichter schon einmal weg.
- glBlendFunc hat wohl keine Möglichkeit, multiplikativ zu blenden und wenn ich Additiv blende, sieht das bei hellen Texturen blöd aus.

Ich wäre sehr dankbar für jeden Vorschlag.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 17, 2004 18:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zu Problem 1 :
Nachdem die alle Objekte gezeichnet und beleuchtet hast, zeichnest du erst den Hintergrund. Dank des Z-Buffers macht das dann ja keine Probleme und dadurch wird er auch nicht durchs Blending verändert.

Zu Problem 2 :
Edit : Probiers besser mal mit glBlendFunc(GL_ONE_MINUS_DEST_ALPHA, GL_SRC_COLOR)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 17, 2004 18:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 22:26
Beiträge: 38
Wohnort: Dresden (noch)
Ok die ganzen möglichen Kombinationen bei glBlendFunc und ihre Auswirkungen kenne ich noch nicht so wirklich auswendig, aber wenn du es sagst, dann probiere ich es mal... danke!

Wenn ich den Hintergrund danach zeichne, dann kann ich aber glaube ich kaum noch etwas drüberblenden, was ich meistens mit glBlendFunc(GL_SRC_ALPHA,GL_ONE) mache.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 17, 2004 19:08 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
In 2D ganz man sehr schöne und auch weiche Schatten ohne viel Aufwand erzeugen.
http://www.gamedev.net/reference/programming/features/2dsoftshadow/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 17, 2004 19:13 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Diese Tool lässt dich mit den verschiedenen Blendfaktoren rumprobieren. So hast du ganz schnell genau den Modus gefunden den du suchst.

Und die Sache mit der Trennung Hintergrund/Vordergrund würde ich dann evtl. über RenderToTexture (am besten Pixelpuffer) machen, dann kannst du viele Problem umgehen, da du dann quasi zwei total unterschiedlich manipulierbare Ebenen hast, bei nem Pixelpuffer sogar mit eigenem Kontext.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 13:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 22:26
Beiträge: 38
Wohnort: Dresden (noch)
Wow danke erstmal!

Das war jetzt 'ne ganze Menge Zeug das ich erstmal ausprobieren muss, wenn ich mal Zeit dafür habe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 16:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 22:26
Beiträge: 38
Wohnort: Dresden (noch)
Dieses Tool ist zwar etwas fehlerhaft, da man stehts keine Ausgabe mehr bekommt sobald der SourceFactor auf GL_ZERO steht, aber trotzdem wirklich nicht schlecht!
Auf jeden Fall hatt es bewirkt, dass ich über die ganze Sache noch einmal gründlich nachdenken musste und jetzt endlich das Blendingprinzip richtig verstanden habe.

Hätte ich mal ein Tutorial gefunden das lediglich gesagt hätte:
Der neue Farbwert wird mit dem SourceFactor multipliziert, der Framebufferinhalt wird mit dem DestFactor multipliziert und dann wird das ganze addiert
...dann hätte ich es auch schneller verstanden.

Alle Tutorials die ich gefunden hatte haben entweder versucht, in Tabellen die unübersichtliche Blendinggleichung in allen Kombinationen darzustellen, oder wollten es gleich ganz einfach machen und haben sich in tausend Beispielen verrannt... schade eigentlich.


Zuletzt geändert von Brainiac am So Jan 18, 2004 18:38, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 17:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Das ist immer so eine Sache - Verstehen tut man meist, wenn man etwas selbst ausprobiert, oder sich eine Weile damit beschäftigt - und dann scheint alles plötzlich ganz einfach und logisch.
Ich glaube nicht, dass du hier den Tutorials Schuld geben solltest, und bin mir fast sicher, dass dir vor einigen Wochen deine eigene Erklärung auch nicht weiter geholfen hätte (ist jetzt wirklich nicht böse gemeint :wink: )

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 17:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 22:26
Beiträge: 38
Wohnort: Dresden (noch)
Ich wollte doch keine Schuld zuweisen... ich finde die Tutorials hier generell so ziehmlich die besten zum Thema OpenGL. :!:
Nebenbei wäre es auch unsinnig, einer freiwillig und lediglich als Hilfe ins Netz gestellten Erklärung für so etwas die Schuld zu geben.

Hätte ich meinen Satz gelesen, wäre es mir natürlich nicht gleich wie Schuppen von den Augen gefallen, aber ich find's halt nach wie vor schade, dass ich es noch nirgendwo so richtig auf den Punkt gebracht gesehen habe.


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


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 6 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.007s | 15 Queries | GZIP : On ]