paysages3d/src/render/software/clouds/BaseCloudsModel.h

37 lines
1 KiB
C
Raw Normal View History

#pragma once
2013-12-04 21:52:18 +00:00
#include "../software_global.h"
#include "Color.h"
namespace paysages {
namespace software {
2016-01-03 18:21:23 +00:00
/**
* Abstract class for all cloud models (cirrus, cumulus...).
2013-12-04 21:52:18 +00:00
*/
class SOFTWARESHARED_EXPORT BaseCloudsModel {
public:
2013-12-04 21:52:18 +00:00
BaseCloudsModel(CloudLayerDefinition *layer);
virtual ~BaseCloudsModel();
virtual void update();
virtual void getAltitudeRange(double *min_altitude, double *max_altitude) const;
virtual void getDetailRange(double *min_step, double *max_step) const;
virtual double getProbability(const Vector3 &location, double radius) const;
2016-02-01 19:38:29 +00:00
virtual double getDensity(const Vector3 &location, double precision) const;
2013-12-04 21:52:18 +00:00
virtual Color filterLight(const Color &light, double length, double density) const;
virtual Color applyLightExit(const Color &light, const Vector3 &light_direction,
const Vector3 &direction_to_eye) const;
2013-12-04 21:52:18 +00:00
inline CloudLayerDefinition *getLayer() const {
return layer;
}
2013-12-04 21:52:18 +00:00
protected:
2013-12-04 21:52:18 +00:00
CloudLayerDefinition *layer;
};
}
}