I am trying to implement Beer's law according to this page in dielectric material but I am not sure have done it correctly as the image does not suggest so.The formula is: I(s) = I(0) * pow(e, ln(A)*s)'A' is said to be transmission coefficient which I am not clear what this isand what value I should use for it.Below is the code and the image. Could anyone shed some light if I have gone wrong. Thanks.        public override LightVector SampleBrdf(ISect isect, Random rand,                out LightVector woW, out double pdfDir, out double cosWo)        {             woW = LightVector.ZERO;            cosWo = 0;            LightVector n = isect.Thing.Normal;            LightVector tan = isect.Thing.Edge1;            tan.Normalize();            LightVector ts = n.Cross(tan);            //set wo to be incoming dir            LightVector wo = MaterialHelper.WorldToLocal(-isect.Ray.Dir, tan, ts, n);dir            LightVector refracted = LightVector.ZERO;            LightVector reflected = new LightVector(-wo.X, -wo.Y, wo.Z);            double F = Fresnel.Evaluate(rindex1, rindex2, MaterialHelper.CosTheta(wo));            pdfDir = F;            //Figure out which eta is incident and which is transmitted            double extCoeff = 1;            double etaI = rindex1;            double etaT = rindex2;            LightVector z = new LightVector(0, 0, 1);            if (MaterialHelper.CosTheta(wo) < 0)//existing            {                etaI = rindex2;                etaT = rindex1;                z = -z;                extCoeff = Math.Exp(-Math.Log(A, Math.E) * isect.Dist);            }            //Compute ray direction for specular transmission            if (!MaterialHelper.Refract(wo, z, etaI / etaT, out refracted))                pdfDir = 1;            if (rand.NextDouble() < pdfDir)            {                woW = MaterialHelper.LocalToWorld(reflected, tan, ts, n);                cosWo = MaterialHelper.AbsCosTheta(reflected);                return R * (F / cosWo);            }            else //refracted            {                woW = MaterialHelper.LocalToWorld(refracted, tan, ts, n);                cosWo = MaterialHelper.AbsCosTheta(refracted);                pdfDir = 1d - F;                return T * (extCoeff * (1d - F) / cosWo);            }        } Update:I was expecting to see the reflection of the light source at the ceiling on the glass. But it was my mistake in the caller method where the specular bounce contribution was dismissed. Thanks.
Beer's law in dielectric material
pathtracing;global illumination;material