Blender V4.5
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 "util/tbb.h"
8
9#include "sky_model.h"
10
12
13SkyLoader::SkyLoader(const float sun_elevation,
14 const float altitude,
15 const float air_density,
16 const float dust_density,
17 const float ozone_density)
18 : sun_elevation(sun_elevation),
19 altitude(altitude),
20 air_density(air_density),
21 dust_density(dust_density),
22 ozone_density(ozone_density)
23{
24}
25
26SkyLoader::~SkyLoader() = default;
27
28bool SkyLoader::load_metadata(const ImageDeviceFeatures & /*features*/, ImageMetaData &metadata)
29{
30 metadata.width = 512;
31 metadata.height = 128;
32 metadata.channels = 3;
33 metadata.depth = 1;
35 metadata.compress_as_srgb = false;
36 return true;
37}
38
40 void *pixels,
41 const size_t /*pixels_size*/,
42 const bool /*associate_alpha*/)
43{
44 /* definitions */
45 int width = metadata.width;
46 int height = metadata.height;
47 float *pixel_data = (float *)pixels;
48
49 /* precompute sky texture */
50 const int rows_per_task = divide_up(1024, width);
51 parallel_for(blocked_range<size_t>(0, height, rows_per_task),
52 [&](const blocked_range<size_t> &r) {
54 metadata.channels,
55 r.begin(),
56 r.end(),
57 width,
58 height,
59 sun_elevation,
60 altitude,
61 air_density,
62 dust_density,
63 ozone_density);
64 });
65
66 return true;
67}
68
69string SkyLoader::name() const
70{
71 return "sky_nishita";
72}
73
74bool SkyLoader::equals(const ImageLoader & /*other*/) const
75{
76 return false;
77}
78
ImageDataType type
bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) override
Definition image_sky.cpp:28
bool equals(const ImageLoader &) const override
Definition image_sky.cpp:74
bool load_pixels(const ImageMetaData &metadata, void *pixels, const size_t, const bool) override
Definition image_sky.cpp:39
~SkyLoader() override
string name() const override
Definition image_sky.cpp:69
SkyLoader(const float sun_elevation, const float altitude, const float air_density, const float dust_density, float ozone_density)
Definition image_sky.cpp:13
#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)
ccl_device_inline size_t divide_up(const size_t x, const size_t y)
Definition types_base.h:52
@ IMAGE_DATA_TYPE_FLOAT4