aus Lichtposition und Schnittpunkt
        
        float illum =
        dot(livec,norm);                            
        //Grad der Beleuchtung; Skalarprodukt
        
        return illum * color;                                   
        //Farbe zurueckgeben
     }

Indem die Position der Lichtquelle bewegt wird (verändern des Vektors $lightPosition$) lässt sich das zu raycastende Bild unterschiedlich ausleuchten. In Abbildungen \[label:beleuchtung1\] und \[label:beleuchtung2\] ist eine Abbildung eines menschlichen Kopfes mit freigelegten Gehirn mit zwei unterschiedlichen Beleuchtungspositionen ($lightPosition = (-1000,-1000,-1000)$ und $lightPosition = (1000,1000,1000)$) abgebildet.

![Beleuchtetes Gehirn 2[]{data-label="label:beleuchtung2"}](images/beleuchtung1.png){width="0.5\columnwidth"}

![Beleuchtetes Gehirn 2[]{data-label="label:beleuchtung2"}](images/beleuchtung2.png){width="0.5\columnwidth"}

Transparenz-Formel
------------------

[@Pawasauskas] zeigt eine Transparenz-Formel, mit der sich Voxel, die hintereinander liegen und mittels eines Strahls abgetastet werden, so verrechnet werden können, das auch in das Volumen hinein geschaut werden kann:

$$C_out = C_in (1 - \alpha(X_i )) + C(X_i )\alpha(X_i)$$

Wobei $C(x)$: eine Schattierung, errechnet aus dem lokalen Gradienten ist, $\alpha(X)$ die Lichtundurchlässigkeit, berechnet aus dem CT-Wert des Voxels ist, $C_out$ die ausgehende Intensität/Farbe des aktuellen Voxels ist und $C_in$ die eingehende Intensität in den Voxel ist. Diese Werte errechnen sich zum einen aus den Daten der Voxel bzw des Volumendatensatzes und zum anderen aus der Lichtquelle, mit der der Volumendatensatz beleuchtet werden soll. Diese Formel wird rekursiv so lange entlang des Strahls angewandt, bis auf ein Alpha-Wert innerhalb des Volumens getroffen wird, der 0 ist (z.B. durch 