Blender V4.3
image_sky.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include "scene/image_sky.h"
6
7#include "sky_model.h"
8
9#include "util/image.h"
10#include "util/log.h"
11#include "util/path.h"
12#include "util/task.h"
13
15
16SkyLoader::SkyLoader(float sun_elevation,
17 float altitude,
18 float air_density,
19 float dust_density,
20 float ozone_density)
21 : sun_elevation(sun_elevation),
22 altitude(altitude),
23 air_density(air_density),
24 dust_density(dust_density),
25 ozone_density(ozone_density)
26{
27}
28
30
32{
33 metadata.width = 512;
34 metadata.height = 128;
35 metadata.channels = 3;
36 metadata.depth = 1;
38 metadata.compress_as_srgb = false;
39 return true;
40}
41
43 void *pixels,
44 const size_t /*pixels_size*/,
45 const bool /*associate_alpha*/)
46{
47 /* definitions */
48 int width = metadata.width;
49 int height = metadata.height;
50 float *pixel_data = (float *)pixels;
51
52 /* precompute sky texture */
53 const int rows_per_task = divide_up(1024, width);
54 parallel_for(blocked_range<size_t>(0, height, rows_per_task),
55 [&](const blocked_range<size_t> &r) {
57 metadata.channels,
58 r.begin(),
59 r.end(),
60 width,
61 height,
62 sun_elevation,
63 altitude,
64 air_density,
65 dust_density,
66 ozone_density);
67 });
68
69 return true;
70}
71
72string SkyLoader::name() const
73{
74 return "sky_nishita";
75}
76
77bool SkyLoader::equals(const ImageLoader & /*other*/) const
78{
79 return false;
80}
81
ImageDataType type
bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) override
Definition image_sky.cpp:31
bool equals(const ImageLoader &) const override
Definition image_sky.cpp:77
bool load_pixels(const ImageMetaData &metadata, void *pixels, const size_t, const bool) override
Definition image_sky.cpp:42
string name() const override
Definition image_sky.cpp:72
SkyLoader(float sun_elevation, float altitude, float air_density, float dust_density, float ozone_density)
Definition image_sky.cpp:16
#define CCL_NAMESPACE_END
void SKY_nishita_skymodel_precompute_texture(float *pixels, int stride, int start_y, int end_y, int width, int height, float sun_elevation, float altitude, float air_density, float dust_density, float ozone_density)
@ IMAGE_DATA_TYPE_FLOAT4
ccl_device_inline size_t divide_up(size_t x, size_t y)
Definition util/types.h:53