ich suche nach einer guten Möglichkeit zur Schattenberechnung, die ich beim Laden der Map vornehmen kann.
Es handelt sich hierbei im Außenareale, die daher auch von der Sonne beleuchtet werden.
Welche Möglichkeiten bieten sich da an und wie sind diese am besten umzusetzen ?
PSM ist nur interresant, wenn der nutzer die kamera nicht frei drehen kann. Sobal aus der sicht der Lichquelle die Cam Nearplane von der Cam Farplane verdeckt wird, wird die shadomap auflösung für die farplane optimiert und alle schatten verblocken uind flimmern fürchterlich..... Im prinzip sind alle Shadowmap verfahren davon betroffen, die nur eine shadowmap benutzen. (Da kann man wirklich schon eine nichtlineare projektion wählen und krumme schatten von gerade kanten tollerieren. Das gibt zwar kopfschmerzen aber kein augenkrebs )
Solang die sonne immer die gleiche ausrichtung hat, ist es sinvoll eine lightmap zu bauen. Ein nachteil ist allerdings, das bewegte objekte keine schatten werfen können. Es gäbe allerdings dort auch die möglichkeit diese mit stencil shadows hinzuzufügen:
Pass 1: Ambientes licht für die ganze Scene
Pass 2: Stencilmaske
Pass 3: Lightmap für sonnenlicht
Auch wenn stencilshadown aus geschwindigkeitsgründe nicht ideal sind und man die vertexshader kaum nutzen kann (Die siluette muss von der CPU berechnet werden) Wäre dies eine möglichkeit aquch ohne shader auszukommen....
Eine ander möglichkeit wäre auf algoritmen wie Cascade Shadowmaps auszuweichen, jedoch lässt sich das erst optimal mit einer shadermodel4.0 karte implementieren (es geht auch mit sm2.0 und 3.0, benötigt da aber mehr renderpasses)
Was könnte man denn tun, wenn man die Schatten vorberechnen möchte ? (egal ob innen oder außen)
Da gibt es doch sicher Methoden die leicht zu implementieren sind. (darf schließlich auch bissl länger dauern)
Das erste problem bei vorberechneten schatten ist, das man lightmap textur koordinaten braucht, bei der jeder berecht der textur nur einmal vergeben ist. Nebenbei sollten alle texel ähnlich groß sein. Die einfachste variante wäre von jedem texel aus einen raycast in Richtung sonne auszuführen. Das ergebnis wäre eine lightmap die etwas flach aussieht. Dann ist es ratsam diese mit einem 3x3 kernel zu bluchen um die artefakte der etwas zu groß geratenden texel auzumildern (wirkt dann in etwas wie softshadows)
Besser ist es, wenn man mit hilfe von radiosity das indirekte licht berechnet. Da graphikkarten heute recht schnell sind, kann man auch für jedes Texel in der lightmap eine ansicht rendern und den durchschnitt berechnen um das indirekt einfallende licht zu messen und so einen sehr primitives radiosity selbst bauen.
Auf diese Weise kann man eine statische lightmap bauen, die eine deutlich höhere optische qualität liefert als schlecht gemachtes dynamisches licht.
Um noch mal auf die Frage zurückzukommen Ich möchte demnächst ein etwas größeres Projekt anfangen, indem ich statische und dynamische Licher/Schatten verwenden möchte. Dabei soll die überwiegende Zahl der Lichter statisch sein, also macht es Sinn, die Schatten einmal vorzuberechnen und dann einfach zu verwenden. Für die dynamischen Lichter würde ich gerne Shadowmaps verwenden.
Wie implementiere ich die statischen Lichter nun am besten so, dass ich beide einfach kombinieren kann?
Die entscheidendere Frage ist ob dynamische objekte zusätzliche schatten in den statischen lichtquellen verursachen können. In dem Fall kann man für jede Lichtquele eine eigene Lighmap benutzen, die dann mit der shadowmap der dynamischen Objekte Multipliziert wird.
Es ist auch möglich eine shadowmap mit den statischen objekten zu kopieren stat eine gelöschte zu benutzen, jedoch ist die qualität einer light map meist besser, da man mehr aufwand beim vorberechnen investieren kann.
Bei Lichquellen, die ihre position ändern, benutzt man dann einfach nur noch eine dynamisch erzeugte shadowmap.
Ich sah das Problem eher an da wo dynamische Lichter Stellen, an denen ein statisches Licht einen Schatten geworfen hat, beleuchten könnten.
Gibt es irgendwelche gescheiten Quellen/Tutorials zu dem Thema? (speziell auch vorberechnete Lightmaps/Shadowmaps)
Das ist weniger ein Problem, da alle Lichtquellen unabhängig von einander (durch Blending) im Framebuffer addiert werden. Wie die Schatten einzelener Lichquellen berechnet werden spielt keine Rolle, Es kann sogar für jede Lichquelle eine eigene Mehtode benutzt werden.
Eventuell können auch Stencilshadows (für dynamische Objekte) in kombination mit einer Lightmap (für statische objekte) eine Lösung sein, wenn es sich eh um relativ einfache Modelle handelt.
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
also meine Idee wäre folgende:
Man zeichnet beim shadowmapping zwei depthmaps. Die erste wird beim laden der Szene erstellt, allerdings nur mit den objekten, die sich 100% nicht bewegen. Die zweite wird immer mit jedem Frame neuerstellt und beinhaltet alle Objekte, die sich bewegen/geometrisch verändern können. anschließend muss man beide maps einfach mit einer min(depthstatic,depthvariable) zusammen pappen und hat so einen relativ fixen shadow algo für szenen mit statischer lichquelle und wenigen bewegten objekten. Könnte aber auch völliger blödsinn sein.
SO etwas ähn liches hatte ich weiter oben vorgeschlagen: Eine shadowmap, welche die statischen objekte enthällt und eine in die die dynamsichen gerendert werden, nachdie der Inhalt der ersten n dide kopiert wurde. (Das geht fast genauso schnell wie das sonst notwendige Löschen)
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
nun ja, so ähnlich ist es schon, aber die idee ist, das man nicht verschiedene techniken kombinieren muss und der Gesamteindruck eher wie aus einem Guss erscheint. Sollte man tatsächlich den Vorschlag mit dem indirekten Licht in der Lightmap umsetzen gibt es vom realismus her evtl. einen herben Unterschied zu den dynamisch erzeugten Schatten, die dann, wenn man nicht viel Aufand hineinsteckt, im Vergleich wie billige Decals wirken könnten. Immerhin geht es ja nicht immer unbedingt möglichst performant das beste herraus zu kitzeln, sondern evtl. auch etwas in sich stimmiges zu erschaffen, das zunächst einmal hübsch aussieht. womit ich nicht sagen möchte, dass die Idee blöd ist, aber man sollte das Problem aus mehreren Eckpunkten betrachten.
Nichts desto trotz wollte ich nur nen Gedanken anstoß bringen, weil es mir gerade in den Kram passte ne Idee zu äußern, also noch viel Spaß soweit!
Mitglieder in diesem Forum: 0 Mitglieder und 0 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.