 #include "aten4idaten.h"
 
 struct ray : public aten::ray {
-	AT_DEVICE_API ray() : aten::ray()
-	{
-		isActive = true;
-	}
-	AT_DEVICE_API ray(const aten::vec3& o, const aten::vec3& d) : aten::ray(o, d)
-	{
-		isActive = true;
-	}
+	aten::vec3 lightPos;
+	aten::vec3 lightcontrib;
+	int targetLightId;
 
 	struct {
 		uint32_t isActive : 1;

	aten::vec3 contrib;
	aten::hitrecord rec;
	aten::sampler sampler;
	aten::MaterialParameter* mtrl;

	aten::vec3 lightPos;
	aten::vec3 lightcontrib;
	int targetLightId;

	real pdfb;

	bool isHit;
	bool isTerminate;
};

__global__ void genPath(
	Path* paths,

		aten::vec4* image,
		int width, int height)
	{
		auto x = sizeof(Path);

		dim3 block(16, 16);
		dim3 grid(
			(width + block.x - 1) / block.x,
