Skip to content

Commit 94accc0

Browse files
committed
Add override specifier: material subclasses
1 parent d21e2ba commit 94accc0

File tree

6 files changed

+38
-32
lines changed

6 files changed

+38
-32
lines changed

books/RayTracingInOneWeekend.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2059,7 +2059,7 @@
20592059

20602060
virtual bool scatter(
20612061
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
2062-
) const {
2062+
) const override {
20632063
vec3 scatter_direction = rec.normal + random_unit_vector();
20642064
scattered = ray(rec.p, scatter_direction);
20652065
attenuation = albedo;
@@ -2110,7 +2110,7 @@
21102110

21112111
virtual bool scatter(
21122112
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
2113-
) const {
2113+
) const override {
21142114
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
21152115
scattered = ray(rec.p, reflected);
21162116
attenuation = albedo;
@@ -2257,7 +2257,7 @@
22572257

22582258
virtual bool scatter(
22592259
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
2260-
) const {
2260+
) const override {
22612261
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
22622262
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
22632263
scattered = ray(rec.p, reflected + fuzz*random_in_unit_sphere());
@@ -2395,7 +2395,7 @@
23952395

23962396
virtual bool scatter(
23972397
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
2398-
) const {
2398+
) const override {
23992399
attenuation = color(1.0, 1.0, 1.0);
24002400
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;
24012401

@@ -2505,7 +2505,7 @@
25052505

25062506
virtual bool scatter(
25072507
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
2508-
) const {
2508+
) const override {
25092509
attenuation = color(1.0, 1.0, 1.0);
25102510
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;
25112511

@@ -2580,7 +2580,7 @@
25802580

25812581
virtual bool scatter(
25822582
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
2583-
) const {
2583+
) const override {
25842584
attenuation = color(1.0, 1.0, 1.0);
25852585
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;
25862586

books/RayTracingTheNextWeek.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@
279279

280280
virtual bool scatter(
281281
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
282-
) const {
282+
) const override {
283283
vec3 scatter_direction = rec.normal + random_unit_vector();
284284
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
285285
scattered = ray(rec.p, scatter_direction, r_in.time());
@@ -1208,7 +1208,7 @@
12081208

12091209
virtual bool scatter(
12101210
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
1211-
) const {
1211+
) const override {
12121212
vec3 scatter_direction = rec.normal + random_unit_vector();
12131213
scattered = ray(rec.p, scatter_direction, r_in.time());
12141214
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
@@ -2177,11 +2177,11 @@
21772177

21782178
virtual bool scatter(
21792179
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
2180-
) const {
2180+
) const override {
21812181
return false;
21822182
}
21832183

2184-
virtual color emitted(double u, double v, const point3& p) const {
2184+
virtual color emitted(double u, double v, const point3& p) const override {
21852185
return emit->value(u, v, p);
21862186
}
21872187

@@ -3076,7 +3076,7 @@
30763076

30773077
virtual bool scatter(
30783078
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
3079-
) const {
3079+
) const override {
30803080
scattered = ray(rec.p, random_in_unit_sphere(), r_in.time());
30813081
attenuation = albedo->value(rec.u, rec.v, rec.p);
30823082
return true;

books/RayTracingTheRestOfYourLife.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@
889889
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
890890
virtual bool scatter(
891891
const ray& r_in, const hit_record& rec, color& alb, ray& scattered, double& pdf
892-
) const {
892+
) const override {
893893
auto direction = rec.normal + random_unit_vector();
894894
scattered = ray(rec.p, unit_vector(direction), r_in.time());
895895
alb = albedo->value(rec.u, rec.v, rec.p);
@@ -963,7 +963,7 @@
963963
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
964964
virtual bool scatter(
965965
const ray& r_in, const hit_record& rec, color& alb, ray& scattered, double& pdf
966-
) const {
966+
) const override {
967967
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
968968
auto direction = random_in_hemisphere(rec.normal);
969969
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
@@ -1336,7 +1336,7 @@
13361336
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
13371337
virtual bool scatter(
13381338
const ray& r_in, const hit_record& rec, color& alb, ray& scattered, double& pdf
1339-
) const {
1339+
) const override {
13401340
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
13411341
onb uvw;
13421342
uvw.build_from_w(rec.normal);
@@ -1481,7 +1481,7 @@
14811481

14821482
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
14831483
virtual color emitted(const ray& r_in, const hit_record& rec, double u, double v,
1484-
const point3& p) const {
1484+
const point3& p) const override {
14851485

14861486
if (rec.front_face)
14871487
return emit->value(u, v, p);
@@ -2050,7 +2050,7 @@
20502050
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
20512051
virtual bool scatter(
20522052
const ray& r_in, const hit_record& rec, scatter_record& srec
2053-
) const {
2053+
) const override {
20542054
srec.is_specular = false;
20552055
srec.attenuation = albedo->value(rec.u, rec.v, rec.p);
20562056
srec.pdf_ptr = new cosine_pdf(rec.normal);
@@ -2130,7 +2130,7 @@
21302130
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
21312131
virtual bool scatter(
21322132
const ray& r_in, const hit_record& rec, scatter_record& srec
2133-
) const {
2133+
) const override {
21342134
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
21352135
srec.specular_ray = ray(rec.p, reflected+fuzz*random_in_unit_sphere());
21362136
srec.attenuation = albedo;

src/InOneWeekend/material.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class lambertian : public material {
3838

3939
virtual bool scatter(
4040
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
41-
) const {
41+
) const override {
4242
vec3 scatter_direction = rec.normal + random_unit_vector();
4343
scattered = ray(rec.p, scatter_direction);
4444
attenuation = albedo;
@@ -56,7 +56,7 @@ class metal : public material {
5656

5757
virtual bool scatter(
5858
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
59-
) const {
59+
) const override {
6060
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
6161
scattered = ray(rec.p, reflected + fuzz*random_in_unit_sphere());
6262
attenuation = albedo;
@@ -75,7 +75,7 @@ class dielectric : public material {
7575

7676
virtual bool scatter(
7777
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
78-
) const {
78+
) const override {
7979
attenuation = color(1.0, 1.0, 1.0);
8080
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;
8181

src/TheNextWeek/material.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class lambertian : public material {
4343

4444
virtual bool scatter(
4545
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
46-
) const {
46+
) const override {
4747
vec3 scatter_direction = rec.normal + random_unit_vector();
4848
scattered = ray(rec.p, scatter_direction, r_in.time());
4949
attenuation = albedo->value(rec.u, rec.v, rec.p);
@@ -61,7 +61,7 @@ class metal : public material {
6161

6262
virtual bool scatter(
6363
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
64-
) const {
64+
) const override {
6565
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
6666
scattered = ray(rec.p, reflected + fuzz*random_in_unit_sphere(), r_in.time());
6767
attenuation = albedo;
@@ -80,7 +80,7 @@ class dielectric : public material {
8080

8181
virtual bool scatter(
8282
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
83-
) const {
83+
) const override {
8484
attenuation = color(1.0, 1.0, 1.0);
8585
double etai_over_etat = (rec.front_face) ? (1.0 / ref_idx) : ref_idx;
8686

@@ -113,11 +113,11 @@ class diffuse_light : public material {
113113

114114
virtual bool scatter(
115115
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
116-
) const {
116+
) const override {
117117
return false;
118118
}
119119

120-
virtual color emitted(double u, double v, const point3& p) const {
120+
virtual color emitted(double u, double v, const point3& p) const override {
121121
return emit->value(u, v, p);
122122
}
123123

@@ -133,7 +133,7 @@ class isotropic : public material {
133133

134134
virtual bool scatter(
135135
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
136-
) const {
136+
) const override {
137137
scattered = ray(rec.p, random_in_unit_sphere(), r_in.time());
138138
attenuation = albedo->value(rec.u, rec.v, rec.p);
139139
return true;

src/TheRestOfYourLife/material.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class lambertian : public material {
6161

6262
virtual bool scatter(
6363
const ray& r_in, const hit_record& rec, scatter_record& srec
64-
) const {
64+
) const override {
6565
srec.is_specular = false;
6666
srec.attenuation = albedo->value(rec.u, rec.v, rec.p);
6767
srec.pdf_ptr = make_shared<cosine_pdf>(rec.normal);
@@ -70,7 +70,7 @@ class lambertian : public material {
7070

7171
double scattering_pdf(
7272
const ray& r_in, const hit_record& rec, const ray& scattered
73-
) const {
73+
) const override {
7474
auto cosine = dot(rec.normal, unit_vector(scattered.direction()));
7575
return cosine < 0 ? 0 : cosine/pi;
7676
}
@@ -86,7 +86,7 @@ class metal : public material {
8686

8787
virtual bool scatter(
8888
const ray& r_in, const hit_record& rec, scatter_record& srec
89-
) const {
89+
) const override {
9090
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
9191
srec.specular_ray =
9292
ray(rec.p, reflected + fuzz*random_in_unit_sphere(), r_in.time());
@@ -108,7 +108,7 @@ class dielectric : public material {
108108

109109
virtual bool scatter(
110110
const ray& r_in, const hit_record& rec, scatter_record& srec
111-
) const {
111+
) const override {
112112
srec.is_specular = true;
113113
srec.pdf_ptr = nullptr;
114114
srec.attenuation = color(1.0, 1.0, 1.0);
@@ -143,7 +143,7 @@ class diffuse_light : public material {
143143

144144
virtual color emitted(
145145
const ray& r_in, const hit_record& rec, double u, double v, const point3& p
146-
) const {
146+
) const override {
147147
if (!rec.front_face)
148148
return color(0,0,0);
149149
return emit->value(u, v, p);
@@ -159,13 +159,19 @@ class isotropic : public material {
159159
isotropic(color c) : albedo(make_shared<solid_color>(c)) {}
160160
isotropic(shared_ptr<texture> a) : albedo(a) {}
161161

162+
#if 0
163+
// Issue #669
164+
// This method doesn't match the signature in the base `material` class, so this one's
165+
// never actually called. Disabling this definition until we sort this out.
166+
162167
virtual bool scatter(
163168
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
164-
) const {
169+
) const override {
165170
scattered = ray(rec.p, random_in_unit_sphere(), r_in.time());
166171
attenuation = albedo->value(rec.u, rec.v, rec.p);
167172
return true;
168173
}
174+
#endif
169175

170176
public:
171177
shared_ptr<texture> albedo;

0 commit comments

Comments
 (0)