diff --git a/scenes/dragon.rt b/scenes/dragon.rt index 2ba38ce..cf0bbb3 100644 --- a/scenes/dragon.rt +++ b/scenes/dragon.rt @@ -24,8 +24,17 @@ pl 0 -2 0 0 1 0 2 // floor qu -1 1.999 -1 2 0 0 0 0 2 6 -OBJ scenes/obj/Dragon_800K.obj -0.5 0 0.55 5 0 90 0 -OBJ scenes/obj/Dragon_800K.obj 0.5 0 -0.55 5 0 -90 0 +OBJ scenes/obj/Dragon_80K.obj -0.5 0 0.55 5 0 0 0 +OBJ scenes/obj/Dragon_80K.obj 0.5 0 -0.55 1 0 0 0 + +OBJ scenes/obj/Dragon_80K.obj -1.5 0 1.5 1 0 0 0 +OBJ scenes/obj/Dragon_80K.obj 1.5 0 -1.5 1 0 0 0 + +OBJ scenes/obj/Dragon_80K.obj -0.5 1 0.55 1 0 0 0 +OBJ scenes/obj/Dragon_80K.obj 0.5 1 -0.55 1 0 0 0 + +OBJ scenes/obj/Dragon_80K.obj -3.5 3 3.5 1 0 0 0 +OBJ scenes/obj/Dragon_80K.obj 3.5 3 -3.5 1 0 0 0 # OBJ obj/Model.obj diff --git a/shaders/debug.glsl b/shaders/debug.glsl index e090db4..4a05e89 100644 --- a/shaders/debug.glsl +++ b/shaders/debug.glsl @@ -233,7 +233,7 @@ hitInfo traceBVH(Ray ray, GPUBvhData bvh_data, inout Stats stats) hitInfo traverseBVHs(Ray ray, GPUBvhData bvh_data, inout Stats stats) { hitInfo hit; - + hit.t = 1e30; hit.obj_index = -1; @@ -245,16 +245,17 @@ hitInfo traverseBVHs(Ray ray, GPUBvhData bvh_data, inout Stats stats) transformedRay.origin = transformMatrix * (ray.origin - bvh_data.offset); transformedRay.inv_direction = (1. / transformedRay.direction); - hitInfo temp_hit = traceBVH(transformedRay, bvh_data, stats); + hit = traceBVH(transformedRay, bvh_data, stats); - temp_hit.t = temp_hit.t / bvh_data.scale; - - if (temp_hit.t < hit.t) - { - hit.t = temp_hit.t; - hit.obj_index = temp_hit.obj_index; - hit.normal = normalize(inverseTransformMatrix * temp_hit.normal); - } + if (hit.obj_index == -1) + return (hit); + + hit.t = hit.t / bvh_data.scale; + hit.last_t = hit.last_t / bvh_data.scale; + hit.obj_index = hit.obj_index; + hit.mat_index = hit.mat_index; + hit.position = inverseTransformMatrix * hit.position + bvh_data.offset; + hit.normal = normalize(inverseTransformMatrix * hit.normal); return (hit); } diff --git a/srcs/class/TopBVH.cpp b/srcs/class/TopBVH.cpp index e74570d..cc8421a 100644 --- a/srcs/class/TopBVH.cpp +++ b/srcs/class/TopBVH.cpp @@ -57,7 +57,9 @@ float TopBVH::evaluateSah(std::vector &bvhs_data, std::vector