Skip to content

Commit 6be75f5

Browse files
committed
img-1.15
1 parent 665d439 commit 6be75f5

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/InOneWeekend/main.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ int main() {
4040
hittable_list world;
4141

4242
auto material_ground = make_shared<lambertian>(color(0.8, 0.8, 0.0));
43-
auto material_center = make_shared<dielectric>(1.5);
43+
auto material_center = make_shared<lambertian>(color(0.1, 0.2, 0.5));
4444
auto material_left = make_shared<dielectric>(1.5);
45-
auto material_right = make_shared<metal>(color(0.8, 0.6, 0.2), 1.0);
45+
auto material_right = make_shared<metal>(color(0.8, 0.6, 0.2), 0.0);
4646

4747
world.add(make_shared<sphere>(point3( 0.0, -100.5, -1.0), 100.0, material_ground));
4848
world.add(make_shared<sphere>(point3( 0.0, 0.0, -1.0), 0.5, material_center));

src/InOneWeekend/material.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,23 @@ class dielectric : public material {
6060
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
6161
) const {
6262
attenuation = color(1.0, 1.0, 1.0);
63-
double etai_over_etat;
64-
if (rec.front_face) {
65-
etai_over_etat = 1.0 / ref_idx;
66-
} else {
67-
etai_over_etat = ref_idx;
68-
}
63+
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;
6964

7065
vec3 unit_direction = unit_vector(r_in.direction());
66+
double cos_theta = fmin(dot(-unit_direction, rec.normal), 1.0);
67+
double sin_theta = sqrt(1.0 - cos_theta*cos_theta);
68+
if (etai_over_etat * sin_theta > 1.0 ) {
69+
vec3 reflected = reflect(unit_direction, rec.normal);
70+
scattered = ray(rec.p, reflected);
71+
return true;
72+
}
73+
7174
vec3 refracted = refract(unit_direction, rec.normal, etai_over_etat);
7275
scattered = ray(rec.p, refracted);
7376
return true;
7477
}
7578

79+
public:
7680
double ref_idx;
7781
};
7882

0 commit comments

Comments
 (0)