Skip to content

Commit 97ed7ef

Browse files
authored
Merge pull request #453 from RayTracing/solid-color
Rename constant_texture to solid_color
2 parents 09e423e + acbc4f3 commit 97ed7ef

File tree

6 files changed

+92
-97
lines changed

6 files changed

+92
-97
lines changed

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ Change Log -- Ray Tracing in One Weekend
55
# v3.1.0 (in progress)
66

77
### Common
8-
- Change: Minor change to use new `point3` and `color` type aliases for `vec3` (#422)
9-
- New: subchapters throughout all three books (#267)
108
- Fix: Scattered improvements to the text.
9+
- New: subchapters throughout all three books (#267)
10+
- Change: Minor change to use new `point3` and `color` type aliases for `vec3` (#422)
11+
- Change: Renamed `constant_texture` to `solid_color`, add RGB constructor (#452)
1112

1213
### _In One Weekend_
1314
- Fix: Update image and size for first PPM image

books/RayTracingTheNextWeek.html

Lines changed: 36 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -938,23 +938,26 @@
938938
virtual color value(double u, double v, const point3& p) const = 0;
939939
};
940940

941-
class constant_texture : public texture {
941+
class solid_color : public texture {
942942
public:
943-
constant_texture() {}
944-
constant_texture(color c) : solid_color(c) {}
943+
solid_color() {}
944+
solid_color(color c) : color_value(c) {}
945945

946-
virtual color value(double u, double v, const point3& p) const {
947-
return solid_color;
946+
solid_color(double red, double green, double blue)
947+
: solid_color(color(red,green,blue)) {}
948+
949+
virtual color value(double u, double v, const vec3& p) const {
950+
return color_value;
948951
}
949952

950-
public:
951-
color solid_color;
953+
private:
954+
color color_value;
952955
};
953956
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
954957
[Listing [texture]: <kbd>[texture.h]</kbd> A texture class]
955958

956959
<div class='together'>
957-
Now we can make textured materials by replacing the `color solid_color` with a texture pointer:
960+
Now we can make textured materials by replacing the `const color& a` with a texture pointer:
958961

959962
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
960963
class lambertian : public material {
@@ -991,10 +994,10 @@
991994
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
992995
[Listing [lam-solid]: <kbd>[main.cc]</kbd> Lambertian material with solid color]
993996

994-
now you should replace the `color(...)` with `make_shared<constant_texture>(color(...))`
997+
now you should replace the `color(...)` with `make_shared<solid_color>(...)`
995998

996999
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
997-
...make_shared<lambertian>(make_shared<constant_texture>(color(0.5, 0.5, 0.5)))
1000+
...make_shared<lambertian>(make_shared<solid_color>(0.5, 0.5, 0.5))
9981001
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9991002
[Listing [lam-textured]: <kbd>[main.cc]</kbd> Lambertian material with texture]
10001003
</div>
@@ -1037,8 +1040,7 @@
10371040

10381041
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
10391042
auto checker = make_shared<checker_texture>(
1040-
make_shared<constant_texture>(color(0.2, 0.3, 0.1)),
1041-
make_shared<constant_texture>(color(0.9, 0.9, 0.9))
1043+
make_shared<solid_color>(0.2, 0.3, 0.1), make_shared<solid_color>(0.9, 0.9, 0.9)
10421044
);
10431045

10441046
world.add(make_shared<sphere>(point3(0,-1000,0), 1000, make_shared<lambertian>(checker)));
@@ -1066,8 +1068,7 @@
10661068
hittable_list objects;
10671069

10681070
auto checker = make_shared<checker_texture>(
1069-
make_shared<constant_texture>(color(0.2, 0.3, 0.1)),
1070-
make_shared<constant_texture>(color(0.9, 0.9, 0.9))
1071+
make_shared<solid_color>(0.2, 0.3, 0.1), make_shared<solid_color>(0.9, 0.9, 0.9)
10711072
);
10721073

10731074
objects.add(make_shared<sphere>(point3(0,-10, 0), 10, make_shared<lambertian>(checker)));
@@ -2037,7 +2038,7 @@
20372038
objects.add(make_shared<sphere>(point3(0,-1000,0), 1000, make_shared<lambertian>(pertext)));
20382039
objects.add(make_shared<sphere>(point3(0,2,0), 2, make_shared<lambertian>(pertext)));
20392040

2040-
auto difflight = make_shared<diffuse_light>(make_shared<constant_texture>(color(4,4,4)));
2041+
auto difflight = make_shared<diffuse_light>(make_shared<solid_color>(4,4,4));
20412042
objects.add(make_shared<sphere>(point3(0,7,0), 2, difflight));
20422043
objects.add(make_shared<xy_rect>(3, 5, 1, 3, -2, difflight));
20432044

@@ -2175,10 +2176,10 @@
21752176
hittable_list cornell_box() {
21762177
hittable_list objects;
21772178

2178-
auto red = make_shared<lambertian>(make_shared<constant_texture>(color(.65, .05, .05)));
2179-
auto white = make_shared<lambertian>(make_shared<constant_texture>(color(.73, .73, .73)));
2180-
auto green = make_shared<lambertian>(make_shared<constant_texture>(color(.12, .45, .15)));
2181-
auto light = make_shared<diffuse_light>(make_shared<constant_texture>(color(15, 15, 15)));
2179+
auto red = make_shared<lambertian>(make_shared<solid_color>(.65, .05, .05));
2180+
auto white = make_shared<lambertian>(make_shared<solid_color>(.73, .73, .73));
2181+
auto green = make_shared<lambertian>(make_shared<solid_color>(.12, .45, .15));
2182+
auto light = make_shared<diffuse_light>(make_shared<solid_color>(15, 15, 15));
21822183

21832184
objects.add(make_shared<yz_rect>(0, 555, 0, 555, 555, green));
21842185
objects.add(make_shared<yz_rect>(0, 555, 0, 555, 0, red));
@@ -2263,10 +2264,10 @@
22632264
hittable_list cornell_box() {
22642265
hittable_list objects;
22652266

2266-
auto red = make_shared<lambertian>(make_shared<constant_texture>(color(.65, .05, .05)));
2267-
auto white = make_shared<lambertian>(make_shared<constant_texture>(color(.73, .73, .73)));
2268-
auto green = make_shared<lambertian>(make_shared<constant_texture>(color(.12, .45, .15)));
2269-
auto light = make_shared<diffuse_light>(make_shared<constant_texture>(color(15, 15, 15)));
2267+
auto red = make_shared<lambertian>(make_shared<solid_color>(.65, .05, .05));
2268+
auto white = make_shared<lambertian>(make_shared<solid_color>(.73, .73, .73));
2269+
auto green = make_shared<lambertian>(make_shared<solid_color>(.12, .45, .15));
2270+
auto light = make_shared<diffuse_light>(make_shared<solid_color>(15, 15, 15));
22702271

22712272

22722273
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
@@ -2761,10 +2762,10 @@
27612762
hittable_list cornell_smoke() {
27622763
hittable_list objects;
27632764

2764-
auto red = make_shared<lambertian>(make_shared<constant_texture>(color(.65, .05, .05)));
2765-
auto white = make_shared<lambertian>(make_shared<constant_texture>(color(.73, .73, .73)));
2766-
auto green = make_shared<lambertian>(make_shared<constant_texture>(color(.12, .45, .15)));
2767-
auto light = make_shared<diffuse_light>(make_shared<constant_texture>(color(7, 7, 7)));
2765+
auto red = make_shared<lambertian>(make_shared<solid_color>(.65, .05, .05));
2766+
auto white = make_shared<lambertian>(make_shared<solid_color>(.73, .73, .73));
2767+
auto green = make_shared<lambertian>(make_shared<solid_color>(.12, .45, .15));
2768+
auto light = make_shared<diffuse_light>(make_shared<solid_color>(7, 7, 7));
27682769

27692770
objects.add(make_shared<flip_face>(make_shared<yz_rect>(0, 555, 0, 555, 555, green)));
27702771
objects.add(make_shared<yz_rect>(0, 555, 0, 555, 0, red));
@@ -2781,10 +2782,8 @@
27812782
box2 = make_shared<rotate_y>(box2, -18);
27822783
box2 = make_shared<translate>(box2, vec3(130,0,65));
27832784

2784-
objects.add(
2785-
make_shared<constant_medium>(box1, 0.01, make_shared<constant_texture>(color(0,0,0))));
2786-
objects.add(
2787-
make_shared<constant_medium>(box2, 0.01, make_shared<constant_texture>(color(1,1,1))));
2785+
objects.add(make_shared<constant_medium>(box1, 0.01, make_shared<solid_color>(0,0,0)));
2786+
objects.add(make_shared<constant_medium>(box2, 0.01, make_shared<solid_color>(1,1,1)));
27882787

27892788
return objects;
27902789
}
@@ -2816,8 +2815,7 @@
28162815
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
28172816
hittable_list final_scene() {
28182817
hittable_list boxes1;
2819-
auto ground =
2820-
make_shared<lambertian>(make_shared<constant_texture>(color(0.48, 0.83, 0.53)));
2818+
auto ground = make_shared<lambertian>(make_shared<solid_color>(0.48, 0.83, 0.53));
28212819

28222820
const int boxes_per_side = 20;
28232821
for (int i = 0; i < boxes_per_side; i++) {
@@ -2838,13 +2836,13 @@
28382836

28392837
objects.add(make_shared<bvh_node>(boxes1, 0, 1));
28402838

2841-
auto light = make_shared<diffuse_light>(make_shared<constant_texture>(color(7, 7, 7)));
2839+
auto light = make_shared<diffuse_light>(make_shared<solid_color>(7, 7, 7));
28422840
objects.add(make_shared<xz_rect>(123, 423, 147, 412, 554, light));
28432841

28442842
auto center1 = point3(400, 400, 200);
28452843
auto center2 = center1 + vec3(30,0,0);
28462844
auto moving_sphere_material =
2847-
make_shared<lambertian>(make_shared<constant_texture>(color(0.7, 0.3, 0.1)));
2845+
make_shared<lambertian>(make_shared<solid_color>(0.7, 0.3, 0.1));
28482846
objects.add(make_shared<moving_sphere>(center1, center2, 0, 1, 50, moving_sphere_material));
28492847

28502848
objects.add(make_shared<sphere>(point3(260, 150, 45), 50, make_shared<dielectric>(1.5)));
@@ -2855,11 +2853,11 @@
28552853
auto boundary = make_shared<sphere>(point3(360,150,145), 70, make_shared<dielectric>(1.5));
28562854
objects.add(boundary);
28572855
objects.add(make_shared<constant_medium>(
2858-
boundary, 0.2, make_shared<constant_texture>(color(0.2, 0.4, 0.9))
2856+
boundary, 0.2, make_shared<solid_color>(0.2, 0.4, 0.9)
28592857
));
28602858
boundary = make_shared<sphere>(point3(0, 0, 0), 5000, make_shared<dielectric>(1.5));
28612859
objects.add(make_shared<constant_medium>(
2862-
boundary, .0001, make_shared<constant_texture>(color(1,1,1))));
2860+
boundary, .0001, make_shared<solid_color>(1,1,1)));
28632861

28642862
int nx, ny, nn;
28652863
auto tex_data = stbi_load("earthmap.jpg", &nx, &ny, &nn, 0);
@@ -2869,7 +2867,7 @@
28692867
objects.add(make_shared<sphere>(point3(220,280,300), 80, make_shared<lambertian>(pertext)));
28702868

28712869
hittable_list boxes2;
2872-
auto white = make_shared<lambertian>(make_shared<constant_texture>(color(.73, .73, .73)));
2870+
auto white = make_shared<lambertian>(make_shared<solid_color>(.73, .73, .73));
28732871
int ns = 1000;
28742872
for (int j = 0; j < ns; j++) {
28752873
boxes2.add(make_shared<sphere>(point3::random(0,165), 10, white));

books/RayTracingTheRestOfYourLife.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -763,10 +763,10 @@
763763
hittable_list cornell_box(camera& cam, double aspect) {
764764
hittable_list world;
765765

766-
auto red = make_shared<lambertian>(make_shared<constant_texture>(color(.65, .05, .05)));
767-
auto white = make_shared<lambertian>(make_shared<constant_texture>(color(.73, .73, .73)));
768-
auto green = make_shared<lambertian>(make_shared<constant_texture>(color(.12, .45, .15)));
769-
auto light = make_shared<diffuse_light>(make_shared<constant_texture>(color(15, 15, 15)));
766+
auto red = make_shared<lambertian>(make_shared<solid_color>(.65, .05, .05));
767+
auto white = make_shared<lambertian>(make_shared<solid_color>(.73, .73, .73));
768+
auto green = make_shared<lambertian>(make_shared<solid_color>(.12, .45, .15));
769+
auto light = make_shared<diffuse_light>(make_shared<solid_color>(15, 15, 15));
770770

771771
world.add(make_shared<flip_face>(make_shared<yz_rect>(0, 555, 0, 555, 555, green)));
772772
world.add(make_shared<yz_rect>(0, 555, 0, 555, 0, red));
@@ -2162,10 +2162,10 @@
21622162
hittable_list cornell_box(camera& cam, double aspect) {
21632163
hittable_list world;
21642164

2165-
auto red = make_shared<lambertian>(make_shared<constant_texture>(color(.65, .05, .05)));
2166-
auto white = make_shared<lambertian>(make_shared<constant_texture>(color(.73, .73, .73)));
2167-
auto green = make_shared<lambertian>(make_shared<constant_texture>(color(.12, .45, .15)));
2168-
auto light = make_shared<diffuse_light>(make_shared<constant_texture>(color(15, 15, 15)));
2165+
auto red = make_shared<lambertian>(make_shared<solid_color>(.65, .05, .05));
2166+
auto white = make_shared<lambertian>(make_shared<solid_color>(.73, .73, .73));
2167+
auto green = make_shared<lambertian>(make_shared<solid_color>(.12, .45, .15));
2168+
auto light = make_shared<diffuse_light>(make_shared<solid_color>(15, 15, 15));
21692169

21702170
world.add(make_shared<flip_face>(make_shared<yz_rect>(0, 555, 0, 555, 555, green)));
21712171
world.add(make_shared<yz_rect>(0, 555, 0, 555, 0, red));

0 commit comments

Comments
 (0)