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
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#ifndef TERRAINRENDERER_H
|
|
#define TERRAINRENDERER_H
|
|
|
|
#include "software_global.h"
|
|
|
|
#include "LightFilter.h"
|
|
|
|
#include "Vector3.h"
|
|
#include "Color.h"
|
|
|
|
namespace paysages {
|
|
namespace software {
|
|
|
|
class SOFTWARESHARED_EXPORT TerrainRenderer : public LightFilter {
|
|
public:
|
|
typedef struct {
|
|
Vector3 location;
|
|
Vector3 normal;
|
|
} TerrainResult;
|
|
|
|
public:
|
|
TerrainRenderer(SoftwareRenderer *parent);
|
|
virtual ~TerrainRenderer();
|
|
|
|
virtual void update();
|
|
void setQuality(bool quad_normals, double ray_precision, double shadow_precision);
|
|
void setQuality(double factor);
|
|
|
|
virtual RayCastingResult castRay(const Vector3 &start, const Vector3 &direction);
|
|
virtual double getHeight(double x, double z, bool with_painting, bool water_offset = true);
|
|
virtual TerrainResult getResult(double x, double z, bool with_painting, bool with_textures);
|
|
virtual Color getFinalColor(const Vector3 &location, double precision);
|
|
virtual bool applyLightFilter(LightComponent &light, const Vector3 &at) override;
|
|
|
|
/**
|
|
* Estimate a probable range of altitudes, given a rectangle area.
|
|
*/
|
|
void estimateMinMaxHeight(double x1, double z1, double x2, double z2, double *ymin, double *ymax);
|
|
|
|
private:
|
|
SoftwareRenderer *parent;
|
|
TerrainRayWalker *walker_ray;
|
|
TerrainRayWalker *walker_shadows;
|
|
|
|
bool quad_normals;
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif // TERRAINRENDERER_H
|