 
 		aten::mat4 mtxW2C = m_mtxV2C * mtxW2V;
 
+#ifdef ENABLE_DEBUG_1PIXEL
+		int blockPerGrid = 1;
+		int threadPerBlock = 1;
+#else
 		dim3 blockPerGrid((hitcount + 64 - 1) / 64);
 		dim3 threadPerBlock(64);
+#endif
 
 		auto& curaov = getCurAovs();
 
 		if (bounce == 0) {
 			shade<true> << <blockPerGrid, threadPerBlock >> > (
-			//shade<true> << <1, 1 >> > (
 				curaov.ptr(), mtxW2C,
 				width, height,
 				m_paths.ptr(),
 				m_hitidx.ptr(), hitcount,
 				m_isects.ptr(),
 				m_rays.ptr(),
+				m_frame,
 				bounce, rrBounce,
 				m_shapeparam.ptr(), m_shapeparam.num(),
 				m_mtrlparam.ptr(),

		}
		else {
			shade<false> << <blockPerGrid, threadPerBlock >> > (
			//shade<false> << <1, 1 >> > (
				curaov.ptr(), mtxW2C,
				width, height,
				m_paths.ptr(),
				m_hitidx.ptr(), hitcount,
				m_isects.ptr(),
				m_rays.ptr(),
				bounce, rrBounce,
				m_shapeparam.ptr(), m_shapeparam.num(),
				m_mtrlparam.ptr(),

	const idaten::SVGFPathTracing::Path* __restrict__ paths,
	int width, int height)
{
	auto ix = blockIdx.x * blockDim.x + threadIdx.x;
	auto iy = blockIdx.y * blockDim.y + threadIdx.y;

	if (ix >= width && iy >= height) {
		return;
	}

#ifdef ENABLE_DEBUG_1PIXEL
	ix = DEBUG_IX;
	iy = DEBUG_IY;
#endif

	const auto idx = getIdx(ix, iy, width);

	const auto& path = paths[idx];
