 
 	path.ray = camsample.r;
 	path.throughput = aten::make_float3(1);
-	path.contrib = aten::make_float3(0);
 	path.mtrl = nullptr;
 	path.lightcontrib = aten::make_float3(0);
 	path.pdfb = 0.0f;
 	path.isHit = false;
 	path.isTerminate = false;
+
+	// Accumulate value, so do not reset.
+	//path.contrib = aten::make_float3(0);
 }
 
 __global__ void hitTest(

__global__ void gather(
	cudaSurfaceObject_t outSurface,
	Path* paths,
	int width, int height)
{
	const auto ix = blockIdx.x * blockDim.x + threadIdx.x;
	const auto iy = blockIdx.y * blockDim.y + threadIdx.y;

				depth++;
			}
#endif
		}

		gather << <grid, block >> > (
		//gather << <1, 1 >> > (
			outputSurf,
			paths.ptr(),
			width, height,
			maxSamples);

		vtxparams.unbind();
		for (int i = 0; i < nodeparam.size(); i++) {
