private Color ComputeDiffuse(
            Light l, V3 incidentVec, V3 normalVec, Object3D obj, V2 uv
        )
        {
            Color diffuseIllu = new Color(0, 0, 0);
            if (incidentVec * normalVec > 0.0f) {
                diffuseIllu = obj.TextureColor(uv) * l.Intensity *
                              obj.Material.KDiffuse * (incidentVec * normalVec);
            }

            return diffuseIllu;
        }
 /// Computes the ambient component of the Phong reflection model for
 /// an ambient light.
 public override Color ComputeAmbientLight(
     AmbientLight aL, Object3D obj, V3 p, V2 uv
 )
 {
     return obj.TextureColor(uv) * aL.Intensity * obj.Material.KAmbient;
 }
 public override Color Compute(
     List<Light> lights, Object3D obj, V3 p, V2 uv
 )
 {
     return obj.TextureColor(uv);
 }