Blender V5.0
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_nishita.h"
8
10
11SkyLoader::SkyLoader(const bool multiple_scattering,
12 const float sun_elevation,
13 const float altitude,
14 const float air_density,
15 const float aerosol_density,
16 const float ozone_density)
17 : multiple_scattering(multiple_scattering),
18 sun_elevation(sun_elevation),
19 altitude(altitude),
20 air_density(air_density),
21 aerosol_density(aerosol_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 = 256;
32 metadata.channels = 3;
34 metadata.compress_as_srgb = false;
35 return true;
36}
37
39 void *pixels,
40 const size_t /*pixels_size*/,
41 const bool /*associate_alpha*/)
42{
43 /* Precompute Sky LUT */
44 int width = metadata.width;
45 int height = metadata.height;
46 float *pixel_data = (float *)pixels;
47 if (multiple_scattering) {
49 metadata.channels,
50 width,
51 height,
52 sun_elevation,
53 altitude,
54 air_density,
55 aerosol_density,
56 ozone_density);
57 }
58 else {
60 metadata.channels,
61 width,
62 height,
63 sun_elevation,
64 altitude,
65 air_density,
66 aerosol_density,
67 ozone_density);
68 }
69
70 return true;
71}
72
73string SkyLoader::name() const
74{
75 return "sky_multiple_scattering";
76}
77
78bool SkyLoader::equals(const ImageLoader & /*other*/) const
79{
80 return false;
81}
82
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:78
bool load_pixels(const ImageMetaData &metadata, void *pixels, const size_t, const bool) override
Definition image_sky.cpp:38
~SkyLoader() override
SkyLoader(const bool multiple_scattering, const float sun_elevation, const float altitude, const float air_density, const float aerosol_density, const float ozone_density)
Definition image_sky.cpp:11
string name() const override
Definition image_sky.cpp:73
#define CCL_NAMESPACE_END
void SKY_multiple_scattering_precompute_texture(float *pixels, int stride, int width, int height, float sun_elevation, float altitude, float air_density, float aerosol_density, float ozone_density)
void SKY_single_scattering_precompute_texture(float *pixels, int stride, int width, int height, float sun_elevation, float altitude, float air_density, float aerosol_density, float ozone_density)
@ IMAGE_DATA_TYPE_FLOAT4
Definition texture.h:33