|
2251 | 2251 | class lambertian : public material {
|
2252 | 2252 | public:
|
2253 | 2253 | ...
|
2254 |
| - |
| 2254 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight |
2255 | 2255 | bool scatter(
|
2256 |
| - const ray& r_in, const hit_record& rec, color& alb, ray& scattered, double& pdf |
| 2256 | + const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered, double& pdf |
2257 | 2257 | ) const override {
|
2258 |
| - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight |
2259 | 2258 | onb uvw;
|
2260 | 2259 | uvw.build_from_w(rec.normal);
|
2261 | 2260 | auto scatter_direction = uvw.local(random_cosine_direction());
|
2262 |
| - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
| 2261 | + |
2263 | 2262 | scattered = ray(rec.p, unit_vector(scatter_direction), r_in.time());
|
2264 |
| - alb = albedo->value(rec.u, rec.v, rec.p); |
| 2263 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
| 2264 | + attenuation = albedo->value(rec.u, rec.v, rec.p); |
2265 | 2265 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
2266 | 2266 | pdf = dot(uvw.w(), scattered.direction()) / pi;
|
2267 | 2267 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
|
2297 | 2297 |
|
2298 | 2298 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
2299 | 2299 | bool scatter(
|
2300 |
| - const ray& r_in, const hit_record& rec, color& alb, ray& scattered, double& pdf |
2301 |
| - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
| 2300 | + const ray& r_in, const hit_record& rec, color& attenuation, ray& scattered, double& pdf |
2302 | 2301 | ) const override {
|
2303 |
| - scattered = ray(rec.p, random_unit_vector(), r_in.time()); |
2304 | 2302 | attenuation = albedo->value(rec.u, rec.v, rec.p);
|
| 2303 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
| 2304 | + scattered = ray(rec.p, random_unit_vector(), r_in.time()); |
2305 | 2305 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ highlight
|
2306 | 2306 | pdf = 1 / (4 * pi);
|
2307 | 2307 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
|
3176 | 3176 | srec.attenuation = albedo->value(rec.u, rec.v, rec.p);
|
3177 | 3177 | srec.pdf_ptr = make_shared<sphere_pdf>();
|
3178 | 3178 | srec.skip_pdf = false;
|
| 3179 | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
3179 | 3180 | return true;
|
3180 | 3181 | }
|
3181 |
| - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++ |
3182 |
| - |
3183 | 3182 |
|
3184 | 3183 | double scattering_pdf(const ray& r_in, const hit_record& rec, const ray& scattered)
|
3185 | 3184 | const override {
|
|
3268 | 3267 | srec.attenuation = albedo;
|
3269 | 3268 | srec.pdf_ptr = nullptr;
|
3270 | 3269 | srec.skip_pdf = true;
|
| 3270 | + |
3271 | 3271 | vec3 reflected = reflect(unit_vector(r_in.direction()), rec.normal);
|
3272 |
| - srec.skip_pdf_ray = |
3273 |
| - ray(rec.p, reflected + fuzz*random_in_unit_sphere(), r_in.time()); |
| 3272 | + srec.skip_pdf_ray = ray(rec.p, reflected + fuzz*random_in_unit_sphere(), r_in.time()); |
| 3273 | + |
3274 | 3274 | return true;
|
3275 | 3275 | }
|
3276 | 3276 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C++
|
|
0 commit comments