Skip to content

Commit

Permalink
feat: new render
Browse files Browse the repository at this point in the history
  • Loading branch information
ary82 committed Aug 16, 2024
1 parent cb1f368 commit 440327f
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 16 deletions.
Binary file added renders/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 45 additions & 16 deletions src/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,62 @@
#include "sphere.hh"

int main() {

hittable_list world;

auto mat_ground = make_shared<lambertian>(color(0.6, 0.7, 0.3));
auto mat_center = make_shared<lambertian>(color(0.1, 0.2, 0.5));
auto mat_left = make_shared<dielectric>(1.33);
auto mat_right = make_shared<metal>(color(0.83, 0.68, 0.22), 1);
auto ground_material = make_shared<lambertian>(color(0.5, 0.5, 0.5));
world.add(make_shared<sphere>(point3(0, -1000, 0), 1000, ground_material));

for (int a = -11; a < 11; a++) {
for (int b = -11; b < 11; b++) {
auto choose_mat = random_double();
point3 center(a + 0.9 * random_double(), 0.2, b + 0.9 * random_double());

if ((center - point3(4, 0.2, 0)).length() > 0.9) {
shared_ptr<material> sphere_material;

if (choose_mat < 0.8) {
// diffuse
auto albedo = color::random() * color::random();
sphere_material = make_shared<lambertian>(albedo);
world.add(make_shared<sphere>(center, 0.2, sphere_material));
} else if (choose_mat < 0.95) {
// metal
auto albedo = color::random(0.5, 1);
auto fuzz = random_double(0, 0.5);
sphere_material = make_shared<metal>(albedo, fuzz);
world.add(make_shared<sphere>(center, 0.2, sphere_material));
} else {
// glass
sphere_material = make_shared<dielectric>(1.5);
world.add(make_shared<sphere>(center, 0.2, sphere_material));
}
}
}
}

auto material1 = make_shared<dielectric>(1.5);
world.add(make_shared<sphere>(point3(0, 1, 0), 1.0, material1));

auto material2 = make_shared<lambertian>(color(0.4, 0.2, 0.1));
world.add(make_shared<sphere>(point3(-4, 1, 0), 1.0, material2));

world.add(make_shared<sphere>(point3(0.0, -100.5, -1.0), 100.0, mat_ground));
world.add(make_shared<sphere>(point3(0.0, 0.0, -1.2), 0.5, mat_center));
world.add(make_shared<sphere>(point3(-1.0, 0.0, -1.0), 0.5, mat_left));
world.add(make_shared<sphere>(point3(1.0, 0.0, -1.0), 0.5, mat_right));
auto material3 = make_shared<metal>(color(0.7, 0.6, 0.5), 0.0);
world.add(make_shared<sphere>(point3(4, 1, 0), 1.0, material3));

camera cam;

cam.aspect_ratio = 16.0 / 9.0;
cam.image_width = 1920;
cam.samples_per_pixel = 100;
cam.max_depth = 50;
cam.max_depth = 10;

cam.vfov = 45;
cam.lookfrom = point3(-3, 0, 1);
cam.lookat = point3(2, 0, -2.5);
cam.vup = point3(-0.1, 1, 0.1);
cam.vfov = 20;
cam.lookfrom = point3(13, 2, 3);
cam.lookat = point3(0, 0, 0);
cam.vup = vec3(0, 1, 0);

cam.defocus_angle = 0.3;
cam.focus_dist = 3;
cam.defocus_angle = 0.6;
cam.focus_dist = 10.0;

cam.render(world);
}

0 comments on commit 440327f

Please sign in to comment.