aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c111
1 files changed, 59 insertions, 52 deletions
diff --git a/main.c b/main.c
index 78117d5..1ea89fa 100644
--- a/main.c
+++ b/main.c
@@ -10,63 +10,70 @@
#define TESTW 1000
#define TESTH 1000
+char container[ CONTAINER_SIZE(5, 4, 1) ];
+
int main()
{
- //printf("Starting\n");
- space_t s;
- s.objects = NULL;
- s.lights = NULL;
- color_set(&s.ambient, 0.09, 0.09, 0.09);
- // Currently havin issues with white background
- // color_set(&s.back, 255, 255, 255);
- color_set(&s.back, 0.8, 0.8, 0.8);
- color_set(&s.env_color, 0.13, 0.13, 0.13);
- s.env_samples = 256;
-
- material_t m;
- vector_set(&m.color, 0.4, 0.4, 1);
- m.defuse = 1;
- m.specular = 0.0;
- m.shine = 80;
- m.reflective = 0.0;
-
- material_t m3;
- vector_set(&m3.color, 1, 0.3, 0.1);
- m3.defuse = 0.95;
- m3.specular = 0.0;
- m3.shine = 80;
- m3.reflective = 0.05;
-
- material_t m2;
- vector_set(&m2.color, 1, 1, 1);
- m2.defuse = 0.0;
- m2.specular = 0.5;
- m2.shine = 80;
- m2.reflective = 1;
-
- material_t mpl;
+
+ container_t *cont = (container_t *) container;
+ container_init(cont, 5, 4, 1);
+
+ // Init space_t
+ space_t *s = container_prepare_space(cont);;
+
+ // Set space options
+ color_set(&s->ambient, 0.09, 0.09, 0.09);
+ color_set(&s->back, 0.8, 0.8, 0.8);
+ color_set(&s->env_color, 0.13, 0.13, 0.13);
+ s->env_samples = 16;
+
+ // Set viewpoint options
+ vector_set(&s->view.position, 0, 16, 6);
+ vector_set(&s->view.target, 0, 0, 6);
+ s->view.width = TESTW;
+ s->view.height = TESTH;
+
+ // Create materials
+ material_t *m = add_material(cont);
+ vector_set(&m->color, 0.4, 0.4, 1);
+ m->defuse = 1;
+ m->specular = 0.0;
+ m->shine = 80;
+ m->reflective = 0.0;
+
+ material_t *m3 = add_material(cont);
+ vector_set(&m3->color, 1, 0.3, 0.1);
+ m3->defuse = 0.95;
+ m3->specular = 0.0;
+ m3->shine = 80;
+ m3->reflective = 0.05;
+
+ material_t *m2 = add_material(cont);
+ vector_set(&m2->color, 1, 1, 1);
+ m2->defuse = 0.0;
+ m2->specular = 0.5;
+ m2->shine = 80;
+ m2->reflective = 1;
+
+ material_t *mpl = add_material(cont);
//vector_set(&mpl.color, 0, 0.396, 0.7019);
- vector_set(&mpl.color, 1, 1, 1);
- mpl.defuse = 1;
- mpl.specular = 0.0;
- mpl.shine = 50;
- mpl.reflective = 0.0;
-
- vector_set(&s.view.position, 0, 16, 6);
- vector_set(&s.view.target, 0, 0, 6);
- s.view.width = TESTW;
- s.view.height = TESTH;
-
- viewpoint_init(&s.view);
+ vector_set(&mpl->color, 1, 1, 1);
+ mpl->defuse = 1;
+ mpl->specular = 0.0;
+ mpl->shine = 50;
+ mpl->reflective = 0.0;
+
+
+ viewpoint_init(&s->view);
// Setup plane
- add_sphere(&s, vector_set(NULL, 0, 4, 7), 5, &m2);
- add_sphere(&s, vector_set(NULL, 8, 8, 4), 2, &m3);
- add_sphere(&s, vector_set(NULL, -10, 9, 5), 3, &m);
- add_sphere(&s, vector_set(NULL, -10, -5, 5), 3, &m);
- add_plane(&s, vector_set(NULL, 0, 0, 2), vector_set(NULL, 0, 0, 1), &mpl);
+ add_sphere(cont, vector_set(NULL, 0, 4, 7), 5, m2);
+ add_sphere(cont, vector_set(NULL, 8, 8, 4), 2, m3);
+ add_sphere(cont, vector_set(NULL, -10, 9, 5), 3, m);
+ add_sphere(cont, vector_set(NULL, -10, -5, 5), 3, m);
+ add_plane(cont, vector_set(NULL, 0, 0, 2), vector_set(NULL, 0, 0, 1), mpl);
//add_plane(&s, vector_set(NULL, 0, -20, 0), vector_set(NULL, 0, 1, 0), &mpl);
- add_light(&s, vector_set(NULL, 20, 10, 30), color_set(NULL, 0.3, 0.3, 0.3), color_set(NULL, 0.5, 0.5, 0.5));
+ add_light(cont, vector_set(NULL, 20, 10, 30), color_set(NULL, 0.3, 0.3, 0.3), color_set(NULL, 0.5, 0.5, 0.5));
//add_light(&s, vector_set(NULL, 0, 10, 20), color_set(NULL, 0.5, 0.5, 0.5), color_set(NULL, 0.5, 0.5, 0.5));
pgm_write_header(stdout, TESTW, TESTH);
@@ -77,7 +84,7 @@ int main()
for (int y = TESTH; y; y--) {
for (int x = TESTW; x; x--) {
- color_t *c = ray_trace(&s, x, y, 2);
+ color_t *c = ray_trace(&cont->space, x, y, 2);
if (c) {
pgm_write_pixel(stdout, c);