#pragma once
#include "../asset/material.h"
#include "../asset/mesh.h"
#include "../asset/texture.h"
#include "../render_context.h"
namespace engineapi {
	enum RenderType
	{
		RENDER_SHADOW_GENERATION,
		RENDER_FORWARD_RENDERING,
		RENDER_RAY_TRACING,
		RENDER_AFTER_EFFECT_RENDERING,
		RENDER_UI_RENDERING,
		RENDER_COUNT
	};
	class Camera;
	class RenderNode
	{
	protected:
		RenderType mType;
		RenderContext* mContext;
	public:
		RenderNode(RenderType type);
		~RenderNode() {};

		virtual void Render(Camera& camera) = 0;
	public:
		RenderType GetType() {
			return mType;
		}
	};
};