From 71d0eaacd0a5fda12633b437e7fd2c39aa52dfdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Thu, 27 Jun 2013 12:15:30 +0200 Subject: [PATCH] Fixed render progress + added terrain raster progress --- src/rendering/render.c | 5 +++-- src/rendering/terrain/ter_raster.c | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/rendering/render.c b/src/rendering/render.c index b27bccc..1c2e79d 100644 --- a/src/rendering/render.c +++ b/src/rendering/render.c @@ -311,8 +311,7 @@ static void _processDirtyPixels(RenderArea* area) } } - double progress = 0.1 + ((double)area->pixel_done / (double)area->pixel_count) * 0.9; - area->callback_update(progress); + area->callback_update(area->renderer->render_progress); area->dirty_left = area->params.width * area->params.antialias; area->dirty_right = -1; @@ -700,6 +699,8 @@ void renderPostProcess(RenderArea* area, int nbchunks) } } + area->renderer->render_progress = 0.1 + ((double)area->pixel_done / (double)area->pixel_count) * 0.9; + if (y < ny && !chunks[i].thread && !area->renderer->render_interrupt) { chunks[i].finished = 0; diff --git a/src/rendering/terrain/ter_raster.c b/src/rendering/terrain/ter_raster.c index 48c8baf..15f8f15 100644 --- a/src/rendering/terrain/ter_raster.c +++ b/src/rendering/terrain/ter_raster.c @@ -154,13 +154,14 @@ void terrainGetTessellationInfo(Renderer* renderer, FuncTerrainTessellationCallb radius_int = 0.0; radius_ext = base_chunk_size; chunk_size = base_chunk_size; - progress = 0.0; /* TODO */ + progress = 0.0; double cx = cam.x - fmod(cam.x, base_chunk_size); double cz = cam.z - fmod(cam.x, base_chunk_size); while (radius_int < 5000.0) { + progress = radius_int / 5000.0; for (i = 0; i < chunk_count - 1; i++) { _getChunk(renderer, &chunk, cx - radius_ext + chunk_size * i, cz - radius_ext, chunk_size, displaced); @@ -203,10 +204,13 @@ void terrainGetTessellationInfo(Renderer* renderer, FuncTerrainTessellationCallb static int _standardTessellationCallback(Renderer* renderer, TerrainChunkInfo* chunk, double progress) { terrainTessellateChunk(renderer, chunk, chunk->detail_hint); + renderer->render_progress = 0.05 * progress; return !renderer->render_interrupt; } void terrainRenderSurface(Renderer* renderer) { + renderer->render_progress = 0.0; terrainGetTessellationInfo(renderer, _standardTessellationCallback, 0); + renderer->render_progress = 0.05; }