Richtig kann es nicht sein. Ich finde merkwürdig, dass dein Ergebnis noch so gut aussieht. An der scheinbar willkürlichen Multiplikation mit 10 wird aber doch ersichtlich, dass irgendwas nicht stimmen kann.
Wenn man auch mal kurz über die Einheiten in deiner Rechnung nachdenkt, stellt man folgendes fest:
1. Du berechnest die Distanz zwischen Licht und aktuellem Punkt -> Längeneinheit, sagen wir also mal Meter.
2. Du berechnest die Differenz zwischen Lichtausbreitungsradius (Light[0].Distance) und der berechneten Distanz -> Einheit: Meter
3. Du multipliziert Diffuse_Light (einen Farbwert) mit dieser Differenz (und mit 10) -> Einheit: Farbmeter?
Im letzten Schritt möchtest du aber eine Farbe erhalten. Dein Falloff-Faktor muss also zwangsläufig einheitenlos sein.
Was du haben möchtest, ist dass die Helligkeit des diffusen Lichtbeitrags linear mit der Distanz abnimmt. Dabei soll das Licht maximal beitragen (also 100% von Diffuse_Light), wenn die Distanz 0 ist, und gar nicht mehr, wenn die Distanz größer als der Ausbreitungsradius ist. Wie bereits (mehrfach?) erwähnt, muss dein Falloff also ein prozentualer Wert sein.
Also in jedem Fall zwischen 0 und 1 und ohne Einheit. Außerdem muss er von der Distanz abhängen.
Wenn du jetzt noch berücksichtigst, was patrick246 in
diesem Beitrag schrieb, dann sollte die Lösung eigentlich offensichtlich sein. (Wobei nicht korrekt ist, dass die Intensität hier der Kehrwert des Distanzverhältnisses ist).
Zum Vergleich nochmal kurz, welche Schritte du am Ende herausbekommen solltest:
1. Berechne die Distanz <- das hast du schon
2. Berechne den Falloff als prozentualen Wert
3. Diffuse_Light *= Falloff
Ich glaube mehr Tipps kann ich nicht geben, ohne die Lösung direkt zu verraten. Können wir jetzt in wenigen Seiten zum Ende kommen?
Edit: Ich tippe jetzt optimistisch auf 11 Seiten, David.