Michaël Lemaire
9a096ec329
Conflicts: src/basics/Disk.cpp src/basics/Disk.h src/basics/SpaceSegment.cpp src/definition/DefinitionNode.cpp src/definition/DefinitionNode.h src/definition/Scenery.cpp src/definition/Scenery.h src/definition/SurfaceMaterial.cpp src/definition/SurfaceMaterial.h src/definition/TextureLayerDefinition.cpp src/definition/definition_global.h src/interface/commandline/tests.cpp src/render/opengl/OpenGLRenderer.cpp src/render/software/SoftwareCanvasRenderer.cpp src/render/software/SoftwareCanvasRenderer.h src/render/software/SoftwareRenderer.h src/render/software/TerrainRasterizer.cpp src/render/software/TerrainRasterizer.h src/render/software/TerrainRenderer.h src/render/software/software_global.h
56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
#ifndef VEGETATIONRENDERER_H
|
|
#define VEGETATIONRENDERER_H
|
|
|
|
#include "software_global.h"
|
|
|
|
#include "LightFilter.h"
|
|
|
|
namespace paysages {
|
|
namespace software {
|
|
|
|
class SOFTWARESHARED_EXPORT VegetationRenderer : public LightFilter {
|
|
public:
|
|
VegetationRenderer(SoftwareRenderer *parent);
|
|
|
|
/**
|
|
* Totally enable or disable the vegetation layers rendering.
|
|
*/
|
|
void setEnabled(bool enabled);
|
|
|
|
inline SoftwareRenderer *getParent() const {
|
|
return parent;
|
|
}
|
|
|
|
/**
|
|
* Perform ray casting on a single instance.
|
|
*
|
|
* If *only_hit* is true, only care about hitting or not, do not compute the color.
|
|
*
|
|
* If *displaced* is true, *instance* is considered on already displaced terrain, else, terrain displacement is
|
|
*applied.
|
|
*/
|
|
RayCastingResult renderInstance(const SpaceSegment &segment, const VegetationInstance &instance,
|
|
bool only_hit = false, bool displaced = false);
|
|
|
|
/**
|
|
* Perform ray casting on a given segment.
|
|
*/
|
|
RayCastingResult getResult(const SpaceSegment &segment, bool only_hit = false);
|
|
|
|
/**
|
|
* Perform ray casting on a squared region.
|
|
*/
|
|
RayCastingResult getBoundResult(const SpaceSegment &segment, double x, double z, bool only_hit = false,
|
|
double xsize = 1.0, double zsize = 1.0);
|
|
|
|
virtual bool applyLightFilter(LightComponent &light, const Vector3 &at) override;
|
|
|
|
private:
|
|
SoftwareRenderer *parent;
|
|
bool enabled;
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif // VEGETATIONRENDERER_H
|