Commit df0c511b authored by TheNumbat's avatar TheNumbat
Browse files

bvh root idx bbox

parent e50ef54b
...@@ -85,7 +85,7 @@ size_t BVH<Primitive>::new_node(BBox box, size_t start, size_t size, size_t l, s ...@@ -85,7 +85,7 @@ size_t BVH<Primitive>::new_node(BBox box, size_t start, size_t size, size_t l, s
return nodes.size() - 1; return nodes.size() - 1;
} }
template <typename Primitive> BBox BVH<Primitive>::bbox() const { return nodes[0].bbox; } template <typename Primitive> BBox BVH<Primitive>::bbox() const { return nodes[root_idx].bbox; }
template <typename Primitive> std::vector<Primitive> BVH<Primitive>::destructure() { template <typename Primitive> std::vector<Primitive> BVH<Primitive>::destructure() {
nodes.clear(); nodes.clear();
......
...@@ -50,20 +50,18 @@ Spectrum Pathtracer::trace_ray(const Ray &ray) { ...@@ -50,20 +50,18 @@ Spectrum Pathtracer::trace_ray(const Ray &ray) {
Mat4 world_to_object = object_to_world.T(); Mat4 world_to_object = object_to_world.T();
Vec3 out_dir = world_to_object.rotate(ray.point - hit.position).unit(); Vec3 out_dir = world_to_object.rotate(ray.point - hit.position).unit();
// Debugging: if the normal colors flag is set, return the normal color
if(debug_data.normal_colors)
return Spectrum::direction(hit.normal);
// Now we can compute the rendering equation at this point. // Now we can compute the rendering equation at this point.
// We split it into two stages: sampling lighting (i.e. directly connecting // We split it into two stages: sampling lighting (i.e. directly connecting
// the current path to each light in the scene), then sampling the BSDF // the current path to each light in the scene), then sampling the BSDF
// to create a new path segment. // to create a new path segment.
// TODO (PathTracer): Task 5 // TODO (PathTracer): Task 5
// The starter code sets radiance_out to (0.5,0.5,0.5) so that you can test your geometry // Instead of initializing this value to a constant color, use the direct,
// queries before you implement path tracing. You should change this to (0,0,0) and accumulate // indirect lighting components calculated in the code below. The starter
// the direct and indirect lighting computed below. // code sets radiance_out to (0.5,0.5,0.5) so that you can test your geometry
Spectrum radiance_out = Spectrum(0.5f); // queries before you implement path tracing.
Spectrum radiance_out =
debug_data.normal_colors ? Spectrum::direction(hit.normal) : Spectrum(0.5f);
{ {
auto sample_light = [&](const auto &light) { auto sample_light = [&](const auto &light) {
// If the light is discrete (e.g. a point light), then we only need // If the light is discrete (e.g. a point light), then we only need
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment