#pragma once #include "RenderingRun.h" /** @brief Base abstract class __declspec( dllexport ) that defines a rendering process that creates phase texture. The phase texture can be used as a look-up table during rendering of partcipating media. If the texture is created once it can be saved and reused, so this run is usually not needed, only runned once. This texture is addressed as the following: the u coordinates represents the symmetry of scattering (negative if backward scattering, positive if forward scattering and zero if equally scaterring in the forward and in the backward directions) ; the v coordinates represent the cosine of the angle between the incoming and outgoing directions. */ class __declspec( dllexport ) PhaseTextureRenderingRun : virtual public RenderingRun { public: /** @brief Constructor. @param resolutionX width of the texture @param resolutionY height of the texture */ PhaseTextureRenderingRun(unsigned int resolutionX, unsigned int resolutionY) :RenderingRun(1, 1) { this->resolutionX = resolutionX; this->resolutionY = resolutionY; } virtual ~PhaseTextureRenderingRun(){} protected: /** @brief width of the texture */ unsigned int resolutionX; /** @brief height of the texture */ unsigned int resolutionY; /** @brief Creates the depth map texture. */ virtual inline void createPhaseTexture() = 0; //inherited virtual void updateFrame(unsigned long frameNum) = 0; };