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

Aktuelle Zeit: Sa Jul 12, 2025 19:07

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



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bumpmapping
BeitragVerfasst: Fr Jun 02, 2006 15:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich wollte ein Menu mit einem Wasserhintergrund machen. Eine simple Wassertextur war mir aber zu simpel, also hab ich mir gedacht, probierste mal dieses Bumpmapping-Tutorial aus. Nachdem ich mit dem NormalMapGen.exe-Teil gekämpft habe (nach 3 Minuten nicht fertig ?!?) hatte ich dann diese tolle Map.

Dann hab ich den Sourcecode bei mir eingebaut:
Code:
  1.  
  2.   if CanUseBumpMapping then
  3.   begin  
  4.     glActiveTextureARB(GL_TEXTURE1_ARB);
  5.     glEnable(GL_TEXTURE_2D);
  6.     Water.Bind;
  7.  
  8.     glActiveTextureARB(GL_TEXTURE0_ARB);
  9.     glEnable(GL_TEXTURE_2D);
  10.     WaterBump.Bind;
  11.  
  12.     glEnable(GL_REGISTER_COMBINERS_NV);
  13.  
  14.     glCombinerInputNV(
  15.       GL_COMBINER0_NV,            //Combiner, der benutzt wird
  16.       GL_RGB,
  17.       GL_VARIABLE_A_NV,           //Variable beim Combiner
  18.       GL_TEXTURE0_ARB,            //Wert: Bumpmap Textur
  19.       GL_EXPAND_NORMAL_NV,
  20.       GL_RGB
  21.     );
  22.  
  23.     glCombinerInputNV(
  24.       GL_COMBINER0_NV,            //Combiner, der benutzt wird, wie oben
  25.       GL_RGB,
  26.       GL_VARIABLE_B_NV,           // Variable beim Combiner
  27.       GL_PRIMARY_COLOR_NV,        //Wert: RGB Wert der Oberfläche
  28.       GL_EXPAND_NORMAL_NV,
  29.       GL_RGB
  30.     );
  31.  
  32.     glCombinerOutputNV(
  33.       GL_COMBINER0_NV,
  34.       GL_RGB,
  35.       GL_SPARE0_NV,       // Output von A und B
  36.       GL_DISCARD_NV,      // Output von C und D
  37.       GL_DISCARD_NV,      // Summe von allen Variablen
  38.       GL_NONE,            // Skalierung
  39.       GL_NONE,            // Bias
  40.       True,            // Ja/Nein Output von A und B
  41.       False,           // Ja/Nein Output von C und D
  42.       False            // Muxsum
  43.     );
  44.  
  45.     glFinalCombinerInputNV(GL_VARIABLE_A_NV, GL_SPARE0_NV, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  46.  
  47.     glFinalCombinerInputNV(GL_VARIABLE_B_NV, GL_TEXTURE0_ARB, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  48.  
  49.     glFinalCombinerInputNV(GL_VARIABLE_C_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  50.  
  51.     glFinalCombinerInputNV(GL_VARIABLE_D_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  52.  
  53.     glFinalCombinerInputNV(GL_VARIABLE_E_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  54.  
  55.     glFinalCombinerInputNV(GL_VARIABLE_F_NV, GL_ZERO, GL_UNSIGNED_IDENTITY_NV, GL_RGB);
  56.  
  57.     //glColor3f(1, 0, 0);
  58.     glBegin(GL_QUADS);
  59.       glTexCoord2f(0, 0);
  60.       glVertex3f(-1, 0, 1);
  61.       glTexCoord2f(0, 1);
  62.       glVertex3f(1, 0, 1);
  63.       glTexCoord2f(1, 1);
  64.       glVertex3f(1, 0, -1);
  65.       glTexCoord2f(1, 0);
  66.       glVertex3f(-1, 0, -1);
  67.     glEnd;
  68.     //glColor3f(1, 1, 1);
  69.  
  70.     glDisable(GL_REGISTER_COMBINERS_NV);
  71.     glActiveTexture(GL_TEXTURE0);
  72.     glDisable(GL_TEXTURE_2D);
  73.   end
  74.  


Das rendering ergebnis liegt im Anhang.
Wenn ich die beiden glColor3f-Anweisungen entauskommentiere, dann wird die ebene komplett schwarz...

Kann mir wer sagen woran das liegen könnte? Wenn noch mehr Source nötig ist... Ich kann noch ein paar hundert zeilen dazutun :wink:

Gruß Lord Horazont


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 02, 2006 20:08 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Mit diffusem Bumpmapping wird man kein gutes Wasser hinbekommen. Beim Wasser ist vor allem die Reflektion wichtig.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 02, 2006 20:38 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Vorallem sieht die Farbe noch nach Normalmap aus. Wenn da jetzt ne passende Textur drauf wäre, käme das schon ganz gut.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 03, 2006 13:07 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Aber die Texturen sind doch oben gesetzt... Wie muss ich das denn machen? Water ist doch die passende Textur zur Bumpmap (WaterBump).

Und was die Reflektion betrifft: Wie bekomme ich das hin? StencilBuffer eignet sich doch nicht so gut für Wasser, oder?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 04, 2006 23:52 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also ich muss zu meiner Schande gestehen, dass ich noch nicht geshadert habe. Aber für mich sieht dein Ergebnis so aus, als ob da die Bumpmap als Textur verwendet worden wäre.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 05, 2006 00:07 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Die RegisterCombiner können nur die Texturefarben anders mixen. Bei einer Reflektion möchte man aber abhängig von der Bumpmap den Reflektionsvektor berechnen und den Wert dann aus einer Cubemap lesen.
Das geht mit der NV_texture_shader Extension. Dies ist aber genauso wie die RegisterCombiner nicht mehr zu empfehlen, da es mittlerweile ja bessere und einfacher zu benutzendere Alternativen wie ARB_fragment_program oder GLSL gibt.
Falls die Karte diese neue Extension nicht unterstützt sollte man anstelle von den Register Combinern ARB_texture_env_dot3 benutzen. Auch damit kann man Bumpmapping realisieren und vor allem läuft das dann auf allen Karten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 05, 2006 17:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
?!

Okay. Und wie komme ich jetzt bei meinem Problem weiter? (Falls da jetzt schon die Lösung drin war, ich hab sie übersehen)

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 05, 2006 19:43 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Also ich bin davon ausgegangen, dass du Reflektionen möchtest und das geht damit nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 07, 2006 15:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Eigentlich wollte ich erstmal Bumpmapping machen, weil mir das einfacher erschien. Leider geht das ja nicht...
Gegen Reflextionen hab ich nix einzuwenden, wenn ich nur wüsste wie.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 07, 2006 18:28 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
glFinalCombinerInputNV(GL_VARIABLE_B_NV, GL_TEXTURE0_ARB, GL_UNSIGNED_IDENTITY_NV, GL_RGB);

Das ist glaube ich falsch. Man kann da nur diese Spare Register aus den vorherigen Combinern oder eine der Konstanten angeben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 09, 2006 18:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Dann sollte das Wiki vielleicht korrigiert werden...

Und wie kann ich das jetzt korrigieren?
(Ich weiss, ich bin ein noob was opengl betrifft)

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 09, 2006 18:59 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
So ungefähr könnte das mit glTexEnv funktionieren:

1. Color dot3 Texture0
2. [1] * Texture1

Code:
  1. glActiveTextureARB(gl_texture0_arb);
  2. glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE_EXT);
  3. glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_EXT,GL_DOT3_RGB_ARB);
  4. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_EXT,GL_TEXTURE0_ARB);
  5. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_RGB_EXT,GL_SRC_COLOR);
  6. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_EXT,GL_PRIMARY_COLOR_ARB);
  7. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_RGB_EXT,GL_SRC_COLOR);
  8.  
  9. glActiveTextureARB(gl_texture1_arb);
  10. glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE_EXT);
  11. glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_EXT,GL_MODULATE);
  12. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_EXT,GL_PREVIOUS_ARB);
  13. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_RGB_EXT,GL_SRC_COLOR);
  14. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_EXT,GL_TEXTURE1_ARB);
  15. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_RGB_EXT,GL_SRC_COLOR);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 10, 2006 11:14 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wo steht was verkehrt im Wiki und soll mit was verbessert werden?
Ihr könntet das auch selbst ändern. Tut euch keinen Zwang an... Dazu ist das Wiki da

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 10, 2006 11:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich habe den glFinalCombinerInputNV aus dem Wiki abgeschrieben:
Tutorial BumpMap

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 11, 2006 12:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Okay... Das Bumpmapping workt soweit bis auf:
1. Das wasser ist schwarz weis (also Graustufen)
2. Und der scheint irgendwie alles Bumpmappen zu wollen :-/

Fürs Bumpmapping:
Code:
  1.  
  2. glActiveTextureARB(GL_TEXTURE0_ARB);
  3.     glEnable(GL_TEXTURE_2D);
  4.     WaterBump.Bind;
  5.  
  6.     glActiveTextureARB(GL_TEXTURE1_ARB);
  7.     glEnable(GL_TEXTURE_2D);
  8.     Water.Bind;
  9.  
  10.    
  11.  
  12.     glActiveTextureARB(gl_texture0_arb);
  13.     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE , GL_COMBINE_EXT);
  14.     glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT  , GL_DOT3_RGB_ARB);
  15.     glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT  , GL_TEXTURE0_ARB);
  16.     glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_EXT , GL_SRC_COLOR);
  17.     glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT  , GL_PRIMARY_COLOR_ARB);
  18.     glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_EXT , GL_SRC_COLOR);
  19.  
  20.     glActiveTextureARB(gl_texture1_arb);
  21.     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE , GL_COMBINE_EXT);
  22.     glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT  , GL_MODULATE);
  23.     glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT  , GL_PREVIOUS_ARB);
  24.     glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_EXT , GL_SRC_COLOR);
  25.     glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT  , GL_TEXTURE1_ARB);
  26.     glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_EXT , GL_SRC_COLOR);
  27.  
  28.     glColor3f(1, 0.5, 0.5);
  29.     glBegin(GL_QUADS);
  30.       glMultiTexCoord2f(GL_TEXTURE0_ARB, 0, 0);
  31.       glMultiTexCoord2f(GL_TEXTURE1_ARB, 0, 0);
  32.       glVertex3f(-1, 0, 1);
  33.       glMultiTexCoord2f(GL_TEXTURE0_ARB, 0, 1);
  34.       glMultiTexCoord2f(GL_TEXTURE1_ARB, 0, 1);
  35.       glVertex3f(1, 0, 1);
  36.       glMultiTexCoord2f(GL_TEXTURE0_ARB, 1, 1);
  37.       glMultiTexCoord2f(GL_TEXTURE1_ARB, 1, 1);
  38.       glVertex3f(1, 0, -1);
  39.       glMultiTexCoord2f(GL_TEXTURE0_ARB, 1, 0);
  40.       glMultiTexCoord2f(GL_TEXTURE1_ARB, 1, 0);
  41.       glVertex3f(-1, 0, -1);
  42.     glEnd;
  43.     glColor3f(1, 1, 1);
  44.  
  45.     //glDisable(GL_REGISTER_COMBINERS_NV);
  46.     glActiveTextureARB(GL_TEXTURE0_ARB);  
  47.     glDisable(GL_TEXTURE_2D);
  48.     glActiveTextureARB(GL_TEXTURE1_ARB);
  49.     glDisable(GL_TEXTURE_2D);
  50.     glActiveTexture(GL_TEXTURE0);
  51.     glDisable(GL_TEXTURE_2D);
  52.  


Gruß Lord Horazont

P.S.
Sorry für Doppelpost, hab meinen alten übersehen :roll:

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


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


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.010s | 15 Queries | GZIP : On ]