ich bin momentan dabei meine engine mit Per-Pixel Licht und später Diffuse/Specular Bumpmapping auszuschatten.
Als ersten Schritt möchte ich erstmal nur das licht ohne bumpmapping.
Das hatte ich schon auch schon teilweise hingekriegt, teilweise deshalb weil es beim lars (ATI Radeon 9800 pro) funktioniert und bei mir nicht (GeForce1/GeForce4 Ti 4200).
Ich benutze aber keinerlei Extensions die über der GeForce1 liegen.
Es werden nur diese extensions benutzt:
GL_ARB_multitexture
GL_ARB_texture_env_combine
GL_ARB_texture_cube_map
Aber jetzt erstmal erklär ich mal wie Per-Pixel licht funktioniert, so wie ichs verstanden habe *g*:::
- Ambient = Welt mit Umgebungsfarbe zeichnen (0,0,0) - Attentuation = Lichtintensität, setzt sich zusammen aus einer 3D Texture, bzw 1D+2D Texture, wird einmal vorberechnet am anfang. - Decal = Welt mit basistexture zeichnen
In Jedem pass muss die gesamte Welt gezeichnet werden, natürlich kann man optimieren beim licht, das man nicht belichtete polys auslässt oder über Occlusion Culling optimieren, aber das ist zum testen nicht wichtig.
hier jetzt mal code zum richtigen verständnis aus meiner engine:
Damit sollte das verständnis wesentlich klarer sein TR3DLight ist nen record, gActiveLight ist immer das aktuelle licht was zwischengespeichert wird.
Hier jetzt mal nen paar screens:
So siehts ohne Licht aus (mit Umgebungsfarbe 1,1,1):
So siehts mit Licht bei mir aus (GeForce 256):
So siehts mit Licht bei Lars Middendorf aus (ATI Radeon 9800 Pro):
Ich kann nun nicht verstehen, wieso es bei lars funktioniert und bei mir alles gelb wird obwohl ich keine Nvidia oder ATI spezifischen Extensions benutzt habe
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Also auf meiner Geforce2MX 400 ist ebenfalls alles gelb.
Woran das allerdings liegt, kann ich nicht sagen, da ich mich mit dem Thema noch nicht weiter auseinander gesetzt habe.
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich habs grad mal auf meinen beiden Rechnern ausprobiert, und wie zu erwarten war hat auf meiner Radeon9700 alles ohne Probleme funktioniert, während es auf der GeForce4-Ti4400 so aussieht wie auf deiner GeForce256.
Ich hab allerdings noch nie was mit Cubemaps gemacht, weshalb ich nur mal vermuten kann das NVidia-Karten Probleme beim Lookup haben und dir irgendwie nen falschen Wert zurückgeben.
Alternativ könnte dein Problem auch daher rühren, das die NVidia-Karten bestimmte Kombinationsoperationen (von denen du ja reichlich Gebrauch machst) nicht unterstüzten und das Bild deshalb so fehlerhaft aussieht.
Auf mich machts allerdings den Eindruck das ersteres der Fall ist, und du evtl. mal ein kleines Beispiel zusammenschrauben solltest (ohne den Engine-Kram runderum).Das könnt ich dann bei mir zu Hause bequem auf beiden Rechnern testen und auch debuggen.
Cubemaps werden gar nicht benutzt, das ist es ja.
Es werden für die Lichtintensität nur 1D+2D = 3D Texture benutzt.
Die Cubemap hab ich nur mal vor initialisiert wenn ich später die Normalization Cubemap brauch für Diffuse/Specular Bumpmapping.
Und die Spotlight Cubemap wird auch nicht benutzt, da ich spotlights momentan eh deaktiviert habe.
Mitglieder in diesem Forum: 0 Mitglieder und 7 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.