示例#1
0
 public GradientShaderFactory(GradientShader gradientShader)
 {
     _gradientShader = gradientShader;
 }
示例#2
0
        public void InitSceneLight()
        {
            World world = new World();

            Shader black     = new Phong(new Vector4(0, 0, 0));
            Shader white     = new Phong(new Vector4(1, 1, 1));
            Shader red       = new Phong(new Vector4(1, 0, 0));
            Shader green     = new Phong(new Vector4(0, 1, 0));
            Shader blue      = new Phong(new Vector4(0, 0, 1));
            Shader yellow    = new Phong(new Vector4(1, 1, 0));
            Shader pink      = new Phong(new Vector4(1, 0, 1));
            Shader cyan      = new Phong(new Vector4(0, 1, 1));
            Shader bluePhong = new Phong(new Vector4(0, 0, 1));
            //ToDo: change carPhong color to match your sample from ExLab
            Shader carPhong         = new Phong(new Vector4(0.18, 0.39, 0.56));
            Shader gray             = new Phong(new Vector4(0.5, 0.5, 0.5));
            Shader lightBlue        = new Phong(new Vector4(91 / 255.0, 142 / 255.0, 210 / 255.0));
            Shader unsaturatedGreen = new Phong(new Vector4(86 / 255.0, 116 / 255.0, 86 / 255.0));
            Shader brown            = new Phong(new Vector4(80 / 255.0, 48 / 255.0, 34 / 255.0));
            Shader lightBrown       = new Phong(new Vector4(195 / 255.0, 152 / 255.0, 101 / 255.0));

            Shader checker = new Checker()
            {
                Shader0  = unsaturatedGreen,
                Shader1  = white,
                CubeSize = 3
            };

            Shader toon = new Toon(pink as Phong)
            {
                SpecularColor = new Vector4(1, 1, 1)
            };

            Shader cook = new CookTorrance(carPhong as Phong)
            {
                SpecularColor = new Vector4(1, 1, 1)
            };

            Shader oren = new OrenNayar(yellow as Phong)
            {
                SpecularColor = new Vector4(1, 1, 1)
            };

            Shader gradient = new GradientShader()
            {
                Shader0 = brown,
                Shader1 = lightBrown,
                Q       = new Vector4(0, 0, 0),
                v       = new Vector4(0, 1, 0)
            };

            world.Models.Add(new Plane(checker, new Vector4(0, 0, 0), new Vector4(0, 0, 1)));
            world.Models.Add(new Sphere(toon, new Vector4(0, -14, 4), 4));
            world.Models.Add(new Sphere(cook, new Vector4(0, -6, 4), 4));
            world.Models.Add(new Sphere(cyan, new Vector4(0, 2, 4), 4));
            world.Models.Add(new Sphere(oren, new Vector4(0, 10, 4), 4));
            world.Models.Add(new Sphere(gradient, new Vector4(0, 18, 4), 4));

            switch (LightType)
            {
            case "SunLight": world.Lights.Add(sun); break;

            case "PointLight": world.Lights.Add(point); break;

            case "SpotLight": world.Lights.Add(spot); break;

            case "AreaLight": area.Set(); world.Lights.Add(area); break;
            }

            camera.World = world;
        }