 		auto dirToLight = normalize(sampleres.dir);
 		auto distToLight = length(posLight - rec.p);
 
-		// Ray aim to the area light.
-		// So, if ray doesn't hit anything in intersectCloserBVH, ray hit the area light.
-		auto hitobj = lightobj;
-
 		aten::Intersection isectTmp;
 
 		auto shadowRayOrg = rec.p + AT_MATH_EPSILON * orienting_normal;
 		auto tmp = rec.p + dirToLight - shadowRayOrg;
 		auto shadowRayDir = normalize(tmp);
 
-#ifdef SEPARATE_SHADOWRAY_HITTEST
 		shadowRays[idx].isActive = true;
 		shadowRays[idx].r = aten::ray(shadowRayOrg, shadowRayDir);
 		shadowRays[idx].targetLightId = lightidx;
 		shadowRays[idx].distToLight = distToLight;
-#else
-		aten::ray shadowRay(shadowRayOrg, shadowRayDir);
-
-		bool isHit = intersectCloser(&ctxt, shadowRay, &isectTmp, distToLight - AT_MATH_EPSILON);
-
-		if (isHit) {
-			hitobj = (void*)&ctxt.shapes[isectTmp.objid];
-		}
-
-		isHit = AT_NAME::scene::hitLight(
-			isHit,
-			light.attrib,
-			lightobj,
-			distToLight,
-			distHitObjToRayOrg,
-			isectTmp.t,
-			hitobj);
-
-		if (isHit)
-#endif
+
 		{
 			auto cosShadow = dot(orienting_normal, dirToLight);
 

			m_tileDomain,
			m_paths.ptr(),
			m_rays.ptr(),
			width, height,
			sample, maxSamples,
			m_frame,
			m_cam.ptr(),

			m_frame,
			outputSurf,
			m_aovCudaRsc.ptr(), posRange,
			m_paths.ptr(),
			m_hitidx.ptr(), hitcount.ptr(),
			m_isects.ptr(),
