Files
batomorph/demo.c
Camden Dixie O'Brien a71aa553db Add dielectric material
2025-09-22 19:49:13 +01:00

40 lines
1015 B
C

#include "camera.h"
#include "ff.h"
#include "obj.h"
#include "rng.h"
#include <unistd.h>
#define W 800
#define H 600
#define FOCAL_LEN 1.0
#define VIEWPORT_H 2.0
#define NELEMS(arr) (sizeof(arr) / sizeof(arr[0]))
static const vec3_t camera_pos = { 0.0, 0.0, 0.0 };
static const obj_t scene[] = {
SPHERE(1.0, 0.0, -3.0, 1.0, LAMBERTIAN(0.6, 0.2, 0.8)),
SPHERE(-0.8, 0.0, -3.8, 1.0, LAMBERTIAN(1.0, 1.0, 1.0)),
SPHERE(-1.0, -0.8, -2.6, 0.2, LAMBERTIAN(0.2, 0.9, 0.3)),
SPHERE(0.3, -0.7, -1.8, 0.3, LAMBERTIAN(0.9, 0.6, 0.2)),
SPHERE(-1.6, -0.8, -2.0, 0.2, REFLECTIVE(1.0, 0.9, 0.4)),
SPHERE(-6.0, 5.0, -5.0, 6.0, REFLECTIVE(0.9, 0.9, 0.9)),
SPHERE(-0.7, -0.75, -1.5, 0.25, DIELECTRIC(1.5)),
SPHERE(0.0, -1001.0, 0.0, 1000.0, LAMBERTIAN(0.3, 0.3, 0.3)),
};
static pix_t pixbuf[W * H];
int main()
{
img_t img = { .pix = pixbuf };
camera_t camera = camera_init(camera_pos, FOCAL_LEN, VIEWPORT_H, W, H);
camera_render(&camera, scene, NELEMS(scene), &img);
ff_write(STDOUT_FILENO, img);
return 0;
}