Wie wird 2D-Beleuchtung implementiert?

58

Ich frage mich, was der beste Weg ist, um einen "Beleuchtungseffekt" in 2D-Spielen zu erreichen. Wenn zum Beispiel meine Hauptfigur leuchtet, welche Techniken kann ich verwenden, um den visuellen Effekt der leuchtenden Figur zu vervollständigen, wenn sie sich in der Nähe anderer Objekte befindet, die vom Licht beeinflusst werden würden?

Christopher Horenstein
quelle

Antworten:

39

Sie können eine einfache Glüheffekt-Textur mit weichen transparenten Rändern überlagern. Wenn Sie Licht / Schatten ähnlich wie in einer 3D-Welt wünschen, können Sie Folgendes tun: http://www.catalinzima.com/2010/07/my-technique-for-the-shader-based-dynamic -2d-Schatten / . Wenn Sie jedoch noch kein HLSL-Neuling sind, ist dies möglicherweise etwas zu viel.

edit : Ich bin auf ein schönes HTML5 2d light Tutorial gestoßen

Zfedoran
quelle
Dieser Link ist genau das, wonach ich gesucht habe. Ich kann dir nicht genug danken. das ist extrem hilfreich.
Christopher Horenstein
7

Es gibt ein Open-Source-XNA-Projekt, das eine hervorragende Bibliothek und Implementierung von 2D-Beleuchtung ist, die mit dem Reach-Profil von XNA 4.0 kompatibel ist - Krypton XNA .

Christopher Horenstein
quelle
4

Sie benötigen einen Postfilter-Shader-Effekt, der in HLSL oder GLSL geschrieben ist. Der Shader empfängt die Player-Koordinaten und ändert die Helligkeit für alle Pixel in einem bestimmten Bereich. XNA unterstützt 2D-Shader recht gut.

Eine andere Lösung wäre die Simulation der Helligkeit mithilfe einer Textur mit einem Alpha-Kanal. Die Textur wäre größtenteils schwarz bis auf einen transparenten Fleck in der Mitte. Diese Textur überlagert Ihren Spielbildschirm mit dem transparenten Fleck, der auf dem leuchtenden Spielercharakter zentriert ist. Alte Abenteuerspiele verwendeten diese Technik, um Taschenlampen zu simulieren.

Stephen
quelle
4

Nach einigem Suchen schien dieser Blog ein guter Anfang zu sein:

http://www.soolstyle.com/2010/02/15/2d-deferred-lightning/

Lesen Sie unbedingt die Kommentare, da es dort einige Verbesserungen gibt, aber der Blog-Beitrag wird Ihnen den Einstieg erleichtern :).

Roy T.
quelle