110 lines
2.5 KiB
C
110 lines
2.5 KiB
C
|
#ifndef _PAYSAGES_TEXTURES_PUBLIC_H_
|
||
|
#define _PAYSAGES_TEXTURES_PUBLIC_H_
|
||
|
|
||
|
#include "../layers.h"
|
||
|
#include "../zone.h"
|
||
|
#include "../tools/lighting.h"
|
||
|
#include "../terrain/public.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#define TEXTURES_MAX_LAYERS 50
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
TEXTURES_PRESET_IRELAND,
|
||
|
TEXTURES_PRESET_ALPS,
|
||
|
TEXTURES_PRESET_CANYON
|
||
|
} TexturesPreset;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
TEXTURES_LAYER_PRESET_ROCK,
|
||
|
TEXTURES_LAYER_PRESET_GRASS,
|
||
|
TEXTURES_LAYER_PRESET_SAND,
|
||
|
TEXTURES_LAYER_PRESET_SNOW
|
||
|
} TexturesLayerPreset;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
TEXTURES_MERGE_FADE,
|
||
|
TEXTURES_MERGE_DISSOLVE,
|
||
|
TEXTURES_MERGE_DISPLACEMENT_VALUE
|
||
|
} TexturesMergeMode;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
Zone* terrain_zone;
|
||
|
double displacement_scaling;
|
||
|
double displacement_height;
|
||
|
double displacement_offset;
|
||
|
/*double detail_scaling;
|
||
|
double detail_height;*/
|
||
|
SurfaceMaterial material;
|
||
|
/*double cancel_displacement_factor;
|
||
|
TexturesMergeMode merge_mode;*/
|
||
|
|
||
|
NoiseGenerator* _displacement_noise;
|
||
|
/*NoiseGenerator* _detail_noise;*/
|
||
|
/*Curve* _local_slope_condition;*/
|
||
|
} TexturesLayerDefinition;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
Layers* layers;
|
||
|
} TexturesDefinition;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
double global_presence;
|
||
|
double local_presence;
|
||
|
Vector3 displaced_location;
|
||
|
Vector3 displaced_normal;
|
||
|
Color color;
|
||
|
Color cancelled_color;
|
||
|
} TexturesLayerResult;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
Vector3 base_location;
|
||
|
Vector3 base_normal;
|
||
|
int layer_count;
|
||
|
TexturesLayerResult layers[TEXTURES_MAX_LAYERS];
|
||
|
Vector3 final_location;
|
||
|
Color final_color;
|
||
|
} TexturesResult;
|
||
|
|
||
|
typedef TerrainResult (*FuncTexturesDisplaceTerrain)(Renderer* renderer, TerrainResult terrain);
|
||
|
typedef TexturesResult (*FuncTexturesApplyToTerrain)(Renderer* renderer, TerrainResult terrain);
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
TexturesDefinition* definition;
|
||
|
|
||
|
FuncTexturesDisplaceTerrain displaceTerrain;
|
||
|
FuncTexturesApplyToTerrain applyToTerrain;
|
||
|
} TexturesRenderer;
|
||
|
|
||
|
|
||
|
extern StandardDefinition TexturesDefinitionClass;
|
||
|
extern StandardRenderer TexturesRendererClass;
|
||
|
|
||
|
|
||
|
LayerType texturesGetLayerType();
|
||
|
void texturesAutoPreset(TexturesDefinition* definition, TexturesPreset preset);
|
||
|
void texturesLayerAutoPreset(TexturesLayerDefinition* definition, TexturesLayerPreset preset);
|
||
|
|
||
|
/*Renderer* cloudsCreatePreviewCoverageRenderer();
|
||
|
Color cloudsGetPreviewCoverage(Renderer* renderer, double x, double y, double scaling, int perspective);
|
||
|
|
||
|
Renderer* cloudsCreatePreviewColorRenderer();
|
||
|
Color cloudsGetPreviewColor(Renderer* renderer, double x, double y);*/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|