Esempio n. 1
0
        public override (SurfaceInteraction, double) Sample()
        {
            (double x, double y) = Samplers.UniformSampleDisk();

            var pObj = new Vector3(x * radius, y * radius, height);

            var    n    = new Vector3(0, 0, 1);
            var    dpdu = new Vector3(-pObj.y, pObj.x, 0);
            double pdf  = 1 / Area();

            return(ObjectToWorld.Apply(new SurfaceInteraction(pObj, n, Vector3.ZeroVector, dpdu, this)), pdf);
        }