 	aten::Intersection isect;
 	aten::sampler sampler;
 	
-	int mtrlid;
-
 	real pdfb;
 
 	bool isHit;
 	bool isTerminate;
+	bool isSingular;
 };
 
 #define BLOCK_SIZE	(16)

	evalHitResult(&ctxt, obj, ray, &rec, &path.isect);

	aten::MaterialParameter* mtrl = &ctxt.mtrls[rec.mtrlid];
	aten::MaterialParameter* prevMtrl = (path.mtrlid >= 0 ? &ctxt.mtrls[path.mtrlid] : nullptr);

	// ʒu̖@.
	// ̂̃C̓ol.

	// Make next ray.
	rays[idx] = aten::ray(rec.p, nextDir);

	path.pdfb = pdfb;
	path.isSingular = mtrl->attrib.isSingular;
}

__global__ void hitShadowRay(
