public GradientShaderFactory(GradientShader gradientShader) { _gradientShader = gradientShader; }
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; }