#pragma once

#ifndef __PATH_RENDERER_H__
#define __PATH_RENDERER_H__

#include "AbstractRenderer.h"
#include "WhittedRenderer.h"
#include "geometry.h"
#include <vector>

namespace VRUT
{
	class PathRenderer : public WhittedRenderer 
	{
	public:
		std::vector<Vector2> sampleBuffer;
		PathRenderer(RayTracer * rayTracer);
		virtual ~PathRenderer(void) {}
		void PathRays(const RayStream & inputRayStream, RayStream & outputRayStream, Vector4 bounceColors[], const Vector4 diffuseColors[], Vector4 colors[], const int depth, const int workerIndex);
		/// cast packet of rays using path tracing
		virtual void CastAndShade(RayStream & rayStream, Vector4 colors[], unsigned int cameraIndex, const int workerIndex);
	};
}

#endif /* __PATH_RENDERER_H__ */
