AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Licht-Masken

Ein Thema von Valle · begonnen am 3. Sep 2010 · letzter Beitrag vom 3. Sep 2010
 
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Licht-Masken

  Alt 3. Sep 2010, 21:38
Licht musst du immer additiv zeichnen, spricht die Pixelwerte der Lichter müssen einfach addiert werden:
Code:
Rot_Neu = Rot_Licht + Rot_Alt;
Blau_Neu = Blau_Licht + Blau_Alt;
Grün_Neu = Grün_Licht + Grün_Alt;
Dies ist ja auch logisch - stell dir mal zwei Taschenlampen vor, die sich gegenseitig überschneiden - in der Mitte wird es entsprechen heller, da sich die Lichtintensität aufaddiert hat.

Problem bei der "Simulation" ist jedoch, dass deine Szene ohne Licht komplett schwarz ist - und wenn du auf komplett schwarz die Lichtwerte aufaddierst, wird sie dadurch nicht sichtbar. Deshalb musst du die Pixelwerte der Lichter mit denen der Szene multiplikativ verrechnen. Sprich:
Code:
Rot_Ziel = Rot_Lichter * Rot_Szene;
Blau_Ziel = Blau_Lichter * Blau_Szene;
Grün_Ziel = Grün_Lichter * Grün_Szene;
Das ist auch logisch - stell dir vor, kein Licht ist an, also RGB(0, 0, 0), so ist auch kein Pixel der Szene sichtbar. Ist rotes Licht an, so sind auch nur die roten Pixel sichtbar.

Also ist die Vorgehensweise:
  1. Zeichne alle Lichter additiv getrennt in einen zunächst schwarzen Off-Screen buffer
  2. Zeichne deine Szene ganz normal und zeichne den Lichter-Off-Screen-Buffer multiplikativ auf deine Szene oben drauf und schon bist du fertig

PS: Die Lichter sollten keine transparenz haben sein, sondern einfach nach schwarz überblenden, durch das additive Zeichnen bedeutet schwarz ja einfach "keine Änderung"
PPS: Hier gab es letztens einen Thread wo jemand das Ganze mit Andorra 2D umgesetzt hat, also schau mal danach
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein

Geändert von igel457 ( 3. Sep 2010 um 21:41 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz