summaryrefslogtreecommitdiffstats
path: root/tests/raytrace.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2009-07-02 18:12:32 +0000
committerTavian Barnes <tavianator@gmail.com>2009-07-02 18:12:32 +0000
commitb6b0a35495383b64a92e9d4c9391b4a4683a7b7e (patch)
tree885d7664cd84bd60ff7841dde1bae01849ba29a8 /tests/raytrace.c
parent634bb3ca825dc6659f03a3013694c5c7b64460e8 (diff)
downloaddimension-b6b0a35495383b64a92e9d4c9391b4a4683a7b7e.tar.xz
New dmnsn_new_default_scene() function in libdimension-tests.
Diffstat (limited to 'tests/raytrace.c')
-rw-r--r--tests/raytrace.c111
1 files changed, 8 insertions, 103 deletions
diff --git a/tests/raytrace.c b/tests/raytrace.c
index 2c8419f..d045df5 100644
--- a/tests/raytrace.c
+++ b/tests/raytrace.c
@@ -36,90 +36,15 @@ main() {
dmnsn_set_resilience(DMNSN_SEVERITY_LOW);
/* Allocate our new scene */
- scene = dmnsn_new_scene();
+ scene = dmnsn_new_default_scene();
if (!scene) {
- fprintf(stderr, "--- Allocation of scene failed! ---\n");
+ fprintf(stderr, "--- Allocation of default scene failed! ---\n");
return EXIT_FAILURE;
}
- /* Allocate a canvas */
- scene->canvas = dmnsn_new_canvas(768, 480);
- if (!scene->canvas) {
- dmnsn_delete_scene(scene);
- fprintf(stderr, "--- Allocation of scene failed! ---\n");
- return EXIT_FAILURE;
- }
-
- /* Set up the transformation matrix for the perspective camera */
- trans = dmnsn_scale_matrix(
- dmnsn_vector_construct(
- ((double)scene->canvas->x)/scene->canvas->y, 1.0, 1.0
- )
- );
- trans = dmnsn_matrix_mul(
- dmnsn_translation_matrix(dmnsn_vector_construct(0.0, 0.0, -4.0)),
- trans
- );
- trans = dmnsn_matrix_mul(
- dmnsn_rotation_matrix(dmnsn_vector_construct(0.0, 1.0, 0.0)),
- trans
- );
-
- /* Create a perspective camera */
- scene->camera = dmnsn_new_perspective_camera(trans);
- if (!scene->camera) {
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
- fprintf(stderr, "--- Allocation of scene failed! ---\n");
- return EXIT_FAILURE;
- }
-
- /* Background color */
- sRGB.R = 0.0;
- sRGB.G = 0.0;
- sRGB.B = 0.1;
- color = dmnsn_color_from_sRGB(sRGB);
- color.filter = 0.1;
- scene->background = color;
-
- /* Now make our objects */
-
- sphere = dmnsn_new_sphere();
- if (!sphere) {
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
- fprintf(stderr, "--- Allocation of sphere failed! ---\n");
- return EXIT_FAILURE;
- }
-
- sphere->trans = dmnsn_matrix_inverse(
- dmnsn_scale_matrix(dmnsn_vector_construct(1.25, 1.25, 1.25))
- );
- dmnsn_array_push(scene->objects, &sphere);
-
- cube = dmnsn_new_cube();
- if (!cube) {
- dmnsn_delete_sphere(sphere);
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
- fprintf(stderr, "--- Allocation of sphere failed! ---\n");
- return EXIT_FAILURE;
- }
-
- cube->trans = dmnsn_matrix_inverse(
- dmnsn_rotation_matrix(dmnsn_vector_construct(0.75, 0.0, 0.0))
- );
- dmnsn_array_push(scene->objects, &cube);
-
progress = dmnsn_raytrace_scene_async(scene);
if (!progress) {
- dmnsn_delete_cube(cube);
- dmnsn_delete_sphere(sphere);
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
+ dmnsn_delete_default_scene(scene);
fprintf(stderr, "--- Couldn't start raytracing worker thread! ---\n");
return EXIT_FAILURE;
}
@@ -127,22 +52,14 @@ main() {
progressbar("Raytracing scene: ", progress);
if (dmnsn_finish_progress(progress) != 0) {
- dmnsn_delete_cube(cube);
- dmnsn_delete_sphere(sphere);
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
+ dmnsn_delete_default_scene(scene);
fprintf(stderr, "--- Raytracing failed! ---\n");
return EXIT_FAILURE;
}
file = fopen("raytrace.png", "wb");
if (!file) {
- dmnsn_delete_cube(cube);
- dmnsn_delete_sphere(sphere);
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
+ dmnsn_delete_default_scene(scene);
fprintf(stderr, "--- Couldn't open 'raytrace.png' for writing! ---\n");
return EXIT_FAILURE;
}
@@ -150,11 +67,7 @@ main() {
progress = dmnsn_png_write_canvas_async(scene->canvas, file);
if (!progress) {
fclose(file);
- dmnsn_delete_cube(cube);
- dmnsn_delete_sphere(sphere);
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
+ dmnsn_delete_default_scene(scene);
fprintf(stderr, "--- Couldn't start PNG writing worker thread! ---\n");
return EXIT_FAILURE;
}
@@ -163,20 +76,12 @@ main() {
if (dmnsn_finish_progress(progress) != 0) {
fclose(file);
- dmnsn_delete_cube(cube);
- dmnsn_delete_sphere(sphere);
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
+ dmnsn_delete_default_scene(scene);
fprintf(stderr, "--- Writing canvas to PNG failed! ---\n");
return EXIT_FAILURE;
}
fclose(file);
- dmnsn_delete_cube(cube);
- dmnsn_delete_sphere(sphere);
- dmnsn_delete_perspective_camera(scene->camera);
- dmnsn_delete_canvas(scene->canvas);
- dmnsn_delete_scene(scene);
+ dmnsn_delete_default_scene(scene);
return EXIT_SUCCESS;
}