|
193 | 193 | : center0(cen0), center1(cen1), time0(t0), time1(t1), radius(r), mat_ptr(m)
|
194 | 194 | {};
|
195 | 195 |
|
196 |
| - virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const; |
| 196 | + virtual bool hit( |
| 197 | + const ray& r, double tmin, double tmax, hit_record& rec) const override; |
197 | 198 |
|
198 | 199 | point3 center(double time) const;
|
199 | 200 |
|
|
204 | 205 | shared_ptr<material> mat_ptr;
|
205 | 206 | };
|
206 | 207 |
|
207 |
| - point3 moving_sphere::center(double time) const{ |
| 208 | + point3 moving_sphere::center(double time) const { |
208 | 209 | return center0 + ((time - time0) / (time1 - time0))*(center1 - center0);
|
209 | 210 | }
|
210 | 211 |
|
|
279 | 280 |
|
280 | 281 | virtual bool scatter(
|
281 | 282 | const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
|
282 |
| - ) const { |
| 283 | + ) const override { |
283 | 284 | vec3 scatter_direction = rec.normal + random_unit_vector();
|
284 | 285 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
285 | 286 | scattered = ray(rec.p, scatter_direction, r_in.time());
|
|
716 | 717 | class sphere : public hittable {
|
717 | 718 | public:
|
718 | 719 | ...
|
719 |
| - virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const; |
| 720 | + virtual bool hit( |
| 721 | + const ray& r, double tmin, double tmax, hit_record& rec) const override; |
| 722 | + |
| 723 | + |
720 | 724 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
721 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const; |
| 725 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override; |
722 | 726 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
723 | 727 | ...
|
724 | 728 | };
|
|
749 | 753 | class moving_sphere : public hittable {
|
750 | 754 | public:
|
751 | 755 | ...
|
752 |
| - virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const; |
| 756 | + virtual bool hit( |
| 757 | + const ray& r, double tmin, double tmax, hit_record& rec) const override; |
| 758 | + |
| 759 | + |
753 | 760 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
754 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const; |
| 761 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override; |
755 | 762 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
756 | 763 | ...
|
757 | 764 | };
|
|
790 | 797 | class hittable_list : public hittable {
|
791 | 798 | public:
|
792 | 799 | ...
|
793 |
| - virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const; |
| 800 | + virtual bool hit( |
| 801 | + const ray& r, double tmin, double tmax, hit_record& rec) const override; |
| 802 | + |
| 803 | + |
794 | 804 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
795 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const; |
| 805 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override; |
796 | 806 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
797 | 807 | ...
|
798 | 808 | };
|
|
868 | 878 | std::vector<shared_ptr<hittable>>& objects,
|
869 | 879 | size_t start, size_t end, double time0, double time1);
|
870 | 880 |
|
871 |
| - virtual bool hit(const ray& r, double tmin, double tmax, hit_record& rec) const; |
872 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const; |
| 881 | + virtual bool hit( |
| 882 | + const ray& r, double tmin, double tmax, hit_record& rec) const override; |
| 883 | + |
| 884 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override; |
873 | 885 |
|
874 | 886 | public:
|
875 | 887 | shared_ptr<hittable> left;
|
|
1063 | 1075 | solid_color(double red, double green, double blue)
|
1064 | 1076 | : solid_color(color(red,green,blue)) {}
|
1065 | 1077 |
|
1066 |
| - virtual color value(double u, double v, const vec3& p) const { |
| 1078 | + virtual color value(double u, double v, const vec3& p) const override { |
1067 | 1079 | return color_value;
|
1068 | 1080 | }
|
1069 | 1081 |
|
|
1208 | 1220 |
|
1209 | 1221 | virtual bool scatter(
|
1210 | 1222 | const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
|
1211 |
| - ) const { |
| 1223 | + ) const override { |
1212 | 1224 | vec3 scatter_direction = rec.normal + random_unit_vector();
|
1213 | 1225 | scattered = ray(rec.p, scatter_direction, r_in.time());
|
1214 | 1226 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
|
1245 | 1257 | checker_texture(color c1, color c2)
|
1246 | 1258 | : even(make_shared<solid_color>(c1)) , odd(make_shared<solid_color>(c2)) {}
|
1247 | 1259 |
|
1248 |
| - virtual color value(double u, double v, const point3& p) const { |
| 1260 | + virtual color value(double u, double v, const point3& p) const override { |
1249 | 1261 | auto sines = sin(10*p.x())*sin(10*p.y())*sin(10*p.z());
|
1250 | 1262 | if (sines < 0)
|
1251 | 1263 | return odd->value(u, v, p);
|
|
1486 | 1498 | public:
|
1487 | 1499 | noise_texture() {}
|
1488 | 1500 |
|
1489 |
| - virtual color value(double u, double v, const point3& p) const { |
| 1501 | + virtual color value(double u, double v, const point3& p) const override { |
1490 | 1502 | return color(1,1,1) * noise.noise(p);
|
1491 | 1503 | }
|
1492 | 1504 |
|
|
1666 | 1678 | noise_texture(double sc) : scale(sc) {}
|
1667 | 1679 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
1668 | 1680 |
|
1669 |
| - virtual color value(double u, double v, const point3& p) const { |
| 1681 | + virtual color value(double u, double v, const point3& p) const override { |
1670 | 1682 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
1671 | 1683 | return color(1,1,1) * noise.noise(scale * p);
|
1672 | 1684 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
|
1843 | 1855 | noise_texture() {}
|
1844 | 1856 | noise_texture(double sc) : scale(sc) {}
|
1845 | 1857 |
|
1846 |
| - virtual color value(double u, double v, const point3& p) const { |
| 1858 | + virtual color value(double u, double v, const point3& p) const override { |
1847 | 1859 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
1848 | 1860 | return color(1,1,1) * 0.5 * (1.0 + noise.noise(scale * p));
|
1849 | 1861 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
|
1904 | 1916 | noise_texture() {}
|
1905 | 1917 | noise_texture(double sc) : scale(sc) {}
|
1906 | 1918 |
|
1907 |
| - virtual color value(double u, double v, const point3& p) const { |
| 1919 | + virtual color value(double u, double v, const point3& p) const override { |
1908 | 1920 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
1909 | 1921 | return color(1,1,1) * noise.turb(scale * p);
|
1910 | 1922 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
|
1941 | 1953 | noise_texture() {}
|
1942 | 1954 | noise_texture(double sc) : scale(sc) {}
|
1943 | 1955 |
|
1944 |
| - virtual color value(double u, double v, const point3& p) const { |
| 1956 | + virtual color value(double u, double v, const point3& p) const override { |
1945 | 1957 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
1946 | 1958 | return color(1,1,1) * 0.5 * (1 + sin(scale*p.z() + 10*noise.turb(p)));
|
1947 | 1959 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
|
2025 | 2037 | delete data;
|
2026 | 2038 | }
|
2027 | 2039 |
|
2028 |
| - virtual color value(double u, double v, const vec3& p) const { |
| 2040 | + virtual color value(double u, double v, const vec3& p) const override { |
2029 | 2041 | // If we have no texture data, then return solid cyan as a debugging aid.
|
2030 | 2042 | if (data == nullptr)
|
2031 | 2043 | return color(0,1,1);
|
|
2177 | 2189 |
|
2178 | 2190 | virtual bool scatter(
|
2179 | 2191 | const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
|
2180 |
| - ) const { |
| 2192 | + ) const override { |
2181 | 2193 | return false;
|
2182 | 2194 | }
|
2183 | 2195 |
|
2184 |
| - virtual color emitted(double u, double v, const point3& p) const { |
| 2196 | + virtual color emitted(double u, double v, const point3& p) const override { |
2185 | 2197 | return emit->value(u, v, p);
|
2186 | 2198 | }
|
2187 | 2199 |
|
|
2384 | 2396 | shared_ptr<material> mat)
|
2385 | 2397 | : x0(_x0), x1(_x1), y0(_y0), y1(_y1), k(_k), mp(mat) {};
|
2386 | 2398 |
|
2387 |
| - virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const; |
| 2399 | + virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const override; |
2388 | 2400 |
|
2389 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const { |
| 2401 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override { |
2390 | 2402 | // The bounding box must have non-zero width in each dimension, so pad the Z
|
2391 | 2403 | // dimension a small amount.
|
2392 | 2404 | output_box = aabb(point3(x0,y0, k-0.0001), point3(x1, y1, k+0.0001));
|
|
2526 | 2538 | shared_ptr<material> mat)
|
2527 | 2539 | : x0(_x0), x1(_x1), z0(_z0), z1(_z1), k(_k), mp(mat) {};
|
2528 | 2540 |
|
2529 |
| - virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const; |
| 2541 | + virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const override; |
2530 | 2542 |
|
2531 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const { |
| 2543 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override { |
2532 | 2544 | // The bounding box must have non-zero width in each dimension, so pad the Y
|
2533 | 2545 | // dimension a small amount.
|
2534 | 2546 | output_box = aabb(point3(x0,k-0.0001,z0), point3(x1, k+0.0001, z1));
|
|
2548 | 2560 | shared_ptr<material> mat)
|
2549 | 2561 | : y0(_y0), y1(_y1), z0(_z0), z1(_z1), k(_k), mp(mat) {};
|
2550 | 2562 |
|
2551 |
| - virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const; |
| 2563 | + virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const override; |
2552 | 2564 |
|
2553 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const { |
| 2565 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override { |
2554 | 2566 | // The bounding box must have non-zero width in each dimension, so pad the X
|
2555 | 2567 | // dimension a small amount.
|
2556 | 2568 | output_box = aabb(point3(k-0.0001, y0, z0), point3(k+0.0001, y1, z1));
|
|
2705 | 2717 | box() {}
|
2706 | 2718 | box(const point3& p0, const point3& p1, shared_ptr<material> ptr);
|
2707 | 2719 |
|
2708 |
| - virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const; |
| 2720 | + virtual bool hit(const ray& r, double t0, double t1, hit_record& rec) const override; |
2709 | 2721 |
|
2710 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const { |
| 2722 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override { |
2711 | 2723 | output_box = aabb(box_min, box_max);
|
2712 | 2724 | return true;
|
2713 | 2725 | }
|
|
2786 | 2798 | translate(shared_ptr<hittable> p, const vec3& displacement)
|
2787 | 2799 | : ptr(p), offset(displacement) {}
|
2788 | 2800 |
|
2789 |
| - virtual bool hit(const ray& r, double t_min, double t_max, hit_record& rec) const; |
2790 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const; |
| 2801 | + virtual bool hit( |
| 2802 | + const ray& r, double t_min, double t_max, hit_record& rec) const override; |
| 2803 | + |
| 2804 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override; |
2791 | 2805 |
|
2792 | 2806 | public:
|
2793 | 2807 | shared_ptr<hittable> ptr;
|
|
2871 | 2885 | public:
|
2872 | 2886 | rotate_y(shared_ptr<hittable> p, double angle);
|
2873 | 2887 |
|
2874 |
| - virtual bool hit(const ray& r, double t_min, double t_max, hit_record& rec) const; |
2875 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const { |
| 2888 | + virtual bool hit( |
| 2889 | + const ray& r, double t_min, double t_max, hit_record& rec) const override; |
| 2890 | + |
| 2891 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override { |
2876 | 2892 | output_box = bbox;
|
2877 | 2893 | return hasbox;
|
2878 | 2894 | }
|
|
3048 | 3064 | phase_function(make_shared<isotropic>(c))
|
3049 | 3065 | {}
|
3050 | 3066 |
|
3051 |
| - virtual bool hit(const ray& r, double t_min, double t_max, hit_record& rec) const; |
| 3067 | + virtual bool hit( |
| 3068 | + const ray& r, double t_min, double t_max, hit_record& rec) const override; |
3052 | 3069 |
|
3053 |
| - virtual bool bounding_box(double t0, double t1, aabb& output_box) const { |
| 3070 | + virtual bool bounding_box(double t0, double t1, aabb& output_box) const override { |
3054 | 3071 | return boundary->bounding_box(t0, t1, output_box);
|
3055 | 3072 | }
|
3056 | 3073 |
|
|
3076 | 3093 |
|
3077 | 3094 | virtual bool scatter(
|
3078 | 3095 | const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered
|
3079 |
| - ) const { |
| 3096 | + ) const override { |
3080 | 3097 | scattered = ray(rec.p, random_in_unit_sphere(), r_in.time());
|
3081 | 3098 | attenuation = albedo->value(rec.u, rec.v, rec.p);
|
3082 | 3099 | return true;
|
|
0 commit comments