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

Aktuelle Zeit: Fr Jul 18, 2025 11:06

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bumpapping nur auf NV-Karten?
BeitragVerfasst: So Dez 28, 2003 16:10 
Offline
DGL Member

Registriert: Sa Sep 21, 2002 21:32
Beiträge: 346
Wohnort: Eilsum (Nahe Emden)
Hi Leute!

Ich habe mir eben mal das Bumpmapping-Beispielprogie angesehen und fand es ganz aufschlussreich, allerdings ist mir eine Frage aufgekommen:
Gibt es die nötigen Extentions auch auf ATI-Karten? Mich verwirrt etwas das "nv" vor den Extentions ....

Sollte das alles nicht auf ATI-Grakas laufen, welche anderen Methoden gibt es noch Bumpmapping zu erzeugen (Außer über Pixelshader ... habe mal gehört, dass das auch geht, aber meine Graka (Geforce 4 MX) kann das glaube ich nicht....)...

Schonmal vielen Dank für die Antworten :D

_________________
Es sind immer die guten,
welche zu früh von uns gehen müssen...

Meine bislang 13 Open Gl - Tuts findet ihr auf www.dcw-group.net
Neu! Ein großer Teil der Demos nach Kylix übersetzt!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 28, 2003 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die ATI-Karten unterstützen nur sehr wenige NV-Extensions, und die zum Realisieren von Bumpmaps sind NICHT dabei, also die Register- bzw. Texturecombinern.
Allerdings gibt es auch eine recht einfache Möglichkeit ohne Combiner oder Shader Bumpmapping zu realisieren. Dazu gibts hier ein tolles Tutorial, das recht detailliert auf diese Technik eingeht. Habe das ganze auch schon erfolgreich in ner eigenen Anwendung implementiert und es sieht richtig gut aus. Die Technik benutzt z.B. ne Normalisierungscubemap für die Per-Pixel-Normale, läuft dann also sogar auf ner TNT (mit neuen Treibern).
Gegenüber der Methode mit Shadern bzw. Combinern hat diese allerdings einige Nachteile, so z.B. die Tatsache das es komplett hardgecoded wird und dazu noch zwei Renderpasses benötigt. Wenn man das in nem Shader macht, dann ists einfacher, sehr viel flexibler und auch in einem Pass möglich.
Du könntest aber z.B. hingehen, das oben erwähnte auf Karten <= GF4 machen, für Radeon8500 mit ATI_VS/ATI_FS, und für GFFX/Radeon ab 9500 mit ARB_VP/FP bzw. glSlang, aber das wäre recht aufwendig.

P.S. : Deine Graka ist in Wirklichkeit nur ne GF2, kann also wirklich keine echten Pixelshader, sondern nur die NV-Combiner.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 28, 2003 16:51 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Fast alle NV_* Extensions werden nur auf NVidia Karten unterstützt.
Man kann diffuses Bumpmapping auch mit der Erweiterung ARB_texture_env_dot3 programmieren.
Dazu bindet man die Normalisationscubemap an die Texture0 und die Normalmap an Texture1. Dann stellt man folgendes ein:
Code:
  1. glActiveTextureARB(GL_TEXTURE1_ARB);
  2. glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE_ARB);
  3. glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB,GL_DOT3_RGBA_ARB);
  4. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_ARB,gl_texture0_arb);
  5. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_RGB_ARB,gl.GL_SRC_COLOR);
  6. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_ARB,gl_texture1_arb);
  7. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_RGB_ARB,gl.GL_SRC_COLOR);



Dadurch wird Texture0 dot Texture1 gerechnet und das Ergebnis nach rgb und in den Alpha Kanal geschrieben. Den Lichtvektor übergibt man in den Koordinaten für die Texture0 und auf die Texture1 wird mit den ganz normalen Koordinaten zugegriffen. Da man jetzt natürlich nur den Helligkeitswert hat, muß man den im Alpha Buffer zwischenspeichern und in einem 2.Renderpass mit glblendfunc(gl_dst_alpha,gl_one) die diffuse Texture darüber blenden.
Speculares Bumpmapping ließe sich auch machen. Allerdings muß man da ja mindestens hoch 8 Potenzieren, also 3 mal quadrieren. Die Näherung wie mit den Register Combinern geht leider wegen der fehlenden Flexibilität nicht, so daß man das auch langsam über mehrere Pass emulieren muß.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 02, 2004 19:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 22:26
Beiträge: 38
Wohnort: Dresden (noch)
Letzteres hab ich nur aus Interesse auch schon mal probiert. Hat aber leider nicht wirklich geklappt. Sobald ich die Bumptextur dazuschalte, gehen meine Lichter nicht mehr, obwohl in dem Tutorial eigentlich stand, es sollte bei den Lichern alles beim alten bleiben.
Irgendwie hatte ich es auch schon einmal so, dass zumindest GL_Light0 ging, aber das hatte dafür nicht die zugewiesene Farbe und der Bumpeffekt schien sich auch nicht wirklich auf die realistische Lichtposition zu beziehen.

Ich brauch's jetzt eigentlich nicht, aber wenn es mir mal jemand erklären könnte, wär ich sehr dankbar.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 02, 2004 19:11 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Die normalen GL Lichter kann man beim Bumpmapping eigentlich vergessen, da man sowieso die ganzen Berechnungen selber machen muß. Man kan die Lichter höchstens benutzen um Parameter an den Shader zu übergeben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 02, 2004 20:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 22:26
Beiträge: 38
Wohnort: Dresden (noch)
Aha... da kommt ja noch was auf mich zu, wenn ich mich doch mal damit auseinandersetze.


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


Wer ist online?

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