diff --git a/TODO b/TODO index 668f270..499e585 100644 --- a/TODO +++ b/TODO @@ -26,7 +26,6 @@ Technlogy Preview 3 : - Create a StandardPreviewClass in C-lib (with renderer, updateData, changeView, getColor, choices and toggles). - Fully move layer management from BaseForm to BaseFormLayer. - Start vegetation system. -- Add tone-mapping and exposure control to final image. - Allow render saving in HDR compatible format. - Add clouds to explorer with 3d textures. - Add fresnel effect to specular lighting. diff --git a/lib_paysages/render.c b/lib_paysages/render.c index c365438..6e83e17 100644 --- a/lib_paysages/render.c +++ b/lib_paysages/render.c @@ -47,6 +47,7 @@ struct RenderArea ColorProfile* hdr_mapping; RenderParams params; int pixel_count; + int pixel_done; RenderFragment* pixels; ScanPoint* scanline_up; ScanPoint* scanline_down; @@ -73,6 +74,7 @@ typedef struct { int endy; int finished; int interrupt; + int pixel_done; Thread* thread; RenderArea* area; Renderer* renderer; @@ -307,7 +309,8 @@ static void _processDirtyPixels(RenderArea* area) } } - area->callback_update(0.0); + double progress = 0.1 + ((double)area->pixel_done / (double)area->pixel_count) * 0.9; + area->callback_update(progress); area->dirty_left = area->params.width * area->params.antialias; area->dirty_right = -1; @@ -615,7 +618,7 @@ void* _renderPostProcessChunk(void* data) _setDirtyPixel(chunk->area, x, y); mutexRelease(chunk->area->lock); } - /* chunk->area->progress_pixels++; */ + chunk->area->pixel_done++; } if (chunk->interrupt) { @@ -650,7 +653,7 @@ void renderPostProcess(RenderArea* area, Renderer* renderer, int nbchunks) dy = area->params.height * area->params.antialias / ny; x = 0; y = 0; - /*_progress_pixels = 0;*/ + area->pixel_done = 0; for (i = 0; i < nbchunks; i++) { @@ -718,7 +721,6 @@ void renderPostProcess(RenderArea* area, Renderer* renderer, int nbchunks) if (++loops >= 10) { mutexAcquire(area->lock); - /*_progress = (double)_progress_pixels / (double)_pixel_count;*/ _processDirtyPixels(area); mutexRelease(area->lock); @@ -726,7 +728,6 @@ void renderPostProcess(RenderArea* area, Renderer* renderer, int nbchunks) } } - /*_progress = 1.0;*/ _processDirtyPixels(area); area->callback_update(1.0); } diff --git a/lib_paysages/water/presets.c b/lib_paysages/water/presets.c index 0f2445b..f23786e 100644 --- a/lib_paysages/water/presets.c +++ b/lib_paysages/water/presets.c @@ -49,7 +49,7 @@ void waterAutoPreset(WaterDefinition* definition, WaterPreset preset) definition->foam_material.base.g = 0.8; definition->foam_material.base.b = 0.8; definition->foam_material.base.a = 1.0; - definition->foam_material.reflection = 0.4; + definition->foam_material.reflection = 0.1; definition->foam_material.shininess = 1.5; WaterDefinitionClass.validate(definition); diff --git a/lib_paysages/water/render.c b/lib_paysages/water/render.c index 830de27..22f6fc6 100644 --- a/lib_paysages/water/render.c +++ b/lib_paysages/water/render.c @@ -141,6 +141,9 @@ static inline Color _getFoamMask(Renderer* renderer, WaterDefinition* definition /* TODO Re-use base lighting status */ result = renderer->applyLightingToSurface(renderer, location, normal, &definition->foam_material); + result.r *= 2.0; + result.g *= 2.0; + result.b *= 2.0; /* TODO This should be configurable */ if (foam_factor > 0.2)