Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/render/image_sky.cpp')
-rw-r--r--intern/cycles/render/image_sky.cpp36
1 files changed, 16 insertions, 20 deletions
diff --git a/intern/cycles/render/image_sky.cpp b/intern/cycles/render/image_sky.cpp
index 3e7b491f609..442e1d7941f 100644
--- a/intern/cycles/render/image_sky.cpp
+++ b/intern/cycles/render/image_sky.cpp
@@ -20,6 +20,7 @@
#include "util/util_logging.h"
#include "util/util_path.h"
#include "util/util_sky_model.h"
+#include "util/util_task.h"
CCL_NAMESPACE_BEGIN
@@ -58,26 +59,21 @@ bool SkyLoader::load_pixels(const ImageMetaData &metadata,
float altitude_f = (float)altitude;
/* precompute sky texture */
- const int num_chunks = TaskScheduler::num_threads();
- const int chunk_size = height / num_chunks;
- TaskPool pool;
- for (int chunk = 0; chunk < num_chunks; chunk++) {
- const int chunk_start = chunk * chunk_size;
- const int chunk_end = (chunk + 1 < num_chunks) ? (chunk + 1) * chunk_size : height;
- pool.push(function_bind(&nishita_skymodel_precompute_texture,
- pixel_data,
- metadata.channels,
- chunk_start,
- chunk_end,
- width,
- height,
- sun_elevation,
- altitude_f,
- air_density,
- dust_density,
- ozone_density));
- }
- pool.wait_work();
+ const int rows_per_task = divide_up(1024, width);
+ parallel_for(blocked_range<size_t>(0, height, rows_per_task),
+ [&](const blocked_range<size_t> &r) {
+ nishita_skymodel_precompute_texture(pixel_data,
+ metadata.channels,
+ r.begin(),
+ r.end(),
+ width,
+ height,
+ sun_elevation,
+ altitude_f,
+ air_density,
+ dust_density,
+ ozone_density);
+ });
return true;
}