DirectX - Hemisphärische Beleuchtung mal anders
-
Hi Leute!
Ich hätte eine Idee, wie man so ne Art ambiente hemisphärische Beleuchtung machen könnte.
Man benötigt eine Szene, die wie eine Karte ist. Diese rendert man orthagonal von oben in eine Textur.
So hätte man für jede Position so ne Art Radiosity Farbe.Mit nem VertexShader könnte man für jeden Vertex oder bei kleinen Modellen vorher für jedes Modell die Farbe anhand der Position (XZ->UV) sampeln.
Diese Farbe wird dann auf die Vertexfarbe addiert, für alle Vertices, deren Normale nach unten zeigt (Punktprodukt).Zusätzlich könnte man noch ein Hellblau (Himmel) von oben wirken lassen.
Bei Höhlen oder in Gebäuden müsste natürlich was anderes her.
Und man kann die Farbstärke ja noch in Abhängigkeit zur Höhe über dem Terrain ändern.Jedenfalls sieht das für mich nach einer Art Radiosityersatz für Terrains aus.
Was haltet ihr davon?
-
ja, sowas ist ne recht gute idee und es gibt verschiedene implementierungen.
z.b. mit texturen und shadern:
http://www.gamasutra.com/features/20030813/hargreaves_pfv.htmmit einem cube aus 6 seiten die man aus einer radiosity map sampled: HL2
ich hab sowas mal fuer ein echtzeitradiosity fuer ein spiel implementiert, indem ich anhand der zellen/raeume/bereiche und Portale und lichter ein ganz grobes radiosity berechnet habe (portale+raume bewegen sich ja zur spielzeit nicht, also kann man die koefizienten vorberechnen).
dann konnte ich aenlich wie half life 2 fuer 6 seiten die farbe errechnen und auf jedes objekt packen.
leider hat man so zwischen den objekten ein farbunterschied gesehen z.b. zwei tische aneinander. deswegen musste ich dann pro ecke vom cube solche 6 farben errechnen.aber ja, das ist oft sehr gut, schaut auch gut aus wie man anhand des ersten links sehen kann.