-void RenderFramePhongSpotLight(const std::string& fileName)
-{
- /* Scene definition */
- Scene scene;
-
- /* Flat shaders */
- PhongShader shd1(&scene, Vec3f(1,0,0),Vec3f(1,0,0),Vec3f(1,1,1), 0.1, 0.5, 0.5, 40); // red surface
- PhongShader shd2(&scene, Vec3f(0,1,0),Vec3f(0,1,0),Vec3f(1,1,1), 0.1, 0.5, 0.5, 40); // green surface
- PhongShader shd3(&scene, Vec3f(0,0,1),Vec3f(0,0,1),Vec3f(1,1,1), 0.1, 0.5, 0.5, 40); // blue surface
- PhongShader shd4(&scene, Vec3f(1,1,0),Vec3f(1,1,0),Vec3f(1,1,1), 0.1, 0.5, 0.5, 40); // yellow surface
- PhongShader shd5(&scene, Vec3f(0,1,1),Vec3f(0,1,1),Vec3f(1,1,1), 0.1, 0.5, 0.5, 40); // cyan surface
- PhongShader shd6(&scene, Vec3f(1,1,1),Vec3f(1,1,1),Vec3f(1,1,1), 0.1, 0.5, 0.5, 40); // white surface
-
- /* scene objects */
- Sphere s1(Vec3f(-2,1.7,0), 2, &shd1);
- Sphere s2(Vec3f(1,-1,1), 2.2, &shd2);
- Sphere s3(Vec3f(3,0.8,-2), 2, &shd3);
- InfinitePlane p1(Vec3f(0,-1,0),Vec3f(0,1,0), &shd4);
-
-
- Triangle t1(Vec3f(-2,3,1),Vec3f(1,2,1),Vec3f(3,2.8,3), &shd5);
-
- /* add to scene */
- scene.Add(&s1);
- scene.Add(&s2);
- scene.Add(&s3);
- scene.Add(&p1);
- scene.Add(&t1);
-
- /* light sources */
- Vec3f lightPosition1(4,5,6);
- Vec3f lightPosition2(-3,5,4);
- Vec3f spotLightSourceIntensity(50,50,50);
- Vec3f lightDir1 = lightPosition1 * (-1.0f);
- lightDir1.normalize();
- Vec3f lightDir2 = lightPosition2 *(-1.0f);
- lightDir2.normalize();
- float alpha_min = 15.0f;
- float alpha_max = 30.0f;
-
- SpotLight spotLight1(&scene, lightPosition1, lightDir1, spotLightSourceIntensity, alpha_min, alpha_max);
- SpotLight spotLight2(&scene, lightPosition2, lightDir2, spotLightSourceIntensity, alpha_min, alpha_max);
-
- scene.Add(&spotLight1);
- scene.Add(&spotLight2);
-