 
 float phaseFunction(float mu)
 {
-    float g = 0.0; // @todo: parameter
+    float g = volumeAnisotropy;
     float gSqr = g*g;
     return (1.0/(4.0*M_PI)) * (1.0 - gSqr) / pow(1.0 - 2.0*g*mu + gSqr, 1.5);
 }

                {
                    float distanceMarched = -log(rand(rnd)) * inv_sigma_t_max;
                    int steps = 0;
                    while (distanceMarched<segmentLength-eps && steps<maxWoodcockSteps)
                    {
                        pScatter = pW + distanceMarched*rayDir;
                        sigma_t = VOLUME_EXTINCTION(pScatter);
                        interacted = bool(rand(rnd) < sigma_t * inv_sigma_t_max);
                        if (interacted) break;
                        distanceMarched += -log(rand(rnd)) * inv_sigma_t_max;

uniform float surfaceRoughness;
uniform float surfaceIor;

uniform float volumeExtinction;
uniform vec3 volumeScatteringColorRGB;
uniform vec3 volumeAbsorptionColorRGB;
uniform float volumeEmission;
uniform vec3 volumeEmissionColorRGB;
uniform float volumeAnisotropy;

#define DENOM_TOLERANCE 1.0e-7
#define PDF_EPSILON 1.0e-6
#define THROUGHPUT_EPSILON 1.0e-5
