Registriert: Do Mär 06, 2003 15:27 Beiträge: 281 Wohnort: Bochum
Ich überlege gerade wie ich am schönsten meinen BSP beleuchten soll, ich bin dabei auf einige Lösungen gestoßen, die mir bisher am meisten zusagt ist die, die pvs in 2 passes zu rendern:
1) die beleuchtungs-texture auf die geometry rendern
2) die texture addieren(blenden)
Was denkt ihr darüber? Resultiert das in zu großer Fillrate(bei mehreren Lichtern)?
Gibt es noch andere so einfahe (bessere) Methoden? Was würdet ihr machen?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wenn du deinen BSP-Baum dynamsich über sowas wie eine 3D-Textur beleuchten willst (also keine Lightmaps in Frage kommen),dann wirst du kaum um zwei geblendete Passes rumkommen.Einzige Alternative wäre dynamisches Lightmapping in einem Fragmentprogramm.
Registriert: Do Mär 06, 2003 15:27 Beiträge: 281 Wohnort: Bochum
Hmmm also Fragment-Progs kommen garnicht in Frage! Das kann meine GraKa net;)...
Also geht es tatsächlich net anders,ja?!...Hmmm was haltet ihr denn davon die Beleuchtung über ein VertexProg zu machen?Geht das überhaupt so gut wie mit den 3D-Texturen, denn die faken ja sozusagen PerPixelLighting vor, was natürlich besser aussieht als nur VertexLighting...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Fiji-Fighter hat geschrieben:
was hast du denn gegen Lightmapping??
Lightmapping ist für dynamische Beleuchtung leider ungeeignet,da man schlecht die Lightmaps Frame für Frame aktualisieren und nach OpenGL hochladen kann.
Extrawurst hat geschrieben:
Also geht es tatsächlich net anders,ja?!...Hmmm was haltet ihr denn davon die Beleuchtung über ein VertexProg zu machen?Geht das überhaupt so gut wie mit den 3D-Texturen, denn die faken ja sozusagen PerPixelLighting vor, was natürlich besser aussieht als nur VertexLighting...
Wie die Bezeichnung Vertex-Programm vermuten lässt,geschen Berechnungen dort nur per-Vertex,weshalb dadurch auch nur Vertex Lighting realisierbar ist.Allerdings gibts noch andere Möglichkeiten für PerPixel-Lighting wie z.B. die Nutzung von Cubemaps und Registercombiners (allerdings dann halt herstellerabhängig).Dann kann man das auch ohne Fragmentprogramme realisieren.
Registriert: Do Mär 06, 2003 15:27 Beiträge: 281 Wohnort: Bochum
hmmm Cubemaps...habt ihr dazu vielleicht n tutorial oder so?
Naja also werde mir Cubemapping mal ansehen,
aber SOS, was hälst du denn vom Nutzen der 3D-Textures um dieses PerPixelLighting zu faken? Ich habe das ja noch net reinprogrammiert und habe deshalb keine Vorstellung wieviele Möglichkeiten ich damit habe, wieviele Lichter,Polys möglich sind, ob dann das pvs noch reicht usw....
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Extrawurst hat geschrieben:
hmmm Cubemaps...habt ihr dazu vielleicht n tutorial oder so? Naja also werde mir Cubemapping mal ansehen,
Nein,denn Beleuchtung über Cubemaps (natürlich geht das nicht nur über Cubemaps) ist ein sehr komplexes Thema.Ich selbst habe Cubemaps bisher nur genutzt um Spiegelungen und Bumpmapping (Normalisierungscubemap) zu realisieren.Da sollte Lars evtl. mehr zu wissen (wie man an seiner Engine sehen kann).
Extrawurst hat geschrieben:
aber SOS, was hälst du denn vom Nutzen der 3D-Textures um dieses PerPixelLighting zu faken? Ich habe das ja noch net reinprogrammiert und habe deshalb keine Vorstellung wieviele Möglichkeiten ich damit habe, wieviele Lichter,Polys möglich sind, ob dann das pvs noch reicht usw....
Lichtquellen über 3D-Texturen sind eine recht eingeschränkte Technik und ich bezweifle das sie jemals in großem Stile angewandt werden.Zum einen sind sie erst ab GeForce3 und aufwärts hardwarebeschleunigt,und auf kleineren Karten viel zu langsam (mehr als 1-2fps werdens auf ner GF2 selten).Und darüberhinaus benötigt jede Lichtquelle einen eigenen Renderpasse,was selbst bei modernen Grafikkarten zu geringen FPS führt.
Registriert: Do Mär 06, 2003 15:27 Beiträge: 281 Wohnort: Bochum
also was denkst du ist dann der weg den ich gehen sollte? ich dachte nämlich das diese (habe gerade gelsen das die Technik "attenuation mapping") Technik schon okay ist!
Cubemapping? auch keine ahnung wo ich was darüber finde?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Extrawurst hat geschrieben:
also was denkst du ist dann der weg den ich gehen sollte? ich dachte nämlich das diese (habe gerade gelsen das die Technik "attenuation mapping") Technik schon okay ist!
Die Frage musst du dir selbst beantworten.Das hängt nämlich immer vom Anwendungsfall ab.Wenn du wenige Lichtquellen gleichzeitig im Bild hast (bis max. 4) dann wäre die von dir erwähnte Technik evtl. noch annehmbar schnell.Ansonsten musst du dir halt ne andere Variante suchen.Aber viel mehr als 4 dynamische Lichtquellen wirste mit kaum ner Technik annehmbar schnell realisieren können.
Extrawurst hat geschrieben:
Cubemapping? auch keine ahnung wo ich was darüber finde?
Hier gibts dazu ein Dokument und ansonsten ist die Entwicklersektion von NVidia in solchen Fragen immer sehr hilfreich.
Registriert: Do Mär 06, 2003 15:27 Beiträge: 281 Wohnort: Bochum
ah okay, 4 lichtquellen onscreen dürften noch reichen!
ich dachte das wäre schon nicht mehr möglich!
werde das dann wohl doch nehmen, was benutzt denn lars in seiner engine, weiß das jemand ausser ihm?
Ich habe auf der GF3/4 64*64*64 3D Texturen für die Lichtintensität benutzt. Für das Bumpmapping habe ich pro Licht folgendes gezeichnet:
Pass1:
Texture0: Normalizationscubemap
Texture1: Bumpmap
Texture2: Diffuse Map
Texture3: 3D Texture für Lichtintensität
Pass2:
Texture0: Normalizationscubemap
Texture1: Bumpmap
Texture2: Specular Map
Texture3: 3D Texture für Lichtintensität
Das geht auf einer GF4 bis zu 3 Lichtern/Fläche maximal, damit es noch schnell genug ist. Wenn man jetzt pro Licht nur eine 3D Texture zeichnet, dann sollten mehr Lichter möglich sein. Auf der GF1 und GF2 muß man die 3D Texture durch 2 2D Texturen ersetzen.
Auf den neueren Karten mit arb_fragment_program ist das natürlich noch schöner, daß man die Intensität da einfach und in hoher Qualität berechnen kann.
Mitglieder in diesem Forum: 0 Mitglieder und 9 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.