/* Scene definition */
Scene scene;
-
+
/* Flat shaders */
FlatShader shd1(&scene, Vec3f(1,0,0)); // red surface
FlatShader shd2(&scene, Vec3f(0,1,0)); // green surface
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);
-
+
+ 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);
-
-
+
+
Image img(scene.camera()->resX(),scene.camera()->resY()); // image array
Ray ray; // primary ray
-
+
for(int y = 0; y < scene.camera()->resY(); y++)
{
- for (int x = 0; x < scene.camera()->resX(); x++)
- {
-
- /* Initialize your ray here */
-
- scene.camera()->InitRay(x+0.5,y+0.5,ray); // initialize ray
-
- Vec3f col = scene.RayTrace(ray);
-
- img(x,y) = col; // store pixel color
- //std::cerr << "Main: Image color = " << img(x,y) << std::endl;
- }
+ for (int x = 0; x < scene.camera()->resX(); x++)
+ {
+
+ /* Initialize your ray here */
+ // shoot four rays for antialiasing
+ scene.camera()->InitRay(x+0.5,y+0.5, ray); // initialize ray
+ Vec3f col1 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y+0.5, ray); // initialize ray
+ Vec3f col2 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y-0.5, ray); // initialize ray
+ Vec3f col3 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y-0.5, ray); // initialize ray
+ Vec3f col4 = scene.RayTrace(ray);
+
+ img(x,y) = (col1 + col2 + col3 + col4) / 4.0; // store pixel color
+ //std::cerr << "Main: Image color = " << img(x,y) << std::endl;
+ }
}
img.WritePPM(fileName); // write final image
}
/* Scene definition */
Scene scene;
-
+
/* Flat shaders */
EyeLightShader shd1(&scene, Vec3f(1,0,0)); // red surface
EyeLightShader shd2(&scene, Vec3f(0,1,0)); // green surface
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);
-
+
+ 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);
-
+
Image img(scene.camera()->resX(),scene.camera()->resY()); // image array
Ray ray; // primary ray
-
+
for(int y = 0; y < scene.camera()->resY(); y++)
{
- for (int x = 0; x < scene.camera()->resX(); x++)
- {
-
- /* Initialize your ray here */
-
- scene.camera()->InitRay(x+0.5,y+0.5,ray); // initialize ray
-
- Vec3f col = scene.RayTrace(ray);
-
- img(x,y) = col; // store pixel color
- //std::cerr << "Main: Image color = " << img(x,y) << std::endl;
- }
+ for (int x = 0; x < scene.camera()->resX(); x++)
+ {
+
+ /* Initialize your ray here */
+ // shoot four rays for antialiasing
+ scene.camera()->InitRay(x+0.5,y+0.5, ray); // initialize ray
+ Vec3f col1 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y+0.5, ray); // initialize ray
+ Vec3f col2 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y-0.5, ray); // initialize ray
+ Vec3f col3 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y-0.5, ray); // initialize ray
+ Vec3f col4 = scene.RayTrace(ray);
+
+ img(x,y) = (col1 + col2 + col3 + col4) / 4.0; // store pixel color
+ }
}
img.WritePPM(fileName); // write final image
}
/* Scene definition */
Scene scene;
-
+
/* Flat shaders */
ReflectiveEyeLightShader shd1(&scene, 1.0, Vec3f(1,0,0)); // red surface
ReflectiveEyeLightShader shd2(&scene, 1.0, Vec3f(0.0,1.0,0.0)); // green surface
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);
-
+
+ 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);
-
-
+
+
Image img(scene.camera()->resX(),scene.camera()->resY()); // image array
Ray ray; // primary ray
-
+
for(int y = 0; y < scene.camera()->resY(); y++)
{
- for (int x = 0; x < scene.camera()->resX(); x++)
- {
-
- /* Initialize your ray here */
-
- scene.camera()->InitRay(x+0.5,y+0.5,ray); // initialize ray
-
- Vec3f col = scene.RayTrace(ray);
-
- img(x,y) = col; // store pixel color
- //std::cerr << "Main: Image color = " << img(x,y) << std::endl;
- }
+ for (int x = 0; x < scene.camera()->resX(); x++)
+ {
+ /* Initialize your ray here */
+ // shoot four rays for antialiasing
+ scene.camera()->InitRay(x+0.5,y+0.5, ray); // initialize ray
+ Vec3f col1 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y+0.5, ray); // initialize ray
+ Vec3f col2 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y-0.5, ray); // initialize ray
+ Vec3f col3 = scene.RayTrace(ray);
+ scene.camera()->InitRay(x-0.5,y-0.5, ray); // initialize ray
+ Vec3f col4 = scene.RayTrace(ray);
+
+ img(x,y) = (col1 + col2 + col3 + col4) / 4.0; // store pixel color
+ //std::cerr << "Main: Image color = " << img(x,y) << std::endl;
+ }
}
img.WritePPM(fileName); // write final image
}