Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/image_sky.cpp
| Show All 17 Lines | |||||
| #include "util/util_image.h" | #include "util/util_image.h" | ||||
| #include "util/util_logging.h" | #include "util/util_logging.h" | ||||
| #include "util/util_path.h" | #include "util/util_path.h" | ||||
| #include "util/util_sky_model.h" | #include "util/util_sky_model.h" | ||||
| CCL_NAMESPACE_BEGIN | CCL_NAMESPACE_BEGIN | ||||
| SkyLoader::SkyLoader( | SkyLoader::SkyLoader(float sun_elevation, | ||||
| float sun_elevation, int altitude, float air_density, float dust_density, float ozone_density) | float altitude, | ||||
| float air_density, | |||||
| float dust_density, | |||||
| float ozone_density) | |||||
| : sun_elevation(sun_elevation), | : sun_elevation(sun_elevation), | ||||
| altitude(altitude), | altitude(altitude), | ||||
| air_density(air_density), | air_density(air_density), | ||||
| dust_density(dust_density), | dust_density(dust_density), | ||||
| ozone_density(ozone_density) | ozone_density(ozone_density) | ||||
| { | { | ||||
| } | } | ||||
| Show All 14 Lines | bool SkyLoader::load_pixels(const ImageMetaData &metadata, | ||||
| void *pixels, | void *pixels, | ||||
| const size_t /*pixels_size*/, | const size_t /*pixels_size*/, | ||||
| const bool /*associate_alpha*/) | const bool /*associate_alpha*/) | ||||
| { | { | ||||
| /* definitions */ | /* definitions */ | ||||
| int width = metadata.width; | int width = metadata.width; | ||||
| int height = metadata.height; | int height = metadata.height; | ||||
| float *pixel_data = (float *)pixels; | float *pixel_data = (float *)pixels; | ||||
| float altitude_f = (float)altitude; | |||||
| /* precompute sky texture */ | /* precompute sky texture */ | ||||
| const int num_chunks = TaskScheduler::num_threads(); | const int num_chunks = TaskScheduler::num_threads(); | ||||
| const int chunk_size = height / num_chunks; | const int chunk_size = height / num_chunks; | ||||
| TaskPool pool; | TaskPool pool; | ||||
| for (int chunk = 0; chunk < num_chunks; chunk++) { | for (int chunk = 0; chunk < num_chunks; chunk++) { | ||||
| const int chunk_start = chunk * chunk_size; | const int chunk_start = chunk * chunk_size; | ||||
| const int chunk_end = (chunk + 1 < num_chunks) ? (chunk + 1) * chunk_size : height; | const int chunk_end = (chunk + 1 < num_chunks) ? (chunk + 1) * chunk_size : height; | ||||
| pool.push(function_bind(&nishita_skymodel_precompute_texture, | pool.push(function_bind(&nishita_skymodel_precompute_texture, | ||||
| pixel_data, | pixel_data, | ||||
| metadata.channels, | metadata.channels, | ||||
| chunk_start, | chunk_start, | ||||
| chunk_end, | chunk_end, | ||||
| width, | width, | ||||
| height, | height, | ||||
| sun_elevation, | sun_elevation, | ||||
| altitude_f, | altitude, | ||||
| air_density, | air_density, | ||||
| dust_density, | dust_density, | ||||
| ozone_density)); | ozone_density)); | ||||
| } | } | ||||
| pool.wait_work(); | pool.wait_work(); | ||||
| return true; | return true; | ||||
| } | } | ||||
| Show All 12 Lines | |||||