 		ctxt.mtrls = mtrls;
 		ctxt.lightnum = lightnum;
 		ctxt.lights = lights;
-		ctxt.nodes = nodes;
 		ctxt.prims = prims;
 		ctxt.vtxPos = vtxPos;
 		ctxt.vtxNml = vtxNml;

			auto tmp = rec.p + dirToLight - shadowRayOrg;
			auto shadowRayDir = normalize(tmp);

#ifdef SEPARATE_SHADOWRAY_HITTEST
			shShadowRays[threadIdx.x].isActive = true;
			shShadowRays[threadIdx.x].raydir[i] = shadowRayDir;
			shShadowRays[threadIdx.x].targetLightId[i] = lightidx;
			shShadowRays[threadIdx.x].distToLight[i] = distToLight;
			shShadowRays[threadIdx.x].lightcontrib[i] = aten::vec3(0);
#else
			auto lightobj = sampleres.obj;

			real distHitObjToRayOrg = AT_MATH_INF;

			// 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;

			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);


						// inifinite light ̏ꍇ́AɂȂApdfLightɊ܂܂鋗ƑłH.
						// ił̂ŁApdfLightɂ͋͊܂łȂj.
						auto misW = pdfLight / (pdfb + pdfLight);

						shShadowRays[threadIdx.x].lightcontrib[i] =
							(misW * bsdf * emit * cosShadow / pdfLight) / lightSelectPdf / (float)idaten::SVGFPathTracing::ShadowRayNum;
					}
				}
