Rewrite Blender image loading to avoid RNA API, which we are moving away from. This makes it easier to support multilayer EXR. Pull Request: https://projects.blender.org/blender/blender/pulls/133179
58 lines
1.6 KiB
C++
58 lines
1.6 KiB
C++
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
#pragma once
|
|
|
|
#include "DNA_image_types.h"
|
|
|
|
#include "RNA_blender_cpp.hh"
|
|
|
|
#include "scene/image.h"
|
|
|
|
struct Image;
|
|
struct ImageUser;
|
|
|
|
CCL_NAMESPACE_BEGIN
|
|
|
|
class BlenderImageLoader : public ImageLoader {
|
|
public:
|
|
BlenderImageLoader(::Image *b_image,
|
|
::ImageUser *b_iuser,
|
|
const int frame,
|
|
const int tile_number,
|
|
const bool is_preview_render);
|
|
|
|
bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) override;
|
|
bool load_pixels(const ImageMetaData &metadata,
|
|
void *pixels,
|
|
const size_t pixels_size,
|
|
const bool associate_alpha) override;
|
|
string name() const override;
|
|
bool equals(const ImageLoader &other) const override;
|
|
|
|
int get_tile_number() const override;
|
|
|
|
::Image *b_image;
|
|
::ImageUser b_iuser;
|
|
bool free_cache;
|
|
};
|
|
|
|
class BlenderPointDensityLoader : public ImageLoader {
|
|
public:
|
|
BlenderPointDensityLoader(BL::Depsgraph depsgraph, BL::ShaderNodeTexPointDensity b_node);
|
|
|
|
bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) override;
|
|
bool load_pixels(const ImageMetaData &metadata,
|
|
void *pixels,
|
|
const size_t pixels_size,
|
|
const bool associate_alpha) override;
|
|
string name() const override;
|
|
bool equals(const ImageLoader &other) const override;
|
|
|
|
BL::Depsgraph b_depsgraph;
|
|
BL::ShaderNodeTexPointDensity b_node;
|
|
};
|
|
|
|
CCL_NAMESPACE_END
|