Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 18 additions & 15 deletions books/RayTracingInOneWeekend.html
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,8 @@
sphere() {}
sphere(point3 cen, double r) : center(cen), radius(r) {};

virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;

public:
point3 center;
Expand Down Expand Up @@ -1098,7 +1099,8 @@
void clear() { objects.clear(); }
void add(shared_ptr<hittable> object) { objects.push_back(object); }

virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;

public:
std::vector<shared_ptr<hittable>> objects;
Expand Down Expand Up @@ -2017,7 +2019,8 @@
: center(cen), radius(r), mat_ptr(m) {};
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++

virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;

public:
point3 center;
Expand Down Expand Up @@ -2078,9 +2081,9 @@
public:
lambertian(const color& a) : albedo(a) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override{
vec3 scatter_direction = rec.normal + random_unit_vector();
scattered = ray(rec.p, scatter_direction);
attenuation = albedo;
Expand Down Expand Up @@ -2129,9 +2132,9 @@
public:
metal(const color& a) : albedo(a) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override{
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
scattered = ray(rec.p, reflected);
attenuation = albedo;
Expand Down Expand Up @@ -2276,9 +2279,9 @@
metal(const color& a, double f) : albedo(a), fuzz(f < 1 ? f : 1) {}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override {
vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
scattered = ray(rec.p, reflected + fuzz*random_in_unit_sphere());
Expand Down Expand Up @@ -2414,9 +2417,9 @@
public:
dielectric(double ri) : ref_idx(ri) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override {
attenuation = color(1.0, 1.0, 1.0);
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;

Expand Down Expand Up @@ -2524,9 +2527,9 @@
public:
dielectric(double ri) : ref_idx(ri) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override {
attenuation = color(1.0, 1.0, 1.0);
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;

Expand Down Expand Up @@ -2599,9 +2602,9 @@
public:
dielectric(double ri) : ref_idx(ri) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override {
attenuation = color(1.0, 1.0, 1.0);
double etai_over_etat = rec.front_face ? (1.0 / ref_idx) : ref_idx;

Expand Down
101 changes: 62 additions & 39 deletions books/RayTracingTheNextWeek.html
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,8 @@
: center0(cen0), center1(cen1), time0(t0), time1(t1), radius(r), mat_ptr(m)
{};

virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;

point3 center(double time) const;

Expand Down Expand Up @@ -272,9 +273,9 @@
public:
lambertian(const color& a) : albedo(a) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override{
vec3 scatter_direction = rec.normal + random_unit_vector();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
scattered = ray(rec.p, scatter_direction, r_in.time());
Expand Down Expand Up @@ -706,9 +707,11 @@
class sphere : public hittable {
public:
...
virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
virtual bool sphere::bounding_box(double t0, double t1, aabb& output_box) const;
bool sphere::bounding_box(double t0, double t1, aabb& output_box)
const override;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
...
};
Expand Down Expand Up @@ -739,9 +742,11 @@
class moving_sphere : public hittable {
public:
...
virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
virtual bool bounding_box(double t0, double t1, aabb& output_box) const;
bool bounding_box(double t0, double t1, aabb& output_box) const
override;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
...
};
Expand Down Expand Up @@ -780,9 +785,11 @@
class hittable_list : public hittable {
public:
...
virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
virtual bool bounding_box(double t0, double t1, aabb& output_box) const;
bool bounding_box(double t0, double t1, aabb& output_box) const
override;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
...
};
Expand Down Expand Up @@ -855,8 +862,10 @@
std::vector<shared_ptr<hittable>>& objects,
size_t start, size_t end, double time0, double time1);

virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const;
virtual bool bounding_box(double t0, double t1, aabb& output_box) const;
bool hit(const ray& r, double tmin, double tmax, hit_record& rec)
const override;
bool bounding_box(double t0, double t1, aabb& output_box) const
override;

public:
shared_ptr<hittable> left;
Expand Down Expand Up @@ -1045,7 +1054,7 @@
solid_color(double red, double green, double blue)
: solid_color(color(red,green,blue)) {}

virtual color value(double u, double v, const vec3& p) const {
color value(double u, double v, const vec3& p) const override{
return color_value;
}

Expand Down Expand Up @@ -1186,9 +1195,9 @@
lambertian(shared_ptr<texture> a) : albedo(a) {}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override {
vec3 scatter_direction = rec.normal + random_unit_vector();
scattered = ray(rec.p, scatter_direction, r_in.time());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
Expand Down Expand Up @@ -1225,7 +1234,7 @@
checker_texture(color c1, color c2)
: even(make_shared<solid_color>(c1)) , odd(make_shared<solid_color>(c2)) {}

virtual color value(double u, double v, const point3& p) const {
color value(double u, double v, const point3& p) const override{
auto sines = sin(10*p.x())*sin(10*p.y())*sin(10*p.z());
if (sines < 0)
return odd->value(u, v, p);
Expand Down Expand Up @@ -1464,7 +1473,7 @@
public:
noise_texture() {}

virtual color value(double u, double v, const point3& p) const {
color value(double u, double v, const point3& p) const override{
return color(1,1,1) * noise.noise(p);
}

Expand Down Expand Up @@ -1636,7 +1645,7 @@
noise_texture() {}
noise_texture(double sc) : scale(sc) {}

virtual color value(double u, double v, const point3& p) const {
color value(double u, double v, const point3& p) const override{
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
return color(1,1,1) * noise.noise(scale * p);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
Expand Down Expand Up @@ -1774,7 +1783,7 @@
noise_texture() {}
noise_texture(double sc) : scale(sc) {}

virtual color value(double u, double v, const point3& p) const {
color value(double u, double v, const point3& p) const override{
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
return color(1,1,1) * 0.5 * (1.0 + noise.noise(scale * p));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
Expand Down Expand Up @@ -1851,7 +1860,7 @@
noise_texture() {}
noise_texture(double sc) : scale(sc) {}

virtual color value(double u, double v, const point3& p) const {
color value(double u, double v, const point3& p) const override{
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
return color(1,1,1) * 0.5 * (1 + sin(scale*p.z() + 10*noise.turb(p)));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
Expand Down Expand Up @@ -1932,7 +1941,7 @@
delete data;
}

virtual color value(double u, double v, const vec3& p) const {
color value(double u, double v, const vec3& p) const override{
// If we have no texture data, then return solid cyan as a debugging aid.
if (data == nullptr)
return color(0,1,1);
Expand Down Expand Up @@ -2033,13 +2042,13 @@
diffuse_light(shared_ptr<texture> a) : emit(a) {}
diffuse_light(color c) : emit(make_shared<solid_color>(c)) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override {
return false;
}

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

Expand Down Expand Up @@ -2168,9 +2177,11 @@
xy_rect(double _x0, double _x1, double _y0, double _y1, double _k, shared_ptr<material> mat)
: x0(_x0), x1(_x1), y0(_y0), y1(_y1), k(_k), mp(mat) {};

virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const;
bool hit(const ray& r, double t0, double t1, hit_record& rec)
const override;

virtual bool bounding_box(double t0, double t1, aabb& output_box) const {
bool bounding_box(double t0, double t1, aabb& output_box) const
override{
// The bounding box must have non-zero width in each dimension, so pad the Z
// dimension a small amount.
output_box = aabb(point3(x0,y0, k-0.0001), point3(x1, y1, k+0.0001));
Expand Down Expand Up @@ -2267,9 +2278,11 @@
xz_rect(double _x0, double _x1, double _z0, double _z1, double _k, shared_ptr<material> mat)
: x0(_x0), x1(_x1), z0(_z0), z1(_z1), k(_k), mp(mat) {};

virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const;
bool hit(const ray& r, double t0, double t1, hit_record& rec)
const override;

virtual bool bounding_box(double t0, double t1, aabb& output_box) const {
bool bounding_box(double t0, double t1, aabb& output_box) const
override{
// The bounding box must have non-zero width in each dimension, so pad the Y
// dimension a small amount.
output_box = aabb(point3(x0,k-0.0001,z0), point3(x1, k+0.0001, z1));
Expand All @@ -2288,9 +2301,11 @@
yz_rect(double _y0, double _y1, double _z0, double _z1, double _k, shared_ptr<material> mat)
: y0(_y0), y1(_y1), z0(_z0), z1(_z1), k(_k), mp(mat) {};

virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const;
bool hit(const ray& r, double t0, double t1, hit_record& rec)
const override;

virtual bool bounding_box(double t0, double t1, aabb& output_box) const {
bool bounding_box(double t0, double t1, aabb& output_box) const
override{
// The bounding box must have non-zero width in each dimension, so pad the X
// dimension a small amount.
output_box = aabb(point3(k-0.0001, y0, z0), point3(k+0.0001, y1, z1));
Expand Down Expand Up @@ -2417,9 +2432,11 @@
box() {}
box(const point3& p0, const point3& p1, shared_ptr<material> ptr);

virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const;
bool hit(const ray& r, double t0, double t1, hit_record& rec)
const override;

virtual bool bounding_box(double t0, double t1, aabb& output_box) const {
bool bounding_box(double t0, double t1, aabb& output_box) const
override{
output_box = aabb(box_min, box_max);
return true;
}
Expand Down Expand Up @@ -2498,8 +2515,10 @@
translate(shared_ptr<hittable> p, const vec3& displacement)
: ptr(p), offset(displacement) {}

virtual bool hit(const ray& r, double t_min, double t_max, hit_record& rec) const;
virtual bool bounding_box(double t0, double t1, aabb& output_box) const;
bool hit(const ray& r, double t_min, double t_max, hit_record&
rec) const override;
bool bounding_box(double t0, double t1, aabb& output_box) const
override;

public:
shared_ptr<hittable> ptr;
Expand Down Expand Up @@ -2583,8 +2602,10 @@
public:
rotate_y(shared_ptr<hittable> p, double angle);

virtual bool hit(const ray& r, double t_min, double t_max, hit_record& rec) const;
virtual bool bounding_box(double t0, double t1, aabb& output_box) const {
bool hit(const ray& r, double t_min, double t_max, hit_record&
rec) const override;
bool bounding_box(double t0, double t1, aabb& output_box) const
override{
output_box = bbox;
return hasbox;
}
Expand Down Expand Up @@ -2751,9 +2772,11 @@
phase_function(make_shared<isotropic>(color(c)))
{}

virtual bool hit(const ray& r, double t_min, double t_max, hit_record& rec) const;
bool hit(const ray& r, double t_min, double t_max, hit_record&
rec) const override;

virtual bool bounding_box(double t0, double t1, aabb& output_box) const {
bool bounding_box(double t0, double t1, aabb& output_box) const
override{
return boundary->bounding_box(t0, t1, output_box);
}

Expand All @@ -2774,9 +2797,9 @@
public:
isotropic(shared_ptr<texture> a) : albedo(a) {}

virtual bool scatter(
bool scatter(
const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
) const {
) const override{
scattered = ray(rec.p, random_in_unit_sphere(), r_in.time());
attenuation = albedo->value(rec.u, rec.v, rec.p);
return true;
Expand Down
Loading