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

Aktuelle Zeit: Fr Jul 18, 2025 03:53

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



Ein neues Thema erstellen Auf das Thema antworten  [ 40 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mo Jul 12, 2010 12:28 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
vielleicht hab ich das ganze auch falsch verstanden, aber wär es nicht auch möglich die ganzen Lichttexturen auf einer 2. Texturebene ( glActiveTextureARB(GL_TEXTURE1_ARB)), entsprechend der Verzerrung durch die Objekte, zu rendern und dann am ende einmal mit Blending auf die Scene zu rendern?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mo Jul 12, 2010 13:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Öhm...möglich....das Problem ist halt die Texturmatrix. Ich weiß nicht ob es für jeden Texturstage einen eigenen Matrix-Stack gibt.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mi Jul 14, 2010 11:11 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
wenn ich jetzt mal das projezieren eines Bildes weglasse und nur einen entsprechenden "Lichtschein" (runderkreis), da wo der Lichtkegel auf die Objekte trifft simuliere.. ist das dann irgendwie einfacher lösbar? Vielleicht über irgendeine Schattentechnik? Ich will einfach das sich der Spot des Lichts korrekt auf meine Objekte abbildet.. Projezierte bilder sind jetzt erstmal zweitrangig...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mi Jul 14, 2010 11:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
BTW: Ich habe gerade mal nachgeschaut, jede Textur-Unit hat einen eigenen Stack, zumindest in OpenGL ES....aber dann sollte das auch in OpenGL so sein. Du kannst also auch mit der FixedFunktionPipeline bis zu GL_MAX_TEXTURE_UNITS Scheinwerfer auf einmal rendern.

Zitat:
ist das dann irgendwie einfacher lösbar? Vielleicht über irgendeine Schattentechnik?

Das mit der projizierten Textur ist ja eine 2D-Schattentechnik. ;)

Edit: Ähm...du kannst natürlich ein OpenGL Spotlicht nehmen, wenn du nur einen Kreis willst. Da gibt es aber natürlich keinen Schatten, d.h Licht scheint durch Objekte hindurch und beleuchtet auch die Objekte dahinter. Das wäre mit der projizierten Textur auch der Fall, da es eine 2D-Technik ist. Für echte Schatten musst du das mit ShadowMapping verbinden, was bedeutete die Szene aus der Perspektive jeder Lichtquelle einmal zu rendern.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mi Jul 14, 2010 11:42 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
OpenGL Spotlicht wäre ja nicht verkehrt, doch da hab ich doch max nur 8 stück oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mi Jul 14, 2010 11:53 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
lässt sich das nicht irgendwie über Stencil machen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mi Jul 14, 2010 11:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
OpenGL Spotlicht wäre ja nicht verkehrt, doch da hab ich doch max nur 8 stück oder?

Ja, aber Szene mehrfach rendern mit additivem Blending geht immer. Ansonsten mit Shadern kannst du quasi beliebig viele Spotlichter implementieren.

Zitat:
lässt sich das nicht irgendwie über Stencil machen?

Naja, Stencil-Shadows, also Volumenschatten. Wäre eine Technik als alternative zu den ShadowMaps. Aber das dürfte bei so vielen Lichtern massiv auf die Füllrate gehen. Daher eher nicht zu empfehlen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mi Jul 14, 2010 14:13 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Liesse sich so ein spotlight-shader einfach schreiben? Gibts schon was fertiges?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Mi Jul 14, 2010 15:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Du könntest z.B. diesen hier als Basis nehmen.
http://wiki.delphigl.com/index.php/shad ... _Lighting2

Der Shader kann Direktional- und Punktlicht. Wenn du den Direktional-Kram raus nimmst musst du nur noch aus dem Punkt-Licht ein Spot-Licht machen, sprich den Öffnungswinkel beschränken. Wenn du mehr als 8 Lichtquellen einbauen willst musst du natürlich die benötigten Lichtdaten selbst als Uniform übergeben. (gl_LightSource[], gl_FrontLightProduct usw. sind ja nur Arrays der Größe 8 )

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Beleuchtungstechniken - Spots
BeitragVerfasst: Di Jul 20, 2010 14:15 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
ich hab jetzt mal das hier angeschaut.. http://www.ozone3d.net/tutorials/glsl_texturing_p08.php

Könnte ich nicht alle TexturMatrizen während ich die Scheinwerfer rendere zwischenspeichern:
Code:
..alle Transformationen & Rotationen...
...scheinwerfer rendern...
//Matrix zwischenspeichern
glTexGeni(GL_S, GL_EYE_PLANE, &MeinSpot[i].TexGenMatrix[0]);
glTexGeni(GL_T, GL_EYE_PLANE, &MeinSpot[i].TexGenMatrix[4]);
glTexGeni(GL_R, GL_EYE_PLANE, &MeinSpot[i].TexGenMatrix[8]);
glTexGeni(GL_Q, GL_EYE_PLANE, &MeinSpot[i].TexGenMatrix[12]);   


Somit habe ich die Matrizen immer aus der Sicht des Scheinwerfers...
Diese übergebe ich dann anschließen in einem Array zusammen mit der zu projezierenden Textur dem o.g. Shader und lasse ihn projezieren..

Ließe sich das so irgendwie bewerkstelligen?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 40 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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 | 14 Queries | GZIP : On ]