#pragma once #include "RenderingRun.h" /** @brief Base abstract class __declspec( dllexport ) that defines a rendering process of a shadow map. A shadow map stores depth values from the lightsource. */ class __declspec( dllexport ) DepthShadowMapRenderingRun : virtual public RenderingRun { public: /** @brief Constructor. @param resolutionX width of the depth map texture @param resolutionY height of the depth map texture */ DepthShadowMapRenderingRun( unsigned int resolutionX, unsigned int resolutionY) :RenderingRun(1, 1) { this->resolutionX = resolutionX; this->resolutionY = resolutionY; } virtual ~DepthShadowMapRenderingRun(){} protected: /** @brief width of the depth map texture */ unsigned int resolutionX; /** @brief height of the depth map texture */ unsigned int resolutionY; /** @brief Creates the depth map texture (2D or CUBE according to light type). */ virtual inline void createDepthMap() = 0; /** @brief Updates one face of the depth cubemap (used only in case of point lights). @param facenum the number of the face to be updated */ virtual inline void updateDepthCubeFace(int facenum) = 0; /** @brief Updates the depth map (in case of directional and spot lights). */ virtual inline void updateDepthMap() = 0; //inherited virtual void updateFrame(unsigned long frameNum) = 0; };