paysages : Textures WIP.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@549 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
06841dfe89
commit
72d1791718
10 changed files with 84 additions and 94 deletions
1
TODO
1
TODO
|
@ -14,6 +14,7 @@ Technology Preview 2 :
|
||||||
- Translations.
|
- Translations.
|
||||||
|
|
||||||
Technlogy Preview 3 :
|
Technlogy Preview 3 :
|
||||||
|
- Start using unit testing.
|
||||||
- Improve terrain 3D editor:
|
- Improve terrain 3D editor:
|
||||||
=> Add a map preview with edit area highlighted.
|
=> Add a map preview with edit area highlighted.
|
||||||
=> Allow zooming and simplified camera control.
|
=> Allow zooming and simplified camera control.
|
||||||
|
|
|
@ -8,6 +8,14 @@ ifeq (${BUILDMODE},release)
|
||||||
CC_FLAGS += -O3 -DNDEBUG -Wno-unused-variable -Wno-unused-but-set-variable
|
CC_FLAGS += -O3 -DNDEBUG -Wno-unused-variable -Wno-unused-but-set-variable
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq (,${LIBS})
|
||||||
|
CC_FLAGS += $(shell pkg-config --cflags ${LIBS})
|
||||||
|
CC_LDFLAGS += $(shell pkg-config --libs ${LIBS})
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC_FLAGS += -fPIC -Wall
|
||||||
|
CC_LDFLAGS += -fPIC
|
||||||
|
|
||||||
all:prepare ${RESULT}
|
all:prepare ${RESULT}
|
||||||
|
|
||||||
prepare:
|
prepare:
|
||||||
|
|
|
@ -2,5 +2,3 @@ PATH_LIB_PAYSAGES = ../lib_paysages
|
||||||
BUILDMODE = debug
|
BUILDMODE = debug
|
||||||
BUILDPATH = ../build/${BUILDMODE}
|
BUILDPATH = ../build/${BUILDMODE}
|
||||||
HEADERS = $(${PATH_LIB_PAYSAGES}/atmosphere/*.h ${PATH_LIB_PAYSAGES}/clouds/*.h ${PATH_LIB_PAYSAGES}/terrain/*.h ${PATH_LIB_PAYSAGES}/textures/*.h ${PATH_LIB_PAYSAGES}/water/*.h ${PATH_LIB_PAYSAGES}/tools/*.h ${PATH_LIB_PAYSAGES}/shared/*.h)
|
HEADERS = $(${PATH_LIB_PAYSAGES}/atmosphere/*.h ${PATH_LIB_PAYSAGES}/clouds/*.h ${PATH_LIB_PAYSAGES}/terrain/*.h ${PATH_LIB_PAYSAGES}/textures/*.h ${PATH_LIB_PAYSAGES}/water/*.h ${PATH_LIB_PAYSAGES}/tools/*.h ${PATH_LIB_PAYSAGES}/shared/*.h)
|
||||||
|
|
||||||
CC_FLAGS = -Wall -fPIC
|
|
||||||
|
|
|
@ -97,6 +97,11 @@ private:
|
||||||
FormTextures::FormTextures(QWidget *parent):
|
FormTextures::FormTextures(QWidget *parent):
|
||||||
BaseFormLayer(parent)
|
BaseFormLayer(parent)
|
||||||
{
|
{
|
||||||
|
addAutoPreset(tr("Rock"));
|
||||||
|
addAutoPreset(tr("Grass"));
|
||||||
|
addAutoPreset(tr("Sand"));
|
||||||
|
addAutoPreset(tr("Snow"));
|
||||||
|
|
||||||
_definition = (TexturesDefinition*)TexturesDefinitionClass.create();
|
_definition = (TexturesDefinition*)TexturesDefinitionClass.create();
|
||||||
_layer = (TexturesLayerDefinition*)texturesGetLayerType().callback_create();
|
_layer = (TexturesLayerDefinition*)texturesGetLayerType().callback_create();
|
||||||
|
|
||||||
|
@ -105,13 +110,13 @@ FormTextures::FormTextures(QWidget *parent):
|
||||||
addPreview(_previewCoverage, tr("Coverage preview"));
|
addPreview(_previewCoverage, tr("Coverage preview"));
|
||||||
addPreview(_previewColor, tr("Lighted sample"));
|
addPreview(_previewColor, tr("Lighted sample"));
|
||||||
|
|
||||||
/*addInputNoise(tr("Surface noise"), _layer->bump_noise);
|
addInputDouble(tr("Displacement height"), &_layer->displacement_height, 0.0, 0.1, 0.001, 0.01);
|
||||||
addInputDouble(tr("Surface noise height"), &_layer->bump_height, 0.0, 0.1, 0.001, 0.01);
|
addInputDouble(tr("Displacement scaling"), &_layer->displacement_scaling, 0.003, 0.3, 0.003, 0.03);
|
||||||
addInputDouble(tr("Surface noise scaling"), &_layer->bump_scaling, 0.003, 0.3, 0.003, 0.03);
|
|
||||||
addInputMaterial(tr("Material"), &_layer->material);
|
addInputMaterial(tr("Material"), &_layer->material);
|
||||||
addInputCurve(tr("Coverage by altitude"), _supp.height_curve, -20.0, 20.0, 0.0, 1.0, tr("Terrain altitude"), tr("Texture coverage"));
|
/*addInputCurve(tr("Coverage by altitude"), _layer->terrain_zone->value_by_height, -20.0, 20.0, 0.0, 1.0, tr("Terrain altitude"), tr("Texture coverage"));
|
||||||
addInputCurve(tr("Coverage by slope"), _supp.slope_curve, 0.0, 5.0, 0.0, 1.0, tr("Terrain slope"), tr("Texture coverage"));
|
addInputCurve(tr("Coverage by slope"), _layer->terrain_zone->value_by_slope, 0.0, 5.0, 0.0, 1.0, tr("Terrain slope"), tr("Texture coverage"));*/
|
||||||
addInputDouble(tr("Amplitude for slope coverage"), &_layer->slope_range, 0.001, 0.1, 0.001, 0.01);
|
|
||||||
|
/*addInputDouble(tr("Amplitude for slope coverage"), &_layer->slope_range, 0.001, 0.1, 0.001, 0.01);
|
||||||
addInputDouble(tr("Layer thickness"), &_layer->thickness, 0.0, 0.1, 0.001, 0.01);
|
addInputDouble(tr("Layer thickness"), &_layer->thickness, 0.0, 0.1, 0.001, 0.01);
|
||||||
addInputDouble(tr("Transparency thickness"), &_layer->thickness_transparency, 0.0, 0.1, 0.001, 0.01);*/
|
addInputDouble(tr("Transparency thickness"), &_layer->thickness_transparency, 0.0, 0.1, 0.001, 0.01);*/
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,4 @@ ifneq (,${CHECK_OPENCL})
|
||||||
CC_FLAGS += -DHAVE_OPENCL=1
|
CC_FLAGS += -DHAVE_OPENCL=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CC_FLAGS += $(shell pkg-config --cflags ${LIBS})
|
|
||||||
CC_LDFLAGS += $(shell pkg-config --libs ${LIBS})
|
|
||||||
|
|
||||||
include ../common_post.mk
|
include ../common_post.mk
|
||||||
|
|
|
@ -63,7 +63,7 @@ static void _layerValidateDefinition(TexturesLayerDefinition* definition)
|
||||||
|
|
||||||
noiseClearLevels(definition->_detail_noise);
|
noiseClearLevels(definition->_detail_noise);
|
||||||
noiseAddLevelsSimple(definition->_detail_noise, 4, 0.1, -1.0, 1.0, 0.0);
|
noiseAddLevelsSimple(definition->_detail_noise, 4, 0.1, -1.0, 1.0, 0.0);
|
||||||
noiseNormalizeAmplitude(definition->_detail_noise, -0.01, 0.01, 0);
|
noiseNormalizeAmplitude(definition->_detail_noise, -0.005, 0.005, 0);
|
||||||
noiseValidate(definition->_detail_noise);
|
noiseValidate(definition->_detail_noise);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,16 +74,11 @@ static TexturesLayerDefinition* _layerCreateDefinition()
|
||||||
result = malloc(sizeof(TexturesLayerDefinition));
|
result = malloc(sizeof(TexturesLayerDefinition));
|
||||||
|
|
||||||
result->terrain_zone = zoneCreate();
|
result->terrain_zone = zoneCreate();
|
||||||
result->displacement_scaling = 2.0;
|
|
||||||
result->displacement_height = 0.1;
|
|
||||||
result->displacement_offset = 0.0;
|
|
||||||
result->material.base = COLOR_WHITE;
|
|
||||||
result->material.reflection = 0.0;
|
|
||||||
result->material.shininess = 0.0;
|
|
||||||
|
|
||||||
result->_displacement_noise = noiseCreateGenerator();
|
result->_displacement_noise = noiseCreateGenerator();
|
||||||
result->_detail_noise = noiseCreateGenerator();
|
result->_detail_noise = noiseCreateGenerator();
|
||||||
|
|
||||||
|
texturesLayerAutoPreset(result, TEXTURES_LAYER_PRESET_ROCK);
|
||||||
|
|
||||||
_layerValidateDefinition(result);
|
_layerValidateDefinition(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -2,34 +2,83 @@
|
||||||
|
|
||||||
void texturesAutoPreset(TexturesDefinition* definition, TexturesPreset preset)
|
void texturesAutoPreset(TexturesDefinition* definition, TexturesPreset preset)
|
||||||
{
|
{
|
||||||
int layer;
|
TexturesLayerDefinition* layer;
|
||||||
layersClear(definition->layers);
|
layersClear(definition->layers);
|
||||||
|
|
||||||
if (preset == TEXTURES_PRESET_IRELAND)
|
if (preset == TEXTURES_PRESET_IRELAND)
|
||||||
{
|
{
|
||||||
layer = layersAddLayer(definition->layers, NULL);
|
layer = layersGetLayer(definition->layers, layersAddLayer(definition->layers, NULL));
|
||||||
|
texturesLayerAutoPreset(layer, TEXTURES_LAYER_PRESET_ROCK);
|
||||||
|
layersSetName(definition->layers, 0, "Ground");
|
||||||
|
|
||||||
|
layer = layersGetLayer(definition->layers, layersAddLayer(definition->layers, NULL));
|
||||||
|
texturesLayerAutoPreset(layer, TEXTURES_LAYER_PRESET_GRASS);
|
||||||
|
layersSetName(definition->layers, 1, "Grass");
|
||||||
}
|
}
|
||||||
else if (preset == TEXTURES_PRESET_ALPS)
|
else if (preset == TEXTURES_PRESET_ALPS)
|
||||||
{
|
{
|
||||||
|
/* TODO */
|
||||||
}
|
}
|
||||||
else if (preset == TEXTURES_PRESET_CANYON)
|
else if (preset == TEXTURES_PRESET_CANYON)
|
||||||
{
|
{
|
||||||
|
/* TODO */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void texturesLayerAutoPreset(TexturesLayerDefinition* definition, TexturesLayerPreset preset)
|
void texturesLayerAutoPreset(TexturesLayerDefinition* definition, TexturesLayerPreset preset)
|
||||||
{
|
{
|
||||||
noiseRandomizeOffsets(definition->_displacement_noise);
|
noiseRandomizeOffsets(definition->_displacement_noise);
|
||||||
|
noiseRandomizeOffsets(definition->_detail_noise);
|
||||||
|
|
||||||
|
zoneClear(definition->terrain_zone);
|
||||||
|
|
||||||
switch (preset)
|
switch (preset)
|
||||||
{
|
{
|
||||||
case TEXTURES_LAYER_PRESET_ROCK:
|
case TEXTURES_LAYER_PRESET_ROCK:
|
||||||
|
definition->displacement_height = 0.1;
|
||||||
|
definition->displacement_scaling = 2.0;
|
||||||
|
definition->displacement_offset = 0.0;
|
||||||
|
definition->material.base.r = 0.6;
|
||||||
|
definition->material.base.g = 0.55;
|
||||||
|
definition->material.base.b = 0.57;
|
||||||
|
definition->material.reflection = 0.02;
|
||||||
|
definition->material.shininess = 3.0;
|
||||||
break;
|
break;
|
||||||
case TEXTURES_LAYER_PRESET_GRASS:
|
case TEXTURES_LAYER_PRESET_GRASS:
|
||||||
|
zoneAddHeightRangeQuick(definition->terrain_zone, 1.0, -6.0, -5.0, 3.0, 15.0);
|
||||||
|
zoneAddSlopeRangeQuick(definition->terrain_zone, 1.0, 0.0, 0.0, 0.05, 0.4);
|
||||||
|
definition->displacement_height = 0.0;
|
||||||
|
definition->displacement_scaling = 1.0;
|
||||||
|
definition->displacement_offset = 0.0;
|
||||||
|
definition->material.base.r = 0.12;
|
||||||
|
definition->material.base.g = 0.19;
|
||||||
|
definition->material.base.b = 0.035;
|
||||||
|
definition->material.reflection = 0.003;
|
||||||
|
definition->material.shininess = 2.0;
|
||||||
break;
|
break;
|
||||||
case TEXTURES_LAYER_PRESET_SAND:
|
case TEXTURES_LAYER_PRESET_SAND:
|
||||||
|
zoneAddHeightRangeQuick(definition->terrain_zone, 1.0, -5.5, -4.5, -4.0, -3.0);
|
||||||
|
zoneAddSlopeRangeQuick(definition->terrain_zone, 1.0, 0.0, 0.0, 0.15, 0.3);
|
||||||
|
definition->displacement_height = 0.0;
|
||||||
|
definition->displacement_scaling = 1.0;
|
||||||
|
definition->displacement_offset = 0.0;
|
||||||
|
definition->material.base.r = 0.30;
|
||||||
|
definition->material.base.g = 0.28;
|
||||||
|
definition->material.base.b = 0.02;
|
||||||
|
definition->material.reflection = 0.008;
|
||||||
|
definition->material.shininess = 6.0;
|
||||||
break;
|
break;
|
||||||
case TEXTURES_LAYER_PRESET_SNOW:
|
case TEXTURES_LAYER_PRESET_SNOW:
|
||||||
|
zoneAddHeightRangeQuick(definition->terrain_zone, 1.0, 4.0, 5.0, 100.0, 100.0);
|
||||||
|
zoneAddSlopeRangeQuick(definition->terrain_zone, 1.0, 0.0, 0.0, 0.2, 1.0);
|
||||||
|
definition->displacement_height = 0.0;
|
||||||
|
definition->displacement_scaling = 1.0;
|
||||||
|
definition->displacement_offset = 0.0;
|
||||||
|
definition->material.base.r = 1.0;
|
||||||
|
definition->material.base.g = 1.0;
|
||||||
|
definition->material.base.b = 1.0;
|
||||||
|
definition->material.reflection = 0.25;
|
||||||
|
definition->material.shininess = 0.6;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -37,60 +86,3 @@ void texturesLayerAutoPreset(TexturesLayerDefinition* definition, TexturesLayerP
|
||||||
|
|
||||||
texturesGetLayerType().callback_validate(definition);
|
texturesGetLayerType().callback_validate(definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
textures = texturesCreateDefinition();
|
|
||||||
layer = layersAddLayer(textures.layers, NULL);
|
|
||||||
layersSetName(textures.layers, layer, "Ground");
|
|
||||||
texture = layersGetLayer(textures.layers, layer);
|
|
||||||
noiseClearLevels(texture->bump_noise);
|
|
||||||
noiseRandomizeOffsets(texture->bump_noise);
|
|
||||||
noiseAddLevelsSimple(texture->bump_noise, 8, 1.0, -0.5, 0.5, 0.5);
|
|
||||||
texture->bump_height = 0.01;
|
|
||||||
texture->bump_scaling = 0.045;
|
|
||||||
texture->material.base.r = 0.6;
|
|
||||||
texture->material.base.g = 0.55;
|
|
||||||
texture->material.base.b = 0.57;
|
|
||||||
texture->material.reflection = 0.02;
|
|
||||||
texture->material.shininess = 3.0;
|
|
||||||
texture->thickness = 0.001;
|
|
||||||
texture->slope_range = 0.001;
|
|
||||||
texture->thickness_transparency = 0.0;
|
|
||||||
layer = layersAddLayer(textures.layers, NULL);
|
|
||||||
layersSetName(textures.layers, layer, "Grass");
|
|
||||||
texture = layersGetLayer(textures.layers, layer);
|
|
||||||
zoneAddHeightRangeQuick(texture->zone, 1.0, -6.0, -5.0, 3.0, 15.0);
|
|
||||||
zoneAddSlopeRangeQuick(texture->zone, 1.0, 0.0, 0.0, 0.05, 0.4);
|
|
||||||
noiseClearLevels(texture->bump_noise);
|
|
||||||
noiseRandomizeOffsets(texture->bump_noise);
|
|
||||||
noiseAddLevelsSimple(texture->bump_noise, 5, 1.0, -0.2, 0.2, 0.5);
|
|
||||||
noiseAddLevelsSimple(texture->bump_noise, 2, 0.03, -0.04, 0.04, 0.5);
|
|
||||||
texture->bump_height = 0.002;
|
|
||||||
texture->bump_scaling = 0.03;
|
|
||||||
texture->material.base.r = 0.12;
|
|
||||||
texture->material.base.g = 0.19;
|
|
||||||
texture->material.base.b = 0.035;
|
|
||||||
texture->material.reflection = 0.003;
|
|
||||||
texture->material.shininess = 2.0;
|
|
||||||
texture->thickness = 0.02;
|
|
||||||
texture->slope_range = 0.03;
|
|
||||||
texture->thickness_transparency = 0.005;
|
|
||||||
/*texture = texturesGetLayer(&textures, texturesAddLayer(&textures));
|
|
||||||
zoneAddHeightRangeQuick(texture->zone, 1.0, 4.0, 5.0, 100.0, 100.0);
|
|
||||||
zoneAddSlopeRangeQuick(texture->zone, 1.0, 0.0, 0.0, 0.2, 1.0);
|
|
||||||
noiseGenerateBaseNoise(texture->bump_noise, 102400);
|
|
||||||
noiseClearLevels(texture->bump_noise);
|
|
||||||
noiseAddLevelsSimple(texture->bump_noise, 6, 1.0, 1.0);
|
|
||||||
texture->bump_height = 0.002;
|
|
||||||
texture->bump_scaling = 0.03;
|
|
||||||
texture->material.base.r = 1.0;
|
|
||||||
texture->material.base.g = 1.0;
|
|
||||||
texture->material.base.b = 1.0;
|
|
||||||
texture->material.reflection = 0.25;
|
|
||||||
texture->material.shininess = 0.6;
|
|
||||||
texture->thickness = 0.05;
|
|
||||||
texture->slope_range = 0.3;
|
|
||||||
texture->thickness_transparency = 0.015;*/
|
|
||||||
scenerySetTextures(&textures);
|
|
||||||
texturesDeleteDefinition(&textures);
|
|
||||||
#endif
|
|
|
@ -117,6 +117,14 @@ void zoneCopy(Zone* source, Zone* destination)
|
||||||
destination->circles_excluded_count = source->circles_excluded_count;
|
destination->circles_excluded_count = source->circles_excluded_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void zoneClear(Zone* zone)
|
||||||
|
{
|
||||||
|
curveClear(zone->value_by_height);
|
||||||
|
curveClear(zone->value_by_slope);
|
||||||
|
zone->circles_included_count = 0;
|
||||||
|
zone->circles_excluded_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void zoneIncludeCircleArea(Zone* zone, double value, double centerx, double centerz, double softradius, double hardradius)
|
void zoneIncludeCircleArea(Zone* zone, double value, double centerx, double centerz, double softradius, double hardradius)
|
||||||
{
|
{
|
||||||
Circle circle = {value, centerx, centerz, softradius, hardradius};
|
Circle circle = {value, centerx, centerz, softradius, hardradius};
|
||||||
|
|
|
@ -16,6 +16,8 @@ void zoneDelete(Zone* zone);
|
||||||
void zoneSave(PackStream* stream, Zone* zone);
|
void zoneSave(PackStream* stream, Zone* zone);
|
||||||
void zoneLoad(PackStream* stream, Zone* zone);
|
void zoneLoad(PackStream* stream, Zone* zone);
|
||||||
void zoneCopy(Zone* source, Zone* destination);
|
void zoneCopy(Zone* source, Zone* destination);
|
||||||
|
void zoneClear(Zone* zone);
|
||||||
|
|
||||||
void zoneIncludeCircleArea(Zone* zone, double value, double centerx, double centerz, double softradius, double hardradius);
|
void zoneIncludeCircleArea(Zone* zone, double value, double centerx, double centerz, double softradius, double hardradius);
|
||||||
void zoneExcludeCircleArea(Zone* zone, double centerx, double centerz, double softradius, double hardradius);
|
void zoneExcludeCircleArea(Zone* zone, double centerx, double centerz, double softradius, double hardradius);
|
||||||
|
|
||||||
|
|
16
test.cl
16
test.cl
|
@ -1,16 +0,0 @@
|
||||||
__kernel void vector_add_gpu (__global const float* src_a,
|
|
||||||
__global const float* src_b,
|
|
||||||
__global float* res,
|
|
||||||
const int num)
|
|
||||||
{
|
|
||||||
/* get_global_id(0) returns the ID of the thread in execution.
|
|
||||||
As many threads are launched at the same time, executing the same kernel,
|
|
||||||
each one will receive a different ID, and consequently perform a different computation.*/
|
|
||||||
const int idx = get_global_id(0);
|
|
||||||
|
|
||||||
/* Now each work-item asks itself: "is my ID inside the vector's range?"
|
|
||||||
If the answer is YES, the work-item performs the corresponding computation*/
|
|
||||||
if (idx < num)
|
|
||||||
res[idx] = src_a[idx] + src_b[idx];
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue