 }
 
 struct CameraSampleResult {
-	Ray r;
-	float3 posOnLens;
-	float3 nmlOnLens;
+	aten::ray r;
+	aten::vec3 posOnLens;
+	aten::vec3 nmlOnLens;
 
 	__host__ __device__ CameraSampleResult() {}
 };
 
 struct Camera {
-	float3 origin;
+	aten::vec3 origin;
 
 	float aspect;
-	float3 center;
-
-	float3 u;
-	float3 v;
-
-	float3 dir;
-	float3 right;
-	float3 up;
+	aten::vec3 center;
+
+	aten::vec3 u;
+	aten::vec3 v;
+
+	aten::vec3 dir;
+	aten::vec3 right;
+	aten::vec3 up;
 
 	float dist;
 	int width;


struct Sphere {
	float radius;
	float3 center;
	int mtrlid;

	Sphere() {}
	Sphere(const float3& c, float r, int id)
	{
		radius = r;
		center = c;

struct hitrecord {
	float t{ AT_MATH_INF };

	aten::vec3 p;

	aten::vec3 normal;

	int mtrlid;

